module Sound.SC3.UGen.IO where
import Sound.SC3.UGen.Enum
import Sound.SC3.UGen.Rate
import Sound.SC3.UGen.UGen
import Sound.SC3.UGen.Utilities
in' :: Int -> Rate -> UGen -> UGen
in' nc r bus = mkOsc r "In" [bus] nc
localIn :: Int -> Rate -> UGen
localIn nc r = mkOsc r "LocalIn" [] nc
lagIn :: Int -> UGen -> UGen -> UGen
lagIn nc bus lag = mkOsc KR "LagIn" [bus, lag] nc
inFeedback :: Int -> UGen -> UGen
inFeedback nc bus = mkOsc AR "InFeedback" [bus] nc
inTrig :: Int -> UGen -> UGen
inTrig nc bus = mkOsc KR "InTrig" [bus] nc
out :: UGen -> UGen -> UGen
out bus i = mkFilterMCE "Out" [bus] i 0
replaceOut :: UGen -> UGen -> UGen
replaceOut bus i = mkFilterMCE "ReplaceOut" [bus] i 0
offsetOut :: UGen -> UGen -> UGen
offsetOut bus i = mkOscMCE AR "OffsetOut" [bus] i 0
localOut :: UGen -> UGen
localOut i = mkFilterMCE "LocalOut" [] i 0
xOut :: UGen -> UGen -> UGen -> UGen
xOut bus xfade i = mkFilterMCE "XOut" [bus, xfade] i 0
sharedOut :: UGen -> UGen -> UGen
sharedOut bus i = mkOscMCE KR "SharedOut" [bus] i 0
sharedIn :: Int -> UGen -> UGen
sharedIn nc bus = mkOsc KR "SharedIn" [bus] nc
keyState :: Rate -> UGen -> UGen -> UGen -> UGen -> UGen
keyState r key minVal maxVal lag = mkOsc r "KeyState" [key, minVal, maxVal, lag] 1
mouseButton :: Rate -> UGen -> UGen -> UGen -> UGen
mouseButton r ll rl lag = mkOsc r "MouseButton" [ll, rl, lag] 1
mouseX :: Rate -> UGen -> UGen -> Warp -> UGen -> UGen
mouseX r ll rl w lag = mkOsc r "MouseX" [ll, rl, from_warp w, lag] 1
mouseY :: Rate -> UGen -> UGen -> Warp -> UGen -> UGen
mouseY r ll rl w lag = mkOsc r "MouseY" [ll, rl, from_warp w, lag] 1
trigControl :: Int -> Rate -> UGen
trigControl nc r = mkOsc r "TrigControl" [] nc