module Csound.Typed.Plugins.Iain(
pitchShifterDelay,
fxAnalogDelay, fxDistortion, fxEnvelopeFollower, fxFlanger, fxFreqShifter, fxLoFi,
fxPanTrem, fxMonoTrem, fxPhaser, fxPitchShifter, fxReverse, fxRingModulator, fxChorus2, fxPingPong
) where
import Csound.Dynamic
import Csound.Typed.Types
import Csound.Typed.GlobalState
import qualified Csound.Typed.GlobalState.Elements as E(pitchShifterDelayPlugin,
analogDelayPlugin, distortionPlugin, envelopeFolollowerPlugin, flangerPlugin, freqShifterPlugin,
loFiPlugin, panTremPlugin, monoTremPlugin, phaserPlugin, pitchShifterPlugin, reversePlugin, ringModulatorPlugin, stChorusPlugin, stereoPingPongDelayPlugin)
pitchShifterDelay :: D -> (Sig, Sig) -> Sig -> Sig -> Sig -> Sig
pitchShifterDelay :: D -> Sig2 -> Sig -> Sig -> Sig -> Sig
pitchShifterDelay D
imaxdlt (Sig
fb1, Sig
fb2) Sig
kdel Sig
ktrans Sig
ain = Sig -> Sig -> Sig -> Sig -> Sig -> D -> Sig
csdPitchShifterDelay Sig
ain Sig
ktrans Sig
kdel Sig
fb1 Sig
fb2 D
imaxdlt
csdPitchShifterDelay :: Sig -> Sig -> Sig -> Sig -> Sig -> D -> Sig
csdPitchShifterDelay :: Sig -> Sig -> Sig -> Sig -> Sig -> D -> Sig
csdPitchShifterDelay Sig
ain Sig
ktrans Sig
kdlt Sig
kFB1 Sig
kFB2 D
imaxdlt = GE E -> Sig
forall a. Val a => GE E -> a
fromGE (GE E -> Sig) -> GE E -> Sig
forall a b. (a -> b) -> a -> b
$ do
UdoPlugin -> GE ()
addUdoPlugin UdoPlugin
E.pitchShifterDelayPlugin
E -> E -> E -> E -> E -> E -> E
f (E -> E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
ain GE (E -> E -> E -> E -> E -> E)
-> GE E -> GE (E -> E -> E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
ktrans GE (E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kdlt GE (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kFB1 GE (E -> E -> E) -> GE E -> GE (E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kFB2 GE (E -> E) -> GE E -> GE E
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
forall a. Val a => a -> GE E
toGE D
imaxdlt
where f :: E -> E -> E -> E -> E -> E -> E
f E
ain' E
ktrans' E
kdlt' E
kFB1' E
kFB2' E
imaxdlt' = Name -> Spec1 -> [E] -> E
opcs Name
"PitchShifterDelay" [(Rate
Ar, [Rate
Ar, Rate
Kr, Rate
Kr, Rate
Kr, Rate
Kr, Rate
Ir])] [E
ain', E
ktrans', E
kdlt', E
kFB1', E
kFB2', E
imaxdlt']
fxAnalogDelay :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig
fxAnalogDelay :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig
fxAnalogDelay Sig
kmix Sig
ktime Sig
kfback Sig
ktone Sig
ain = Sig -> Sig -> Sig -> Sig -> Sig -> Sig
csdAnalogDelay Sig
ain Sig
kmix Sig
ktime Sig
kfback Sig
ktone
csdAnalogDelay :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig
csdAnalogDelay :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig
csdAnalogDelay Sig
ain Sig
kmix Sig
ktime Sig
kfback Sig
ktone = GE E -> Sig
forall a. Val a => GE E -> a
fromGE (GE E -> Sig) -> GE E -> Sig
forall a b. (a -> b) -> a -> b
$ do
UdoPlugin -> GE ()
addUdoPlugin UdoPlugin
E.analogDelayPlugin
E -> E -> E -> E -> E -> E
f (E -> E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
ain GE (E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kmix GE (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
ktime GE (E -> E -> E) -> GE E -> GE (E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kfback GE (E -> E) -> GE E -> GE E
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
ktone
where f :: E -> E -> E -> E -> E -> E
f E
ain' E
kmix' E
ktime' E
kfback' E
ktone' = Name -> Spec1 -> [E] -> E
opcs Name
"AnalogDelay" [(Rate
Ar,[Rate
Ar,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr])] [E
ain', E
kmix', E
ktime', E
kfback', E
ktone']
fxDistortion :: Sig -> Sig -> Sig -> Sig -> Sig
fxDistortion :: Sig -> Sig -> Sig -> Sig -> Sig
fxDistortion Sig
klevel Sig
kdrive Sig
ktone Sig
ain = Sig -> Sig -> Sig -> Sig -> Sig
csdDistortion Sig
ain Sig
klevel Sig
kdrive Sig
ktone
csdDistortion :: Sig -> Sig -> Sig -> Sig -> Sig
csdDistortion :: Sig -> Sig -> Sig -> Sig -> Sig
csdDistortion Sig
ain Sig
klevel Sig
kdrive Sig
ktone = GE E -> Sig
forall a. Val a => GE E -> a
fromGE (GE E -> Sig) -> GE E -> Sig
forall a b. (a -> b) -> a -> b
$ do
UdoPlugin -> GE ()
addUdoPlugin UdoPlugin
E.distortionPlugin
E -> E -> E -> E -> E
f (E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
ain GE (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
klevel GE (E -> E -> E) -> GE E -> GE (E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kdrive GE (E -> E) -> GE E -> GE E
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
ktone
where f :: E -> E -> E -> E -> E
f E
ain' E
klevel' E
kdrive' E
ktone' = Name -> Spec1 -> [E] -> E
opcs Name
"Distortion" [(Rate
Ar,[Rate
Ar,Rate
Kr,Rate
Kr,Rate
Kr])] [E
ain', E
klevel', E
kdrive', E
ktone']
fxEnvelopeFollower :: Sig -> Sig -> Sig -> Sig -> Sig
fxEnvelopeFollower :: Sig -> Sig -> Sig -> Sig -> Sig
fxEnvelopeFollower Sig
ksens Sig
kfreq Sig
kres Sig
ain = Sig -> Sig -> Sig -> Sig -> Sig
csdEnvelopeFollower Sig
ain Sig
ksens Sig
kfreq Sig
kres
csdEnvelopeFollower :: Sig -> Sig -> Sig -> Sig -> Sig
csdEnvelopeFollower :: Sig -> Sig -> Sig -> Sig -> Sig
csdEnvelopeFollower Sig
ain Sig
ksens Sig
kfreq Sig
kres = GE E -> Sig
forall a. Val a => GE E -> a
fromGE (GE E -> Sig) -> GE E -> Sig
forall a b. (a -> b) -> a -> b
$ do
UdoPlugin -> GE ()
addUdoPlugin UdoPlugin
E.envelopeFolollowerPlugin
E -> E -> E -> E -> E
f (E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
ain GE (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
ksens GE (E -> E -> E) -> GE E -> GE (E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kfreq GE (E -> E) -> GE E -> GE E
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kres
where f :: E -> E -> E -> E -> E
f E
ain' E
ksens' E
kfreq' E
kres' = Name -> Spec1 -> [E] -> E
opcs Name
"EnvelopeFollower" [(Rate
Ar,[Rate
Ar,Rate
Kr,Rate
Kr,Rate
Kr])] [E
ain', E
ksens', E
kfreq', E
kres']
fxFlanger :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig
fxFlanger :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig
fxFlanger Sig
krate Sig
kdepth Sig
kdelay Sig
kfback Sig
ain = GE E -> Sig
forall a. Val a => GE E -> a
fromGE (GE E -> Sig) -> GE E -> Sig
forall a b. (a -> b) -> a -> b
$ do
UdoPlugin -> GE ()
addUdoPlugin UdoPlugin
E.flangerPlugin
E -> E -> E -> E -> E -> E
f (E -> E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
ain GE (E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
krate GE (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kdepth GE (E -> E -> E) -> GE E -> GE (E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kdelay GE (E -> E) -> GE E -> GE E
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kfback
where f :: E -> E -> E -> E -> E -> E
f E
ain' E
krate' E
kdepth' E
kdelay' E
kfback' = Name -> Spec1 -> [E] -> E
opcs Name
"Flanger" [(Rate
Ar,[Rate
Ar,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr])] [E
ain', E
krate', E
kdepth', E
kdelay', E
kfback']
fxFreqShifter :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig
fxFreqShifter :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig
fxFreqShifter Sig
kmix Sig
kfreq Sig
kmult Sig
kfback Sig
adry = GE E -> Sig
forall a. Val a => GE E -> a
fromGE (GE E -> Sig) -> GE E -> Sig
forall a b. (a -> b) -> a -> b
$ do
UdoPlugin -> GE ()
addUdoPlugin UdoPlugin
E.freqShifterPlugin
E -> E -> E -> E -> E -> E
f (E -> E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
adry GE (E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kmix GE (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kfreq GE (E -> E -> E) -> GE E -> GE (E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kmult GE (E -> E) -> GE E -> GE E
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kfback
where f :: E -> E -> E -> E -> E -> E
f E
adry' E
kmix' E
kfreq' E
kmult' E
kfback' = Name -> Spec1 -> [E] -> E
opcs Name
"FreqShifter" [(Rate
Ar,[Rate
Ar,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr])] [E
adry', E
kmix', E
kfreq', E
kmult', E
kfback']
fxLoFi :: Sig -> Sig -> Sig -> Sig
fxLoFi :: Sig -> Sig -> Sig -> Sig
fxLoFi Sig
kbits Sig
kfold Sig
ain = GE E -> Sig
forall a. Val a => GE E -> a
fromGE (GE E -> Sig) -> GE E -> Sig
forall a b. (a -> b) -> a -> b
$ do
UdoPlugin -> GE ()
addUdoPlugin UdoPlugin
E.loFiPlugin
E -> E -> E -> E
f (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
ain GE (E -> E -> E) -> GE E -> GE (E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kbits GE (E -> E) -> GE E -> GE E
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kfold
where f :: E -> E -> E -> E
f E
ain' E
kbits' E
kfold' = Name -> Spec1 -> [E] -> E
opcs Name
"LoFi" [(Rate
Ar,[Rate
Ar,Rate
Kr,Rate
Kr])] [E
ain', E
kbits', E
kfold']
fxPanTrem :: Sig -> Sig -> Sig -> Sig -> Sig2 -> Sig2
fxPanTrem :: Sig -> Sig -> Sig -> Sig -> Sig2 -> Sig2
fxPanTrem Sig
krate Sig
kdepth Sig
kmode Sig
kwave (Sig
ainL, Sig
ainR) = GE [E] -> Sig2
forall a. Tuple a => GE [E] -> a
toTuple (GE [E] -> Sig2) -> GE [E] -> Sig2
forall a b. (a -> b) -> a -> b
$ do
UdoPlugin -> GE ()
addUdoPlugin UdoPlugin
E.panTremPlugin
E -> E -> E -> E -> E -> E -> [E]
f (E -> E -> E -> E -> E -> E -> [E])
-> GE E -> GE (E -> E -> E -> E -> E -> [E])
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
ainL GE (E -> E -> E -> E -> E -> [E])
-> GE E -> GE (E -> E -> E -> E -> [E])
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
ainR GE (E -> E -> E -> E -> [E]) -> GE E -> GE (E -> E -> E -> [E])
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
krate GE (E -> E -> E -> [E]) -> GE E -> GE (E -> E -> [E])
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kdepth GE (E -> E -> [E]) -> GE E -> GE (E -> [E])
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kmode GE (E -> [E]) -> GE E -> GE [E]
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kwave
where f :: E -> E -> E -> E -> E -> E -> [E]
f E
ainL' E
ainR' E
krate' E
kdepth' E
kmode' E
kwave' = ((Int -> [E]) -> Int -> [E]
forall a b. (a -> b) -> a -> b
$ Int
2) ((Int -> [E]) -> [E]) -> (Int -> [E]) -> [E]
forall a b. (a -> b) -> a -> b
$ Name -> Specs -> [E] -> Int -> [E]
mopcs Name
"PanTrem" ([Rate
Ar,Rate
Ar], [Rate
Ar,Rate
Ar, Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr]) [E
ainL', E
ainR', E
krate', E
kdepth', E
kmode', E
kwave']
fxMonoTrem :: Sig -> Sig -> Sig -> Sig -> Sig
fxMonoTrem :: Sig -> Sig -> Sig -> Sig -> Sig
fxMonoTrem Sig
krate Sig
kdepth Sig
kwave Sig
ain = GE E -> Sig
forall a. Val a => GE E -> a
fromGE (GE E -> Sig) -> GE E -> Sig
forall a b. (a -> b) -> a -> b
$ do
UdoPlugin -> GE ()
addUdoPlugin UdoPlugin
E.monoTremPlugin
E -> E -> E -> E -> E
f (E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
ain GE (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
krate GE (E -> E -> E) -> GE E -> GE (E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kdepth GE (E -> E) -> GE E -> GE E
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kwave
where f :: E -> E -> E -> E -> E
f E
ain' E
krate' E
kdepth' E
kwave' = Name -> Spec1 -> [E] -> E
opcs Name
"MonoTrem" [(Rate
Ar, [Rate
Ar,Rate
Kr,Rate
Kr,Rate
Kr])] [E
ain', E
krate', E
kdepth', E
kwave']
fxPhaser :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig
fxPhaser :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig
fxPhaser Sig
krate Sig
kdepth Sig
kfreq Sig
kfback Sig
ain = GE E -> Sig
forall a. Val a => GE E -> a
fromGE (GE E -> Sig) -> GE E -> Sig
forall a b. (a -> b) -> a -> b
$ do
UdoPlugin -> GE ()
addUdoPlugin UdoPlugin
E.phaserPlugin
E -> E -> E -> E -> E -> E
f (E -> E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
ain GE (E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
krate GE (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kdepth GE (E -> E -> E) -> GE E -> GE (E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kfreq GE (E -> E) -> GE E -> GE E
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kfback
where f :: E -> E -> E -> E -> E -> E
f E
ain' E
krate' E
kdepth' E
kfreq' E
kfback' = Name -> Spec1 -> [E] -> E
opcs Name
"Phaser" [(Rate
Ar,[Rate
Ar,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr])] [E
ain', E
krate', E
kdepth', E
kfreq', E
kfback']
fxPitchShifter :: D -> Sig -> Sig -> Sig -> Sig -> Sig
fxPitchShifter :: D -> Sig -> Sig -> Sig -> Sig -> Sig
fxPitchShifter D
ifftsize Sig
kmix Sig
kscal Sig
kfback Sig
ain = GE E -> Sig
forall a. Val a => GE E -> a
fromGE (GE E -> Sig) -> GE E -> Sig
forall a b. (a -> b) -> a -> b
$ do
UdoPlugin -> GE ()
addUdoPlugin UdoPlugin
E.pitchShifterPlugin
E -> E -> E -> E -> E -> E
f (E -> E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E -> E)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
ain GE (E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kmix GE (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kscal GE (E -> E -> E) -> GE E -> GE (E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kfback GE (E -> E) -> GE E -> GE E
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
forall a. Val a => a -> GE E
toGE D
ifftsize
where f :: E -> E -> E -> E -> E -> E
f E
ain' E
kmix' E
kscal' E
kfback' E
ifftsize' = Name -> Spec1 -> [E] -> E
opcs Name
"PitchShifter" [(Rate
Ar,[Rate
Ar,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Ir])] [E
ain', E
kmix', E
kscal', E
kfback', E
ifftsize']
fxReverse :: Sig -> Sig -> Sig
fxReverse :: Sig -> Sig -> Sig
fxReverse Sig
ktime Sig
ain = GE E -> Sig
forall a. Val a => GE E -> a
fromGE (GE E -> Sig) -> GE E -> Sig
forall a b. (a -> b) -> a -> b
$ do
UdoPlugin -> GE ()
addUdoPlugin UdoPlugin
E.reversePlugin
E -> E -> E
f (E -> E -> E) -> GE E -> GE (E -> E)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
ain GE (E -> E) -> GE E -> GE E
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
ktime
where f :: E -> E -> E
f E
ain' E
ktime' = Name -> Spec1 -> [E] -> E
opcs Name
"Reverse" [(Rate
Ar,[Rate
Ar,Rate
Kr])] [E
ain', E
ktime']
fxRingModulator :: Sig -> Sig -> Sig -> Sig -> Sig
fxRingModulator :: Sig -> Sig -> Sig -> Sig -> Sig
fxRingModulator Sig
kmix Sig
kfreq Sig
kenv Sig
ain = GE E -> Sig
forall a. Val a => GE E -> a
fromGE (GE E -> Sig) -> GE E -> Sig
forall a b. (a -> b) -> a -> b
$ do
UdoPlugin -> GE ()
addUdoPlugin UdoPlugin
E.ringModulatorPlugin
E -> E -> E -> E -> E
f (E -> E -> E -> E -> E) -> GE E -> GE (E -> E -> E -> E)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
ain GE (E -> E -> E -> E) -> GE E -> GE (E -> E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kmix GE (E -> E -> E) -> GE E -> GE (E -> E)
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kfreq GE (E -> E) -> GE E -> GE E
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kenv
where f :: E -> E -> E -> E -> E
f E
ain' E
kmix' E
kfreq' E
kenv' = Name -> Spec1 -> [E] -> E
opcs Name
"RingModulator" [(Rate
Ar,[Rate
Ar,Rate
Kr,Rate
Kr,Rate
Kr])] [E
ain', E
kmix', E
kfreq', E
kenv']
fxChorus2 :: Sig -> Sig -> Sig -> Sig2 -> Sig2
fxChorus2 :: Sig -> Sig -> Sig -> Sig2 -> Sig2
fxChorus2 Sig
krate Sig
kdepth Sig
kwidth (Sig
ainL, Sig
ainR) = GE [E] -> Sig2
forall a. Tuple a => GE [E] -> a
toTuple (GE [E] -> Sig2) -> GE [E] -> Sig2
forall a b. (a -> b) -> a -> b
$ do
UdoPlugin -> GE ()
addUdoPlugin UdoPlugin
E.stChorusPlugin
E -> E -> E -> E -> E -> [E]
f (E -> E -> E -> E -> E -> [E])
-> GE E -> GE (E -> E -> E -> E -> [E])
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
ainL GE (E -> E -> E -> E -> [E]) -> GE E -> GE (E -> E -> E -> [E])
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
ainR GE (E -> E -> E -> [E]) -> GE E -> GE (E -> E -> [E])
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
krate GE (E -> E -> [E]) -> GE E -> GE (E -> [E])
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kdepth GE (E -> [E]) -> GE E -> GE [E]
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kwidth
where f :: E -> E -> E -> E -> E -> [E]
f E
ainL' E
ainR' E
krate' E
kdepth' E
kwidth' = ((Int -> [E]) -> Int -> [E]
forall a b. (a -> b) -> a -> b
$ Int
2) ((Int -> [E]) -> [E]) -> (Int -> [E]) -> [E]
forall a b. (a -> b) -> a -> b
$ Name -> Specs -> [E] -> Int -> [E]
mopcs Name
"StChorus" ([Rate
Ar,Rate
Ar], [Rate
Ar,Rate
Ar,Rate
Kr,Rate
Kr,Rate
Kr]) [E
ainL', E
ainR', E
krate', E
kdepth', E
kwidth']
fxPingPong :: D -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig2 -> Sig2
fxPingPong :: D -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig2 -> Sig2
fxPingPong D
iMaxDelTime Sig
kmix Sig
kwidth Sig
ktone Sig
ktime Sig
kfeedback (Sig
ainL, Sig
ainR) = GE [E] -> Sig2
forall a. Tuple a => GE [E] -> a
toTuple (GE [E] -> Sig2) -> GE [E] -> Sig2
forall a b. (a -> b) -> a -> b
$ do
UdoPlugin -> GE ()
addUdoPlugin UdoPlugin
E.stereoPingPongDelayPlugin
E -> E -> E -> E -> E -> E -> E -> E -> [E]
f (E -> E -> E -> E -> E -> E -> E -> E -> [E])
-> GE E -> GE (E -> E -> E -> E -> E -> E -> E -> [E])
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
ainL GE (E -> E -> E -> E -> E -> E -> E -> [E])
-> GE E -> GE (E -> E -> E -> E -> E -> E -> [E])
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
ainR GE (E -> E -> E -> E -> E -> E -> [E])
-> GE E -> GE (E -> E -> E -> E -> E -> [E])
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
ktime GE (E -> E -> E -> E -> E -> [E])
-> GE E -> GE (E -> E -> E -> E -> [E])
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kfeedback GE (E -> E -> E -> E -> [E]) -> GE E -> GE (E -> E -> E -> [E])
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kmix GE (E -> E -> E -> [E]) -> GE E -> GE (E -> E -> [E])
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
kwidth GE (E -> E -> [E]) -> GE E -> GE (E -> [E])
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Sig -> GE E
forall a. Val a => a -> GE E
toGE Sig
ktone GE (E -> [E]) -> GE E -> GE [E]
forall a b. GE (a -> b) -> GE a -> GE b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> D -> GE E
forall a. Val a => a -> GE E
toGE D
iMaxDelTime
where f :: E -> E -> E -> E -> E -> E -> E -> E -> [E]
f E
ainL' E
ainR' E
ktime' E
kfeedback' E
kmix' E
kwidth' E
ktone' E
iMaxDelTime' = ((Int -> [E]) -> Int -> [E]
forall a b. (a -> b) -> a -> b
$ Int
2) ((Int -> [E]) -> [E]) -> (Int -> [E]) -> [E]
forall a b. (a -> b) -> a -> b
$ Name -> Specs -> [E] -> Int -> [E]
mopcs Name
"StereoPingPongDelay" ([Rate
Ar,Rate
Ar], [Rate
Ar,Rate
Ar,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Kr,Rate
Ir]) [E
ainL', E
ainR', E
ktime', E
kfeedback', E
kmix', E
kwidth', E
ktone', E
iMaxDelTime']