vivid-0.4.2.3: Sound synthesis with SuperCollider
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" playSongSignatures
Modules
- Vivid
- Vivid.Actions
- Vivid.ByteBeat
- Vivid.Envelopes
- Vivid.NoPlugins
- OSC
- Vivid.Randomness
- Vivid.SCServer
- Vivid.SynthDef
- 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
- Generators
- Vivid.UGens.InOut
- Vivid.UGens.Info
- Vivid.UGens.Maths
- Vivid.UGens.Multichannel
- Vivid.UGens.Random
- Vivid.UGens.Reverbs
- Vivid.UGens.SynthControl
- Vivid.UGens.Triggers
- Vivid.UGens.Undocumented
- Vivid.UGens.UserInteraction