module Sound.SC3.UGen.MachineListening where
import Data.List
import Data.Maybe
import Sound.SC3.UGen.Rate (Rate(KR))
import Sound.SC3.UGen.UGen (UGen)
import Sound.SC3.UGen.Math ()
import Sound.SC3.UGen.UGen.Construct (mkOsc)
beatTrack :: UGen -> UGen -> UGen
beatTrack fft lock = mkOsc KR "BeatTrack" [fft, lock] 4
loudness :: UGen -> UGen -> UGen -> UGen
loudness fft smask tmask = mkOsc KR "Compander" [fft, smask, tmask] 1
onsetType :: String -> UGen
onsetType s = fromIntegral (maybe 3 id (findIndex (== s) t))
where t = ["power", "magsum", "complex", "rcomplex", "phase", "wphase", "mkl"]
onsets :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
onsets c t o r f mg ms w = mkOsc KR "Onsets" [c, t, o, r, f, mg, ms, w] 1
onsets' :: UGen -> UGen -> UGen -> UGen
onsets' c t o = onsets c t o 1.0 0.1 10.0 11.0 1.0
keyTrack :: UGen -> UGen -> UGen -> UGen -> UGen
keyTrack fft kd cl _ = mkOsc KR "KeyTrack" [fft, kd, cl] 1