module Vivid.UGens.InOut (
aIn
, kIn
, out
, aOut
, kOut
, kOut_mono
, soundIn
) where
import Vivid.SynthDef
import Vivid.SynthDef.FromUA
import Vivid.UGens.Algebraic
import Vivid.UGens.Args
import Data.Proxy
aIn :: (Args '["bus"] '[] a) => a -> SDBody a Signal
aIn = makeUGen
"In" AR
(Vs::Vs '["bus"])
NoDefaults
kIn :: (Args '["bus"] '[] a) => a -> SDBody a Signal
kIn = makeUGen
"In" KR
(Vs::Vs '["bus"])
NoDefaults
out :: (ToSig i a, ToSig busNum a) => busNum -> [i] -> SDBody' a [Signal]
out = aOut
aOut :: (ToSig i a, ToSig busNum a) => busNum -> [i] -> SDBody' a [Signal]
aOut busNum is = do
busNum' <- toSig busNum
is' <- mapM toSig is
addPolyUGen $ UGen (UGName_S "Out") AR (busNum' : is') ((length::[a]->Int) is)
kOut :: (ToSig i a, ToSig busNum a) => busNum -> [i] -> SDBody' a [Signal]
kOut busNum is = do
busNum' <- toSig busNum
is' <- mapM toSig is
addPolyUGen $ UGen (UGName_S "Out") KR (busNum' : is') ((length::[a]->Int) is)
kOut_mono :: (ToSig i a) => Int -> i -> SDBody' a Signal
kOut_mono busNum i = do
i' <- toSig i
addUGen $ UGen (UGName_S "Out") KR [Constant (toEnum busNum), i'] 1
soundIn :: Args '["bus"] '[] a => a -> SDBody a Signal
soundIn args = do
bus <- args `uaArgVal` (Proxy::Proxy "bus")
nob <- addUGen $ UGen (UGName_S "NumOutputBuses") IR [] 1
inPos <- nob ~+ bus
addUGen $ UGen (UGName_S "In") AR [inPos] 1