packages feed

hsc3-0.18: Sound/SC3/UGen/Bindings/Monad.hs

-- | 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 n = liftM mce . replicateM n

-- * Demand

-- | 'dbufrd'
dbufrdM :: UId m => UGen -> UGen -> Loop UGen -> m UGen
dbufrdM = liftUId3 dbufrd

-- | 'dbufwr'
dbufwrM :: UId m => UGen -> UGen -> UGen -> Loop UGen -> m UGen
dbufwrM = liftUId4 dbufwr

-- | 'dconst'
dconstM :: UId m => UGen -> UGen -> UGen -> m UGen
dconstM = liftUId3 dconst

-- | 'dwhite'
dwhiteM :: UId m => UGen -> UGen -> UGen -> m UGen
dwhiteM = liftUId3 dwhite

-- | 'diwhite'
diwhiteM :: UId m => UGen -> UGen -> UGen -> m UGen
diwhiteM = liftUId3 diwhite

-- | 'dbrown'
dbrownM :: UId m => UGen -> UGen -> UGen -> UGen -> m UGen
dbrownM = liftUId4 dbrown

-- | 'dibrown'
dibrownM :: UId m => UGen -> UGen -> UGen -> UGen -> m UGen
dibrownM = liftUId4 dibrown

-- | 'dpoll'
dpollM :: UId m => UGen -> UGen -> UGen -> UGen -> m UGen
dpollM = liftUId4 dpoll

-- | 'drand'
drandM :: UId m => UGen -> UGen -> m UGen
drandM = liftUId2 drand

-- | 'dreset'
dresetM :: UId m => UGen -> UGen -> m UGen
dresetM = liftUId2 dreset

-- | 'dunique'
duniqueM :: UId m => UGen -> UGen -> UGen -> m UGen
duniqueM = liftUId3 dunique

-- | 'dwrand'
dwrandM :: UId m => UGen -> UGen -> UGen -> m UGen
dwrandM = liftUId3 dwrand

-- | 'dxrand'
dxrandM :: UId m => UGen -> UGen -> m UGen
dxrandM = liftUId2 dxrand

-- | Demand rate arithmetic series.
dseriesM :: UId m => UGen -> UGen -> UGen -> m UGen
dseriesM = liftUId3 dseries

-- | Demand rate geometric series.
dgeomM :: UId m => UGen -> UGen -> UGen -> m UGen
dgeomM = liftUId3 dgeom

-- | Demand rate sequence generator.
dseqM :: UId m => UGen -> UGen -> m UGen
dseqM = liftUId2 dseq

-- | Demand rate series generator.
dserM :: UId m => UGen -> UGen -> m UGen
dserM = liftUId2 dser

-- | Demand rate sequence shuffler.
dshufM :: UId m => UGen -> UGen -> m UGen
dshufM = liftUId2 dshuf

-- | Demand input replication
dstutterM :: UId m => UGen -> UGen -> m UGen
dstutterM = liftUId2 dstutter

-- | Demand rate input switching.
dswitch1M :: UId m => UGen -> UGen -> m UGen
dswitch1M = liftUId2 dswitch1

-- | Demand rate input switching.
dswitchM :: UId m => UGen -> UGen -> m UGen
dswitchM = liftUId2 dswitch

-- * FFT

-- | Randomize order of bins.
pv_BinScrambleM :: UId m => UGen -> UGen -> UGen -> UGen -> m UGen
pv_BinScrambleM = liftUId4 pv_BinScramble

-- | Randomly clear bins.
pv_RandCombM :: UId m => UGen -> UGen -> UGen -> m UGen
pv_RandCombM = liftUId3 pv_RandComb

-- | Cross fade, copying bins in random order.
pv_RandWipeM :: UId m => UGen -> UGen -> UGen -> UGen -> m UGen
pv_RandWipeM = liftUId4 pv_RandWipe

-- * Noise

