-- | 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 = fmap 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