-- | First order Markov Chain implementation for audio signals
module Sound.SC3.UGen.Record.MarkovSynth where
import qualified Sound.SC3.UGen as S
import Sound.SC3.UGen.Record
data MarkovSynth = MarkovSynth {
  input :: S.UGen,
  isRecording :: S.UGen,
  waitTime :: S.UGen,
  tableSize :: S.UGen
  } deriving (Show)
markovSynth :: MarkovSynth
markovSynth = MarkovSynth {
  input = 0.0,
  isRecording = 1.0,
  waitTime = 2.0,
  tableSize = 10.0
  }
mkMarkovSynth :: MarkovSynth -> S.UGen
mkMarkovSynth (MarkovSynth  a' b' c' d') = S.mkOsc S.AR "MarkovSynth" [a',b',c',d'] 1
instance Make MarkovSynth where
  ugen = mkMarkovSynth