-- | Monad constructors for 'UGen's.
module Sound.SC3.UGen.Bindings.Monad where

import Control.Monad {- base -}

import Sound.SC3.Common.Enum
import Sound.SC3.Common.Rate
import Sound.SC3.Common.UId
import Sound.SC3.UGen.Bindings.DB
import Sound.SC3.UGen.Bindings.HW
import Sound.SC3.UGen.Type

-- | Clone a unit generator (mce . replicateM).
clone :: UId m => Int -> m UGen -> m UGen
clone :: Int -> m UGen -> m UGen
clone Int
n = ([UGen] -> UGen) -> m [UGen] -> m UGen
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap [UGen] -> UGen
mce (m [UGen] -> m UGen) -> (m UGen -> m [UGen]) -> m UGen -> m UGen
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> m UGen -> m [UGen]
forall (m :: * -> *) a. Applicative m => Int -> m a -> m [a]
replicateM Int
n

-- * Demand

-- | 'dbufrd'
dbufrdM :: UId m => UGen -> UGen -> Loop UGen -> m UGen
dbufrdM :: UGen -> UGen -> Loop UGen -> m UGen
dbufrdM = (Int -> Fn3 UGen UGen (Loop UGen) UGen)
-> UGen -> UGen -> Loop UGen -> m UGen
forall (m :: * -> *) a b c d.
UId m =>
(Int -> Fn3 a b c d) -> Fn3 a b c (m d)
liftUId3 Int -> Fn3 UGen UGen (Loop UGen) UGen
forall a. ID a => a -> Fn3 UGen UGen (Loop UGen) UGen
dbufrd

-- | 'dbufwr'
dbufwrM :: UId m => UGen -> UGen -> UGen -> Loop UGen -> m UGen
dbufwrM :: UGen -> UGen -> UGen -> Loop UGen -> m UGen
dbufwrM = (Int -> Fn4 UGen UGen UGen (Loop UGen) UGen)
-> UGen -> UGen -> UGen -> Loop UGen -> m UGen
forall (m :: * -> *) a b c d e.
UId m =>
(Int -> Fn4 a b c d e) -> Fn4 a b c d (m e)
liftUId4 Int -> Fn4 UGen UGen UGen (Loop UGen) UGen
forall a. ID a => a -> Fn4 UGen UGen UGen (Loop UGen) UGen
dbufwr

-- | 'dconst'
dconstM :: UId m => UGen -> UGen -> UGen -> m UGen
dconstM :: UGen -> UGen -> UGen -> m UGen
dconstM = (Int -> Fn3 UGen UGen UGen UGen) -> UGen -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c d.
UId m =>
(Int -> Fn3 a b c d) -> Fn3 a b c (m d)
liftUId3 Int -> Fn3 UGen UGen UGen UGen
forall a. ID a => a -> Fn3 UGen UGen UGen UGen
dconst

-- | 'dwhite'
dwhiteM :: UId m => UGen -> UGen -> UGen -> m UGen
dwhiteM :: UGen -> UGen -> UGen -> m UGen
dwhiteM = (Int -> Fn3 UGen UGen UGen UGen) -> UGen -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c d.
UId m =>
(Int -> Fn3 a b c d) -> Fn3 a b c (m d)
liftUId3 Int -> Fn3 UGen UGen UGen UGen
forall a. ID a => a -> Fn3 UGen UGen UGen UGen
dwhite

-- | 'diwhite'
diwhiteM :: UId m => UGen -> UGen -> UGen -> m UGen
diwhiteM :: UGen -> UGen -> UGen -> m UGen
diwhiteM = (Int -> Fn3 UGen UGen UGen UGen) -> UGen -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c d.
UId m =>
(Int -> Fn3 a b c d) -> Fn3 a b c (m d)
liftUId3 Int -> Fn3 UGen UGen UGen UGen
forall a. ID a => a -> Fn3 UGen UGen UGen UGen
diwhite

