{-# 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, jitArg1, jitArg2, jitArg3, jitArg4, gaussArg1, gaussArg2, gaussArg3, gaussArg4, gaussiArg1, gaussiArg2, gaussiArg3, gaussiArg4, -- ** Delayed delNoiseArg1, delNoiseArg2, delNoiseArg3, delNoiseArg4, 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 import Csound.SigSpace -- 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 delTime riseTime asig = mul (linseg [0, delTime, 0, riseTime, 1]) asig delModArg1 :: (SigSpace a, ModArg1 a b) => D -> D -> Sig -> a -> b -> ModArgOut1 a b delModArg1 delTime riseTime depth modSig f = modArg1 (delEnv delTime riseTime depth) modSig f delModArg2 :: (SigSpace a, ModArg2 a b) => D -> D -> Sig -> a -> b -> ModArgOut2 a b delModArg2 delTime riseTime depth modSig f = modArg2 (delEnv delTime riseTime depth) modSig f delModArg3 :: (SigSpace a, ModArg3 a b) => D -> D -> Sig -> a -> b -> ModArgOut3 a b delModArg3 delTime riseTime depth modSig f = modArg3 (delEnv delTime riseTime depth) modSig f delModArg4 :: (SigSpace a, ModArg4 a b) => D -> D -> Sig -> a -> b -> ModArgOut4 a b delModArg4 delTime riseTime depth modSig f = modArg4 (delEnv delTime riseTime depth) modSig f -- adsr mod adsrArg1 :: (ModArg1 Sig b) => Sig -> D -> D -> D -> D -> b -> ModArgOut1 Sig b adsrArg1 depth a d s r f = modArg1 depth (leg a d s r) f adsrArg2 :: (ModArg2 Sig b) => Sig -> D -> D -> D -> D -> b -> ModArgOut2 Sig b adsrArg2 depth a d s r f = modArg2 depth (leg a d s r) f adsrArg3 :: (ModArg3 Sig b) => Sig -> D -> D -> D -> D -> b -> ModArgOut3 Sig b adsrArg3 depth a d s r f = modArg3 depth (leg a d s r) f adsrArg4 :: (ModArg4 Sig b) => Sig -> D -> D -> D -> D -> b -> ModArgOut4 Sig b adsrArg4 depth a d s r f = modArg4 depth (leg a d s r) f -- delayed adsr mod delLeg :: D -> D -> D -> D -> D -> Sig delLeg delTime a d s r = linsegr [0, delTime, 0, a, 1, d, s] r 0 delAdsrArg1 :: (ModArg1 Sig b) => D -> Sig -> D -> D -> D -> D -> b -> ModArgOut1 Sig b delAdsrArg1 delTime depth a d s r f = modArg1 depth (delLeg delTime a d s r) f delAdsrArg2 :: (ModArg2 Sig b) => D -> Sig -> D -> D -> D -> D -> b -> ModArgOut2 Sig b delAdsrArg2 delTime depth a d s r f = modArg2 depth (delLeg delTime a d s r) f delAdsrArg3 :: (ModArg3 Sig b) => D -> Sig -> D -> D -> D -> D -> b -> ModArgOut3 Sig b delAdsrArg3 delTime depth a d s r f = modArg3 depth (delLeg delTime a d s r) f delAdsrArg4 :: (ModArg4 Sig b) => D -> Sig -> D -> D -> D -> D -> b -> ModArgOut4 Sig b delAdsrArg4 delTime depth a d s r f = modArg4 depth (delLeg delTime a d s r) f -- expon adsr mod xadsrArg1 :: (ModArg1 Sig b) => Sig -> D -> D -> D -> D -> b -> ModArgOut1 Sig b xadsrArg1 depth a d s r f = modArg1 depth (xeg a d s r) f xadsrArg2 :: (ModArg2 Sig b) => Sig -> D -> D -> D -> D -> b -> ModArgOut2 Sig b xadsrArg2 depth a d s r f = modArg2 depth (xeg a d s r) f xadsrArg3 :: (ModArg3 Sig b) => Sig -> D -> D -> D -> D -> b -> ModArgOut3 Sig b xadsrArg3 depth a d s r f = modArg3 depth (xeg a d s r) f xadsrArg4 :: (ModArg4 Sig b) => Sig -> D -> D -> D -> D -> b -> ModArgOut4 Sig b xadsrArg4 depth a d s r f = modArg4 depth (xeg a d s r) f -- delayed expon adsr mod delXeg :: D -> D -> D -> D -> D -> Sig delXeg delTime a d s r = expsegr [0.001, delTime, 0.001, a, 1, d, s] r 0.001 delXadsrArg1 :: (ModArg1 Sig b) => D -> Sig -> D -> D -> D -> D -> b -> ModArgOut1 Sig b delXadsrArg1 delTime depth a d s r f = modArg1 depth (delXeg delTime a d s r) f delXadsrArg2 :: (ModArg2 Sig b) => D -> Sig -> D -> D -> D -> D -> b -> ModArgOut2 Sig b delXadsrArg2 delTime depth a d s r f = modArg2 depth (delXeg delTime a d s r) f delXadsrArg3 :: (ModArg3 Sig b) => D -> Sig -> D -> D -> D -> D -> b -> ModArgOut3 Sig b delXadsrArg3 delTime depth a d s r f = modArg3 depth (delXeg delTime a d s r) f delXadsrArg4 :: (ModArg4 Sig b) => D -> Sig -> D -> D -> D -> D -> b -> ModArgOut4 Sig b delXadsrArg4 delTime depth a d s r f = modArg4 depth (delXeg delTime a d s r) f -- oscil lfo oscArg1 :: (ModArg1 Sig b) => Sig -> Sig -> b -> ModArgOut1 Sig b oscArg1 depth rate f = modArg1 depth (osc rate) f oscArg2 :: (ModArg2 Sig b) => Sig -> Sig -> b -> ModArgOut2 Sig b oscArg2 depth rate f = modArg2 depth (osc rate) f oscArg3 :: (ModArg3 Sig b) => Sig -> Sig -> b -> ModArgOut3 Sig b oscArg3 depth rate f = modArg3 depth (osc rate) f oscArg4 :: (ModArg4 Sig b) => Sig -> Sig -> b -> ModArgOut4 Sig b oscArg4 depth rate f = modArg4 depth (osc rate) f -- delayed oscil lfo delOscArg1 :: (ModArg1 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut1 Sig b delOscArg1 delTime riseTime depth rate f = delModArg1 delTime riseTime depth (osc rate) f delOscArg2 :: (ModArg2 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut2 Sig b delOscArg2 delTime riseTime depth rate f = delModArg2 delTime riseTime depth (osc rate) f delOscArg3 :: (ModArg3 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut3 Sig b delOscArg3 delTime riseTime depth rate f = delModArg3 delTime riseTime depth (osc rate) f delOscArg4 :: (ModArg4 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut4 Sig b delOscArg4 delTime riseTime depth rate f = delModArg4 delTime riseTime depth (osc rate) f -- tri lfo triArg1 :: (ModArg1 Sig b) => Sig -> Sig -> b -> ModArgOut1 Sig b triArg1 depth rate f = modArg1 depth (tri rate) f triArg2 :: (ModArg2 Sig b) => Sig -> Sig -> b -> ModArgOut2 Sig b triArg2 depth rate f = modArg2 depth (tri rate) f triArg3 :: (ModArg3 Sig b) => Sig -> Sig -> b -> ModArgOut3 Sig b triArg3 depth rate f = modArg3 depth (tri rate) f triArg4 :: (ModArg4 Sig b) => Sig -> Sig -> b -> ModArgOut4 Sig b triArg4 depth rate f = modArg4 depth (tri rate) f -- delayed tri lfo delTriArg1 :: (ModArg1 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut1 Sig b delTriArg1 delTime riseTime depth rate f = delModArg1 delTime riseTime depth (tri rate) f delTriArg2 :: (ModArg2 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut2 Sig b delTriArg2 delTime riseTime depth rate f = delModArg2 delTime riseTime depth (tri rate) f delTriArg3 :: (ModArg3 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut3 Sig b delTriArg3 delTime riseTime depth rate f = delModArg3 delTime riseTime depth (tri rate) f delTriArg4 :: (ModArg4 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut4 Sig b delTriArg4 delTime riseTime depth rate f = delModArg4 delTime riseTime depth (tri rate) f -- sqr lfo sqrArg1 :: (ModArg1 Sig b) => Sig -> Sig -> b -> ModArgOut1 Sig b sqrArg1 depth rate f = modArg1 depth (sqr rate) f sqrArg2 :: (ModArg2 Sig b) => Sig -> Sig -> b -> ModArgOut2 Sig b sqrArg2 depth rate f = modArg2 depth (sqr rate) f sqrArg3 :: (ModArg3 Sig b) => Sig -> Sig -> b -> ModArgOut3 Sig b sqrArg3 depth rate f = modArg3 depth (sqr rate) f sqrArg4 :: (ModArg4 Sig b) => Sig -> Sig -> b -> ModArgOut4 Sig b sqrArg4 depth rate f = modArg4 depth (sqr rate) f -- sqr lfo delSqrArg1 :: (ModArg1 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut1 Sig b delSqrArg1 delTime riseTime depth rate f = delModArg1 delTime riseTime depth (sqr rate) f delSqrArg2 :: (ModArg2 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut2 Sig b delSqrArg2 delTime riseTime depth rate f = delModArg2 delTime riseTime depth (sqr rate) f delSqrArg3 :: (ModArg3 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut3 Sig b delSqrArg3 delTime riseTime depth rate f = delModArg3 delTime riseTime depth (sqr rate) f delSqrArg4 :: (ModArg4 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut4 Sig b delSqrArg4 delTime riseTime depth rate f = delModArg4 delTime riseTime depth (sqr rate) f -- saw lfo sawArg1 :: (ModArg1 Sig b) => Sig -> Sig -> b -> ModArgOut1 Sig b sawArg1 depth rate f = modArg1 depth (saw rate) f sawArg2 :: (ModArg2 Sig b) => Sig -> Sig -> b -> ModArgOut2 Sig b sawArg2 depth rate f = modArg2 depth (saw rate) f sawArg3 :: (ModArg3 Sig b) => Sig -> Sig -> b -> ModArgOut3 Sig b sawArg3 depth rate f = modArg3 depth (saw rate) f sawArg4 :: (ModArg4 Sig b) => Sig -> Sig -> b -> ModArgOut4 Sig b sawArg4 depth rate f = modArg4 depth (saw rate) f -- delayed saw lfo delSawArg1 :: (ModArg1 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut1 Sig b delSawArg1 delTime riseTime depth rate f = delModArg1 delTime riseTime depth (saw rate) f delSawArg2 :: (ModArg2 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut2 Sig b delSawArg2 delTime riseTime depth rate f = delModArg2 delTime riseTime depth (saw rate) f delSawArg3 :: (ModArg3 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut3 Sig b delSawArg3 delTime riseTime depth rate f = delModArg3 delTime riseTime depth (saw rate) f delSawArg4 :: (ModArg4 Sig b) => D -> D -> Sig -> Sig -> b -> ModArgOut4 Sig b delSawArg4 delTime riseTime depth rate f = delModArg4 delTime riseTime depth (saw rate) f -- oscil lfo rnd phase rndOscArg1 :: (ModArg1 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut1 (SE Sig) b rndOscArg1 depth rate f = modArg1 depth (rndOsc rate) f rndOscArg2 :: (ModArg2 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut2 (SE Sig) b rndOscArg2 depth rate f = modArg2 depth (rndOsc rate) f rndOscArg3 :: (ModArg3 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut3 (SE Sig) b rndOscArg3 depth rate f = modArg3 depth (rndOsc rate) f rndOscArg4 :: (ModArg4 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut4 (SE Sig) b rndOscArg4 depth rate f = modArg4 depth (rndOsc rate) f -- delayed oscil lfo rnd phase delRndOscArg1 :: (ModArg1 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b delRndOscArg1 delTime riseTime depth rate f = delModArg1 delTime riseTime depth (rndOsc rate) f delRndOscArg2 :: (ModArg2 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b delRndOscArg2 delTime riseTime depth rate f = delModArg2 delTime riseTime depth (rndOsc rate) f delRndOscArg3 :: (ModArg3 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b delRndOscArg3 delTime riseTime depth rate f = delModArg3 delTime riseTime depth (rndOsc rate) f delRndOscArg4 :: (ModArg4 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b delRndOscArg4 delTime riseTime depth rate f = delModArg4 delTime riseTime depth (rndOsc rate) f -- tri lfo rnd phase rndTriArg1 :: (ModArg1 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut1 (SE Sig) b rndTriArg1 depth rate f = modArg1 depth (rndTri rate) f rndTriArg2 :: (ModArg2 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut2 (SE Sig) b rndTriArg2 depth rate f = modArg2 depth (rndTri rate) f rndTriArg3 :: (ModArg3 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut3 (SE Sig) b rndTriArg3 depth rate f = modArg3 depth (rndTri rate) f rndTriArg4 :: (ModArg4 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut4 (SE Sig) b rndTriArg4 depth rate f = modArg4 depth (rndTri rate) f -- delayed tri lfo rnd phase delRndTriArg1 :: (ModArg1 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b delRndTriArg1 delTime riseTime depth rate f = delModArg1 delTime riseTime depth (rndTri rate) f delRndTriArg2 :: (ModArg2 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b delRndTriArg2 delTime riseTime depth rate f = delModArg2 delTime riseTime depth (rndTri rate) f delRndTriArg3 :: (ModArg3 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b delRndTriArg3 delTime riseTime depth rate f = delModArg3 delTime riseTime depth (rndTri rate) f delRndTriArg4 :: (ModArg4 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b delRndTriArg4 delTime riseTime depth rate f = delModArg4 delTime riseTime depth (rndTri rate) f -- sqr lfo rnd phase rndSqrArg1 :: (ModArg1 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut1 (SE Sig) b rndSqrArg1 depth rate f = modArg1 depth (rndSqr rate) f rndSqrArg2 :: (ModArg2 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut2 (SE Sig) b rndSqrArg2 depth rate f = modArg2 depth (rndSqr rate) f rndSqrArg3 :: (ModArg3 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut3 (SE Sig) b rndSqrArg3 depth rate f = modArg3 depth (rndSqr rate) f rndSqrArg4 :: (ModArg4 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut4 (SE Sig) b rndSqrArg4 depth rate f = modArg4 depth (rndSqr rate) f -- sqr lfo rnd phase delRndSqrArg1 :: (ModArg1 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b delRndSqrArg1 delTime riseTime depth rate f = delModArg1 delTime riseTime depth (rndSqr rate) f delRndSqrArg2 :: (ModArg2 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b delRndSqrArg2 delTime riseTime depth rate f = delModArg2 delTime riseTime depth (rndSqr rate) f delRndSqrArg3 :: (ModArg3 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b delRndSqrArg3 delTime riseTime depth rate f = delModArg3 delTime riseTime depth (rndSqr rate) f delRndSqrArg4 :: (ModArg4 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b delRndSqrArg4 delTime riseTime depth rate f = delModArg4 delTime riseTime depth (rndSqr rate) f -- sqr lfo rnd phase rndSawArg1 :: (ModArg1 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut1 (SE Sig) b rndSawArg1 depth rate f = modArg1 depth (rndSaw rate) f rndSawArg2 :: (ModArg2 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut2 (SE Sig) b rndSawArg2 depth rate f = modArg2 depth (rndSaw rate) f rndSawArg3 :: (ModArg3 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut3 (SE Sig) b rndSawArg3 depth rate f = modArg3 depth (rndSaw rate) f rndSawArg4 :: (ModArg4 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut4 (SE Sig) b rndSawArg4 depth rate f = modArg4 depth (rndSaw rate) f -- delayed sqr lfo rnd phase delRndSawArg1 :: (ModArg1 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b delRndSawArg1 delTime riseTime depth rate f = delModArg1 delTime riseTime depth (rndSaw rate) f delRndSawArg2 :: (ModArg2 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b delRndSawArg2 delTime riseTime depth rate f = delModArg2 delTime riseTime depth (rndSaw rate) f delRndSawArg3 :: (ModArg3 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b delRndSawArg3 delTime riseTime depth rate f = delModArg3 delTime riseTime depth (rndSaw rate) f delRndSawArg4 :: (ModArg4 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b delRndSawArg4 delTime riseTime depth rate f = delModArg4 delTime riseTime depth (rndSaw rate) f -- white noise noiseArg1 :: (ModArg1 (SE Sig) b) => Sig -> b -> ModArgOut1 (SE Sig) b noiseArg1 depth f = modArg1 depth white f noiseArg2 :: (ModArg2 (SE Sig) b) => Sig -> b -> ModArgOut2 (SE Sig) b noiseArg2 depth f = modArg2 depth white f noiseArg3 :: (ModArg3 (SE Sig) b) => Sig -> b -> ModArgOut3 (SE Sig) b noiseArg3 depth f = modArg3 depth white f noiseArg4 :: (ModArg4 (SE Sig) b) => Sig -> b -> ModArgOut4 (SE Sig) b noiseArg4 depth f = modArg4 depth white f -- delayed white noise delNoiseArg1 :: (ModArg1 (SE Sig) b) => D -> D -> Sig -> b -> ModArgOut1 (SE Sig) b delNoiseArg1 delTime riseTime depth f = delModArg1 delTime riseTime depth white f delNoiseArg2 :: (ModArg2 (SE Sig) b) => D -> D -> Sig -> b -> ModArgOut2 (SE Sig) b delNoiseArg2 delTime riseTime depth f = delModArg2 delTime riseTime depth white f delNoiseArg3 :: (ModArg3 (SE Sig) b) => D -> D -> Sig -> b -> ModArgOut3 (SE Sig) b delNoiseArg3 delTime riseTime depth f = delModArg3 delTime riseTime depth white f delNoiseArg4 :: (ModArg4 (SE Sig) b) => D -> D -> Sig -> b -> ModArgOut4 (SE Sig) b delNoiseArg4 delTime riseTime depth f = delModArg4 delTime riseTime depth white f -- pink noise pinkArg1 :: (ModArg1 (SE Sig) b) => Sig -> b -> ModArgOut1 (SE Sig) b pinkArg1 depth f = modArg1 depth pink f pinkArg2 :: (ModArg2 (SE Sig) b) => Sig -> b -> ModArgOut2 (SE Sig) b pinkArg2 depth f = modArg2 depth pink f pinkArg3 :: (ModArg3 (SE Sig) b) => Sig -> b -> ModArgOut3 (SE Sig) b pinkArg3 depth f = modArg3 depth pink f pinkArg4 :: (ModArg4 (SE Sig) b) => Sig -> b -> ModArgOut4 (SE Sig) b pinkArg4 depth f = modArg4 depth pink f -- pink noise delPinkArg1 :: (ModArg1 (SE Sig) b) => D -> D -> Sig -> b -> ModArgOut1 (SE Sig) b delPinkArg1 delTime riseTime depth f = delModArg1 delTime riseTime depth pink f delPinkArg2 :: (ModArg2 (SE Sig) b) => D -> D -> Sig -> b -> ModArgOut2 (SE Sig) b delPinkArg2 delTime riseTime depth f = delModArg2 delTime riseTime depth pink f delPinkArg3 :: (ModArg3 (SE Sig) b) => D -> D -> Sig -> b -> ModArgOut3 (SE Sig) b delPinkArg3 delTime riseTime depth f = delModArg3 delTime riseTime depth pink f delPinkArg4 :: (ModArg4 (SE Sig) b) => D -> D -> Sig -> b -> ModArgOut4 (SE Sig) b delPinkArg4 delTime riseTime depth f = delModArg4 delTime riseTime depth pink f -- jitter noise jitArg1 :: (ModArg1 (SE Sig) b) => Sig -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b jitArg1 depth cpsMin cpsMax f = modArg1 depth (jitter 1 cpsMin cpsMax) f jitArg2 :: (ModArg2 (SE Sig) b) => Sig -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b jitArg2 depth cpsMin cpsMax f = modArg2 depth (jitter 1 cpsMin cpsMax) f jitArg3 :: (ModArg3 (SE Sig) b) => Sig -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b jitArg3 depth cpsMin cpsMax f = modArg3 depth (jitter 1 cpsMin cpsMax) f jitArg4 :: (ModArg4 (SE Sig) b) => Sig -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b jitArg4 depth cpsMin cpsMax f = modArg4 depth (jitter 1 cpsMin cpsMax) f -- jitter noise delJitArg1 :: (ModArg1 (SE Sig) b) => D -> D -> Sig -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b delJitArg1 delTime riseTime depth cpsMin cpsMax f = delModArg1 delTime riseTime depth (jitter 1 cpsMin cpsMax) f delJitArg2 :: (ModArg2 (SE Sig) b) => D -> D -> Sig -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b delJitArg2 delTime riseTime depth cpsMin cpsMax f = delModArg2 delTime riseTime depth (jitter 1 cpsMin cpsMax) f delJitArg3 :: (ModArg3 (SE Sig) b) => D -> D -> Sig -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b delJitArg3 delTime riseTime depth cpsMin cpsMax f = delModArg3 delTime riseTime depth (jitter 1 cpsMin cpsMax) f delJitArg4 :: (ModArg4 (SE Sig) b) => D -> D -> Sig -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b delJitArg4 delTime riseTime depth cpsMin cpsMax f = delModArg4 delTime riseTime depth (jitter 1 cpsMin cpsMax) f -- gauss noise gaussArg1 :: (ModArg1 (SE Sig) b) => Sig -> b -> ModArgOut1 (SE Sig) b gaussArg1 depth f = modArg1 depth (gauss 1) f gaussArg2 :: (ModArg2 (SE Sig) b) => Sig -> b -> ModArgOut2 (SE Sig) b gaussArg2 depth f = modArg2 depth (gauss 1) f gaussArg3 :: (ModArg3 (SE Sig) b) => Sig -> b -> ModArgOut3 (SE Sig) b gaussArg3 depth f = modArg3 depth (gauss 1) f gaussArg4 :: (ModArg4 (SE Sig) b) => Sig -> b -> ModArgOut4 (SE Sig) b gaussArg4 depth f = modArg4 depth (gauss 1) f -- delayed gauss noise delGaussArg1 :: (ModArg1 (SE Sig) b) => D -> D -> Sig -> b -> ModArgOut1 (SE Sig) b delGaussArg1 delTime riseTime depth f = delModArg1 delTime riseTime depth (gauss 1) f delGaussArg2 :: (ModArg2 (SE Sig) b) => D -> D -> Sig -> b -> ModArgOut2 (SE Sig) b delGaussArg2 delTime riseTime depth f = delModArg2 delTime riseTime depth (gauss 1) f delGaussArg3 :: (ModArg3 (SE Sig) b) => D -> D -> Sig -> b -> ModArgOut3 (SE Sig) b delGaussArg3 delTime riseTime depth f = delModArg3 delTime riseTime depth (gauss 1) f delGaussArg4 :: (ModArg4 (SE Sig) b) => D -> D -> Sig -> b -> ModArgOut4 (SE Sig) b delGaussArg4 delTime riseTime depth f = delModArg4 delTime riseTime depth (gauss 1) f -- gauss noise with frequency gaussiArg1 :: (ModArg1 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut1 (SE Sig) b gaussiArg1 depth rate f = modArg1 depth (gaussi 1 1 rate) f gaussiArg2 :: (ModArg2 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut2 (SE Sig) b gaussiArg2 depth rate f = modArg2 depth (gaussi 1 1 rate) f gaussiArg3 :: (ModArg3 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut3 (SE Sig) b gaussiArg3 depth rate f = modArg3 depth (gaussi 1 1 rate) f gaussiArg4 :: (ModArg4 (SE Sig) b) => Sig -> Sig -> b -> ModArgOut4 (SE Sig) b gaussiArg4 depth rate f = modArg4 depth (gaussi 1 1 rate) f -- delayed gauss noise with frequency delGaussiArg1 :: (ModArg1 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut1 (SE Sig) b delGaussiArg1 delTime riseTime depth rate f = delModArg1 delTime riseTime depth (gaussi 1 1 rate) f delGaussiArg2 :: (ModArg2 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut2 (SE Sig) b delGaussiArg2 delTime riseTime depth rate f = delModArg2 delTime riseTime depth (gaussi 1 1 rate) f delGaussiArg3 :: (ModArg3 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut3 (SE Sig) b delGaussiArg3 delTime riseTime depth rate f = delModArg3 delTime riseTime depth (gaussi 1 1 rate) f delGaussiArg4 :: (ModArg4 (SE Sig) b) => D -> D -> Sig -> Sig -> b -> ModArgOut4 (SE Sig) b delGaussiArg4 delTime riseTime depth rate f = delModArg4 delTime riseTime depth (gaussi 1 1 rate) 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 depth a f = \x -> f (x * (1 + depth * a)) instance ModArg1 Sig (Sig -> a -> Sig) where type ModArgOut1 Sig (Sig -> a -> Sig) = Sig -> a -> Sig modArg1 depth a f = \x1 x2 -> f (x1 * (1 + depth * a)) x2 instance ModArg1 Sig (Sig -> a -> b -> Sig) where type ModArgOut1 Sig (Sig -> a -> b -> Sig) = Sig -> a -> b -> Sig modArg1 depth a f = \x1 x2 x3 -> f (x1 * (1 + depth * a)) x2 x3 instance ModArg1 Sig (Sig -> a -> b -> c -> Sig) where type ModArgOut1 Sig (Sig -> a -> b -> c -> Sig) = Sig -> a -> b -> c -> Sig modArg1 depth a f = \x1 x2 x3 x4 -> f (x1 * (1 + depth * a)) x2 x3 x4 -------------------------------------------- -- pure in, pure stereo out instance ModArg1 Sig (Sig -> Sig2) where type ModArgOut1 Sig (Sig -> Sig2) = Sig -> Sig2 modArg1 depth a f = \x -> f (x * (1 + depth * a)) instance ModArg1 Sig (Sig -> a -> Sig2) where type ModArgOut1 Sig (Sig -> a -> Sig2) = Sig -> a -> Sig2 modArg1 depth a f = \x1 x2 -> f (x1 * (1 + depth * a)) x2 instance ModArg1 Sig (Sig -> a -> b -> Sig2) where type ModArgOut1 Sig (Sig -> a -> b -> Sig2) = Sig -> a -> b -> Sig2 modArg1 depth a f = \x1 x2 x3 -> f (x1 * (1 + depth * a)) x2 x3 instance ModArg1 Sig (Sig -> a -> b -> c -> Sig2) where type ModArgOut1 Sig (Sig -> a -> b -> c -> Sig2) = Sig -> a -> b -> c -> Sig2 modArg1 depth a f = \x1 x2 x3 x4 -> f (x1 * (1 + depth * a)) x2 x3 x4 -------------------------------------------- -- pure in, dirty mono out instance ModArg1 Sig (Sig -> SE Sig) where type ModArgOut1 Sig (Sig -> SE Sig) = Sig -> SE Sig modArg1 depth a f = \x -> f (x * (1 + depth * a)) instance ModArg1 Sig (Sig -> a -> SE Sig) where type ModArgOut1 Sig (Sig -> a -> SE Sig) = Sig -> a -> SE Sig modArg1 depth a f = \x1 x2 -> f (x1 * (1 + depth * 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 depth a f = \x1 x2 x3 -> f (x1 * (1 + depth * a)) x2 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 depth a f = \x1 x2 x3 x4 -> f (x1 * (1 + depth * a)) x2 x3 x4 -------------------------------------------- -- pure in, dirty stereo out instance ModArg1 Sig (Sig -> SE Sig2) where type ModArgOut1 Sig (Sig -> SE Sig2) = Sig -> SE Sig2 modArg1 depth a f = \x -> f (x * (1 + depth * a)) instance ModArg1 Sig (Sig -> a -> SE Sig2) where type ModArgOut1 Sig (Sig -> a -> SE Sig2) = Sig -> a -> SE Sig2 modArg1 depth a f = \x1 x2 -> f (x1 * (1 + depth * 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 depth a f = \x1 x2 x3 -> f (x1 * (1 + depth * a)) x2 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 depth a f = \x1 x2 x3 x4 -> f (x1 * (1 + depth * a)) x2 x3 x4 -------------------------------------------- -- dirty in, pure mono out instance ModArg1 (SE Sig) (Sig -> Sig) where type ModArgOut1 (SE Sig) (Sig -> Sig) = Sig -> SE Sig modArg1 depth ma f = \x -> fmap (\a -> f (x * (1 + depth * a))) ma instance ModArg1 (SE Sig) (Sig -> a -> Sig) where type ModArgOut1 (SE Sig) (Sig -> a -> Sig) = Sig -> a -> SE Sig modArg1 depth ma f = \x1 x2 -> fmap (\a -> f (x1 * (1 + depth * a)) x2) ma instance ModArg1 (SE Sig) (Sig -> a -> b -> Sig) where type ModArgOut1 (SE Sig) (Sig -> a -> b -> Sig) = Sig -> a -> b -> SE Sig modArg1 depth ma f = \x1 x2 x3 -> fmap (\a -> f (x1 * (1 + depth * a)) x2 x3) 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 depth ma f = \x1 x2 x3 x4 -> fmap (\a -> f (x1 * (1 + depth * a)) x2 x3 x4) ma -------------------------------------------- -- dirty in, pure stereo out instance ModArg1 (SE Sig) (Sig -> Sig2) where type ModArgOut1 (SE Sig) (Sig -> Sig2) = Sig -> SE Sig2 modArg1 depth ma f = \x -> fmap (\a -> f (x * (1 + depth * a))) ma instance ModArg1 (SE Sig) (Sig -> a -> Sig2) where type ModArgOut1 (SE Sig) (Sig -> a -> Sig2) = Sig -> a -> SE Sig2 modArg1 depth ma f = \x1 x2 -> fmap (\a -> f (x1 * (1 + depth * a)) x2) ma instance ModArg1 (SE Sig) (Sig -> a -> b -> Sig2) where type ModArgOut1 (SE Sig) (Sig -> a -> b -> Sig2) = Sig -> a -> b -> SE Sig2 modArg1 depth ma f = \x1 x2 x3 -> fmap (\a -> f (x1 * (1 + depth * a)) x2 x3) 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 depth ma f = \x1 x2 x3 x4 -> fmap (\a -> f (x1 * (1 + depth * a)) x2 x3 x4) 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 depth ma f = \x -> ma >>= (\a -> f (x * (1 + depth * a))) instance ModArg1 (SE Sig) (Sig -> a -> SE Sig) where type ModArgOut1 (SE Sig) (Sig -> a -> SE Sig) = Sig -> a -> SE Sig modArg1 depth ma f = \x1 x2 -> ma >>= (\a -> f (x1 * (1 + depth * 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 depth ma f = \x1 x2 x3 -> ma >>= (\a -> f (x1 * (1 + depth * a)) x2 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 depth ma f = \x1 x2 x3 x4 -> ma >>= (\a -> f (x1 * (1 + depth * a)) x2 x3 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 depth ma f = \x -> ma >>= (\a -> f (x * (1 + depth * a))) instance ModArg1 (SE Sig) (Sig -> a -> SE Sig2) where type ModArgOut1 (SE Sig) (Sig -> a -> SE Sig2) = Sig -> a -> SE Sig2 modArg1 depth ma f = \x1 x2 -> ma >>= (\a -> f (x1 * (1 + depth * 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 depth ma f = \x1 x2 x3 -> ma >>= (\a -> f (x1 * (1 + depth * a)) x2 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 depth ma f = \x1 x2 x3 x4 -> ma >>= (\a -> f (x1 * (1 + depth * a)) x2 x3 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 depth a f = \x1 x2 -> f x1 (x2 * (1 + depth * a)) instance ModArg2 Sig (a -> Sig -> b -> Sig) where type ModArgOut2 Sig (a -> Sig -> b -> Sig) = a -> Sig -> b -> Sig modArg2 depth a f = \x1 x2 x3 -> f x1 (x2 * (1 + depth * a)) x3 instance ModArg2 Sig (a -> Sig -> b -> c -> Sig) where type ModArgOut2 Sig (a -> Sig -> b -> c -> Sig) = a -> Sig -> b -> c -> Sig modArg2 depth a f = \x1 x2 x3 x4 -> f x1 (x2 * (1 + depth * a)) x3 x4 -------------------------------------------- -- pure in, pure stereo out instance ModArg2 Sig (a -> Sig -> Sig2) where type ModArgOut2 Sig (a -> Sig -> Sig2) = a -> Sig -> Sig2 modArg2 depth a f = \x1 x2 -> f x1 (x2 * (1 + depth * a)) instance ModArg2 Sig (a -> Sig -> b -> Sig2) where type ModArgOut2 Sig (a -> Sig -> b -> Sig2) = a -> Sig -> b -> Sig2 modArg2 depth a f = \x1 x2 x3 -> f x1 (x2 * (1 + depth * a)) x3 instance ModArg2 Sig (a -> Sig -> b -> c -> Sig2) where type ModArgOut2 Sig (a -> Sig -> b -> c -> Sig2) = a -> Sig -> b -> c -> Sig2 modArg2 depth a f = \x1 x2 x3 x4 -> f x1 (x2 * (1 + depth * a)) x3 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 depth a f = \x1 x2 -> f x1 (x2 * (1 + depth * a)) instance ModArg2 Sig (a -> Sig -> b -> SE Sig) where type ModArgOut2 Sig (a -> Sig -> b -> SE Sig) = a -> Sig -> b -> SE Sig modArg2 depth a f = \x1 x2 x3 -> f x1 (x2 * (1 + depth * a)) 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 depth a f = \x1 x2 x3 x4 -> f x1 (x2 * (1 + depth * a)) x3 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 depth a f = \x1 x2 -> f x1 (x2 * (1 + depth * a)) instance ModArg2 Sig (a -> Sig -> b -> SE Sig2) where type ModArgOut2 Sig (a -> Sig -> b -> SE Sig2) = a -> Sig -> b -> SE Sig2 modArg2 depth a f = \x1 x2 x3 -> f x1 (x2 * (1 + depth * a)) 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 depth a f = \x1 x2 x3 x4 -> f x1 (x2 * (1 + depth * a)) x3 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 depth ma f = \x1 x2 -> fmap (\a -> f x1 (x2 * (1 + depth * a))) ma instance ModArg2 (SE Sig) (a -> Sig -> b -> Sig) where type ModArgOut2 (SE Sig) (a -> Sig -> b -> Sig) = a -> Sig -> b -> SE Sig modArg2 depth ma f = \x1 x2 x3 -> fmap (\a -> f x1 (x2 * (1 + depth * a)) x3) 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 depth ma f = \x1 x2 x3 x4 -> fmap (\a -> f x1 (x2 * (1 + depth * a)) x3 x4) 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 depth ma f = \x1 x2 -> fmap (\a -> f x1 (x2 * (1 + depth * a))) ma instance ModArg2 (SE Sig) (a -> Sig -> b -> Sig2) where type ModArgOut2 (SE Sig) (a -> Sig -> b -> Sig2) = a -> Sig -> b -> SE Sig2 modArg2 depth ma f = \x1 x2 x3 -> fmap (\a -> f x1 (x2 * (1 + depth * a)) x3) 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 depth ma f = \x1 x2 x3 x4 -> fmap (\a -> f x1 (x2 * (1 + depth * a)) x3 x4) 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 depth ma f = \x1 x2 -> ma >>= (\a -> f x1 (x2 * (1 + depth * 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 depth ma f = \x1 x2 x3 -> ma >>= (\a -> f x1 (x2 * (1 + depth * a)) 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 depth ma f = \x1 x2 x3 x4 -> ma >>= (\a -> f x1 (x2 * (1 + depth * a)) x3 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 depth ma f = \x1 x2 -> ma >>= (\a -> f x1 (x2 * (1 + depth * 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 depth ma f = \x1 x2 x3 -> ma >>= (\a -> f x1 (x2 * (1 + depth * a)) 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 depth ma f = \x1 x2 x3 x4 -> ma >>= (\a -> f x1 (x2 * (1 + depth * a)) x3 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 depth a f = \x1 x2 x3 -> f x1 x2 (x3 * (1 + depth * a)) instance ModArg3 Sig (a -> b -> Sig -> c -> Sig) where type ModArgOut3 Sig (a -> b -> Sig -> c -> Sig) = a -> b -> Sig -> c -> Sig modArg3 depth a f = \x1 x2 x3 x4 -> f x1 x2 (x3 * (1 + depth * a)) 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 depth a f = \x1 x2 x3 -> f x1 x2 (x3 * (1 + depth * a)) instance ModArg3 Sig (a -> b -> Sig -> c -> Sig2) where type ModArgOut3 Sig (a -> b -> Sig -> c -> Sig2) = a -> b -> Sig -> c -> Sig2 modArg3 depth a f = \x1 x2 x3 x4 -> f x1 x2 (x3 * (1 + depth * a)) 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 depth a f = \x1 x2 x3 -> f x1 x2 (x3 * (1 + depth * 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 depth a f = \x1 x2 x3 x4 -> f x1 x2 (x3 * (1 + depth * a)) 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 depth a f = \x1 x2 x3 -> f x1 x2 (x3 * (1 + depth * 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 depth a f = \x1 x2 x3 x4 -> f x1 x2 (x3 * (1 + depth * a)) 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 depth ma f = \x1 x2 x3 -> fmap (\a -> f x1 x2 (x3 * (1 + depth * a))) 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 depth ma f = \x1 x2 x3 x4 -> fmap (\a -> f x1 x2 (x3 * (1 + depth * a)) x4) 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 depth ma f = \x1 x2 x3 -> fmap (\a -> f x1 x2 (x3 * (1 + depth * a))) 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 depth ma f = \x1 x2 x3 x4 -> fmap (\a -> f x1 x2 (x3 * (1 + depth * a)) x4) 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 depth ma f = \x1 x2 x3 -> ma >>= (\a -> f x1 x2 (x3 * (1 + depth * 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 depth ma f = \x1 x2 x3 x4 -> ma >>= (\a -> f x1 x2 (x3 * (1 + depth * a)) 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 depth ma f = \x1 x2 x3 -> ma >>= (\a -> f x1 x2 (x3 * (1 + depth * 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 depth ma f = \x1 x2 x3 x4 -> ma >>= (\a -> f x1 x2 (x3 * (1 + depth * a)) 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 depth a f = \x1 x2 x3 x4 -> f x1 x2 x3 (x4 * (1 + depth * 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 depth a f = \x1 x2 x3 x4 -> f x1 x2 x3 (x4 * (1 + depth * 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 depth a f = \x1 x2 x3 x4 -> f x1 x2 x3 (x4 * (1 + depth * 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 depth a f = \x1 x2 x3 x4 -> f x1 x2 x3 (x4 * (1 + depth * 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 depth ma f = \x1 x2 x3 x4 -> fmap (\a -> f x1 x2 x3 (x4 * (1 + depth * a))) 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 depth ma f = \x1 x2 x3 x4 -> fmap (\a -> f x1 x2 x3 (x4 * (1 + depth * a))) 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 depth ma f = \x1 x2 x3 x4 -> ma >>= (\a -> f x1 x2 x3 (x4 * (1 + depth * 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 depth ma f = \x1 x2 x3 x4 -> ma >>= (\a -> f x1 x2 x3 (x4 * (1 + depth * a)))