hsc3-0.12: Help/UGen/External/atsSynth.help.lhs
> Sound.SC3.UGen.Help.viewSC3Help "AtsSynth"
> Sound.SC3.UGen.DB.ugenSummary "AtsSynth"
> import Sound.SC3
read file
> ats <- atsRead "/home/rohan/cvs/tn/tn-56/ats/metal.ats"
show header
> atsHeader ats
data loader that works in segments (udp packet limits)
> let load_data b i d =
> if length d < 512
> then send (b_setn1 b i d)
> else do {send (b_setn1 b i (take 512 d))
> ;load_data b (i + 512) (drop 512 d)}
simple re-synthesiser
> let {h = atsHeader ats
> ;d = atsData ats
> ;x = mouseX KR 0.05 1.5 Linear 0.2
> ;y = mouseY KR 0.25 2.0 Linear 0.2
> ;np = constant (atsNPartials h)
> ;f = x / constant (atsAnalysisDuration h)
> ;ptr = lfSaw AR f 1 * 0.5 + 0.5
> ;rs = atsSynth 10 np 0 1 (clip ptr 0 1) y 0}
> in withSC3 (do {_ <- async (b_alloc 10 (length d) 1)
> ;load_data 10 0 d
> ;play (out 0 rs)})