-- | 'dbrown'
dbrownM :: UId m => UGen -> UGen -> UGen -> UGen -> m UGen
dbrownM :: UGen -> UGen -> UGen -> UGen -> m UGen
dbrownM = (Int -> Fn4 UGen UGen UGen UGen UGen)
-> UGen -> UGen -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c d e.
UId m =>
(Int -> Fn4 a b c d e) -> Fn4 a b c d (m e)
liftUId4 Int -> Fn4 UGen UGen UGen UGen UGen
forall a. ID a => a -> Fn4 UGen UGen UGen UGen UGen
dbrown

-- | 'dibrown'
dibrownM :: UId m => UGen -> UGen -> UGen -> UGen -> m UGen
dibrownM :: UGen -> UGen -> UGen -> UGen -> m UGen
dibrownM = (Int -> Fn4 UGen UGen UGen UGen UGen)
-> UGen -> UGen -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c d e.
UId m =>
(Int -> Fn4 a b c d e) -> Fn4 a b c d (m e)
liftUId4 Int -> Fn4 UGen UGen UGen UGen UGen
forall a. ID a => a -> Fn4 UGen UGen UGen UGen UGen
dibrown

-- | 'dpoll'
dpollM :: UId m => UGen -> UGen -> UGen -> UGen -> m UGen
dpollM :: UGen -> UGen -> UGen -> UGen -> m UGen
dpollM = (Int -> Fn4 UGen UGen UGen UGen UGen)
-> UGen -> UGen -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c d e.
UId m =>
(Int -> Fn4 a b c d e) -> Fn4 a b c d (m e)
liftUId4 Int -> Fn4 UGen UGen UGen UGen UGen
forall a. ID a => a -> Fn4 UGen UGen UGen UGen UGen
dpoll

-- | 'drand'
drandM :: UId m => UGen -> UGen -> m UGen
drandM :: UGen -> UGen -> m UGen
drandM = (Int -> Fn2 UGen UGen UGen) -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c.
UId m =>
(Int -> Fn2 a b c) -> Fn2 a b (m c)
liftUId2 Int -> Fn2 UGen UGen UGen
forall a. ID a => a -> Fn2 UGen UGen UGen
drand

-- | 'dreset'
dresetM :: UId m => UGen -> UGen -> m UGen
dresetM :: UGen -> UGen -> m UGen
dresetM = (Int -> Fn2 UGen UGen UGen) -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c.
UId m =>
(Int -> Fn2 a b c) -> Fn2 a b (m c)
liftUId2 Int -> Fn2 UGen UGen UGen
forall a. ID a => a -> Fn2 UGen UGen UGen
dreset

-- | 'dunique'
duniqueM :: UId m => UGen -> UGen -> UGen -> m UGen
duniqueM :: UGen -> UGen -> UGen -> m UGen
duniqueM = (Int -> Fn3 UGen UGen UGen UGen) -> UGen -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c d.
UId m =>
(Int -> Fn3 a b c d) -> Fn3 a b c (m d)
liftUId3 Int -> Fn3 UGen UGen UGen UGen
forall a. ID a => a -> Fn3 UGen UGen UGen UGen
dunique

-- | 'dwrand'
dwrandM :: UId m => UGen -> UGen -> UGen -> m UGen
dwrandM :: UGen -> UGen -> UGen -> m UGen
dwrandM = (Int -> Fn3 UGen UGen UGen UGen) -> UGen -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c d.
UId m =>
(Int -> Fn3 a b c d) -> Fn3 a b c (m d)
liftUId3 Int -> Fn3 UGen UGen UGen UGen
forall a. ID a => a -> Fn3 UGen UGen UGen UGen
dwrand

