module Sound.SC3.UGen.Bindings.HW where
import qualified Sound.SC3.Common.UId as I
import qualified Sound.SC3.UGen.Bindings.HW.Construct as C
import Sound.SC3.UGen.Rate
import Sound.SC3.UGen.Type
import qualified Sound.SC3.UGen.UGen as U
clearBuf :: UGen -> UGen
clearBuf b = U.mrg2 b (C.mkOsc IR "ClearBuf" [b] 1)
dwrand :: I.ID i => i -> UGen -> UGen -> UGen -> UGen
dwrand z repeats weights list_ =
let n = mceDegree_err list_
weights' = mceExtend n weights
inp = repeats : constant n : weights'
in mkUGen Nothing [DR] (Left DR) "Dwrand" inp (Just [list_]) 1 (Special 0) (U.toUId z)
fftTrigger :: UGen -> UGen -> UGen -> UGen
fftTrigger b h p = C.mkOsc KR "FFTTrigger" [b,h,p] 1
ladspa :: Int -> Rate -> UGen -> [UGen] -> UGen
ladspa nc rt k z = C.mkOsc rt "LADSPA" (constant nc : k : z) nc
packFFT :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
packFFT b sz from to z mp =
let n = constant (mceDegree_err mp)
in C.mkOscMCE KR "PackFFT" [b, sz, from, to, z, n] mp 1
poll :: UGen -> UGen -> UGen -> UGen -> UGen
poll trig_ in_ trigid label_ =
let q = U.unpackLabel label_
n = fromIntegral (length q)
in C.mkFilter "Poll" ([trig_,in_,trigid,n] ++ q) 0
pv_HainsworthFoote :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen
pv_HainsworthFoote buf h f thr wt = C.mkOsc AR "PV_HainsworthFoote" [buf,h,f,thr,wt] 1
string_to_ugens :: String -> [UGen]
string_to_ugens nm = fromIntegral (length nm) : map (fromIntegral . fromEnum) nm
sendReply :: UGen -> UGen -> String -> [UGen] -> UGen
sendReply i k n v = C.mkFilter "SendReply" ([i,k] ++ string_to_ugens n ++ v) 0
unpack1FFT :: UGen -> UGen -> UGen -> UGen -> UGen
unpack1FFT buf size index' which = C.mkOsc DR "Unpack1FFT" [buf, size, index', which] 1