-- | Autocorrelation pitch follower
module Sound.SC3.UGen.Record.Pitch where
import qualified Sound.SC3.UGen as S
import Sound.SC3.UGen.Record
data Pitch = Pitch {
  input :: S.UGen,
  initFreq :: S.UGen,
  minFreq :: S.UGen,
  maxFreq :: S.UGen,
  execFreq :: S.UGen,
  maxBinsPerOctave :: S.UGen,
  median :: S.UGen,
  ampThreshold :: S.UGen,
  peakThreshold :: S.UGen,
  downSample :: S.UGen,
  clar :: S.UGen
  } deriving (Show)
pitch :: Pitch
pitch = Pitch {
  input = 0.0,
  initFreq = 440.0,
  minFreq = 60.0,
  maxFreq = 4000.0,
  execFreq = 100.0,
  maxBinsPerOctave = 16.0,
  median = 1.0,
  ampThreshold = 0.01,
  peakThreshold = 0.5,
  downSample = 1.0,
  clar = 0.0
  }
mkPitch :: Pitch -> S.UGen
mkPitch (Pitch  a' b' c' d' e' f' g' h' i' j' k') = S.mkOsc S.KR "Pitch" [a',b',c',d',e',f',g',h',i',j',k'] 2
instance Make Pitch where
  ugen = mkPitch