-- | 'dxrand'
dxrandM :: UId m => UGen -> UGen -> m UGen
dxrandM :: UGen -> UGen -> m UGen
dxrandM = (Int -> Fn2 UGen UGen UGen) -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c.
UId m =>
(Int -> Fn2 a b c) -> Fn2 a b (m c)
liftUId2 Int -> Fn2 UGen UGen UGen
forall a. ID a => a -> Fn2 UGen UGen UGen
dxrand

-- | Demand rate arithmetic series.
dseriesM :: UId m => UGen -> UGen -> UGen -> m UGen
dseriesM :: UGen -> UGen -> UGen -> m UGen
dseriesM = (Int -> Fn3 UGen UGen UGen UGen) -> UGen -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c d.
UId m =>
(Int -> Fn3 a b c d) -> Fn3 a b c (m d)
liftUId3 Int -> Fn3 UGen UGen UGen UGen
forall a. ID a => a -> Fn3 UGen UGen UGen UGen
dseries

-- | Demand rate geometric series.
dgeomM :: UId m => UGen -> UGen -> UGen -> m UGen
dgeomM :: UGen -> UGen -> UGen -> m UGen
dgeomM = (Int -> Fn3 UGen UGen UGen UGen) -> UGen -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c d.
UId m =>
(Int -> Fn3 a b c d) -> Fn3 a b c (m d)
liftUId3 Int -> Fn3 UGen UGen UGen UGen
forall a. ID a => a -> Fn3 UGen UGen UGen UGen
dgeom

-- | Demand rate sequence generator.
dseqM :: UId m => UGen -> UGen -> m UGen
dseqM :: UGen -> UGen -> m UGen
dseqM = (Int -> Fn2 UGen UGen UGen) -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c.
UId m =>
(Int -> Fn2 a b c) -> Fn2 a b (m c)
liftUId2 Int -> Fn2 UGen UGen UGen
forall a. ID a => a -> Fn2 UGen UGen UGen
dseq

-- | Demand rate series generator.
dserM :: UId m => UGen -> UGen -> m UGen
dserM :: UGen -> UGen -> m UGen
dserM = (Int -> Fn2 UGen UGen UGen) -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c.
UId m =>
(Int -> Fn2 a b c) -> Fn2 a b (m c)
liftUId2 Int -> Fn2 UGen UGen UGen
forall a. ID a => a -> Fn2 UGen UGen UGen
dser

-- | Demand rate sequence shuffler.
dshufM :: UId m => UGen -> UGen -> m UGen
dshufM :: UGen -> UGen -> m UGen
dshufM = (Int -> Fn2 UGen UGen UGen) -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c.
UId m =>
(Int -> Fn2 a b c) -> Fn2 a b (m c)
liftUId2 Int -> Fn2 UGen UGen UGen
forall a. ID a => a -> Fn2 UGen UGen UGen
dshuf

-- | Demand input replication
dstutterM :: UId m => UGen -> UGen -> m UGen
dstutterM :: UGen -> UGen -> m UGen
dstutterM = (Int -> Fn2 UGen UGen UGen) -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c.
UId m =>
(Int -> Fn2 a b c) -> Fn2 a b (m c)
liftUId2 Int -> Fn2 UGen UGen UGen
forall a. ID a => a -> Fn2 UGen UGen UGen
dstutter

-- | Demand rate input switching.
dswitch1M :: UId m => UGen -> UGen -> m UGen
dswitch1M :: UGen -> UGen -> m UGen
dswitch1M = (Int -> Fn2 UGen UGen UGen) -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c.
UId m =>
(Int -> Fn2 a b c) -> Fn2 a b (m c)
liftUId2 Int -> Fn2 UGen UGen UGen
forall a. ID a => a -> Fn2 UGen UGen UGen
dswitch1

