module Sound.SC3.UGen.MachineListening where
import Data.List
import Data.Maybe
import Sound.SC3.UGen.Rate
import Sound.SC3.UGen.Type
import Sound.SC3.UGen.UGen
beatTrack :: UGen -> UGen -> UGen
beatTrack fft lock = mkOsc KR "BeatTrack" [fft, lock] 4
beatTrack2 :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
beatTrack2 b mf ws pa lk w = mkOsc KR "BeatTrack2" [b, mf, ws, pa, lk, w] 6
loudness :: UGen -> UGen -> UGen -> UGen
loudness fft smask tmask = mkOsc KR "Loudness" [fft, smask, tmask] 1
onsetType :: Num a => String -> a
onsetType s =
let t = ["power", "magsum", "complex", "rcomplex", "phase", "wphase", "mkl"]
in fromIntegral (fromMaybe 3 (elemIndex s t))
onsets :: UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen -> UGen
onsets c t o r f mg ms wt rw = mkOsc KR "Onsets" [c, t, o, r, f, mg, ms, wt, rw] 1
onsets' :: UGen -> UGen -> UGen -> UGen
onsets' c t o = onsets c t o 1 0.1 10 11 1 0
keyTrack :: UGen -> UGen -> UGen -> UGen -> UGen
keyTrack fft kd cl _ = mkOsc KR "KeyTrack" [fft, kd, cl] 1
mfcc :: Int -> UGen -> UGen
mfcc nc b = mkOsc KR "MFCC" [b, constant nc] nc
specFlatness :: UGen -> UGen
specFlatness b = mkOsc KR "SpecFlatness" [b] 1
specPcile :: UGen -> UGen -> UGen -> UGen
specPcile b f i = mkOsc KR "SpecPcile" [b, f, i] 1
specCentroid :: UGen -> UGen
specCentroid b = mkOsc KR "SpecCentroid" [b] 1