packages feed

hsc3-0.12: Help/UGen/Buffer/vOsc.help.lhs

> Sound.SC3.UGen.Help.viewSC3Help "VOsc"
> Sound.SC3.UGen.DB.ugenSummary "VOsc"

> import Sound.SC3

Allocate and fill tables 0 to 7.
> let {square a = a * a
>     ;bf = [Normalise,Wavetable,Clear]
>     ;harm i = let {n = square (i + 1)
>                   ;f j = square ((n - j) / n)}
>                in map f [0 .. n - 1]
>     ;setup i = do {i' <- return (fromIntegral i)
>                   ;_ <- async (b_alloc i 1024 1)
>                   ;send (b_gen_sine1 i bf (harm i'))}}
> in withSC3 (mapM_ setup [0 .. 7])

Oscillator at buffers 0 through 7, mouse selects buffer.
> let x = mouseX KR 0 7 Linear 0.1
> in audition (out 0 (vOsc AR x (mce [120, 121]) 0 * 0.3))

> import Sound.SC3.Lang.Random.IO

Reallocate buffers while oscillator is running.
> let {bf = [Normalise,Wavetable,Clear]
>     ;resetTable i = do {h <- nrrand 12 0 1
>                        ;send (b_gen_sine1 i bf h)}}
> in withSC3 (mapM_ resetTable [0 .. 7])