-- | Demand rate input switching.
dswitchM :: UId m => UGen -> UGen -> m UGen
dswitchM :: UGen -> UGen -> m UGen
dswitchM = (Int -> Fn2 UGen UGen UGen) -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c.
UId m =>
(Int -> Fn2 a b c) -> Fn2 a b (m c)
liftUId2 Int -> Fn2 UGen UGen UGen
forall a. ID a => a -> Fn2 UGen UGen UGen
dswitch

-- * FFT

-- | Randomize order of bins.
pv_BinScrambleM :: UId m => UGen -> UGen -> UGen -> UGen -> m UGen
pv_BinScrambleM :: UGen -> UGen -> UGen -> UGen -> m UGen
pv_BinScrambleM = (Int -> Fn4 UGen UGen UGen UGen UGen)
-> UGen -> UGen -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c d e.
UId m =>
(Int -> Fn4 a b c d e) -> Fn4 a b c d (m e)
liftUId4 Int -> Fn4 UGen UGen UGen UGen UGen
forall a. ID a => a -> Fn4 UGen UGen UGen UGen UGen
pv_BinScramble

-- | Randomly clear bins.
pv_RandCombM :: UId m => UGen -> UGen -> UGen -> m UGen
pv_RandCombM :: UGen -> UGen -> UGen -> m UGen
pv_RandCombM = (Int -> Fn3 UGen UGen UGen UGen) -> UGen -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c d.
UId m =>
(Int -> Fn3 a b c d) -> Fn3 a b c (m d)
liftUId3 Int -> Fn3 UGen UGen UGen UGen
forall a. ID a => a -> Fn3 UGen UGen UGen UGen
pv_RandComb

-- | Cross fade, copying bins in random order.
pv_RandWipeM :: UId m => UGen -> UGen -> UGen -> UGen -> m UGen
pv_RandWipeM :: UGen -> UGen -> UGen -> UGen -> m UGen
pv_RandWipeM = (Int -> Fn4 UGen UGen UGen UGen UGen)
-> UGen -> UGen -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c d e.
UId m =>
(Int -> Fn4 a b c d e) -> Fn4 a b c d (m e)
liftUId4 Int -> Fn4 UGen UGen UGen UGen UGen
forall a. ID a => a -> Fn4 UGen UGen UGen UGen UGen
pv_RandWipe

-- * Noise

-- | Brown noise.
brownNoiseM :: UId m => Rate -> m UGen
brownNoiseM :: Rate -> m UGen
brownNoiseM = (Int -> Fn1 Rate UGen) -> Rate -> m UGen
forall (m :: * -> *) a b. UId m => (Int -> Fn1 a b) -> Fn1 a (m b)
liftUId1 Int -> Fn1 Rate UGen
forall a. ID a => a -> Fn1 Rate UGen
brownNoise

-- | Clip noise.
clipNoiseM :: UId m => Rate -> m UGen
clipNoiseM :: Rate -> m UGen
clipNoiseM = (Int -> Fn1 Rate UGen) -> Rate -> m UGen
forall (m :: * -> *) a b. UId m => (Int -> Fn1 a b) -> Fn1 a (m b)
liftUId1 Int -> Fn1 Rate UGen
forall a. ID a => a -> Fn1 Rate UGen
clipNoise

-- | Randomly pass or block triggers.
coinGateM :: UId m => UGen -> UGen -> m UGen
coinGateM :: UGen -> UGen -> m UGen
coinGateM = (Int -> Fn2 UGen UGen UGen) -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c.
UId m =>
(Int -> Fn2 a b c) -> Fn2 a b (m c)
liftUId2 Int -> Fn2 UGen UGen UGen
forall a. ID a => a -> Fn2 UGen UGen UGen
coinGate

-- | Random impulses in (-1, 1).
dust2M :: UId m => Rate -> UGen -> m UGen
dust2M :: Rate -> UGen -> m UGen
dust2M = (Int -> Fn2 Rate UGen UGen) -> Rate -> UGen -> m UGen
forall (m :: * -> *) a b c.
UId m =>
(Int -> Fn2 a b c) -> Fn2 a b (m c)
liftUId2 Int -> Fn2 Rate UGen UGen
forall a. ID a => a -> Fn2 Rate UGen UGen
dust2