-- | Brown noise.
brownNoiseM :: UId m => Rate -> m UGen
brownNoiseM = liftUId1 brownNoise

-- | Clip noise.
clipNoiseM :: UId m => Rate -> m UGen
clipNoiseM = liftUId1 clipNoise

-- | Randomly pass or block triggers.
coinGateM :: UId m => UGen -> UGen -> m UGen
coinGateM = liftUId2 coinGate

-- | Random impulses in (-1, 1).
dust2M :: UId m => Rate -> UGen -> m UGen
dust2M = liftUId2 dust2

-- | Random impulse in (0,1).
dustM :: UId m => Rate -> UGen -> m UGen
dustM = liftUId2 dust

-- | Random value in exponential distribution.
expRandM :: UId m => UGen -> UGen -> m UGen
expRandM = liftUId2 expRand

-- | Gray noise.
grayNoiseM :: UId m => Rate -> m UGen
grayNoiseM = liftUId1 grayNoise

-- | Random integer in uniform distribution.
iRandM :: UId m => UGen -> UGen -> m UGen
iRandM = liftUId2 iRand

-- | Clip noise.
lfClipNoiseM :: UId m => Rate -> UGen -> m UGen
lfClipNoiseM = liftUId2 lfClipNoise

-- | Dynamic clip noise.
lfdClipNoiseM :: UId m => Rate -> UGen -> m UGen
lfdClipNoiseM = liftUId2 lfdClipNoise

-- | Dynamic step noise.
lfdNoise0M :: UId m => Rate -> UGen -> m UGen
lfdNoise0M = liftUId2 lfdNoise0

-- | Dynamic ramp noise.
lfdNoise1M :: UId m => Rate -> UGen -> m UGen
lfdNoise1M = liftUId2 lfdNoise1

-- | Dynamic cubic noise
lfdNoise3M :: UId m => Rate -> UGen -> m UGen
lfdNoise3M = liftUId2 lfdNoise3

-- | Step noise.
lfNoise0M :: UId m => Rate -> UGen -> m UGen
lfNoise0M = liftUId2 lfNoise0

-- | Ramp noise.
lfNoise1M :: UId m => Rate -> UGen -> m UGen
lfNoise1M = liftUId2 lfNoise1

-- | Quadratic noise.
lfNoise2M :: UId m => Rate -> UGen -> m UGen
lfNoise2M = liftUId2 lfNoise2

-- | Random value in skewed linear distribution.
linRandM :: UId m => UGen -> UGen -> UGen -> m UGen
linRandM = liftUId3 linRand

-- | 'localBuf'
localBufM :: UId m => UGen -> UGen -> m UGen
localBufM = liftUId2 localBuf

-- | Random value in sum of n linear distribution.
nRandM :: UId m => UGen -> UGen -> UGen -> m UGen
nRandM = liftUId3 nRand

-- | Pink noise.
pinkNoiseM :: UId m => Rate -> m UGen
pinkNoiseM = liftUId1 pinkNoise

-- | Random value in uniform distribution.
randM :: UId m => UGen -> UGen -> m UGen
randM = liftUId2 rand

-- | Random value in exponential distribution on trigger.
tExpRandM :: UId m => UGen -> UGen -> UGen -> m UGen
tExpRandM = liftUId3 tExpRand

-- | Random integer in uniform distribution on trigger.
tiRandM :: UId m => UGen -> UGen -> UGen -> m UGen
tiRandM = liftUId3 tiRand

-- | Random value in uniform distribution on trigger.
tRandM :: UId m => UGen -> UGen -> UGen -> m UGen
tRandM = liftUId3 tRand

-- | Triggered windex.
tWindexM :: UId m => UGen -> UGen -> UGen -> m UGen
tWindexM = liftUId3 tWindex

-- | White noise.
whiteNoiseM :: UId m => Rate -> m UGen
whiteNoiseM = liftUId1 whiteNoise