> 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))