-- | Random impulse in (0,1).
dustM :: UId m => Rate -> UGen -> m UGen
dustM :: Rate -> UGen -> m UGen
dustM = (Int -> Fn2 Rate UGen UGen) -> Rate -> UGen -> m UGen
forall (m :: * -> *) a b c.
UId m =>
(Int -> Fn2 a b c) -> Fn2 a b (m c)
liftUId2 Int -> Fn2 Rate UGen UGen
forall a. ID a => a -> Fn2 Rate UGen UGen
dust

-- | Random value in exponential distribution.
expRandM :: UId m => UGen -> UGen -> m UGen
expRandM :: UGen -> UGen -> m UGen
expRandM = (Int -> Fn2 UGen UGen UGen) -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c.
UId m =>
(Int -> Fn2 a b c) -> Fn2 a b (m c)
liftUId2 Int -> Fn2 UGen UGen UGen
forall a. ID a => a -> Fn2 UGen UGen UGen
expRand

-- | Gray noise.
grayNoiseM :: UId m => Rate -> m UGen
grayNoiseM :: Rate -> m UGen
grayNoiseM = (Int -> Fn1 Rate UGen) -> Rate -> m UGen
forall (m :: * -> *) a b. UId m => (Int -> Fn1 a b) -> Fn1 a (m b)
liftUId1 Int -> Fn1 Rate UGen
forall a. ID a => a -> Fn1 Rate UGen
grayNoise

-- | Random integer in uniform distribution.
iRandM :: UId m => UGen -> UGen -> m UGen
iRandM :: UGen -> UGen -> m UGen
iRandM = (Int -> Fn2 UGen UGen UGen) -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c.
UId m =>
(Int -> Fn2 a b c) -> Fn2 a b (m c)
liftUId2 Int -> Fn2 UGen UGen UGen
forall a. ID a => a -> Fn2 UGen UGen UGen
iRand

-- | Clip noise.
lfClipNoiseM :: UId m => Rate -> UGen -> m UGen
lfClipNoiseM :: Rate -> UGen -> m UGen
lfClipNoiseM = (Int -> Fn2 Rate UGen UGen) -> Rate -> UGen -> m UGen
forall (m :: * -> *) a b c.
UId m =>
(Int -> Fn2 a b c) -> Fn2 a b (m c)
liftUId2 Int -> Fn2 Rate UGen UGen
forall a. ID a => a -> Fn2 Rate UGen UGen
lfClipNoise

-- | Dynamic clip noise.
lfdClipNoiseM :: UId m => Rate -> UGen -> m UGen
lfdClipNoiseM :: Rate -> UGen -> m UGen
lfdClipNoiseM = (Int -> Fn2 Rate UGen UGen) -> Rate -> UGen -> m UGen
forall (m :: * -> *) a b c.
UId m =>
(Int -> Fn2 a b c) -> Fn2 a b (m c)
liftUId2 Int -> Fn2 Rate UGen UGen
forall a. ID a => a -> Fn2 Rate UGen UGen
lfdClipNoise

-- | Dynamic step noise.
lfdNoise0M :: UId m => Rate -> UGen -> m UGen
lfdNoise0M :: Rate -> UGen -> m UGen
lfdNoise0M = (Int -> Fn2 Rate UGen UGen) -> Rate -> UGen -> m UGen
forall (m :: * -> *) a b c.
UId m =>
(Int -> Fn2 a b c) -> Fn2 a b (m c)
liftUId2 Int -> Fn2 Rate UGen UGen
forall a. ID a => a -> Fn2 Rate UGen UGen
lfdNoise0

