{-# Language TypeFamilies, TypeSynonymInstances, MultiParamTypeClasses, FlexibleInstances, FlexibleContexts #-}
-- | Argument modifiers. Functions to transform arguments of the function with flexibility.
module Csound.Air.ModArg(
    -- * Basic class
    ModArg1(..), ModArg2(..), ModArg3(..), ModArg4(..),
    -- ** Delayed
    delModArg1, delModArg2, delModArg3, delModArg4,

    -- * Oscillators
    oscArg1, oscArg2, oscArg3, oscArg4,
    triArg1, triArg2, triArg3, triArg4,
    sqrArg1, sqrArg2, sqrArg3, sqrArg4,
    sawArg1, sawArg2, sawArg3, sawArg4,

    -- ** Random phase
    rndOscArg1, rndOscArg2, rndOscArg3, rndOscArg4,
    rndTriArg1, rndTriArg2, rndTriArg3, rndTriArg4,
    rndSqrArg1, rndSqrArg2, rndSqrArg3, rndSqrArg4,
    rndSawArg1, rndSawArg2, rndSawArg3, rndSawArg4,

    -- ** Delayed
    delOscArg1, delOscArg2, delOscArg3, delOscArg4,
    delTriArg1, delTriArg2, delTriArg3, delTriArg4,
    delSqrArg1, delSqrArg2, delSqrArg3, delSqrArg4,
    delSawArg1, delSawArg2, delSawArg3, delSawArg4,

    -- ** Delayed with Random phase
    delRndOscArg1, delRndOscArg2, delRndOscArg3, delRndOscArg4,
    delRndTriArg1, delRndTriArg2, delRndTriArg3, delRndTriArg4,
    delRndSqrArg1, delRndSqrArg2, delRndSqrArg3, delRndSqrArg4,
    delRndSawArg1, delRndSawArg2, delRndSawArg3, delRndSawArg4,

    -- * Noise
    noiseArg1, noiseArg2, noiseArg3, noiseArg4,
    pinkArg1, pinkArg2, pinkArg3, pinkArg4,
    jitArg1, jitArg2, jitArg3, jitArg4,
    gaussArg1, gaussArg2, gaussArg3, gaussArg4,
    gaussiArg1, gaussiArg2, gaussiArg3, gaussiArg4,

    -- ** Delayed
    delNoiseArg1, delNoiseArg2, delNoiseArg3, delNoiseArg4,
    delPinkArg1, delPinkArg2, delPinkArg3, delPinkArg4,
    delJitArg1, delJitArg2, delJitArg3, delJitArg4,
    delGaussArg1, delGaussArg2, delGaussArg3, delGaussArg4,
    delGaussiArg1, delGaussiArg2, delGaussiArg3, delGaussiArg4,

    -- * Envelopes
    adsrArg1, adsrArg2, adsrArg3, adsrArg4,
    xadsrArg1, xadsrArg2, xadsrArg3, xadsrArg4,

    -- ** Delayed
    delAdsrArg1, delAdsrArg2, delAdsrArg3, delAdsrArg4,
    delXadsrArg1, delXadsrArg2, delXadsrArg3, delXadsrArg4

) where

import Csound.Typed
import Csound.Typed.Opcode(gauss, gaussi, jitter, linseg, linsegr, expsegr)
import Csound.Air.Wave
import Csound.Air.Envelope

-- trumpet:
-- dac $ mul 1.3 $ mixAt 0.15 largeHall2 $ midi $ onMsg (\cps -> (mul (linsegr [0,0.01, 1, 3, 0.2] 0.2 0) . at (jitterArg1 (0.15 + 0.05 * uosc 0.2) 3 20  alp1 (mul (fades 0.2 0.2) $ 2700 + 0.6 * cps) 0.2) . gaussArg1 0.03 (\x -> return (saw x) + mul (0.12 * expseg [1, 2, 0.1]) (bat (alp1 cps 0.4) white))) cps)

delEnv :: SigSpace a => D -> D -> a -> a
delEnv :: D -> D -> a -> a
delEnv D
delTime D
riseTime a
asig = Sig -> a -> a
forall a. SigSpace a => Sig -> a -> a
mul ([D] -> Sig
linseg [D
0, D
delTime, D
0, D
riseTime, D
1]) a
asig

delModArg1 :: (SigSpace a, ModArg1 a b) => D -> D -> Sig -> a -> b -> ModArgOut1 a b
delModArg1 :: D -> D -> Sig -> a -> b -> ModArgOut1 a b
delModArg1 D
delTime D
riseTime Sig
depth a
modSig b
f = Sig -> a -> b -> ModArgOut1 a b
forall a b. ModArg1 a b => Sig -> a -> b -> ModArgOut1 a b
modArg1 (D -> D -> Sig -> Sig
forall a. SigSpace a => D -> D -> a -> a
delEnv D
delTime D
riseTime Sig
depth) a
modSig b
f

delModArg2 :: (SigSpace a, ModArg2 a b) => D -> D -> Sig -> a -> b -> ModArgOut2 a b
delModArg2 :: D -> D -> Sig -> a -> b -> ModArgOut2 a b
delModArg2 D
delTime D
riseTime Sig
depth a
modSig b
f = Sig -> a -> b -> ModArgOut2 a b
forall a b. ModArg2 a b => Sig -> a -> b -> ModArgOut2 a b
modArg2 (D -> D -> Sig -> Sig
forall a. SigSpace a => D -> D -> a -> a
delEnv D
delTime D
riseTime Sig
depth) a
modSig b
f

delModArg3 :: (SigSpace a, ModArg3 a b) => D -> D -> Sig -> a -> b -> ModArgOut3 a b
delModArg3 :: D -> D -> Sig -> a -> b -> ModArgOut3 a b
delModArg3 D
delTime D
riseTime Sig
depth a
modSig b
f = Sig -> a -> b -> ModArgOut3 a b
forall a b. ModArg3 a b => Sig -> a -> b -> ModArgOut3 a b
modArg3 (D -> D -> Sig -> Sig
forall a. SigSpace a => D -> D -> a -> a
delEnv D
delTime D
riseTime Sig
depth) a
modSig b
f

delModArg4 :: (SigSpace a, ModArg4 a b) => D -> D -> Sig -> a -> b -> ModArgOut4 a b
delModArg4 :: D -> D -> Sig -> a -> b -> ModArgOut4 a b
delModArg4 D
delTime D
riseTime Sig
depth a
modSig b
f = Sig -> a -> b -> ModArgOut4 a b
forall a b. ModArg4 a b => Sig -> a -> b -> ModArgOut4 a b
modArg4 (D -> D -> Sig -> Sig
forall a. SigSpace a => D -> D -> a -> a
delEnv D
delTime D
riseTime Sig
depth) a
modSig b
f

-- adsr mod

adsrArg1 :: (ModArg1 Sig b) => Sig -> D -> D -> D -> D -> b -> ModArgOut1 Sig b
adsrArg1 :: Sig -> D -> D -> D -> D -> b -> ModArgOut1 Sig b
adsrArg1 Sig
depth D
a D
d D
s D
r b
f = Sig -> Sig -> b -> ModArgOut1 Sig b
forall a b. ModArg1 a b => Sig -> a -> b -> ModArgOut1 a b
modArg1 Sig
depth (D -> D -> D -> D -> Sig
leg D
a D
d D
s D
r) b
f

adsrArg2 :: (ModArg2 Sig b) => Sig -> D -> D -> D -> D -> b -> ModArgOut2 Sig b
adsrArg2 :: Sig -> D -> D -> D -> D -> b -> ModArgOut2 Sig b
adsrArg2 Sig
depth D
a D
d D
s D
r b
f = Sig -> Sig -> b -> ModArgOut2 Sig b
forall a b. ModArg2 a b => Sig -> a -> b -> ModArgOut2 a b
modArg2 Sig
depth (D -> D -> D -> D -> Sig
leg D
a D
d D
s D
r) b
f

adsrArg3 :: (ModArg3 Sig b) => Sig -> D -> D -> D -> D -> b -> ModArgOut3 Sig b
adsrArg3 :: Sig -> D -> D -> D -> D -> b -> ModArgOut3 Sig b
adsrArg3 Sig
depth D
a D
d D
s D
r b
f = Sig -> Sig -> b -> ModArgOut3 Sig b
forall a b. ModArg3 a b => Sig -> a -> b -> ModArgOut3 a b
modArg3 Sig
depth (D -> D -> D -> D -> Sig
leg D
a D
d D
s D
r) b
f

adsrArg4 :: (ModArg4 Sig b) => Sig -> D -> D -> D -> D -> b -> ModArgOut4 Sig b
adsrArg4 :: Sig -> D -> D -> D -> D -> b -> ModArgOut4 Sig b
adsrArg4 Sig
depth D
a D
d D
s D
r b
f = Sig -> Sig -> b -> ModArgOut4 Sig b
forall a b. ModArg4 a b => Sig -> a -> b -> ModArgOut4 a b
modArg4 Sig
depth (D -> D -> D -> D -> Sig
leg D
a D
d D
s D
r) b
f

-- delayed adsr mod

delLeg :: D -> D -> D -> D -> D -> Sig
delLeg :: D -> D -> D -> D -> D -> Sig
delLeg D
delTime D
a D
d D
s D
r = [D] -> D -> D -> Sig
linsegr [D
0, D
delTime, D
0, D
a, D
1, D
d, D
s] D
r D
0

delAdsrArg1 :: (ModArg1 Sig b) => D -> Sig -> D -> D -> D -> D -> b -> ModArgOut1 Sig b
delAdsrArg1 :: D -> Sig -> D -> D -> D -> D -> b -> ModArgOut1 Sig b
delAdsrArg1 D
delTime Sig
depth D
a D
d D
s D
r b
f = Sig -> Sig -> b -> ModArgOut1 Sig b
forall a b. ModArg1 a b => Sig -> a -> b -> ModArgOut1 a b
modArg1 Sig
depth (D -> D -> D -> D -> D -> Sig
delLeg D
delTime D
a D
d D
s D
r) b
f

delAdsrArg2 :: (ModArg2 Sig b) => D -> Sig -> D -> D -> D -> D -> b -> ModArgOut2 Sig b
delAdsrArg2 :: D -> Sig -> D -> D -> D -> D -> b -> ModArgOut2 Sig b
delAdsrArg2 D
delTime Sig
depth D
a D
d D
s D
r b
f = Sig -> Sig -> b -> ModArgOut2 Sig b
forall a b. ModArg2 a b => Sig -> a -> b -> ModArgOut2 a b
modArg2 Sig
depth (D -> D -> D -> D -> D -> Sig
delLeg D
delTime D
a D
d D
s D
r) b
f

delAdsrArg3 :: (ModArg3 Sig b) => D -> Sig -> D -> D -> D -> D -> b -> ModArgOut3 Sig b
delAdsrArg3 :: D -> Sig -> D -> D -> D -> D -> b -> ModArgOut3 Sig b
delAdsrArg3 D
delTime Sig
depth D
a D
d D
s D
r b
f = Sig -> Sig -> b -> ModArgOut3 Sig b
forall a b. ModArg3 a b => Sig -> a -> b -> ModArgOut3 a b
modArg3 Sig
depth (D -> D -> D -> D -> D -> Sig
delLeg D
delTime D
a D
d D
s D
r) b
f

delAdsrArg4 :: (ModArg4 Sig b) => D -> Sig -> D -> D -> D -> D -> b -> ModArgOut4 Sig b
delAdsrArg4 :: D -> Sig -> D -> D -> D -> D -> b -> ModArgOut4 Sig b
delAdsrArg4 D
delTime Sig
depth D
a D
d D
s D
r b
f = Sig -> Sig -> b -> ModArgOut4 Sig b
forall a b. ModArg4 a b => Sig -> a -> b -> ModArgOut4 a b
modArg4 Sig
depth (D -> D -> D -> D -> D -> Sig
delLeg D
delTime D
a D
d D
s D
r) b
f

-- expon adsr mod

xadsrArg1 :: (ModArg1 Sig b) => Sig -> D -> D -> D -> D -> b -> ModArgOut1 Sig b
xadsrArg1 :: Sig -> D -> D -> D -> D -> b -> ModArgOut1 Sig b
xadsrArg1 Sig
depth D
a D
d D
s D
r b
f = Sig -> Sig -> b -> ModArgOut1 Sig b
forall a b. ModArg1 a b => Sig -> a -> b -> ModArgOut1 a b
modArg1 Sig
depth (D -> D -> D -> D -> Sig
xeg D
a D
d D
s D
r) b
f

xadsrArg2 :: (ModArg2 Sig b) => Sig -> D -> D -> D -> D -> b -> ModArgOut2 Sig b
xadsrArg2 :: Sig -> D -> D -> D -> D -> b -> ModArgOut2 Sig b
xadsrArg2 Sig
depth D
a D
d D
s D
r b
f = Sig -> Sig -> b -> ModArgOut2 Sig b
forall a b. ModArg2 a b => Sig -> a -> b -> ModArgOut2 a b
modArg2 Sig
depth (D -> D -> D -> D -> Sig
xeg D
a D
d D
s D
r) b
f

xadsrArg3 :: (ModArg3 Sig b) => Sig -> D -> D -> D -> D -> b -> ModArgOut3 Sig b
xadsrArg3 :: Sig -> D -> D -> D -> D -> b -> ModArgOut3 Sig b
xadsrArg3 Sig
depth D
a D
d D
s D
r b
f = Sig -> Sig -> b -> ModArgOut3 Sig b
forall a b. ModArg3 a b => Sig -> a -> b -> ModArgOut3 a b
modArg3 Sig
depth (D -> D -> D -> D -> Sig
xeg D
a D
d D
s D
r) b
f

xadsrArg4 :: (ModArg4 Sig b) => Sig -> D -> D -> D -> D -> b -> ModArgOut4 Sig b
xadsrArg4 :: Sig -> D -> D -> D -> D -> b -> ModArgOut4 Sig b
xadsrArg4 Sig
depth D
a D
d D
s D
r b
f = Sig -> Sig -> b -> ModArgOut4 Sig b
forall a b. ModArg4 a b => Sig -> a -> b -> ModArgOut4 a b
modArg4 Sig
depth (D -> D -> D -> D -> Sig
xeg D
a D
d D
s D
r) b
f

-- delayed expon adsr mod

delXeg :: D -> D -> D -> D -> D -> Sig
delXeg :: D -> D -> D -> D -> D -> Sig
delXeg D
delTime D
a D
d D
s D
r = [D] -> D -> D -> Sig
expsegr [D
0.001, D
delTime, D
0.001, D
a, D
1, D
d, D
s] D
r D
0.001

delXadsrArg1 :: (ModArg1 Sig b) => D -> Sig -> D -> D -> D -> D -> b -> ModArgOut1 Sig b
delXadsrArg1 :: D -> Sig -> D -> D -> D -> D -> b -> ModArgOut1 Sig b
delXadsrArg1 D
delTime Sig
depth D
a D
d D
s D
r b
f = Sig -> Sig -> b -> ModArgOut1 Sig b
forall a b. ModArg1 a b => Sig -> a -> b -> ModArgOut1 a b
modArg1 Sig
depth (D -> D -> D -> D -> D -> Sig
delXeg D
delTime D
a D
d D
s D
r) b
f

delXadsrArg2 :: (ModArg2 Sig b) => D -> Sig -> D -> D -> D -> D -> b -> ModArgOut2 Sig b
delXadsrArg2 :: D -> Sig -> D -> D -> D -> D -> b -> ModArgOut2 Sig b
delXadsrArg2 D
delTime Sig
depth D
a D
d D
s D
r b
f = Sig -> Sig -> b -> ModArgOut2 Sig b
forall a b. ModArg2 a b => Sig -> a -> b -> ModArgOut2 a b
modArg2 Sig
depth (D -> D -> D -> D -> D -> Sig
delXeg D
delTime D
a D
d D
s D
r) b
f

delXadsrArg3 :: (ModArg3 Sig b) => D -> Sig -> D -> D -> D -> D -> b -> ModArgOut3 Sig b
delXadsrArg3 :: D -> Sig -> D -> D -> D -> D -> b -> ModArgOut3 Sig b
delXadsrArg3 D
delTime Sig
depth D
a D
d D
s D
r b
f = Sig -> Sig -> b -> ModArgOut3 Sig b
forall a b. ModArg3 a b => Sig -> a -> b -> ModArgOut3 a b
modArg3 Sig
depth (D -> D -> D -> D -> D -> Sig
delXeg D
delTime D
a D
d D
s D
r) b
f

delXadsrArg4 :: (ModArg4 Sig b) => D -> Sig -> D -> D -> D -> D -> b -> ModArgOut4 Sig b
delXadsrArg4 :: D -> Sig -> D -> D -> D -> D -> b -> ModArgOut4 Sig b
delXadsrArg4 D
delTime Sig
depth D
a D
d D
s D
r b
f = Sig -> Sig -> b -> ModArgOut4 Sig b
forall a b. ModArg4 a b => Sig -> a -> b -> ModArgOut4 a b
modArg4 Sig
depth (D -> D -> D -> D -> D -> Sig
delXeg D
delTime D
a D
d D
s D
r) b
f

-- oscil lfo

oscArg1 :: (ModArg1 Sig b) => Sig -> Sig -> b -> ModArgOut1 Sig b
oscArg1 :: Sig -> Sig -> b -> ModArgOut1 Sig b
oscArg1 Sig
depth Sig
rate b
f = Sig -> Sig -> b -> ModArgOut1 Sig b
forall a b. ModArg1 a b => Sig -> a -> b -> ModArgOut1 a b
modArg1 Sig
depth (Sig -> Sig
osc Sig
rate) b
f

oscArg2 :: (ModArg2 Sig b) => Sig -> Sig -> b -> ModArgOut2 Sig b
oscArg2 :: Sig -> Sig -> b -> ModArgOut2 Sig b
oscArg2 Sig
depth Sig
rate b
f = Sig -> Sig -> b -> ModArgOut2 Sig b
forall a b. ModArg2 a b => Sig -> a -> b -> ModArgOut2 a b
modArg2 Sig
depth (Sig -> Sig
osc Sig
rate) b
f

oscArg3 :: (ModArg3 Sig b) => Sig -> Sig -> b -> ModArgOut3 Sig b
oscArg3 :: Sig -> Sig -> b -> ModArgOut3 Sig b
oscArg3 Sig
depth Sig
rate b
f = Sig -> Sig -> b -> ModArgOut3 Sig b
forall a b. ModArg3 a b => Sig -> a -> b -> ModArgOut3 a b
modArg3 Sig
depth (Sig -> Sig
osc Sig
rate) b
f

oscArg4 :: (ModArg4 Sig b) => Sig -> Sig -> b -> ModArgOut4 Sig b
oscArg4 :: Sig -> Sig -> b -> ModArgOut4 Sig b
oscArg4 Sig
depth Sig
rate b
f = Sig -> Sig -> b -> ModArgOut4 Sig b
forall a b. ModArg4 a b => Sig -> a -> b -> ModArgOut4 a b
modArg4 Sig
depth (Sig -> Sig
osc Sig
rate) b
f

-- delayed oscil lfo

delOscArg1 :: (ModArg1 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut1 Sig b
delOscArg1 :: D -> D -> Sig -> Sig -> b -> ModArgOut1 Sig b
delOscArg1 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> Sig -> b -> ModArgOut1 Sig b
forall a b.
(SigSpace a, ModArg1 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut1 a b
delModArg1 D
delTime D
riseTime Sig
depth (Sig -> Sig
osc Sig
rate) b
f

delOscArg2 :: (ModArg2 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut2 Sig b
delOscArg2 :: D -> D -> Sig -> Sig -> b -> ModArgOut2 Sig b
delOscArg2 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> Sig -> b -> ModArgOut2 Sig b
forall a b.
(SigSpace a, ModArg2 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut2 a b
delModArg2 D
delTime D
riseTime Sig
depth (Sig -> Sig
osc Sig
rate) b
f

delOscArg3 :: (ModArg3 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut3 Sig b
delOscArg3 :: D -> D -> Sig -> Sig -> b -> ModArgOut3 Sig b
delOscArg3 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> Sig -> b -> ModArgOut3 Sig b
forall a b.
(SigSpace a, ModArg3 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut3 a b
delModArg3 D
delTime D
riseTime Sig
depth (Sig -> Sig
osc Sig
rate) b
f

delOscArg4 :: (ModArg4 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut4 Sig b
delOscArg4 :: D -> D -> Sig -> Sig -> b -> ModArgOut4 Sig b
delOscArg4 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> Sig -> b -> ModArgOut4 Sig b
forall a b.
(SigSpace a, ModArg4 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut4 a b
delModArg4 D
delTime D
riseTime Sig
depth (Sig -> Sig
osc Sig
rate) b
f

-- tri lfo

triArg1 :: (ModArg1 Sig b) => Sig -> Sig -> b -> ModArgOut1 Sig b
triArg1 :: Sig -> Sig -> b -> ModArgOut1 Sig b
triArg1 Sig
depth Sig
rate b
f = Sig -> Sig -> b -> ModArgOut1 Sig b
forall a b. ModArg1 a b => Sig -> a -> b -> ModArgOut1 a b
modArg1 Sig
depth (Sig -> Sig
tri Sig
rate) b
f

triArg2 :: (ModArg2 Sig b) => Sig -> Sig -> b -> ModArgOut2 Sig b
triArg2 :: Sig -> Sig -> b -> ModArgOut2 Sig b
triArg2 Sig
depth Sig
rate b
f = Sig -> Sig -> b -> ModArgOut2 Sig b
forall a b. ModArg2 a b => Sig -> a -> b -> ModArgOut2 a b
modArg2 Sig
depth (Sig -> Sig
tri Sig
rate) b
f

triArg3 :: (ModArg3 Sig b) => Sig -> Sig -> b -> ModArgOut3 Sig b
triArg3 :: Sig -> Sig -> b -> ModArgOut3 Sig b
triArg3 Sig
depth Sig
rate b
f = Sig -> Sig -> b -> ModArgOut3 Sig b
forall a b. ModArg3 a b => Sig -> a -> b -> ModArgOut3 a b
modArg3 Sig
depth (Sig -> Sig
tri Sig
rate) b
f

triArg4 :: (ModArg4 Sig b) => Sig -> Sig -> b -> ModArgOut4 Sig b
triArg4 :: Sig -> Sig -> b -> ModArgOut4 Sig b
triArg4 Sig
depth Sig
rate b
f = Sig -> Sig -> b -> ModArgOut4 Sig b
forall a b. ModArg4 a b => Sig -> a -> b -> ModArgOut4 a b
modArg4 Sig
depth (Sig -> Sig
tri Sig
rate) b
f

-- delayed tri lfo

delTriArg1 :: (ModArg1 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut1 Sig b
delTriArg1 :: D -> D -> Sig -> Sig -> b -> ModArgOut1 Sig b
delTriArg1 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> Sig -> b -> ModArgOut1 Sig b
forall a b.
(SigSpace a, ModArg1 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut1 a b
delModArg1 D
delTime D
riseTime Sig
depth (Sig -> Sig
tri Sig
rate) b
f

delTriArg2 :: (ModArg2 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut2 Sig b
delTriArg2 :: D -> D -> Sig -> Sig -> b -> ModArgOut2 Sig b
delTriArg2 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> Sig -> b -> ModArgOut2 Sig b
forall a b.
(SigSpace a, ModArg2 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut2 a b
delModArg2 D
delTime D
riseTime Sig
depth (Sig -> Sig
tri Sig
rate) b
f

delTriArg3 :: (ModArg3 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut3 Sig b
delTriArg3 :: D -> D -> Sig -> Sig -> b -> ModArgOut3 Sig b
delTriArg3 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> Sig -> b -> ModArgOut3 Sig b
forall a b.
(SigSpace a, ModArg3 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut3 a b
delModArg3 D
delTime D
riseTime Sig
depth (Sig -> Sig
tri Sig
rate) b
f

delTriArg4 :: (ModArg4 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut4 Sig b
delTriArg4 :: D -> D -> Sig -> Sig -> b -> ModArgOut4 Sig b
delTriArg4 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> Sig -> b -> ModArgOut4 Sig b
forall a b.
(SigSpace a, ModArg4 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut4 a b
delModArg4 D
delTime D
riseTime Sig
depth (Sig -> Sig
tri Sig
rate) b
f

-- sqr lfo

sqrArg1 :: (ModArg1 Sig b) => Sig -> Sig -> b -> ModArgOut1 Sig b
sqrArg1 :: Sig -> Sig -> b -> ModArgOut1 Sig b
sqrArg1 Sig
depth Sig
rate b
f = Sig -> Sig -> b -> ModArgOut1 Sig b
forall a b. ModArg1 a b => Sig -> a -> b -> ModArgOut1 a b
modArg1 Sig
depth (Sig -> Sig
sqr Sig
rate) b
f

sqrArg2 :: (ModArg2 Sig b) => Sig -> Sig -> b -> ModArgOut2 Sig b
sqrArg2 :: Sig -> Sig -> b -> ModArgOut2 Sig b
sqrArg2 Sig
depth Sig
rate b
f = Sig -> Sig -> b -> ModArgOut2 Sig b
forall a b. ModArg2 a b => Sig -> a -> b -> ModArgOut2 a b
modArg2 Sig
depth (Sig -> Sig
sqr Sig
rate) b
f

sqrArg3 :: (ModArg3 Sig b) => Sig -> Sig -> b -> ModArgOut3 Sig b
sqrArg3 :: Sig -> Sig -> b -> ModArgOut3 Sig b
sqrArg3 Sig
depth Sig
rate b
f = Sig -> Sig -> b -> ModArgOut3 Sig b
forall a b. ModArg3 a b => Sig -> a -> b -> ModArgOut3 a b
modArg3 Sig
depth (Sig -> Sig
sqr Sig
rate) b
f

sqrArg4 :: (ModArg4 Sig b) => Sig -> Sig -> b -> ModArgOut4 Sig b
sqrArg4 :: Sig -> Sig -> b -> ModArgOut4 Sig b
sqrArg4 Sig
depth Sig
rate b
f = Sig -> Sig -> b -> ModArgOut4 Sig b
forall a b. ModArg4 a b => Sig -> a -> b -> ModArgOut4 a b
modArg4 Sig
depth (Sig -> Sig
sqr Sig
rate) b
f

-- sqr lfo

delSqrArg1 :: (ModArg1 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut1 Sig b
delSqrArg1 :: D -> D -> Sig -> Sig -> b -> ModArgOut1 Sig b
delSqrArg1 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> Sig -> b -> ModArgOut1 Sig b
forall a b.
(SigSpace a, ModArg1 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut1 a b
delModArg1 D
delTime D
riseTime Sig
depth (Sig -> Sig
sqr Sig
rate) b
f

delSqrArg2 :: (ModArg2 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut2 Sig b
delSqrArg2 :: D -> D -> Sig -> Sig -> b -> ModArgOut2 Sig b
delSqrArg2 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> Sig -> b -> ModArgOut2 Sig b
forall a b.
(SigSpace a, ModArg2 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut2 a b
delModArg2 D
delTime D
riseTime Sig
depth (Sig -> Sig
sqr Sig
rate) b
f

delSqrArg3 :: (ModArg3 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut3 Sig b
delSqrArg3 :: D -> D -> Sig -> Sig -> b -> ModArgOut3 Sig b
delSqrArg3 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> Sig -> b -> ModArgOut3 Sig b
forall a b.
(SigSpace a, ModArg3 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut3 a b
delModArg3 D
delTime D
riseTime Sig
depth (Sig -> Sig
sqr Sig
rate) b
f

delSqrArg4 :: (ModArg4 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut4 Sig b
delSqrArg4 :: D -> D -> Sig -> Sig -> b -> ModArgOut4 Sig b
delSqrArg4 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> Sig -> b -> ModArgOut4 Sig b
forall a b.
(SigSpace a, ModArg4 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut4 a b
delModArg4 D
delTime D
riseTime Sig
depth (Sig -> Sig
sqr Sig
rate) b
f

-- saw lfo

sawArg1 :: (ModArg1 Sig b) => Sig -> Sig -> b -> ModArgOut1 Sig b
sawArg1 :: Sig -> Sig -> b -> ModArgOut1 Sig b
sawArg1 Sig
depth Sig
rate b
f = Sig -> Sig -> b -> ModArgOut1 Sig b
forall a b. ModArg1 a b => Sig -> a -> b -> ModArgOut1 a b
modArg1 Sig
depth (Sig -> Sig
saw Sig
rate) b
f

sawArg2 :: (ModArg2 Sig b) => Sig -> Sig -> b -> ModArgOut2 Sig b
sawArg2 :: Sig -> Sig -> b -> ModArgOut2 Sig b
sawArg2 Sig
depth Sig
rate b
f = Sig -> Sig -> b -> ModArgOut2 Sig b
forall a b. ModArg2 a b => Sig -> a -> b -> ModArgOut2 a b
modArg2 Sig
depth (Sig -> Sig
saw Sig
rate) b
f

sawArg3 :: (ModArg3 Sig b) => Sig -> Sig -> b -> ModArgOut3 Sig b
sawArg3 :: Sig -> Sig -> b -> ModArgOut3 Sig b
sawArg3 Sig
depth Sig
rate b
f = Sig -> Sig -> b -> ModArgOut3 Sig b
forall a b. ModArg3 a b => Sig -> a -> b -> ModArgOut3 a b
modArg3 Sig
depth (Sig -> Sig
saw Sig
rate) b
f

sawArg4 :: (ModArg4 Sig b) => Sig -> Sig -> b -> ModArgOut4 Sig b
sawArg4 :: Sig -> Sig -> b -> ModArgOut4 Sig b
sawArg4 Sig
depth Sig
rate b
f = Sig -> Sig -> b -> ModArgOut4 Sig b
forall a b. ModArg4 a b => Sig -> a -> b -> ModArgOut4 a b
modArg4 Sig
depth (Sig -> Sig
saw Sig
rate) b
f

-- delayed saw lfo

delSawArg1 :: (ModArg1 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut1 Sig b
delSawArg1 :: D -> D -> Sig -> Sig -> b -> ModArgOut1 Sig b
delSawArg1 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> Sig -> b -> ModArgOut1 Sig b
forall a b.
(SigSpace a, ModArg1 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut1 a b
delModArg1 D
delTime D
riseTime Sig
depth (Sig -> Sig
saw Sig
rate) b
f

delSawArg2 :: (ModArg2 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut2 Sig b
delSawArg2 :: D -> D -> Sig -> Sig -> b -> ModArgOut2 Sig b
delSawArg2 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> Sig -> b -> ModArgOut2 Sig b
forall a b.
(SigSpace a, ModArg2 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut2 a b
delModArg2 D
delTime D
riseTime Sig
depth (Sig -> Sig
saw Sig
rate) b
f

delSawArg3 :: (ModArg3 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut3 Sig b
delSawArg3 :: D -> D -> Sig -> Sig -> b -> ModArgOut3 Sig b
delSawArg3 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> Sig -> b -> ModArgOut3 Sig b
forall a b.
(SigSpace a, ModArg3 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut3 a b
delModArg3 D
delTime D
riseTime Sig
depth (Sig -> Sig
saw Sig
rate) b
f

delSawArg4 :: (ModArg4 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut4 Sig b
delSawArg4 :: D -> D -> Sig -> Sig -> b -> ModArgOut4 Sig b
delSawArg4 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> Sig -> b -> ModArgOut4 Sig b
forall a b.
(SigSpace a, ModArg4 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut4 a b
delModArg4 D
delTime D
riseTime Sig
depth (Sig -> Sig
saw Sig
rate) b
f

-- oscil lfo rnd phase

rndOscArg1 :: (ModArg1 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut1 (SE Sig) b
rndOscArg1 :: Sig -> Sig -> b -> ModArgOut1 (SE Sig) b
rndOscArg1 Sig
depth Sig
rate b
f = Sig -> SE Sig -> b -> ModArgOut1 (SE Sig) b
forall a b. ModArg1 a b => Sig -> a -> b -> ModArgOut1 a b
modArg1 Sig
depth (Sig -> SE Sig
rndOsc Sig
rate) b
f

rndOscArg2 :: (ModArg2 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut2 (SE Sig) b
rndOscArg2 :: Sig -> Sig -> b -> ModArgOut2 (SE Sig) b
rndOscArg2 Sig
depth Sig
rate b
f = Sig -> SE Sig -> b -> ModArgOut2 (SE Sig) b
forall a b. ModArg2 a b => Sig -> a -> b -> ModArgOut2 a b
modArg2 Sig
depth (Sig -> SE Sig
rndOsc Sig
rate) b
f

rndOscArg3 :: (ModArg3 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut3 (SE Sig) b
rndOscArg3 :: Sig -> Sig -> b -> ModArgOut3 (SE Sig) b
rndOscArg3 Sig
depth Sig
rate b
f = Sig -> SE Sig -> b -> ModArgOut3 (SE Sig) b
forall a b. ModArg3 a b => Sig -> a -> b -> ModArgOut3 a b
modArg3 Sig
depth (Sig -> SE Sig
rndOsc Sig
rate) b
f

rndOscArg4 :: (ModArg4 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut4 (SE Sig) b
rndOscArg4 :: Sig -> Sig -> b -> ModArgOut4 (SE Sig) b
rndOscArg4 Sig
depth Sig
rate b
f = Sig -> SE Sig -> b -> ModArgOut4 (SE Sig) b
forall a b. ModArg4 a b => Sig -> a -> b -> ModArgOut4 a b
modArg4 Sig
depth (Sig -> SE Sig
rndOsc Sig
rate) b
f

-- delayed oscil lfo rnd phase

delRndOscArg1 :: (ModArg1 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b
delRndOscArg1 :: D -> D -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b
delRndOscArg1 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut1 (SE Sig) b
forall a b.
(SigSpace a, ModArg1 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut1 a b
delModArg1 D
delTime D
riseTime Sig
depth (Sig -> SE Sig
rndOsc Sig
rate) b
f

delRndOscArg2 :: (ModArg2 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b
delRndOscArg2 :: D -> D -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b
delRndOscArg2 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut2 (SE Sig) b
forall a b.
(SigSpace a, ModArg2 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut2 a b
delModArg2 D
delTime D
riseTime Sig
depth (Sig -> SE Sig
rndOsc Sig
rate) b
f

delRndOscArg3 :: (ModArg3 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b
delRndOscArg3 :: D -> D -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b
delRndOscArg3 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut3 (SE Sig) b
forall a b.
(SigSpace a, ModArg3 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut3 a b
delModArg3 D
delTime D
riseTime Sig
depth (Sig -> SE Sig
rndOsc Sig
rate) b
f

delRndOscArg4 :: (ModArg4 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b
delRndOscArg4 :: D -> D -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b
delRndOscArg4 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut4 (SE Sig) b
forall a b.
(SigSpace a, ModArg4 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut4 a b
delModArg4 D
delTime D
riseTime Sig
depth (Sig -> SE Sig
rndOsc Sig
rate) b
f

-- tri lfo rnd phase

rndTriArg1 :: (ModArg1 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut1 (SE Sig) b
rndTriArg1 :: Sig -> Sig -> b -> ModArgOut1 (SE Sig) b
rndTriArg1 Sig
depth Sig
rate b
f = Sig -> SE Sig -> b -> ModArgOut1 (SE Sig) b
forall a b. ModArg1 a b => Sig -> a -> b -> ModArgOut1 a b
modArg1 Sig
depth (Sig -> SE Sig
rndTri Sig
rate) b
f

rndTriArg2 :: (ModArg2 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut2 (SE Sig) b
rndTriArg2 :: Sig -> Sig -> b -> ModArgOut2 (SE Sig) b
rndTriArg2 Sig
depth Sig
rate b
f = Sig -> SE Sig -> b -> ModArgOut2 (SE Sig) b
forall a b. ModArg2 a b => Sig -> a -> b -> ModArgOut2 a b
modArg2 Sig
depth (Sig -> SE Sig
rndTri Sig
rate) b
f

rndTriArg3 :: (ModArg3 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut3 (SE Sig) b
rndTriArg3 :: Sig -> Sig -> b -> ModArgOut3 (SE Sig) b
rndTriArg3 Sig
depth Sig
rate b
f = Sig -> SE Sig -> b -> ModArgOut3 (SE Sig) b
forall a b. ModArg3 a b => Sig -> a -> b -> ModArgOut3 a b
modArg3 Sig
depth (Sig -> SE Sig
rndTri Sig
rate) b
f

rndTriArg4 :: (ModArg4 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut4 (SE Sig) b
rndTriArg4 :: Sig -> Sig -> b -> ModArgOut4 (SE Sig) b
rndTriArg4 Sig
depth Sig
rate b
f = Sig -> SE Sig -> b -> ModArgOut4 (SE Sig) b
forall a b. ModArg4 a b => Sig -> a -> b -> ModArgOut4 a b
modArg4 Sig
depth (Sig -> SE Sig
rndTri Sig
rate) b
f

-- delayed tri lfo rnd phase

delRndTriArg1 :: (ModArg1 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b
delRndTriArg1 :: D -> D -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b
delRndTriArg1 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut1 (SE Sig) b
forall a b.
(SigSpace a, ModArg1 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut1 a b
delModArg1 D
delTime D
riseTime Sig
depth (Sig -> SE Sig
rndTri Sig
rate) b
f

delRndTriArg2 :: (ModArg2 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b
delRndTriArg2 :: D -> D -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b
delRndTriArg2 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut2 (SE Sig) b
forall a b.
(SigSpace a, ModArg2 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut2 a b
delModArg2 D
delTime D
riseTime Sig
depth (Sig -> SE Sig
rndTri Sig
rate) b
f

delRndTriArg3 :: (ModArg3 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b
delRndTriArg3 :: D -> D -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b
delRndTriArg3 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut3 (SE Sig) b
forall a b.
(SigSpace a, ModArg3 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut3 a b
delModArg3 D
delTime D
riseTime Sig
depth (Sig -> SE Sig
rndTri Sig
rate) b
f

delRndTriArg4 :: (ModArg4 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b
delRndTriArg4 :: D -> D -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b
delRndTriArg4 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut4 (SE Sig) b
forall a b.
(SigSpace a, ModArg4 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut4 a b
delModArg4 D
delTime D
riseTime Sig
depth (Sig -> SE Sig
rndTri Sig
rate) b
f

-- sqr lfo rnd phase

rndSqrArg1 :: (ModArg1 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut1 (SE Sig) b
rndSqrArg1 :: Sig -> Sig -> b -> ModArgOut1 (SE Sig) b
rndSqrArg1 Sig
depth Sig
rate b
f = Sig -> SE Sig -> b -> ModArgOut1 (SE Sig) b
forall a b. ModArg1 a b => Sig -> a -> b -> ModArgOut1 a b
modArg1 Sig
depth (Sig -> SE Sig
rndSqr Sig
rate) b
f

rndSqrArg2 :: (ModArg2 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut2 (SE Sig) b
rndSqrArg2 :: Sig -> Sig -> b -> ModArgOut2 (SE Sig) b
rndSqrArg2 Sig
depth Sig
rate b
f = Sig -> SE Sig -> b -> ModArgOut2 (SE Sig) b
forall a b. ModArg2 a b => Sig -> a -> b -> ModArgOut2 a b
modArg2 Sig
depth (Sig -> SE Sig
rndSqr Sig
rate) b
f

rndSqrArg3 :: (ModArg3 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut3 (SE Sig) b
rndSqrArg3 :: Sig -> Sig -> b -> ModArgOut3 (SE Sig) b
rndSqrArg3 Sig
depth Sig
rate b
f = Sig -> SE Sig -> b -> ModArgOut3 (SE Sig) b
forall a b. ModArg3 a b => Sig -> a -> b -> ModArgOut3 a b
modArg3 Sig
depth (Sig -> SE Sig
rndSqr Sig
rate) b
f

rndSqrArg4 :: (ModArg4 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut4 (SE Sig) b
rndSqrArg4 :: Sig -> Sig -> b -> ModArgOut4 (SE Sig) b
rndSqrArg4 Sig
depth Sig
rate b
f = Sig -> SE Sig -> b -> ModArgOut4 (SE Sig) b
forall a b. ModArg4 a b => Sig -> a -> b -> ModArgOut4 a b
modArg4 Sig
depth (Sig -> SE Sig
rndSqr Sig
rate) b
f

-- sqr lfo rnd phase

delRndSqrArg1 :: (ModArg1 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b
delRndSqrArg1 :: D -> D -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b
delRndSqrArg1 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut1 (SE Sig) b
forall a b.
(SigSpace a, ModArg1 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut1 a b
delModArg1 D
delTime D
riseTime Sig
depth (Sig -> SE Sig
rndSqr Sig
rate) b
f

delRndSqrArg2 :: (ModArg2 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b
delRndSqrArg2 :: D -> D -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b
delRndSqrArg2 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut2 (SE Sig) b
forall a b.
(SigSpace a, ModArg2 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut2 a b
delModArg2 D
delTime D
riseTime Sig
depth (Sig -> SE Sig
rndSqr Sig
rate) b
f

delRndSqrArg3 :: (ModArg3 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b
delRndSqrArg3 :: D -> D -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b
delRndSqrArg3 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut3 (SE Sig) b
forall a b.
(SigSpace a, ModArg3 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut3 a b
delModArg3 D
delTime D
riseTime Sig
depth (Sig -> SE Sig
rndSqr Sig
rate) b
f

delRndSqrArg4 :: (ModArg4 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b
delRndSqrArg4 :: D -> D -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b
delRndSqrArg4 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut4 (SE Sig) b
forall a b.
(SigSpace a, ModArg4 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut4 a b
delModArg4 D
delTime D
riseTime Sig
depth (Sig -> SE Sig
rndSqr Sig
rate) b
f

-- sqr lfo rnd phase

rndSawArg1 :: (ModArg1 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut1 (SE Sig) b
rndSawArg1 :: Sig -> Sig -> b -> ModArgOut1 (SE Sig) b
rndSawArg1 Sig
depth Sig
rate b
f = Sig -> SE Sig -> b -> ModArgOut1 (SE Sig) b
forall a b. ModArg1 a b => Sig -> a -> b -> ModArgOut1 a b
modArg1 Sig
depth (Sig -> SE Sig
rndSaw Sig
rate) b
f

rndSawArg2 :: (ModArg2 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut2 (SE Sig) b
rndSawArg2 :: Sig -> Sig -> b -> ModArgOut2 (SE Sig) b
rndSawArg2 Sig
depth Sig
rate b
f = Sig -> SE Sig -> b -> ModArgOut2 (SE Sig) b
forall a b. ModArg2 a b => Sig -> a -> b -> ModArgOut2 a b
modArg2 Sig
depth (Sig -> SE Sig
rndSaw Sig
rate) b
f

rndSawArg3 :: (ModArg3 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut3 (SE Sig) b
rndSawArg3 :: Sig -> Sig -> b -> ModArgOut3 (SE Sig) b
rndSawArg3 Sig
depth Sig
rate b
f = Sig -> SE Sig -> b -> ModArgOut3 (SE Sig) b
forall a b. ModArg3 a b => Sig -> a -> b -> ModArgOut3 a b
modArg3 Sig
depth (Sig -> SE Sig
rndSaw Sig
rate) b
f

rndSawArg4 :: (ModArg4 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut4 (SE Sig) b
rndSawArg4 :: Sig -> Sig -> b -> ModArgOut4 (SE Sig) b
rndSawArg4 Sig
depth Sig
rate b
f = Sig -> SE Sig -> b -> ModArgOut4 (SE Sig) b
forall a b. ModArg4 a b => Sig -> a -> b -> ModArgOut4 a b
modArg4 Sig
depth (Sig -> SE Sig
rndSaw Sig
rate) b
f

-- delayed sqr lfo rnd phase

delRndSawArg1 :: (ModArg1 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b
delRndSawArg1 :: D -> D -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b
delRndSawArg1 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut1 (SE Sig) b
forall a b.
(SigSpace a, ModArg1 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut1 a b
delModArg1 D
delTime D
riseTime Sig
depth (Sig -> SE Sig
rndSaw Sig
rate) b
f

delRndSawArg2 :: (ModArg2 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b
delRndSawArg2 :: D -> D -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b
delRndSawArg2 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut2 (SE Sig) b
forall a b.
(SigSpace a, ModArg2 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut2 a b
delModArg2 D
delTime D
riseTime Sig
depth (Sig -> SE Sig
rndSaw Sig
rate) b
f

delRndSawArg3 :: (ModArg3 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b
delRndSawArg3 :: D -> D -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b
delRndSawArg3 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut3 (SE Sig) b
forall a b.
(SigSpace a, ModArg3 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut3 a b
delModArg3 D
delTime D
riseTime Sig
depth (Sig -> SE Sig
rndSaw Sig
rate) b
f

delRndSawArg4 :: (ModArg4 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b
delRndSawArg4 :: D -> D -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b
delRndSawArg4 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut4 (SE Sig) b
forall a b.
(SigSpace a, ModArg4 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut4 a b
delModArg4 D
delTime D
riseTime Sig
depth (Sig -> SE Sig
rndSaw Sig
rate) b
f

-- white noise

noiseArg1 :: (ModArg1 (SE Sig) b) => Sig -> b -> ModArgOut1 (SE Sig) b
noiseArg1 :: Sig -> b -> ModArgOut1 (SE Sig) b
noiseArg1 Sig
depth b
f = Sig -> SE Sig -> b -> ModArgOut1 (SE Sig) b
forall a b. ModArg1 a b => Sig -> a -> b -> ModArgOut1 a b
modArg1 Sig
depth SE Sig
white b
f

noiseArg2 :: (ModArg2 (SE Sig) b) => Sig -> b -> ModArgOut2 (SE Sig) b
noiseArg2 :: Sig -> b -> ModArgOut2 (SE Sig) b
noiseArg2 Sig
depth b
f = Sig -> SE Sig -> b -> ModArgOut2 (SE Sig) b
forall a b. ModArg2 a b => Sig -> a -> b -> ModArgOut2 a b
modArg2 Sig
depth SE Sig
white b
f

noiseArg3 :: (ModArg3 (SE Sig) b) => Sig -> b -> ModArgOut3 (SE Sig) b
noiseArg3 :: Sig -> b -> ModArgOut3 (SE Sig) b
noiseArg3 Sig
depth b
f = Sig -> SE Sig -> b -> ModArgOut3 (SE Sig) b
forall a b. ModArg3 a b => Sig -> a -> b -> ModArgOut3 a b
modArg3 Sig
depth SE Sig
white b
f

noiseArg4 :: (ModArg4 (SE Sig) b) => Sig -> b -> ModArgOut4 (SE Sig) b
noiseArg4 :: Sig -> b -> ModArgOut4 (SE Sig) b
noiseArg4 Sig
depth b
f = Sig -> SE Sig -> b -> ModArgOut4 (SE Sig) b
forall a b. ModArg4 a b => Sig -> a -> b -> ModArgOut4 a b
modArg4 Sig
depth SE Sig
white b
f

-- delayed white noise

delNoiseArg1 :: (ModArg1 (SE Sig) b) => D -> D -> Sig -> b -> ModArgOut1 (SE Sig) b
delNoiseArg1 :: D -> D -> Sig -> b -> ModArgOut1 (SE Sig) b
delNoiseArg1 D
delTime D
riseTime Sig
depth b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut1 (SE Sig) b
forall a b.
(SigSpace a, ModArg1 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut1 a b
delModArg1 D
delTime D
riseTime Sig
depth SE Sig
white b
f

delNoiseArg2 :: (ModArg2 (SE Sig) b) => D -> D -> Sig -> b -> ModArgOut2 (SE Sig) b
delNoiseArg2 :: D -> D -> Sig -> b -> ModArgOut2 (SE Sig) b
delNoiseArg2 D
delTime D
riseTime Sig
depth b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut2 (SE Sig) b
forall a b.
(SigSpace a, ModArg2 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut2 a b
delModArg2 D
delTime D
riseTime Sig
depth SE Sig
white b
f

delNoiseArg3 :: (ModArg3 (SE Sig) b) => D -> D -> Sig -> b -> ModArgOut3 (SE Sig) b
delNoiseArg3 :: D -> D -> Sig -> b -> ModArgOut3 (SE Sig) b
delNoiseArg3 D
delTime D
riseTime Sig
depth b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut3 (SE Sig) b
forall a b.
(SigSpace a, ModArg3 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut3 a b
delModArg3 D
delTime D
riseTime Sig
depth SE Sig
white b
f

delNoiseArg4 :: (ModArg4 (SE Sig) b) => D -> D -> Sig -> b -> ModArgOut4 (SE Sig) b
delNoiseArg4 :: D -> D -> Sig -> b -> ModArgOut4 (SE Sig) b
delNoiseArg4 D
delTime D
riseTime Sig
depth b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut4 (SE Sig) b
forall a b.
(SigSpace a, ModArg4 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut4 a b
delModArg4 D
delTime D
riseTime Sig
depth SE Sig
white b
f

-- pink noise

pinkArg1 :: (ModArg1 (SE Sig) b) => Sig -> b -> ModArgOut1 (SE Sig) b
pinkArg1 :: Sig -> b -> ModArgOut1 (SE Sig) b
pinkArg1 Sig
depth b
f = Sig -> SE Sig -> b -> ModArgOut1 (SE Sig) b
forall a b. ModArg1 a b => Sig -> a -> b -> ModArgOut1 a b
modArg1 Sig
depth SE Sig
pink b
f

pinkArg2 :: (ModArg2 (SE Sig) b) => Sig -> b -> ModArgOut2 (SE Sig) b
pinkArg2 :: Sig -> b -> ModArgOut2 (SE Sig) b
pinkArg2 Sig
depth b
f = Sig -> SE Sig -> b -> ModArgOut2 (SE Sig) b
forall a b. ModArg2 a b => Sig -> a -> b -> ModArgOut2 a b
modArg2 Sig
depth SE Sig
pink b
f

pinkArg3 :: (ModArg3 (SE Sig) b) => Sig -> b -> ModArgOut3 (SE Sig) b
pinkArg3 :: Sig -> b -> ModArgOut3 (SE Sig) b
pinkArg3 Sig
depth b
f = Sig -> SE Sig -> b -> ModArgOut3 (SE Sig) b
forall a b. ModArg3 a b => Sig -> a -> b -> ModArgOut3 a b
modArg3 Sig
depth SE Sig
pink b
f

pinkArg4 :: (ModArg4 (SE Sig) b) => Sig -> b -> ModArgOut4 (SE Sig) b
pinkArg4 :: Sig -> b -> ModArgOut4 (SE Sig) b
pinkArg4 Sig
depth b
f = Sig -> SE Sig -> b -> ModArgOut4 (SE Sig) b
forall a b. ModArg4 a b => Sig -> a -> b -> ModArgOut4 a b
modArg4 Sig
depth SE Sig
pink b
f

-- pink noise

delPinkArg1 :: (ModArg1 (SE Sig) b) => D -> D -> Sig -> b -> ModArgOut1 (SE Sig) b
delPinkArg1 :: D -> D -> Sig -> b -> ModArgOut1 (SE Sig) b
delPinkArg1 D
delTime D
riseTime Sig
depth b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut1 (SE Sig) b
forall a b.
(SigSpace a, ModArg1 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut1 a b
delModArg1 D
delTime D
riseTime Sig
depth SE Sig
pink b
f

delPinkArg2 :: (ModArg2 (SE Sig) b) => D -> D -> Sig -> b -> ModArgOut2 (SE Sig) b
delPinkArg2 :: D -> D -> Sig -> b -> ModArgOut2 (SE Sig) b
delPinkArg2 D
delTime D
riseTime Sig
depth b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut2 (SE Sig) b
forall a b.
(SigSpace a, ModArg2 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut2 a b
delModArg2 D
delTime D
riseTime Sig
depth SE Sig
pink b
f

delPinkArg3 :: (ModArg3 (SE Sig) b) => D -> D -> Sig -> b -> ModArgOut3 (SE Sig) b
delPinkArg3 :: D -> D -> Sig -> b -> ModArgOut3 (SE Sig) b
delPinkArg3 D
delTime D
riseTime Sig
depth b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut3 (SE Sig) b
forall a b.
(SigSpace a, ModArg3 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut3 a b
delModArg3 D
delTime D
riseTime Sig
depth SE Sig
pink b
f

delPinkArg4 :: (ModArg4 (SE Sig) b) => D -> D -> Sig -> b -> ModArgOut4 (SE Sig) b
delPinkArg4 :: D -> D -> Sig -> b -> ModArgOut4 (SE Sig) b
delPinkArg4 D
delTime D
riseTime Sig
depth b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut4 (SE Sig) b
forall a b.
(SigSpace a, ModArg4 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut4 a b
delModArg4 D
delTime D
riseTime Sig
depth SE Sig
pink b
f


-- jitter noise

jitArg1 :: (ModArg1 (SE Sig) b) => Sig -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b
jitArg1 :: Sig -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b
jitArg1 Sig
depth Sig
cpsMin Sig
cpsMax b
f = Sig -> SE Sig -> b -> ModArgOut1 (SE Sig) b
forall a b. ModArg1 a b => Sig -> a -> b -> ModArgOut1 a b
modArg1 Sig
depth (Sig -> Sig -> Sig -> SE Sig
jitter Sig
1 Sig
cpsMin Sig
cpsMax) b
f

jitArg2 :: (ModArg2 (SE Sig) b) => Sig -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b
jitArg2 :: Sig -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b
jitArg2 Sig
depth Sig
cpsMin Sig
cpsMax b
f = Sig -> SE Sig -> b -> ModArgOut2 (SE Sig) b
forall a b. ModArg2 a b => Sig -> a -> b -> ModArgOut2 a b
modArg2 Sig
depth (Sig -> Sig -> Sig -> SE Sig
jitter Sig
1 Sig
cpsMin Sig
cpsMax) b
f

jitArg3 :: (ModArg3 (SE Sig) b) => Sig -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b
jitArg3 :: Sig -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b
jitArg3 Sig
depth Sig
cpsMin Sig
cpsMax b
f = Sig -> SE Sig -> b -> ModArgOut3 (SE Sig) b
forall a b. ModArg3 a b => Sig -> a -> b -> ModArgOut3 a b
modArg3 Sig
depth (Sig -> Sig -> Sig -> SE Sig
jitter Sig
1 Sig
cpsMin Sig
cpsMax) b
f

jitArg4 :: (ModArg4 (SE Sig) b) => Sig -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b
jitArg4 :: Sig -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b
jitArg4 Sig
depth Sig
cpsMin Sig
cpsMax b
f = Sig -> SE Sig -> b -> ModArgOut4 (SE Sig) b
forall a b. ModArg4 a b => Sig -> a -> b -> ModArgOut4 a b
modArg4 Sig
depth (Sig -> Sig -> Sig -> SE Sig
jitter Sig
1 Sig
cpsMin Sig
cpsMax) b
f

-- jitter noise

delJitArg1 :: (ModArg1 (SE Sig) b) => D -> D -> Sig -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b
delJitArg1 :: D -> D -> Sig -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b
delJitArg1 D
delTime D
riseTime Sig
depth Sig
cpsMin Sig
cpsMax b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut1 (SE Sig) b
forall a b.
(SigSpace a, ModArg1 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut1 a b
delModArg1 D
delTime D
riseTime Sig
depth (Sig -> Sig -> Sig -> SE Sig
jitter Sig
1 Sig
cpsMin Sig
cpsMax) b
f

delJitArg2 :: (ModArg2 (SE Sig) b) => D -> D -> Sig -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b
delJitArg2 :: D -> D -> Sig -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b
delJitArg2 D
delTime D
riseTime Sig
depth Sig
cpsMin Sig
cpsMax b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut2 (SE Sig) b
forall a b.
(SigSpace a, ModArg2 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut2 a b
delModArg2 D
delTime D
riseTime Sig
depth (Sig -> Sig -> Sig -> SE Sig
jitter Sig
1 Sig
cpsMin Sig
cpsMax) b
f

delJitArg3 :: (ModArg3 (SE Sig) b) => D -> D -> Sig -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b
delJitArg3 :: D -> D -> Sig -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b
delJitArg3 D
delTime D
riseTime Sig
depth Sig
cpsMin Sig
cpsMax b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut3 (SE Sig) b
forall a b.
(SigSpace a, ModArg3 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut3 a b
delModArg3 D
delTime D
riseTime Sig
depth (Sig -> Sig -> Sig -> SE Sig
jitter Sig
1 Sig
cpsMin Sig
cpsMax) b
f

delJitArg4 :: (ModArg4 (SE Sig) b) => D -> D -> Sig -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b
delJitArg4 :: D -> D -> Sig -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b
delJitArg4 D
delTime D
riseTime Sig
depth Sig
cpsMin Sig
cpsMax b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut4 (SE Sig) b
forall a b.
(SigSpace a, ModArg4 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut4 a b
delModArg4 D
delTime D
riseTime Sig
depth (Sig -> Sig -> Sig -> SE Sig
jitter Sig
1 Sig
cpsMin Sig
cpsMax) b
f

-- gauss noise

gaussArg1 :: (ModArg1 (SE Sig) b) => Sig -> b -> ModArgOut1 (SE Sig) b
gaussArg1 :: Sig -> b -> ModArgOut1 (SE Sig) b
gaussArg1 Sig
depth b
f = Sig -> SE Sig -> b -> ModArgOut1 (SE Sig) b
forall a b. ModArg1 a b => Sig -> a -> b -> ModArgOut1 a b
modArg1 Sig
depth (Sig -> SE Sig
gauss Sig
1) b
f

gaussArg2 :: (ModArg2 (SE Sig) b) => Sig -> b -> ModArgOut2 (SE Sig) b
gaussArg2 :: Sig -> b -> ModArgOut2 (SE Sig) b
gaussArg2 Sig
depth b
f = Sig -> SE Sig -> b -> ModArgOut2 (SE Sig) b
forall a b. ModArg2 a b => Sig -> a -> b -> ModArgOut2 a b
modArg2 Sig
depth (Sig -> SE Sig
gauss Sig
1) b
f

gaussArg3 :: (ModArg3 (SE Sig) b) => Sig -> b -> ModArgOut3 (SE Sig) b
gaussArg3 :: Sig -> b -> ModArgOut3 (SE Sig) b
gaussArg3 Sig
depth b
f = Sig -> SE Sig -> b -> ModArgOut3 (SE Sig) b
forall a b. ModArg3 a b => Sig -> a -> b -> ModArgOut3 a b
modArg3 Sig
depth (Sig -> SE Sig
gauss Sig
1) b
f

gaussArg4 :: (ModArg4 (SE Sig) b) => Sig -> b -> ModArgOut4 (SE Sig) b
gaussArg4 :: Sig -> b -> ModArgOut4 (SE Sig) b
gaussArg4 Sig
depth b
f = Sig -> SE Sig -> b -> ModArgOut4 (SE Sig) b
forall a b. ModArg4 a b => Sig -> a -> b -> ModArgOut4 a b
modArg4 Sig
depth (Sig -> SE Sig
gauss Sig
1) b
f

-- delayed gauss noise

delGaussArg1 :: (ModArg1 (SE Sig) b) => D -> D -> Sig -> b -> ModArgOut1 (SE Sig) b
delGaussArg1 :: D -> D -> Sig -> b -> ModArgOut1 (SE Sig) b
delGaussArg1 D
delTime D
riseTime Sig
depth b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut1 (SE Sig) b
forall a b.
(SigSpace a, ModArg1 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut1 a b
delModArg1 D
delTime D
riseTime Sig
depth (Sig -> SE Sig
gauss Sig
1) b
f

delGaussArg2 :: (ModArg2 (SE Sig) b) => D -> D -> Sig -> b -> ModArgOut2 (SE Sig) b
delGaussArg2 :: D -> D -> Sig -> b -> ModArgOut2 (SE Sig) b
delGaussArg2 D
delTime D
riseTime Sig
depth b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut2 (SE Sig) b
forall a b.
(SigSpace a, ModArg2 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut2 a b
delModArg2 D
delTime D
riseTime Sig
depth (Sig -> SE Sig
gauss Sig
1) b
f

delGaussArg3 :: (ModArg3 (SE Sig) b) => D -> D -> Sig -> b -> ModArgOut3 (SE Sig) b
delGaussArg3 :: D -> D -> Sig -> b -> ModArgOut3 (SE Sig) b
delGaussArg3 D
delTime D
riseTime Sig
depth b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut3 (SE Sig) b
forall a b.
(SigSpace a, ModArg3 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut3 a b
delModArg3 D
delTime D
riseTime Sig
depth (Sig -> SE Sig
gauss Sig
1) b
f

delGaussArg4 :: (ModArg4 (SE Sig) b) => D -> D -> Sig -> b -> ModArgOut4 (SE Sig) b
delGaussArg4 :: D -> D -> Sig -> b -> ModArgOut4 (SE Sig) b
delGaussArg4 D
delTime D
riseTime Sig
depth b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut4 (SE Sig) b
forall a b.
(SigSpace a, ModArg4 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut4 a b
delModArg4 D
delTime D
riseTime Sig
depth (Sig -> SE Sig
gauss Sig
1) b
f

-- gauss noise with frequency

gaussiArg1 :: (ModArg1 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut1 (SE Sig) b
gaussiArg1 :: Sig -> Sig -> b -> ModArgOut1 (SE Sig) b
gaussiArg1 Sig
depth Sig
rate b
f = Sig -> SE Sig -> b -> ModArgOut1 (SE Sig) b
forall a b. ModArg1 a b => Sig -> a -> b -> ModArgOut1 a b
modArg1 Sig
depth (Sig -> Sig -> Sig -> SE Sig
forall a. SigOrD a => a -> a -> a -> SE a
gaussi Sig
1 Sig
1 Sig
rate) b
f

gaussiArg2 :: (ModArg2 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut2 (SE Sig) b
gaussiArg2 :: Sig -> Sig -> b -> ModArgOut2 (SE Sig) b
gaussiArg2 Sig
depth Sig
rate b
f = Sig -> SE Sig -> b -> ModArgOut2 (SE Sig) b
forall a b. ModArg2 a b => Sig -> a -> b -> ModArgOut2 a b
modArg2 Sig
depth (Sig -> Sig -> Sig -> SE Sig
forall a. SigOrD a => a -> a -> a -> SE a
gaussi Sig
1 Sig
1 Sig
rate) b
f

gaussiArg3 :: (ModArg3 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut3 (SE Sig) b
gaussiArg3 :: Sig -> Sig -> b -> ModArgOut3 (SE Sig) b
gaussiArg3 Sig
depth Sig
rate b
f = Sig -> SE Sig -> b -> ModArgOut3 (SE Sig) b
forall a b. ModArg3 a b => Sig -> a -> b -> ModArgOut3 a b
modArg3 Sig
depth (Sig -> Sig -> Sig -> SE Sig
forall a. SigOrD a => a -> a -> a -> SE a
gaussi Sig
1 Sig
1 Sig
rate) b
f

gaussiArg4 :: (ModArg4 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut4 (SE Sig) b
gaussiArg4 :: Sig -> Sig -> b -> ModArgOut4 (SE Sig) b
gaussiArg4 Sig
depth Sig
rate b
f = Sig -> SE Sig -> b -> ModArgOut4 (SE Sig) b
forall a b. ModArg4 a b => Sig -> a -> b -> ModArgOut4 a b
modArg4 Sig
depth (Sig -> Sig -> Sig -> SE Sig
forall a. SigOrD a => a -> a -> a -> SE a
gaussi Sig
1 Sig
1 Sig
rate) b
f

-- delayed gauss noise with frequency

delGaussiArg1 :: (ModArg1 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b
delGaussiArg1 :: D -> D -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b
delGaussiArg1 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut1 (SE Sig) b
forall a b.
(SigSpace a, ModArg1 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut1 a b
delModArg1 D
delTime D
riseTime Sig
depth (Sig -> Sig -> Sig -> SE Sig
forall a. SigOrD a => a -> a -> a -> SE a
gaussi Sig
1 Sig
1 Sig
rate) b
f

delGaussiArg2 :: (ModArg2 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b
delGaussiArg2 :: D -> D -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b
delGaussiArg2 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut2 (SE Sig) b
forall a b.
(SigSpace a, ModArg2 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut2 a b
delModArg2 D
delTime D
riseTime Sig
depth (Sig -> Sig -> Sig -> SE Sig
forall a. SigOrD a => a -> a -> a -> SE a
gaussi Sig
1 Sig
1 Sig
rate) b
f

delGaussiArg3 :: (ModArg3 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b
delGaussiArg3 :: D -> D -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b
delGaussiArg3 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut3 (SE Sig) b
forall a b.
(SigSpace a, ModArg3 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut3 a b
delModArg3 D
delTime D
riseTime Sig
depth (Sig -> Sig -> Sig -> SE Sig
forall a. SigOrD a => a -> a -> a -> SE a
gaussi Sig
1 Sig
1 Sig
rate) b
f

delGaussiArg4 :: (ModArg4 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b
delGaussiArg4 :: D -> D -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b
delGaussiArg4 D
delTime D
riseTime Sig
depth Sig
rate b
f = D -> D -> Sig -> SE Sig -> b -> ModArgOut4 (SE Sig) b
forall a b.
(SigSpace a, ModArg4 a b) =>
D -> D -> Sig -> a -> b -> ModArgOut4 a b
delModArg4 D
delTime D
riseTime Sig
depth (Sig -> Sig -> Sig -> SE Sig
forall a. SigOrD a => a -> a -> a -> SE a
gaussi Sig
1 Sig
1 Sig
rate) b
f

--------------------------------------------
--------------------------------------------
-- modArg1

class ModArg1 a b where
    type ModArgOut1 a b :: *
    modArg1 :: Sig -> a -> b -> ModArgOut1 a b

--------------------------------------------
-- pure in, pure mono out

instance ModArg1 Sig (Sig -> Sig) where
    type ModArgOut1 Sig (Sig -> Sig) = Sig -> Sig
    modArg1 :: Sig -> Sig -> (Sig -> Sig) -> ModArgOut1 Sig (Sig -> Sig)
modArg1 Sig
depth Sig
a Sig -> Sig
f = \Sig
x -> Sig -> Sig
f (Sig
x Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a))

instance ModArg1 Sig (Sig -> a -> Sig) where
    type ModArgOut1 Sig (Sig -> a -> Sig) = Sig -> a -> Sig
    modArg1 :: Sig -> Sig -> (Sig -> a -> Sig) -> ModArgOut1 Sig (Sig -> a -> Sig)
modArg1 Sig
depth Sig
a Sig -> a -> Sig
f = \Sig
x1 a
x2 -> Sig -> a -> Sig
f (Sig
x1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) a
x2

instance ModArg1 Sig (Sig -> a -> b -> Sig) where
    type ModArgOut1 Sig (Sig -> a -> b -> Sig) = Sig -> a -> b -> Sig
    modArg1 :: Sig
-> Sig
-> (Sig -> a -> b -> Sig)
-> ModArgOut1 Sig (Sig -> a -> b -> Sig)
modArg1 Sig
depth Sig
a Sig -> a -> b -> Sig
f = \Sig
x1 a
x2 b
x3 -> Sig -> a -> b -> Sig
f (Sig
x1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) a
x2 b
x3

instance ModArg1 Sig (Sig -> a -> b -> c -> Sig) where
    type ModArgOut1 Sig (Sig -> a -> b -> c -> Sig) = Sig -> a -> b -> c -> Sig
    modArg1 :: Sig
-> Sig
-> (Sig -> a -> b -> c -> Sig)
-> ModArgOut1 Sig (Sig -> a -> b -> c -> Sig)
modArg1 Sig
depth Sig
a Sig -> a -> b -> c -> Sig
f = \Sig
x1 a
x2 b
x3 c
x4 -> Sig -> a -> b -> c -> Sig
f (Sig
x1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) a
x2 b
x3 c
x4

--------------------------------------------
-- pure in, pure stereo out

instance ModArg1 Sig (Sig -> Sig2) where
    type ModArgOut1 Sig (Sig -> Sig2) = Sig -> Sig2
    modArg1 :: Sig -> Sig -> (Sig -> Sig2) -> ModArgOut1 Sig (Sig -> Sig2)
modArg1 Sig
depth Sig
a Sig -> Sig2
f = \Sig
x -> Sig -> Sig2
f (Sig
x Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a))

instance ModArg1 Sig (Sig -> a -> Sig2) where
    type ModArgOut1 Sig (Sig -> a -> Sig2) = Sig -> a -> Sig2
    modArg1 :: Sig
-> Sig -> (Sig -> a -> Sig2) -> ModArgOut1 Sig (Sig -> a -> Sig2)
modArg1 Sig
depth Sig
a Sig -> a -> Sig2
f = \Sig
x1 a
x2 -> Sig -> a -> Sig2
f (Sig
x1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) a
x2

instance ModArg1 Sig (Sig -> a -> b -> Sig2) where
    type ModArgOut1 Sig (Sig -> a -> b -> Sig2) = Sig -> a -> b -> Sig2
    modArg1 :: Sig
-> Sig
-> (Sig -> a -> b -> Sig2)
-> ModArgOut1 Sig (Sig -> a -> b -> Sig2)
modArg1 Sig
depth Sig
a Sig -> a -> b -> Sig2
f = \Sig
x1 a
x2 b
x3 -> Sig -> a -> b -> Sig2
f (Sig
x1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) a
x2 b
x3

instance ModArg1 Sig (Sig -> a -> b -> c -> Sig2) where
    type ModArgOut1 Sig (Sig -> a -> b -> c -> Sig2) = Sig -> a -> b -> c -> Sig2
    modArg1 :: Sig
-> Sig
-> (Sig -> a -> b -> c -> Sig2)
-> ModArgOut1 Sig (Sig -> a -> b -> c -> Sig2)
modArg1 Sig
depth Sig
a Sig -> a -> b -> c -> Sig2
f = \Sig
x1 a
x2 b
x3 c
x4 -> Sig -> a -> b -> c -> Sig2
f (Sig
x1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) a
x2 b
x3 c
x4

--------------------------------------------
-- pure in, dirty mono out

instance ModArg1 Sig (Sig -> SE Sig) where
    type ModArgOut1 Sig (Sig -> SE Sig) = Sig -> SE Sig
    modArg1 :: Sig -> Sig -> (Sig -> SE Sig) -> ModArgOut1 Sig (Sig -> SE Sig)
modArg1 Sig
depth Sig
a Sig -> SE Sig
f = \Sig
x -> Sig -> SE Sig
f (Sig
x Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a))

instance ModArg1 Sig (Sig -> a -> SE Sig) where
    type ModArgOut1 Sig (Sig -> a -> SE Sig) = Sig -> a -> SE Sig
    modArg1 :: Sig
-> Sig
-> (Sig -> a -> SE Sig)
-> ModArgOut1 Sig (Sig -> a -> SE Sig)
modArg1 Sig
depth Sig
a Sig -> a -> SE Sig
f = \Sig
x1 a
x2 -> Sig -> a -> SE Sig
f (Sig
x1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) a
x2

instance ModArg1 Sig (Sig -> a -> b -> SE Sig) where
    type ModArgOut1 Sig (Sig -> a -> b -> SE Sig) = Sig -> a -> b -> SE Sig
    modArg1 :: Sig
-> Sig
-> (Sig -> a -> b -> SE Sig)
-> ModArgOut1 Sig (Sig -> a -> b -> SE Sig)
modArg1 Sig
depth Sig
a Sig -> a -> b -> SE Sig
f = \Sig
x1 a
x2 b
x3 -> Sig -> a -> b -> SE Sig
f (Sig
x1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) a
x2 b
x3

instance ModArg1 Sig (Sig -> a -> b -> c -> SE Sig) where
    type ModArgOut1 Sig (Sig -> a -> b -> c -> SE Sig) = Sig -> a -> b -> c -> SE Sig
    modArg1 :: Sig
-> Sig
-> (Sig -> a -> b -> c -> SE Sig)
-> ModArgOut1 Sig (Sig -> a -> b -> c -> SE Sig)
modArg1 Sig
depth Sig
a Sig -> a -> b -> c -> SE Sig
f = \Sig
x1 a
x2 b
x3 c
x4 -> Sig -> a -> b -> c -> SE Sig
f (Sig
x1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) a
x2 b
x3 c
x4

--------------------------------------------
-- pure in, dirty stereo out

instance ModArg1 Sig (Sig -> SE Sig2) where
    type ModArgOut1 Sig (Sig -> SE Sig2) = Sig -> SE Sig2
    modArg1 :: Sig -> Sig -> (Sig -> SE Sig2) -> ModArgOut1 Sig (Sig -> SE Sig2)
modArg1 Sig
depth Sig
a Sig -> SE Sig2
f = \Sig
x -> Sig -> SE Sig2
f (Sig
x Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a))

instance ModArg1 Sig (Sig -> a -> SE Sig2) where
    type ModArgOut1 Sig (Sig -> a -> SE Sig2) = Sig -> a -> SE Sig2
    modArg1 :: Sig
-> Sig
-> (Sig -> a -> SE Sig2)
-> ModArgOut1 Sig (Sig -> a -> SE Sig2)
modArg1 Sig
depth Sig
a Sig -> a -> SE Sig2
f = \Sig
x1 a
x2 -> Sig -> a -> SE Sig2
f (Sig
x1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) a
x2

instance ModArg1 Sig (Sig -> a -> b -> SE Sig2) where
    type ModArgOut1 Sig (Sig -> a -> b -> SE Sig2) = Sig -> a -> b -> SE Sig2
    modArg1 :: Sig
-> Sig
-> (Sig -> a -> b -> SE Sig2)
-> ModArgOut1 Sig (Sig -> a -> b -> SE Sig2)
modArg1 Sig
depth Sig
a Sig -> a -> b -> SE Sig2
f = \Sig
x1 a
x2 b
x3 -> Sig -> a -> b -> SE Sig2
f (Sig
x1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) a
x2 b
x3

instance ModArg1 Sig (Sig -> a -> b -> c -> SE Sig2) where
    type ModArgOut1 Sig (Sig -> a -> b -> c -> SE Sig2) = Sig -> a -> b -> c -> SE Sig2
    modArg1 :: Sig
-> Sig
-> (Sig -> a -> b -> c -> SE Sig2)
-> ModArgOut1 Sig (Sig -> a -> b -> c -> SE Sig2)
modArg1 Sig
depth Sig
a Sig -> a -> b -> c -> SE Sig2
f = \Sig
x1 a
x2 b
x3 c
x4 -> Sig -> a -> b -> c -> SE Sig2
f (Sig
x1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) a
x2 b
x3 c
x4

--------------------------------------------
-- dirty in, pure mono out

instance ModArg1 (SE Sig) (Sig -> Sig) where
    type ModArgOut1 (SE Sig) (Sig -> Sig) = Sig -> SE Sig
    modArg1 :: Sig -> SE Sig -> (Sig -> Sig) -> ModArgOut1 (SE Sig) (Sig -> Sig)
modArg1 Sig
depth SE Sig
ma Sig -> Sig
f = \Sig
x -> (Sig -> Sig) -> SE Sig -> SE Sig
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Sig
a -> Sig -> Sig
f (Sig
x Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a))) SE Sig
ma

instance ModArg1 (SE Sig) (Sig -> a -> Sig) where
    type ModArgOut1 (SE Sig) (Sig -> a -> Sig) = Sig -> a -> SE Sig
    modArg1 :: Sig
-> SE Sig
-> (Sig -> a -> Sig)
-> ModArgOut1 (SE Sig) (Sig -> a -> Sig)
modArg1 Sig
depth SE Sig
ma Sig -> a -> Sig
f = \Sig
x1 a
x2 -> (Sig -> Sig) -> SE Sig -> SE Sig
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Sig
a -> Sig -> a -> Sig
f (Sig
x1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) a
x2) SE Sig
ma

instance ModArg1 (SE Sig) (Sig -> a -> b -> Sig) where
    type ModArgOut1 (SE Sig) (Sig -> a -> b -> Sig) = Sig -> a -> b -> SE Sig
    modArg1 :: Sig
-> SE Sig
-> (Sig -> a -> b -> Sig)
-> ModArgOut1 (SE Sig) (Sig -> a -> b -> Sig)
modArg1 Sig
depth SE Sig
ma Sig -> a -> b -> Sig
f = \Sig
x1 a
x2 b
x3 -> (Sig -> Sig) -> SE Sig -> SE Sig
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Sig
a -> Sig -> a -> b -> Sig
f (Sig
x1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) a
x2 b
x3) SE Sig
ma

instance ModArg1 (SE Sig) (Sig -> a -> b -> c -> Sig) where
    type ModArgOut1 (SE Sig) (Sig -> a -> b -> c -> Sig) = Sig -> a -> b -> c -> SE Sig
    modArg1 :: Sig
-> SE Sig
-> (Sig -> a -> b -> c -> Sig)
-> ModArgOut1 (SE Sig) (Sig -> a -> b -> c -> Sig)
modArg1 Sig
depth SE Sig
ma Sig -> a -> b -> c -> Sig
f = \Sig
x1 a
x2 b
x3 c
x4 -> (Sig -> Sig) -> SE Sig -> SE Sig
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Sig
a -> Sig -> a -> b -> c -> Sig
f (Sig
x1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) a
x2 b
x3 c
x4) SE Sig
ma

--------------------------------------------
-- dirty in, pure stereo out

instance ModArg1 (SE Sig) (Sig -> Sig2) where
    type ModArgOut1 (SE Sig) (Sig -> Sig2) = Sig -> SE Sig2
    modArg1 :: Sig -> SE Sig -> (Sig -> Sig2) -> ModArgOut1 (SE Sig) (Sig -> Sig2)
modArg1 Sig
depth SE Sig
ma Sig -> Sig2
f = \Sig
x -> (Sig -> Sig2) -> SE Sig -> SE Sig2
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Sig
a -> Sig -> Sig2
f (Sig
x Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a))) SE Sig
ma

instance ModArg1 (SE Sig) (Sig -> a -> Sig2) where
    type ModArgOut1 (SE Sig) (Sig -> a -> Sig2) = Sig -> a -> SE Sig2
    modArg1 :: Sig
-> SE Sig
-> (Sig -> a -> Sig2)
-> ModArgOut1 (SE Sig) (Sig -> a -> Sig2)
modArg1 Sig
depth SE Sig
ma Sig -> a -> Sig2
f = \Sig
x1 a
x2 -> (Sig -> Sig2) -> SE Sig -> SE Sig2
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Sig
a -> Sig -> a -> Sig2
f (Sig
x1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) a
x2) SE Sig
ma

instance ModArg1 (SE Sig) (Sig -> a -> b -> Sig2) where
    type ModArgOut1 (SE Sig) (Sig -> a -> b -> Sig2) = Sig -> a -> b -> SE Sig2
    modArg1 :: Sig
-> SE Sig
-> (Sig -> a -> b -> Sig2)
-> ModArgOut1 (SE Sig) (Sig -> a -> b -> Sig2)
modArg1 Sig
depth SE Sig
ma Sig -> a -> b -> Sig2
f = \Sig
x1 a
x2 b
x3 -> (Sig -> Sig2) -> SE Sig -> SE Sig2
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Sig
a -> Sig -> a -> b -> Sig2
f (Sig
x1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) a
x2 b
x3) SE Sig
ma

instance ModArg1 (SE Sig) (Sig -> a -> b -> c -> Sig2) where
    type ModArgOut1 (SE Sig) (Sig -> a -> b -> c -> Sig2) = Sig -> a -> b -> c -> SE Sig2
    modArg1 :: Sig
-> SE Sig
-> (Sig -> a -> b -> c -> Sig2)
-> ModArgOut1 (SE Sig) (Sig -> a -> b -> c -> Sig2)
modArg1 Sig
depth SE Sig
ma Sig -> a -> b -> c -> Sig2
f = \Sig
x1 a
x2 b
x3 c
x4 -> (Sig -> Sig2) -> SE Sig -> SE Sig2
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Sig
a -> Sig -> a -> b -> c -> Sig2
f (Sig
x1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) a
x2 b
x3 c
x4) SE Sig
ma

--------------------------------------------
-- dirty in, dirty mono out

instance ModArg1 (SE Sig) (Sig -> SE Sig) where
    type ModArgOut1 (SE Sig) (Sig -> SE Sig) = Sig -> SE Sig
    modArg1 :: Sig
-> SE Sig -> (Sig -> SE Sig) -> ModArgOut1 (SE Sig) (Sig -> SE Sig)
modArg1 Sig
depth SE Sig
ma Sig -> SE Sig
f = \Sig
x -> SE Sig
ma SE Sig -> (Sig -> SE Sig) -> SE Sig
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\Sig
a -> Sig -> SE Sig
f (Sig
x Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)))

instance ModArg1 (SE Sig) (Sig -> a -> SE Sig) where
    type ModArgOut1 (SE Sig) (Sig -> a -> SE Sig) = Sig -> a -> SE Sig
    modArg1 :: Sig
-> SE Sig
-> (Sig -> a -> SE Sig)
-> ModArgOut1 (SE Sig) (Sig -> a -> SE Sig)
modArg1 Sig
depth SE Sig
ma Sig -> a -> SE Sig
f = \Sig
x1 a
x2 -> SE Sig
ma SE Sig -> (Sig -> SE Sig) -> SE Sig
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\Sig
a -> Sig -> a -> SE Sig
f (Sig
x1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) a
x2)

instance ModArg1 (SE Sig) (Sig -> a -> b -> SE Sig) where
    type ModArgOut1 (SE Sig) (Sig -> a -> b -> SE Sig) = Sig -> a -> b -> SE Sig
    modArg1 :: Sig
-> SE Sig
-> (Sig -> a -> b -> SE Sig)
-> ModArgOut1 (SE Sig) (Sig -> a -> b -> SE Sig)
modArg1 Sig
depth SE Sig
ma Sig -> a -> b -> SE Sig
f = \Sig
x1 a
x2 b
x3 -> SE Sig
ma SE Sig -> (Sig -> SE Sig) -> SE Sig
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\Sig
a -> Sig -> a -> b -> SE Sig
f (Sig
x1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) a
x2 b
x3)

instance ModArg1 (SE Sig) (Sig -> a -> b -> c -> SE Sig) where
    type ModArgOut1 (SE Sig) (Sig -> a -> b -> c -> SE Sig) = Sig -> a -> b -> c -> SE Sig
    modArg1 :: Sig
-> SE Sig
-> (Sig -> a -> b -> c -> SE Sig)
-> ModArgOut1 (SE Sig) (Sig -> a -> b -> c -> SE Sig)
modArg1 Sig
depth SE Sig
ma Sig -> a -> b -> c -> SE Sig
f = \Sig
x1 a
x2 b
x3 c
x4 -> SE Sig
ma SE Sig -> (Sig -> SE Sig) -> SE Sig
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\Sig
a -> Sig -> a -> b -> c -> SE Sig
f (Sig
x1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) a
x2 b
x3 c
x4)

--------------------------------------------
-- dirty in, dirty stereo out

instance ModArg1 (SE Sig) (Sig -> SE Sig2) where
    type ModArgOut1 (SE Sig) (Sig -> SE Sig2) = Sig -> SE Sig2
    modArg1 :: Sig
-> SE Sig
-> (Sig -> SE Sig2)
-> ModArgOut1 (SE Sig) (Sig -> SE Sig2)
modArg1 Sig
depth SE Sig
ma Sig -> SE Sig2
f = \Sig
x -> SE Sig
ma SE Sig -> (Sig -> SE Sig2) -> SE Sig2
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\Sig
a -> Sig -> SE Sig2
f (Sig
x Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)))

instance ModArg1 (SE Sig) (Sig -> a -> SE Sig2) where
    type ModArgOut1 (SE Sig) (Sig -> a -> SE Sig2) = Sig -> a -> SE Sig2
    modArg1 :: Sig
-> SE Sig
-> (Sig -> a -> SE Sig2)
-> ModArgOut1 (SE Sig) (Sig -> a -> SE Sig2)
modArg1 Sig
depth SE Sig
ma Sig -> a -> SE Sig2
f = \Sig
x1 a
x2 -> SE Sig
ma SE Sig -> (Sig -> SE Sig2) -> SE Sig2
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\Sig
a -> Sig -> a -> SE Sig2
f (Sig
x1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) a
x2)

instance ModArg1 (SE Sig) (Sig -> a -> b -> SE Sig2) where
    type ModArgOut1 (SE Sig) (Sig -> a -> b -> SE Sig2) = Sig -> a -> b -> SE Sig2
    modArg1 :: Sig
-> SE Sig
-> (Sig -> a -> b -> SE Sig2)
-> ModArgOut1 (SE Sig) (Sig -> a -> b -> SE Sig2)
modArg1 Sig
depth SE Sig
ma Sig -> a -> b -> SE Sig2
f = \Sig
x1 a
x2 b
x3 -> SE Sig
ma SE Sig -> (Sig -> SE Sig2) -> SE Sig2
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\Sig
a -> Sig -> a -> b -> SE Sig2
f (Sig
x1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) a
x2 b
x3)

instance ModArg1 (SE Sig) (Sig -> a -> b -> c -> SE Sig2) where
    type ModArgOut1 (SE Sig) (Sig -> a -> b -> c -> SE Sig2) = Sig -> a -> b -> c -> SE Sig2
    modArg1 :: Sig
-> SE Sig
-> (Sig -> a -> b -> c -> SE Sig2)
-> ModArgOut1 (SE Sig) (Sig -> a -> b -> c -> SE Sig2)
modArg1 Sig
depth SE Sig
ma Sig -> a -> b -> c -> SE Sig2
f = \Sig
x1 a
x2 b
x3 c
x4 -> SE Sig
ma SE Sig -> (Sig -> SE Sig2) -> SE Sig2
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\Sig
a -> Sig -> a -> b -> c -> SE Sig2
f (Sig
x1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) a
x2 b
x3 c
x4)

--------------------------------------------
--------------------------------------------
-- modArg2

class ModArg2 a b where
    type ModArgOut2 a b :: *
    modArg2 :: Sig -> a -> b -> ModArgOut2 a b

--------------------------------------------
-- pure in, pure mono out

instance ModArg2 Sig (a -> Sig -> Sig) where
    type ModArgOut2 Sig (a -> Sig -> Sig) = a -> Sig -> Sig
    modArg2 :: Sig -> Sig -> (a -> Sig -> Sig) -> ModArgOut2 Sig (a -> Sig -> Sig)
modArg2 Sig
depth Sig
a a -> Sig -> Sig
f = \a
x1 Sig
x2 -> a -> Sig -> Sig
f a
x1 (Sig
x2 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a))

instance ModArg2 Sig (a -> Sig -> b -> Sig) where
    type ModArgOut2 Sig (a -> Sig -> b -> Sig) = a -> Sig -> b -> Sig
    modArg2 :: Sig
-> Sig
-> (a -> Sig -> b -> Sig)
-> ModArgOut2 Sig (a -> Sig -> b -> Sig)
modArg2 Sig
depth Sig
a a -> Sig -> b -> Sig
f = \a
x1 Sig
x2 b
x3 -> a -> Sig -> b -> Sig
f a
x1 (Sig
x2 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) b
x3

instance ModArg2 Sig (a -> Sig -> b -> c -> Sig) where
    type ModArgOut2 Sig (a -> Sig -> b -> c -> Sig) = a -> Sig -> b -> c -> Sig
    modArg2 :: Sig
-> Sig
-> (a -> Sig -> b -> c -> Sig)
-> ModArgOut2 Sig (a -> Sig -> b -> c -> Sig)
modArg2 Sig
depth Sig
a a -> Sig -> b -> c -> Sig
f = \a
x1 Sig
x2 b
x3 c
x4 -> a -> Sig -> b -> c -> Sig
f a
x1 (Sig
x2 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) b
x3 c
x4

--------------------------------------------
-- pure in, pure stereo out

instance ModArg2 Sig (a -> Sig -> Sig2) where
    type ModArgOut2 Sig (a -> Sig -> Sig2) = a -> Sig -> Sig2
    modArg2 :: Sig
-> Sig -> (a -> Sig -> Sig2) -> ModArgOut2 Sig (a -> Sig -> Sig2)
modArg2 Sig
depth Sig
a a -> Sig -> Sig2
f = \a
x1 Sig
x2 -> a -> Sig -> Sig2
f a
x1 (Sig
x2 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a))

instance ModArg2 Sig (a -> Sig -> b -> Sig2) where
    type ModArgOut2 Sig (a -> Sig -> b -> Sig2) = a -> Sig -> b -> Sig2
    modArg2 :: Sig
-> Sig
-> (a -> Sig -> b -> Sig2)
-> ModArgOut2 Sig (a -> Sig -> b -> Sig2)
modArg2 Sig
depth Sig
a a -> Sig -> b -> Sig2
f = \a
x1 Sig
x2 b
x3 -> a -> Sig -> b -> Sig2
f a
x1 (Sig
x2 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) b
x3

instance ModArg2 Sig (a -> Sig -> b -> c -> Sig2) where
    type ModArgOut2 Sig (a -> Sig -> b -> c -> Sig2) = a -> Sig -> b -> c -> Sig2
    modArg2 :: Sig
-> Sig
-> (a -> Sig -> b -> c -> Sig2)
-> ModArgOut2 Sig (a -> Sig -> b -> c -> Sig2)
modArg2 Sig
depth Sig
a a -> Sig -> b -> c -> Sig2
f = \a
x1 Sig
x2 b
x3 c
x4 -> a -> Sig -> b -> c -> Sig2
f a
x1 (Sig
x2 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) b
x3 c
x4

--------------------------------------------
-- pure in, dirty mono out

instance ModArg2 Sig (a -> Sig -> SE Sig) where
    type ModArgOut2 Sig (a -> Sig -> SE Sig) = a -> Sig -> SE Sig
    modArg2 :: Sig
-> Sig
-> (a -> Sig -> SE Sig)
-> ModArgOut2 Sig (a -> Sig -> SE Sig)
modArg2 Sig
depth Sig
a a -> Sig -> SE Sig
f = \a
x1 Sig
x2 -> a -> Sig -> SE Sig
f a
x1 (Sig
x2 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a))

instance ModArg2 Sig (a -> Sig -> b -> SE Sig) where
    type ModArgOut2 Sig (a -> Sig -> b -> SE Sig) = a -> Sig -> b -> SE Sig
    modArg2 :: Sig
-> Sig
-> (a -> Sig -> b -> SE Sig)
-> ModArgOut2 Sig (a -> Sig -> b -> SE Sig)
modArg2 Sig
depth Sig
a a -> Sig -> b -> SE Sig
f = \a
x1 Sig
x2 b
x3 -> a -> Sig -> b -> SE Sig
f a
x1 (Sig
x2 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) b
x3

instance ModArg2 Sig (a -> Sig -> b -> c -> SE Sig) where
    type ModArgOut2 Sig (a -> Sig -> b -> c -> SE Sig) = a -> Sig -> b -> c -> SE Sig
    modArg2 :: Sig
-> Sig
-> (a -> Sig -> b -> c -> SE Sig)
-> ModArgOut2 Sig (a -> Sig -> b -> c -> SE Sig)
modArg2 Sig
depth Sig
a a -> Sig -> b -> c -> SE Sig
f = \a
x1 Sig
x2 b
x3 c
x4 -> a -> Sig -> b -> c -> SE Sig
f a
x1 (Sig
x2 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) b
x3 c
x4

--------------------------------------------
-- pure in, dirty stereo out

instance ModArg2 Sig (a -> Sig -> SE Sig2) where
    type ModArgOut2 Sig (a -> Sig -> SE Sig2) = a -> Sig -> SE Sig2
    modArg2 :: Sig
-> Sig
-> (a -> Sig -> SE Sig2)
-> ModArgOut2 Sig (a -> Sig -> SE Sig2)
modArg2 Sig
depth Sig
a a -> Sig -> SE Sig2
f = \a
x1 Sig
x2 -> a -> Sig -> SE Sig2
f a
x1 (Sig
x2 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a))

instance ModArg2 Sig (a -> Sig -> b -> SE Sig2) where
    type ModArgOut2 Sig (a -> Sig -> b -> SE Sig2) = a -> Sig -> b -> SE Sig2
    modArg2 :: Sig
-> Sig
-> (a -> Sig -> b -> SE Sig2)
-> ModArgOut2 Sig (a -> Sig -> b -> SE Sig2)
modArg2 Sig
depth Sig
a a -> Sig -> b -> SE Sig2
f = \a
x1 Sig
x2 b
x3 -> a -> Sig -> b -> SE Sig2
f a
x1 (Sig
x2 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) b
x3

instance ModArg2 Sig (a -> Sig -> b -> c -> SE Sig2) where
    type ModArgOut2 Sig (a -> Sig -> b -> c -> SE Sig2) = a -> Sig -> b -> c -> SE Sig2
    modArg2 :: Sig
-> Sig
-> (a -> Sig -> b -> c -> SE Sig2)
-> ModArgOut2 Sig (a -> Sig -> b -> c -> SE Sig2)
modArg2 Sig
depth Sig
a a -> Sig -> b -> c -> SE Sig2
f = \a
x1 Sig
x2 b
x3 c
x4 -> a -> Sig -> b -> c -> SE Sig2
f a
x1 (Sig
x2 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) b
x3 c
x4

--------------------------------------------
-- dirty in, pure mono out

instance ModArg2 (SE Sig) (a -> Sig -> Sig) where
    type ModArgOut2 (SE Sig) (a -> Sig -> Sig) = a -> Sig -> SE Sig
    modArg2 :: Sig
-> SE Sig
-> (a -> Sig -> Sig)
-> ModArgOut2 (SE Sig) (a -> Sig -> Sig)
modArg2 Sig
depth SE Sig
ma a -> Sig -> Sig
f = \a
x1 Sig
x2 -> (Sig -> Sig) -> SE Sig -> SE Sig
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Sig
a -> a -> Sig -> Sig
f a
x1 (Sig
x2 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a))) SE Sig
ma

instance ModArg2 (SE Sig) (a -> Sig -> b -> Sig) where
    type ModArgOut2 (SE Sig) (a -> Sig -> b -> Sig) = a -> Sig -> b -> SE Sig
    modArg2 :: Sig
-> SE Sig
-> (a -> Sig -> b -> Sig)
-> ModArgOut2 (SE Sig) (a -> Sig -> b -> Sig)
modArg2 Sig
depth SE Sig
ma a -> Sig -> b -> Sig
f = \a
x1 Sig
x2 b
x3 -> (Sig -> Sig) -> SE Sig -> SE Sig
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Sig
a -> a -> Sig -> b -> Sig
f a
x1 (Sig
x2 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) b
x3) SE Sig
ma

instance ModArg2 (SE Sig) (a -> Sig -> b -> c -> Sig) where
    type ModArgOut2 (SE Sig) (a -> Sig -> b -> c -> Sig) = a -> Sig -> b -> c -> SE Sig
    modArg2 :: Sig
-> SE Sig
-> (a -> Sig -> b -> c -> Sig)
-> ModArgOut2 (SE Sig) (a -> Sig -> b -> c -> Sig)
modArg2 Sig
depth SE Sig
ma a -> Sig -> b -> c -> Sig
f = \a
x1 Sig
x2 b
x3 c
x4 -> (Sig -> Sig) -> SE Sig -> SE Sig
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Sig
a -> a -> Sig -> b -> c -> Sig
f a
x1 (Sig
x2 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) b
x3 c
x4) SE Sig
ma

--------------------------------------------
-- dirty in, pure stereo out

instance ModArg2 (SE Sig) (a -> Sig -> Sig2) where
    type ModArgOut2 (SE Sig) (a -> Sig -> Sig2) = a -> Sig -> SE Sig2
    modArg2 :: Sig
-> SE Sig
-> (a -> Sig -> Sig2)
-> ModArgOut2 (SE Sig) (a -> Sig -> Sig2)
modArg2 Sig
depth SE Sig
ma a -> Sig -> Sig2
f = \a
x1 Sig
x2 -> (Sig -> Sig2) -> SE Sig -> SE Sig2
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Sig
a -> a -> Sig -> Sig2
f a
x1 (Sig
x2 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a))) SE Sig
ma

instance ModArg2 (SE Sig) (a -> Sig -> b -> Sig2) where
    type ModArgOut2 (SE Sig) (a -> Sig -> b -> Sig2) = a -> Sig -> b -> SE Sig2
    modArg2 :: Sig
-> SE Sig
-> (a -> Sig -> b -> Sig2)
-> ModArgOut2 (SE Sig) (a -> Sig -> b -> Sig2)
modArg2 Sig
depth SE Sig
ma a -> Sig -> b -> Sig2
f = \a
x1 Sig
x2 b
x3 -> (Sig -> Sig2) -> SE Sig -> SE Sig2
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Sig
a -> a -> Sig -> b -> Sig2
f a
x1 (Sig
x2 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) b
x3) SE Sig
ma

instance ModArg2 (SE Sig) (a -> Sig -> b -> c -> Sig2) where
    type ModArgOut2 (SE Sig) (a -> Sig -> b -> c -> Sig2) = a -> Sig -> b -> c -> SE Sig2
    modArg2 :: Sig
-> SE Sig
-> (a -> Sig -> b -> c -> Sig2)
-> ModArgOut2 (SE Sig) (a -> Sig -> b -> c -> Sig2)
modArg2 Sig
depth SE Sig
ma a -> Sig -> b -> c -> Sig2
f = \a
x1 Sig
x2 b
x3 c
x4 -> (Sig -> Sig2) -> SE Sig -> SE Sig2
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Sig
a -> a -> Sig -> b -> c -> Sig2
f a
x1 (Sig
x2 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) b
x3 c
x4) SE Sig
ma

--------------------------------------------
-- dirty in, dirty mono out

instance ModArg2 (SE Sig) (a -> Sig -> SE Sig) where
    type ModArgOut2 (SE Sig) (a -> Sig -> SE Sig) = a -> Sig -> SE Sig
    modArg2 :: Sig
-> SE Sig
-> (a -> Sig -> SE Sig)
-> ModArgOut2 (SE Sig) (a -> Sig -> SE Sig)
modArg2 Sig
depth SE Sig
ma a -> Sig -> SE Sig
f = \a
x1 Sig
x2 -> SE Sig
ma SE Sig -> (Sig -> SE Sig) -> SE Sig
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\Sig
a -> a -> Sig -> SE Sig
f a
x1 (Sig
x2 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)))

instance ModArg2 (SE Sig) (a -> Sig -> b -> SE Sig) where
    type ModArgOut2 (SE Sig) (a -> Sig -> b -> SE Sig) = a -> Sig -> b -> SE Sig
    modArg2 :: Sig
-> SE Sig
-> (a -> Sig -> b -> SE Sig)
-> ModArgOut2 (SE Sig) (a -> Sig -> b -> SE Sig)
modArg2 Sig
depth SE Sig
ma a -> Sig -> b -> SE Sig
f = \a
x1 Sig
x2 b
x3 -> SE Sig
ma SE Sig -> (Sig -> SE Sig) -> SE Sig
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\Sig
a -> a -> Sig -> b -> SE Sig
f a
x1 (Sig
x2 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) b
x3)

instance ModArg2 (SE Sig) (a -> Sig -> b -> c -> SE Sig) where
    type ModArgOut2 (SE Sig) (a -> Sig -> b -> c -> SE Sig) = a -> Sig -> b -> c -> SE Sig
    modArg2 :: Sig
-> SE Sig
-> (a -> Sig -> b -> c -> SE Sig)
-> ModArgOut2 (SE Sig) (a -> Sig -> b -> c -> SE Sig)
modArg2 Sig
depth SE Sig
ma a -> Sig -> b -> c -> SE Sig
f = \a
x1 Sig
x2 b
x3 c
x4 -> SE Sig
ma SE Sig -> (Sig -> SE Sig) -> SE Sig
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\Sig
a -> a -> Sig -> b -> c -> SE Sig
f a
x1 (Sig
x2 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) b
x3 c
x4)

--------------------------------------------
-- dirty in, dirty stereo out

instance ModArg2 (SE Sig) (a -> Sig -> SE Sig2) where
    type ModArgOut2 (SE Sig) (a -> Sig -> SE Sig2) = a -> Sig -> SE Sig2
    modArg2 :: Sig
-> SE Sig
-> (a -> Sig -> SE Sig2)
-> ModArgOut2 (SE Sig) (a -> Sig -> SE Sig2)
modArg2 Sig
depth SE Sig
ma a -> Sig -> SE Sig2
f = \a
x1 Sig
x2 -> SE Sig
ma SE Sig -> (Sig -> SE Sig2) -> SE Sig2
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\Sig
a -> a -> Sig -> SE Sig2
f a
x1 (Sig
x2 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)))

instance ModArg2 (SE Sig) (a -> Sig -> b -> SE Sig2) where
    type ModArgOut2 (SE Sig) (a -> Sig -> b -> SE Sig2) = a -> Sig -> b -> SE Sig2
    modArg2 :: Sig
-> SE Sig
-> (a -> Sig -> b -> SE Sig2)
-> ModArgOut2 (SE Sig) (a -> Sig -> b -> SE Sig2)
modArg2 Sig
depth SE Sig
ma a -> Sig -> b -> SE Sig2
f = \a
x1 Sig
x2 b
x3 -> SE Sig
ma SE Sig -> (Sig -> SE Sig2) -> SE Sig2
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\Sig
a -> a -> Sig -> b -> SE Sig2
f a
x1 (Sig
x2 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) b
x3)

instance ModArg2 (SE Sig) (a -> Sig -> b -> c -> SE Sig2) where
    type ModArgOut2 (SE Sig) (a -> Sig -> b -> c -> SE Sig2) = a -> Sig -> b -> c -> SE Sig2
    modArg2 :: Sig
-> SE Sig
-> (a -> Sig -> b -> c -> SE Sig2)
-> ModArgOut2 (SE Sig) (a -> Sig -> b -> c -> SE Sig2)
modArg2 Sig
depth SE Sig
ma a -> Sig -> b -> c -> SE Sig2
f = \a
x1 Sig
x2 b
x3 c
x4 -> SE Sig
ma SE Sig -> (Sig -> SE Sig2) -> SE Sig2
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\Sig
a -> a -> Sig -> b -> c -> SE Sig2
f a
x1 (Sig
x2 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) b
x3 c
x4)

--------------------------------------------
--------------------------------------------
-- modArg3

class ModArg3 a b where
    type ModArgOut3 a b :: *
    modArg3 :: Sig -> a -> b -> ModArgOut3 a b

--------------------------------------------
-- pure in, pure mono out

instance ModArg3 Sig (a -> b -> Sig -> Sig) where
    type ModArgOut3 Sig (a -> b -> Sig -> Sig) = a -> b -> Sig -> Sig
    modArg3 :: Sig
-> Sig
-> (a -> b -> Sig -> Sig)
-> ModArgOut3 Sig (a -> b -> Sig -> Sig)
modArg3 Sig
depth Sig
a a -> b -> Sig -> Sig
f = \a
x1 b
x2 Sig
x3 -> a -> b -> Sig -> Sig
f a
x1 b
x2 (Sig
x3 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a))

instance ModArg3 Sig (a -> b -> Sig -> c -> Sig) where
    type ModArgOut3 Sig (a -> b -> Sig -> c -> Sig) = a -> b -> Sig -> c -> Sig
    modArg3 :: Sig
-> Sig
-> (a -> b -> Sig -> c -> Sig)
-> ModArgOut3 Sig (a -> b -> Sig -> c -> Sig)
modArg3 Sig
depth Sig
a a -> b -> Sig -> c -> Sig
f = \a
x1 b
x2 Sig
x3 c
x4 -> a -> b -> Sig -> c -> Sig
f a
x1 b
x2 (Sig
x3 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) c
x4

--------------------------------------------
-- pure in, pure stereo out

instance ModArg3 Sig (a -> b -> Sig -> Sig2) where
    type ModArgOut3 Sig (a -> b -> Sig -> Sig2) = a -> b -> Sig -> Sig2
    modArg3 :: Sig
-> Sig
-> (a -> b -> Sig -> Sig2)
-> ModArgOut3 Sig (a -> b -> Sig -> Sig2)
modArg3 Sig
depth Sig
a a -> b -> Sig -> Sig2
f = \a
x1 b
x2 Sig
x3 -> a -> b -> Sig -> Sig2
f a
x1 b
x2 (Sig
x3 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a))

instance ModArg3 Sig (a -> b -> Sig -> c -> Sig2) where
    type ModArgOut3 Sig (a -> b -> Sig -> c -> Sig2) = a -> b -> Sig -> c -> Sig2
    modArg3 :: Sig
-> Sig
-> (a -> b -> Sig -> c -> Sig2)
-> ModArgOut3 Sig (a -> b -> Sig -> c -> Sig2)
modArg3 Sig
depth Sig
a a -> b -> Sig -> c -> Sig2
f = \a
x1 b
x2 Sig
x3 c
x4 -> a -> b -> Sig -> c -> Sig2
f a
x1 b
x2 (Sig
x3 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) c
x4

--------------------------------------------
-- pure in, dirty mono out

instance ModArg3 Sig (a -> b -> Sig -> SE Sig) where
    type ModArgOut3 Sig (a -> b -> Sig -> SE Sig) = a -> b -> Sig -> SE Sig
    modArg3 :: Sig
-> Sig
-> (a -> b -> Sig -> SE Sig)
-> ModArgOut3 Sig (a -> b -> Sig -> SE Sig)
modArg3 Sig
depth Sig
a a -> b -> Sig -> SE Sig
f = \a
x1 b
x2 Sig
x3 -> a -> b -> Sig -> SE Sig
f a
x1 b
x2 (Sig
x3 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a))

instance ModArg3 Sig (a -> b -> Sig -> c -> SE Sig) where
    type ModArgOut3 Sig (a -> b -> Sig -> c -> SE Sig) = a -> b -> Sig -> c -> SE Sig
    modArg3 :: Sig
-> Sig
-> (a -> b -> Sig -> c -> SE Sig)
-> ModArgOut3 Sig (a -> b -> Sig -> c -> SE Sig)
modArg3 Sig
depth Sig
a a -> b -> Sig -> c -> SE Sig
f = \a
x1 b
x2 Sig
x3 c
x4 -> a -> b -> Sig -> c -> SE Sig
f a
x1 b
x2 (Sig
x3 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) c
x4

--------------------------------------------
-- pure in, dirty stereo out

instance ModArg3 Sig (a -> b -> Sig -> SE Sig2) where
    type ModArgOut3 Sig (a -> b -> Sig -> SE Sig2) = a -> b -> Sig -> SE Sig2
    modArg3 :: Sig
-> Sig
-> (a -> b -> Sig -> SE Sig2)
-> ModArgOut3 Sig (a -> b -> Sig -> SE Sig2)
modArg3 Sig
depth Sig
a a -> b -> Sig -> SE Sig2
f = \a
x1 b
x2 Sig
x3 -> a -> b -> Sig -> SE Sig2
f a
x1 b
x2 (Sig
x3 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a))

instance ModArg3 Sig (a -> b -> Sig -> c -> SE Sig2) where
    type ModArgOut3 Sig (a -> b -> Sig -> c -> SE Sig2) = a -> b -> Sig -> c -> SE Sig2
    modArg3 :: Sig
-> Sig
-> (a -> b -> Sig -> c -> SE Sig2)
-> ModArgOut3 Sig (a -> b -> Sig -> c -> SE Sig2)
modArg3 Sig
depth Sig
a a -> b -> Sig -> c -> SE Sig2
f = \a
x1 b
x2 Sig
x3 c
x4 -> a -> b -> Sig -> c -> SE Sig2
f a
x1 b
x2 (Sig
x3 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) c
x4

--------------------------------------------
-- dirty in, pure mono out

instance ModArg3 (SE Sig) (a -> b -> Sig -> Sig) where
    type ModArgOut3 (SE Sig) (a -> b -> Sig -> Sig) = a -> b -> Sig -> SE Sig
    modArg3 :: Sig
-> SE Sig
-> (a -> b -> Sig -> Sig)
-> ModArgOut3 (SE Sig) (a -> b -> Sig -> Sig)
modArg3 Sig
depth SE Sig
ma a -> b -> Sig -> Sig
f = \a
x1 b
x2 Sig
x3 -> (Sig -> Sig) -> SE Sig -> SE Sig
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Sig
a -> a -> b -> Sig -> Sig
f a
x1 b
x2 (Sig
x3 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a))) SE Sig
ma

instance ModArg3 (SE Sig) (a -> b -> Sig -> c -> Sig) where
    type ModArgOut3 (SE Sig) (a -> b -> Sig -> c -> Sig) = a -> b -> Sig -> c -> SE Sig
    modArg3 :: Sig
-> SE Sig
-> (a -> b -> Sig -> c -> Sig)
-> ModArgOut3 (SE Sig) (a -> b -> Sig -> c -> Sig)
modArg3 Sig
depth SE Sig
ma a -> b -> Sig -> c -> Sig
f = \a
x1 b
x2 Sig
x3 c
x4 -> (Sig -> Sig) -> SE Sig -> SE Sig
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Sig
a -> a -> b -> Sig -> c -> Sig
f a
x1 b
x2 (Sig
x3 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) c
x4) SE Sig
ma

--------------------------------------------
-- dirty in, pure stereo out

instance ModArg3 (SE Sig) (a -> b -> Sig -> Sig2) where
    type ModArgOut3 (SE Sig) (a -> b -> Sig -> Sig2) = a -> b -> Sig -> SE Sig2
    modArg3 :: Sig
-> SE Sig
-> (a -> b -> Sig -> Sig2)
-> ModArgOut3 (SE Sig) (a -> b -> Sig -> Sig2)
modArg3 Sig
depth SE Sig
ma a -> b -> Sig -> Sig2
f = \a
x1 b
x2 Sig
x3 -> (Sig -> Sig2) -> SE Sig -> SE Sig2
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Sig
a -> a -> b -> Sig -> Sig2
f a
x1 b
x2 (Sig
x3 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a))) SE Sig
ma

instance ModArg3 (SE Sig) (a -> b -> Sig -> c -> Sig2) where
    type ModArgOut3 (SE Sig) (a -> b -> Sig -> c -> Sig2) = a -> b -> Sig -> c -> SE Sig2
    modArg3 :: Sig
-> SE Sig
-> (a -> b -> Sig -> c -> Sig2)
-> ModArgOut3 (SE Sig) (a -> b -> Sig -> c -> Sig2)
modArg3 Sig
depth SE Sig
ma a -> b -> Sig -> c -> Sig2
f = \a
x1 b
x2 Sig
x3 c
x4 -> (Sig -> Sig2) -> SE Sig -> SE Sig2
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Sig
a -> a -> b -> Sig -> c -> Sig2
f a
x1 b
x2 (Sig
x3 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) c
x4) SE Sig
ma

--------------------------------------------
-- dirty in, dirty mono out

instance ModArg3 (SE Sig) (a -> b -> Sig -> SE Sig) where
    type ModArgOut3 (SE Sig) (a -> b -> Sig -> SE Sig) = a -> b -> Sig -> SE Sig
    modArg3 :: Sig
-> SE Sig
-> (a -> b -> Sig -> SE Sig)
-> ModArgOut3 (SE Sig) (a -> b -> Sig -> SE Sig)
modArg3 Sig
depth SE Sig
ma a -> b -> Sig -> SE Sig
f = \a
x1 b
x2 Sig
x3 -> SE Sig
ma SE Sig -> (Sig -> SE Sig) -> SE Sig
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\Sig
a -> a -> b -> Sig -> SE Sig
f a
x1 b
x2 (Sig
x3 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)))

instance ModArg3 (SE Sig) (a -> b -> Sig -> c -> SE Sig) where
    type ModArgOut3 (SE Sig) (a -> b -> Sig -> c -> SE Sig) = a -> b -> Sig -> c -> SE Sig
    modArg3 :: Sig
-> SE Sig
-> (a -> b -> Sig -> c -> SE Sig)
-> ModArgOut3 (SE Sig) (a -> b -> Sig -> c -> SE Sig)
modArg3 Sig
depth SE Sig
ma a -> b -> Sig -> c -> SE Sig
f = \a
x1 b
x2 Sig
x3 c
x4 -> SE Sig
ma SE Sig -> (Sig -> SE Sig) -> SE Sig
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\Sig
a -> a -> b -> Sig -> c -> SE Sig
f a
x1 b
x2 (Sig
x3 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) c
x4)

--------------------------------------------
-- dirty in, dirty stereo out

instance ModArg3 (SE Sig) (a -> b -> Sig -> SE Sig2) where
    type ModArgOut3 (SE Sig) (a -> b -> Sig -> SE Sig2) = a -> b -> Sig -> SE Sig2
    modArg3 :: Sig
-> SE Sig
-> (a -> b -> Sig -> SE Sig2)
-> ModArgOut3 (SE Sig) (a -> b -> Sig -> SE Sig2)
modArg3 Sig
depth SE Sig
ma a -> b -> Sig -> SE Sig2
f = \a
x1 b
x2 Sig
x3 -> SE Sig
ma SE Sig -> (Sig -> SE Sig2) -> SE Sig2
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\Sig
a -> a -> b -> Sig -> SE Sig2
f a
x1 b
x2 (Sig
x3 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)))

instance ModArg3 (SE Sig) (a -> b -> Sig -> c -> SE Sig2) where
    type ModArgOut3 (SE Sig) (a -> b -> Sig -> c -> SE Sig2) = a -> b -> Sig -> c -> SE Sig2
    modArg3 :: Sig
-> SE Sig
-> (a -> b -> Sig -> c -> SE Sig2)
-> ModArgOut3 (SE Sig) (a -> b -> Sig -> c -> SE Sig2)
modArg3 Sig
depth SE Sig
ma a -> b -> Sig -> c -> SE Sig2
f = \a
x1 b
x2 Sig
x3 c
x4 -> SE Sig
ma SE Sig -> (Sig -> SE Sig2) -> SE Sig2
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\Sig
a -> a -> b -> Sig -> c -> SE Sig2
f a
x1 b
x2 (Sig
x3 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)) c
x4)

--------------------------------------------
--------------------------------------------
-- modArg4

class ModArg4 a b where
    type ModArgOut4 a b :: *
    modArg4 :: Sig -> a -> b -> ModArgOut4 a b

--------------------------------------------
-- pure in, pure mono out

instance ModArg4 Sig (a -> b -> c -> Sig -> Sig) where
    type ModArgOut4 Sig (a -> b -> c -> Sig -> Sig) = a -> b -> c -> Sig -> Sig
    modArg4 :: Sig
-> Sig
-> (a -> b -> c -> Sig -> Sig)
-> ModArgOut4 Sig (a -> b -> c -> Sig -> Sig)
modArg4 Sig
depth Sig
a a -> b -> c -> Sig -> Sig
f = \a
x1 b
x2 c
x3 Sig
x4 -> a -> b -> c -> Sig -> Sig
f a
x1 b
x2 c
x3 (Sig
x4 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a))

--------------------------------------------
-- pure in, pure stereo out

instance ModArg4 Sig (a -> b -> c -> Sig -> Sig2) where
    type ModArgOut4 Sig (a -> b -> c -> Sig -> Sig2) = a -> b -> c -> Sig -> Sig2
    modArg4 :: Sig
-> Sig
-> (a -> b -> c -> Sig -> Sig2)
-> ModArgOut4 Sig (a -> b -> c -> Sig -> Sig2)
modArg4 Sig
depth Sig
a a -> b -> c -> Sig -> Sig2
f = \a
x1 b
x2 c
x3 Sig
x4 -> a -> b -> c -> Sig -> Sig2
f a
x1 b
x2 c
x3 (Sig
x4 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a))

--------------------------------------------
-- pure in, dirty mono out

instance ModArg4 Sig (a -> b -> c -> Sig -> SE Sig) where
    type ModArgOut4 Sig (a -> b -> c -> Sig -> SE Sig) = a -> b -> c -> Sig -> SE Sig
    modArg4 :: Sig
-> Sig
-> (a -> b -> c -> Sig -> SE Sig)
-> ModArgOut4 Sig (a -> b -> c -> Sig -> SE Sig)
modArg4 Sig
depth Sig
a a -> b -> c -> Sig -> SE Sig
f = \a
x1 b
x2 c
x3 Sig
x4 -> a -> b -> c -> Sig -> SE Sig
f a
x1 b
x2 c
x3 (Sig
x4 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a))

--------------------------------------------
-- pure in, dirty stereo out

instance ModArg4 Sig (a -> b -> c -> Sig -> SE Sig2) where
    type ModArgOut4 Sig (a -> b -> c -> Sig -> SE Sig2) = a -> b -> c -> Sig -> SE Sig2
    modArg4 :: Sig
-> Sig
-> (a -> b -> c -> Sig -> SE Sig2)
-> ModArgOut4 Sig (a -> b -> c -> Sig -> SE Sig2)
modArg4 Sig
depth Sig
a a -> b -> c -> Sig -> SE Sig2
f = \a
x1 b
x2 c
x3 Sig
x4 -> a -> b -> c -> Sig -> SE Sig2
f a
x1 b
x2 c
x3 (Sig
x4 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a))

--------------------------------------------
-- dirty in, pure mono out

instance ModArg4 (SE Sig) (a -> b -> c -> Sig -> Sig) where
    type ModArgOut4 (SE Sig) (a -> b -> c -> Sig -> Sig) = a -> b -> c -> Sig -> SE Sig
    modArg4 :: Sig
-> SE Sig
-> (a -> b -> c -> Sig -> Sig)
-> ModArgOut4 (SE Sig) (a -> b -> c -> Sig -> Sig)
modArg4 Sig
depth SE Sig
ma a -> b -> c -> Sig -> Sig
f = \a
x1 b
x2 c
x3 Sig
x4 -> (Sig -> Sig) -> SE Sig -> SE Sig
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Sig
a -> a -> b -> c -> Sig -> Sig
f a
x1 b
x2 c
x3 (Sig
x4 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a))) SE Sig
ma

--------------------------------------------
-- dirty in, pure stereo out

instance ModArg4 (SE Sig) (a -> b -> c -> Sig -> Sig2) where
    type ModArgOut4 (SE Sig) (a -> b -> c -> Sig -> Sig2) = a -> b -> c -> Sig -> SE Sig2
    modArg4 :: Sig
-> SE Sig
-> (a -> b -> c -> Sig -> Sig2)
-> ModArgOut4 (SE Sig) (a -> b -> c -> Sig -> Sig2)
modArg4 Sig
depth SE Sig
ma a -> b -> c -> Sig -> Sig2
f = \a
x1 b
x2 c
x3 Sig
x4 -> (Sig -> Sig2) -> SE Sig -> SE Sig2
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\Sig
a -> a -> b -> c -> Sig -> Sig2
f a
x1 b
x2 c
x3 (Sig
x4 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a))) SE Sig
ma

--------------------------------------------
-- dirty in, dirty mono out

instance ModArg4 (SE Sig) (a -> b -> c -> Sig -> SE Sig) where
    type ModArgOut4 (SE Sig) (a -> b -> c -> Sig -> SE Sig) = a -> b -> c -> Sig -> SE Sig
    modArg4 :: Sig
-> SE Sig
-> (a -> b -> c -> Sig -> SE Sig)
-> ModArgOut4 (SE Sig) (a -> b -> c -> Sig -> SE Sig)
modArg4 Sig
depth SE Sig
ma a -> b -> c -> Sig -> SE Sig
f = \a
x1 b
x2 c
x3 Sig
x4 -> SE Sig
ma SE Sig -> (Sig -> SE Sig) -> SE Sig
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\Sig
a -> a -> b -> c -> Sig -> SE Sig
f a
x1 b
x2 c
x3 (Sig
x4 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)))

--------------------------------------------
-- dirty in, dirty stereo out

instance ModArg4 (SE Sig) (a -> b -> c -> Sig -> SE Sig2) where
    type ModArgOut4 (SE Sig) (a -> b -> c -> Sig -> SE Sig2) = a -> b -> c -> Sig -> SE Sig2
    modArg4 :: Sig
-> SE Sig
-> (a -> b -> c -> Sig -> SE Sig2)
-> ModArgOut4 (SE Sig) (a -> b -> c -> Sig -> SE Sig2)
modArg4 Sig
depth SE Sig
ma a -> b -> c -> Sig -> SE Sig2
f = \a
x1 b
x2 c
x3 Sig
x4 -> SE Sig
ma SE Sig -> (Sig -> SE Sig2) -> SE Sig2
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (\Sig
a -> a -> b -> c -> Sig -> SE Sig2
f a
x1 b
x2 c
x3 (Sig
x4 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* (Sig
1 Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
+ Sig
depth Sig -> Sig -> Sig
forall a. Num a => a -> a -> a
* Sig
a)))