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