-- | Dynamic ramp noise.
lfdNoise1M :: UId m => Rate -> UGen -> m UGen
lfdNoise1M :: Rate -> UGen -> m UGen
lfdNoise1M = (Int -> Fn2 Rate UGen UGen) -> Rate -> UGen -> m UGen
forall (m :: * -> *) a b c.
UId m =>
(Int -> Fn2 a b c) -> Fn2 a b (m c)
liftUId2 Int -> Fn2 Rate UGen UGen
forall a. ID a => a -> Fn2 Rate UGen UGen
lfdNoise1

-- | Dynamic cubic noise
lfdNoise3M :: UId m => Rate -> UGen -> m UGen
lfdNoise3M :: Rate -> UGen -> m UGen
lfdNoise3M = (Int -> Fn2 Rate UGen UGen) -> Rate -> UGen -> m UGen
forall (m :: * -> *) a b c.
UId m =>
(Int -> Fn2 a b c) -> Fn2 a b (m c)
liftUId2 Int -> Fn2 Rate UGen UGen
forall a. ID a => a -> Fn2 Rate UGen UGen
lfdNoise3

-- | Step noise.
lfNoise0M :: UId m => Rate -> UGen -> m UGen
lfNoise0M :: Rate -> UGen -> m UGen
lfNoise0M = (Int -> Fn2 Rate UGen UGen) -> Rate -> UGen -> m UGen
forall (m :: * -> *) a b c.
UId m =>
(Int -> Fn2 a b c) -> Fn2 a b (m c)
liftUId2 Int -> Fn2 Rate UGen UGen
forall a. ID a => a -> Fn2 Rate UGen UGen
lfNoise0

-- | Ramp noise.
lfNoise1M :: UId m => Rate -> UGen -> m UGen
lfNoise1M :: Rate -> UGen -> m UGen
lfNoise1M = (Int -> Fn2 Rate UGen UGen) -> Rate -> UGen -> m UGen
forall (m :: * -> *) a b c.
UId m =>
(Int -> Fn2 a b c) -> Fn2 a b (m c)
liftUId2 Int -> Fn2 Rate UGen UGen
forall a. ID a => a -> Fn2 Rate UGen UGen
lfNoise1

-- | Quadratic noise.
lfNoise2M :: UId m => Rate -> UGen -> m UGen
lfNoise2M :: Rate -> UGen -> m UGen
lfNoise2M = (Int -> Fn2 Rate UGen UGen) -> Rate -> UGen -> m UGen
forall (m :: * -> *) a b c.
UId m =>
(Int -> Fn2 a b c) -> Fn2 a b (m c)
liftUId2 Int -> Fn2 Rate UGen UGen
forall a. ID a => a -> Fn2 Rate UGen UGen
lfNoise2

-- | Random value in skewed linear distribution.
linRandM :: UId m => UGen -> UGen -> UGen -> m UGen
linRandM :: UGen -> UGen -> UGen -> m UGen
linRandM = (Int -> Fn3 UGen UGen UGen UGen) -> UGen -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c d.
UId m =>
(Int -> Fn3 a b c d) -> Fn3 a b c (m d)
liftUId3 Int -> Fn3 UGen UGen UGen UGen
forall a. ID a => a -> Fn3 UGen UGen UGen UGen
linRand

-- | 'localBuf'
localBufM :: UId m => UGen -> UGen -> m UGen
localBufM :: UGen -> UGen -> m UGen
localBufM = (Int -> Fn2 UGen UGen UGen) -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c.
UId m =>
(Int -> Fn2 a b c) -> Fn2 a b (m c)
liftUId2 Int -> Fn2 UGen UGen UGen
forall a. ID a => a -> Fn2 UGen UGen UGen
localBuf

