packages feed

vivid-0.5.2.1: vivid.cabal

name:                vivid
version:             0.5.2.1
synopsis:            Sound synthesis with SuperCollider
description:         
  Music and sound synthesis with SuperCollider.
  .
  Example usage (after installing and booting SuperCollider):
  .
  @
  {-\# LANGUAGE DataKinds, ExtendedDefaultRules \#-}
  @
  .
  > import Vivid
  >
  > playSong :: VividAction m => m ()
  > playSong = do
  >    fork $ do
  >       s0 <- synth theSound (36 ::I "note")
  >       wait 1
  >       free s0
  >    s1 <- synth theSound (60 ::I "note")
  >    forM_ [62,66,64] $ \note -> do
  >       wait (1/4)
  >       set s1 (note ::I "note")
  >    wait (1/4)
  >    free s1
  >
  > theSound :: SynthDef '["note"]
  > theSound = sd (0 ::I "note") $ do
  >    wobble <- sinOsc (freq_ 5) ? KR ~* 10 ~+ 10
  >    s <- 0.1 ~* sinOsc (freq_ $ midiCPS (V::V "note") ~+ wobble)
  >    out 0 [s,s]
  >
  > main :: IO ()
  > main = do
  >    putStrLn "Simplest:"
  >    playSong
  >
  >    putStrLn "With precise timing:"
  >    doScheduledIn 0.1 playSong
  >    wait 1
  >
  >    putStrLn "Written to a file, non-realtime synthesis:"
  >    putStrLn "(Need to quit the running server for NRT)"
  >    quitSCServer
  >    writeNRT "song.wav" playSong
author:              Tom Murphy
maintainer:          Tom Murphy
category:            Audio, Music, Sound
build-type:          Simple
cabal-version:       >=1.10
stability:           experimental
license:             GPL
extra-source-files:
  README.md

library
  exposed-modules:
      Vivid
    , Vivid.Actions
    , Vivid.Actions.Class
    , Vivid.Actions.IO
    , Vivid.Actions.NRT
    , Vivid.Actions.Scheduled
    , Vivid.ByteBeat
    , Vivid.Envelopes
    , Vivid.GlobalState
    , Vivid.NoGlobalState
    , Vivid.NoPlugins
    , Vivid.NoPluginsNoGlobalState
    , Vivid.OSC.Bundles
    , Vivid.Randomness
    , Vivid.SCServer
    , Vivid.SCServer.Connection
    , Vivid.SCServer.State
    , Vivid.SCServer.Types
    , Vivid.SynthDef
    , Vivid.SynthDef.FromUA
    , Vivid.SynthDef.ToSig
    , Vivid.SynthDef.Types
    , Vivid.SynthDef.TypesafeArgs
    , Vivid.UGens
    , Vivid.UGens.Algebraic
    , Vivid.UGens.Analysis
    , Vivid.UGens.Args
    , Vivid.UGens.Buffer
    , Vivid.UGens.Conversion
    , Vivid.UGens.Convolution
    , Vivid.UGens.Delays
    , Vivid.UGens.Demand
    , Vivid.UGens.Dynamics
    , Vivid.UGens.Envelopes
    , Vivid.UGens.Examples
    , Vivid.UGens.FFT
    , Vivid.UGens.Filters
    , Vivid.UGens.Filters.BEQSuite
    , Vivid.UGens.Filters.Linear
    , Vivid.UGens.Filters.Nonlinear
    , Vivid.UGens.Filters.Pitch
    , Vivid.UGens.Generators.Chaotic
    , Vivid.UGens.Generators.Deterministic
    , Vivid.UGens.Generators.Granular
    , Vivid.UGens.Generators.SingleValue
    , Vivid.UGens.Generators.Stochastic
    , Vivid.UGens.Info
    , Vivid.UGens.InOut
    , Vivid.UGens.Maths
    , Vivid.UGens.Multichannel
    , Vivid.UGens.Random
    , Vivid.UGens.Reverbs
    , Vivid.UGens.SynthControl
    , Vivid.UGens.Triggers
    , Vivid.UGens.Undocumented
    , Vivid.UGens.UserInteraction
  -- other-modules:       
  build-depends:
   -- These package bounds are to comply with the PVP
   -- (https://wiki.haskell.org/Package_versioning_policy).
   -- Most/all of these upper bounds will be able to be bumped
   -- forevermore: if you're having trouble building this because
   -- of an upper bound, you can probably just bump it up.
   -- I'll try to bump version bounds whenever new compatible
   -- versions come out.

      -- Auto bounds from 'cabal init':
      base > 3 && < 5

    -- TEMP:
    , binary

      -- Lower bound:
      --    Just a guess -- 0.5.0.2 is >5 years old
      --    I don't have a reason to think it needs a lower bound
      --    0.2 is the oldest version on Hackage
      -- Upper bound:
      --    0.9 doesn't exist yet
      -- Try: "> 0.5.0.2 && < 0.9"

      -- Lower bound:
      --    Just a guess -- 0.9.1.8 is >5 years old
      --    I don't have a reason to think it needs a lower bound
      --    0.9 is the oldest version on Hackage
      -- Upper bound:
      --    0.11 doesn't exist yet
      -- Try: "> 0.9.1.8 && < 0.11"
    , bytestring


    , cereal

      -- Lower bound:
      --    Just a guess -- 0.4.0.0 is >5 years old
      --    I don't have a reason to think it needs a lower bound
      --    0.1.0.0 is the oldest version on Hackage
      -- Upper bound:
      --    0.6 doesn't exist yet
      -- Try: "> 0.4.0.0 && < 0.6"

    , containers

    , directory

      -- Lower bound:
      --    1.0 is the oldest version with 'takeExtension'
      --    (It's from 2007-05)
      -- Upper bound:
      --    1.5 doesn't exist yet
      -- Try: "&& < 1.5"
    , filepath >= 1.0

     -- Lower bound:
     --    1.1.1.0 is the first version with 'hashWithSalt'
     --    (It's from 2011-02)
     --    (Also betw 1.2 and 1.2.0.5 are marked as broken!)
     -- Upper bound:
     --    1.3 doesn't exist yet
     -- Try: "&& < 1.3"
    , hashable >= 1.2.0.6

      -- Lower bound:
      --    0.1 is the oldest version on Hackage
      -- Upper bound:
      --    0.5 doesn't exist yet
      -- Try: ">= 0.1 && < 0.5"
    , MonadRandom

      -- Lower bound:
      --    Just a guess -- 0.2.0.0 is >5 years old
      --    I don't have a reason to think it needs a lower bound
      --    1.0 is the oldest version on Hackage
      -- Upper bound:
      --    2.3 doesn't exist yet
      -- Try: ">= 2.0.0.0 && < 2.3"
    , mtl

      -- Lower bound:
      --    Just a guess -- 2.3 is >5 years old
      --    I don't have a reason to think it needs a lower bound
      --    2.0 is the oldest version on Hackage
      -- Upper bound:
      --    2.7 doesn't exist yet
      -- Try: ">= 2.3 && < 2.7"
    , network


      -- Lower bound:
      --    Just a guess -- 1.0.1.4 is >5 years old
      --    I don't have a reason to think it needs a lower bound
      --    1.0.0.0 is the oldest version on Hackage
      -- Upper bound:
      --    1.5 doesn't exist yet
      -- Try: ">= 1.0.1.4 && < 1.5"
    , process

      -- Lower bound:
      --    Just a guess -- 1.0.0.3 is >5 years old
      --    I don't have a reason to think it needs a lower bound
      --    1.0.0.0 is the oldest version on Hackage
      -- Upper bound:
      --    1.2 doesn't exist yet
      -- /= :  1.0.1.3 is deprecated
      -- Try:  (>= 1.0.0.3 && <= 1.0.1.1) || (>= 1.1 && < 1.2)
    , random >= 1.1

      -- Lower bound:
      --    0.0.3 is the first version with 'shuffleM'
      -- Upper bound:
      --    0.1 doesn't exist yet (will it ever?)
      -- Try: "&& < 0.1"
    , random-shuffle >= 0.0.3

      -- Lower bound:
      --    0.2.0.0 is the first version with 'chunksOf'
      -- Upper bound:
      --    0.3 doesn't exist yet
      -- Try: "&& < 0.3"
    , split >= 0.2.0.0

      -- Lower bound:
      --    Just a guess -- 2.2.0.1 is >5 years old
      --    I don't have a reason to think it needs a lower bound
      --    2.1 is the oldest version on Hackage
      -- Upper bound:
      --    2.5 doesn't exist yet
      -- Try: ">= 2.2.0.1 && < 2.5"
    , stm

      -- Lower bound:
      --    Just a guess -- 1.2 is >5 years old
      --    I don't have a reason to think it needs a lower bound
      --    (Although check out 'old-time' and those changes -- but
      --    that's before 1.2)
      --    1.0 is the oldest version on Hackage
      -- Upper bound:
      --    1.7 doesn't exist yet
      -- Try: "&& < 1.7"
    , time >= 1.2

      -- Lower bound:
      --    Only need it for 'MonadIO' which came in 0.2.0.0
      --    (0.2.0.0 is from 2010-03)
      -- Upper bound:
      --    0.6 doesn't exist yet
      -- Note there are lots of deprecated versions but I'm taking
      -- a guess for now that 'liftIO' is fine in all of them
      -- Try: "&& < 0.6" (and maybe disallow deprecated)
    , transformers >= 0.2.0.0

      -- We only need 'fromString' from here:
    , utf8-string

    -- Pinned to vivid's version:
    , vivid-osc >= 0.4 && < 0.6
    , vivid-supercollider == 0.4.*

  -- TODO: constraint solver iterations only for the GHC that needs it
  ghc-options:
    -O2
    -fconstraint-solver-iterations=0
  default-language: Haskell2010

-- TODO:
-- testsuite 
--   build-depends:
--       vivid
--     , microspec
--     -- , quickcheck