packages feed

hsc3-0.18: Help/UGen/pvcollect.help.lhs

> import Data.List {- base -}
> import Sound.OSC {- hosc -}
> import Sound.SC3 {- hsc3 -}

> file_name = "/home/rohan/data/audio/instr/bosendorfer/064/C5.aif"

> alloc_buf :: DuplexOSC m => m Message
> alloc_buf = do
>   _ <- async (b_alloc 10 1024 1)
>   async (b_allocRead 11 file_name 0 0)

    > withSC3 alloc_buf

> spectral_delay m p _ =
>   let l = lfPar KR 0.5 0
>       v = linLin l (-1) 1 0.1 1
>   in (m + delayN m 1 v,p)

> bpf_sweep nf m p i =
>   let l = lfPar KR 0.1 0
>       e = abs (constant i - (linLin l (-1) 1 2 (constant nf / 20)))
>   in ((e <** 10) * m,p)

> pv_g nf cf =
>   let no_op m p _ = (m,p)
>       combf m p i = ((modE i 7.0 ==** 0) * m,p)
>       sf = playBuf 1 AR 11 (bufRateScale KR 11) 1 0 Loop DoNothing
>       c1 = fft' 10 sf
>       c2 = pvcollect c1 nf cf 0 250 0
>   in 0.1 * ifft' c2

> pv_au nf cf =
>   let no_op m p _ = (m,p)
>       combf m p i = ((modE i 7.0 ==** 0) * m,p)
>       c1 = fft' 10 (soundIn 0)
>       c2 = pvcollect c1 nf cf 0 250 0
>   in 0.1 * ifft' c2

    > putStrLn $ synthstat_concise (pv_g 1024 spectral_delay)

    > number of constants       : 257
    > number of controls        : 0
    > control rates             : []
    > number of unit generators : 1013
    > unit generator rates      : [(KR,5),(AR,4),(DR,1004)]

   > putStrLn $ synthstat_concise (pv_g 1024 (bpf_sweep 1024))

> g_01 = pv_g 1024 spectral_delay
> g_02 = pv_g 1024 (bpf_sweep 1024)
> g_03 = pv_au 1024 spectral_delay
> g_04 = pv_au 1024 (bpf_sweep 1024)

    > import Sound.SC3.UGen.Dot {- hsc3-dot -}
    > draw_svg (pv_g 1024 (bpf_sweep 1024))