-- | Random value in sum of n linear distribution.
nRandM :: UId m => UGen -> UGen -> UGen -> m UGen
nRandM :: UGen -> UGen -> UGen -> m UGen
nRandM = (Int -> Fn3 UGen UGen UGen UGen) -> UGen -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c d.
UId m =>
(Int -> Fn3 a b c d) -> Fn3 a b c (m d)
liftUId3 Int -> Fn3 UGen UGen UGen UGen
forall a. ID a => a -> Fn3 UGen UGen UGen UGen
nRand

-- | Pink noise.
pinkNoiseM :: UId m => Rate -> m UGen
pinkNoiseM :: Rate -> m UGen
pinkNoiseM = (Int -> Fn1 Rate UGen) -> Rate -> m UGen
forall (m :: * -> *) a b. UId m => (Int -> Fn1 a b) -> Fn1 a (m b)
liftUId1 Int -> Fn1 Rate UGen
forall a. ID a => a -> Fn1 Rate UGen
pinkNoise

-- | Random value in uniform distribution.
randM :: UId m => UGen -> UGen -> m UGen
randM :: UGen -> UGen -> m UGen
randM = (Int -> Fn2 UGen UGen UGen) -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c.
UId m =>
(Int -> Fn2 a b c) -> Fn2 a b (m c)
liftUId2 Int -> Fn2 UGen UGen UGen
forall a. ID a => a -> Fn2 UGen UGen UGen
rand

-- | Random value in exponential distribution on trigger.
tExpRandM :: UId m => UGen -> UGen -> UGen -> m UGen
tExpRandM :: UGen -> UGen -> UGen -> m UGen
tExpRandM = (Int -> Fn3 UGen UGen UGen UGen) -> UGen -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c d.
UId m =>
(Int -> Fn3 a b c d) -> Fn3 a b c (m d)
liftUId3 Int -> Fn3 UGen UGen UGen UGen
forall a. ID a => a -> Fn3 UGen UGen UGen UGen
tExpRand

-- | Random integer in uniform distribution on trigger.
tiRandM :: UId m => UGen -> UGen -> UGen -> m UGen
tiRandM :: UGen -> UGen -> UGen -> m UGen
tiRandM = (Int -> Fn3 UGen UGen UGen UGen) -> UGen -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c d.
UId m =>
(Int -> Fn3 a b c d) -> Fn3 a b c (m d)
liftUId3 Int -> Fn3 UGen UGen UGen UGen
forall a. ID a => a -> Fn3 UGen UGen UGen UGen
tiRand

-- | Random value in uniform distribution on trigger.
tRandM :: UId m => UGen -> UGen -> UGen -> m UGen
tRandM :: UGen -> UGen -> UGen -> m UGen
tRandM = (Int -> Fn3 UGen UGen UGen UGen) -> UGen -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c d.
UId m =>
(Int -> Fn3 a b c d) -> Fn3 a b c (m d)
liftUId3 Int -> Fn3 UGen UGen UGen UGen
forall a. ID a => a -> Fn3 UGen UGen UGen UGen
tRand

-- | Triggered windex.
tWindexM :: UId m => UGen -> UGen -> UGen -> m UGen
tWindexM :: UGen -> UGen -> UGen -> m UGen
tWindexM = (Int -> Fn3 UGen UGen UGen UGen) -> UGen -> UGen -> UGen -> m UGen
forall (m :: * -> *) a b c d.
UId m =>
(Int -> Fn3 a b c d) -> Fn3 a b c (m d)
liftUId3 Int -> Fn3 UGen UGen UGen UGen
forall a. ID a => a -> Fn3 UGen UGen UGen UGen
tWindex

-- | White noise.
whiteNoiseM :: UId m => Rate -> m UGen
whiteNoiseM :: Rate -> m UGen
whiteNoiseM = (Int -> Fn1 Rate UGen) -> Rate -> m UGen
forall (m :: * -> *) a b. UId m => (Int -> Fn1 a b) -> Fn1 a (m b)
liftUId1 Int -> Fn1 Rate UGen
forall a. ID a => a -> Fn1 Rate UGen
whiteNoise