-- | Sc3 Ugen bindings (auto-generated).
module Sound.Sc3.Ugen.Bindings.Db where

import Sound.Sc3.Common.Enum
import Sound.Sc3.Common.Envelope
import Sound.Sc3.Common.Rate
import Sound.Sc3.Common.Uid
import Sound.Sc3.Common.Unsafe

import Sound.Sc3.Ugen.Primitive
import Sound.Sc3.Ugen.Ugen
import Sound.Sc3.Ugen.Util

{- | Apply a binary operation to the values of an input Ugen

 BinaryOpUgen [InitialisationRate,ControlRate,AudioRate,DemandRate] a=0 b=0;    FILTER: TRUE
-}
binaryOpUgen :: Ugen -> Ugen -> Ugen
binaryOpUgen a b = mkUgen Nothing [InitialisationRate, ControlRate, AudioRate, DemandRate] (Right [0, 1]) "BinaryOpUGen" [a, b] Nothing 1 (Special 0) NoId

{- | Apply a unary operation to the values of an input ugen

 UnaryOpUgen [InitialisationRate,ControlRate,AudioRate,DemandRate] a=0;    FILTER: TRUE
-}
unaryOpUgen :: Ugen -> Ugen
unaryOpUgen a = mkUgen Nothing [InitialisationRate, ControlRate, AudioRate, DemandRate] (Right [0]) "UnaryOpUGen" [a] Nothing 1 (Special 0) NoId

{- | Audio to control rate converter.

 A2K [ControlRate] in=0
-}
a2k :: Ugen -> Ugen
a2k in_ = mkUgen Nothing [ControlRate] (Left ControlRate) "A2K" [in_] Nothing 1 (Special 0) NoId

{- | FIXME: APF purpose.

 APF [ControlRate,AudioRate] in=0 freq=440 radius=0.8;    FILTER: TRUE
-}
apf :: Ugen -> Ugen -> Ugen -> Ugen
apf in_ freq radius = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "APF" [in_, freq, radius] Nothing 1 (Special 0) NoId

{- | Schroeder allpass delay line with cubic interpolation.

 AllpassC [ControlRate,AudioRate] in=0 maxdelaytime=0.2 delaytime=0.2 decaytime=1;    FILTER: TRUE
-}
allpassC :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
allpassC in_ maxdelaytime delaytime decaytime = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "AllpassC" [in_, maxdelaytime, delaytime, decaytime] Nothing 1 (Special 0) NoId

{- | Schroeder allpass delay line with linear interpolation.

 AllpassL [ControlRate,AudioRate] in=0 maxdelaytime=0.2 delaytime=0.2 decaytime=1;    FILTER: TRUE
-}
allpassL :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
allpassL in_ maxdelaytime delaytime decaytime = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "AllpassL" [in_, maxdelaytime, delaytime, decaytime] Nothing 1 (Special 0) NoId

{- | Schroeder allpass delay line with no interpolation.

 AllpassN [ControlRate,AudioRate] in=0 maxdelaytime=0.2 delaytime=0.2 decaytime=1;    FILTER: TRUE
-}
allpassN :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
allpassN in_ maxdelaytime delaytime decaytime = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "AllpassN" [in_, maxdelaytime, delaytime, decaytime] Nothing 1 (Special 0) NoId

{- | Basic psychoacoustic amplitude compensation.

 AmpComp [InitialisationRate,ControlRate,AudioRate] freq=0 root=0 exp=0.3333
-}
ampComp :: Rate -> Ugen -> Ugen -> Ugen -> Ugen
ampComp rate freq root exp_ = mkUgen Nothing [InitialisationRate, ControlRate, AudioRate] (Left rate) "AmpComp" [freq, root, exp_] Nothing 1 (Special 0) NoId

{- | Basic psychoacoustic amplitude compensation (ANSI A-weighting curve).

 AmpCompA [InitialisationRate,ControlRate,AudioRate] freq=1000 root=0 minAmp=0.32 rootAmp=1
-}
ampCompA :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
ampCompA rate freq root minAmp rootAmp = mkUgen Nothing [InitialisationRate, ControlRate, AudioRate] (Left rate) "AmpCompA" [freq, root, minAmp, rootAmp] Nothing 1 (Special 0) NoId

{- | Amplitude follower

 Amplitude [ControlRate,AudioRate] in=0 attackTime=0.01 releaseTime=0.01
-}
amplitude :: Rate -> Ugen -> Ugen -> Ugen -> Ugen
amplitude rate in_ attackTime releaseTime = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "Amplitude" [in_, attackTime, releaseTime] Nothing 1 (Special 0) NoId

{- | All Pass Filter

 BAllPass [AudioRate] in=0 freq=1200 rq=1;    FILTER: TRUE
-}
bAllPass :: Ugen -> Ugen -> Ugen -> Ugen
bAllPass in_ freq rq = mkUgen Nothing [AudioRate] (Right [0]) "BAllPass" [in_, freq, rq] Nothing 1 (Special 0) NoId

{- | Band Pass Filter

 BBandPass [AudioRate] in=0 freq=1200 bw=1;    FILTER: TRUE
-}
bBandPass :: Ugen -> Ugen -> Ugen -> Ugen
bBandPass in_ freq bw = mkUgen Nothing [AudioRate] (Right [0]) "BBandPass" [in_, freq, bw] Nothing 1 (Special 0) NoId

{- | Band reject filter

 BBandStop [AudioRate] in=0 freq=1200 bw=1;    FILTER: TRUE
-}
bBandStop :: Ugen -> Ugen -> Ugen -> Ugen
bBandStop in_ freq bw = mkUgen Nothing [AudioRate] (Right [0]) "BBandStop" [in_, freq, bw] Nothing 1 (Special 0) NoId

{- | 12db/oct rolloff - 2nd order resonant  Hi Pass Filter

 BHiPass [AudioRate] in=0 freq=1200 rq=1;    FILTER: TRUE
-}
bHiPass :: Ugen -> Ugen -> Ugen -> Ugen
bHiPass in_ freq rq = mkUgen Nothing [AudioRate] (Right [0]) "BHiPass" [in_, freq, rq] Nothing 1 (Special 0) NoId

{- | Hi Shelf

 BHiShelf [AudioRate] in=0 freq=1200 rs=1 db=0;    FILTER: TRUE
-}
bHiShelf :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
bHiShelf in_ freq rs db = mkUgen Nothing [AudioRate] (Right [0]) "BHiShelf" [in_, freq, rs, db] Nothing 1 (Special 0) NoId

{- | 12db/oct rolloff - 2nd order resonant Low Pass Filter

 BLowPass [AudioRate] in=0 freq=1200 rq=1;    FILTER: TRUE
-}
bLowPass :: Ugen -> Ugen -> Ugen -> Ugen
bLowPass in_ freq rq = mkUgen Nothing [AudioRate] (Right [0]) "BLowPass" [in_, freq, rq] Nothing 1 (Special 0) NoId

{- | Low Shelf

 BLowShelf [AudioRate] in=0 freq=1200 rs=1 db=0;    FILTER: TRUE
-}
bLowShelf :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
bLowShelf in_ freq rs db = mkUgen Nothing [AudioRate] (Right [0]) "BLowShelf" [in_, freq, rs, db] Nothing 1 (Special 0) NoId

{- | 2nd order Butterworth bandpass filter.

 BPF [ControlRate,AudioRate] in=0 freq=440 rq=1;    FILTER: TRUE
-}
bpf :: Ugen -> Ugen -> Ugen -> Ugen
bpf in_ freq rq = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "BPF" [in_, freq, rq] Nothing 1 (Special 0) NoId

{- | Two zero fixed midpass.

 BPZ2 [ControlRate,AudioRate] in=0;    FILTER: TRUE
-}
bpz2 :: Ugen -> Ugen
bpz2 in_ = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "BPZ2" [in_] Nothing 1 (Special 0) NoId

{- | Parametric equalizer

 BPeakEQ [AudioRate] in=0 freq=1200 rq=1 db=0;    FILTER: TRUE
-}
bPeakEQ :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
bPeakEQ in_ freq rq db = mkUgen Nothing [AudioRate] (Right [0]) "BPeakEQ" [in_, freq, rq, db] Nothing 1 (Special 0) NoId

{- | 2nd order Butterworth band reject filter.

 BRF [ControlRate,AudioRate] in=0 freq=440 rq=1;    FILTER: TRUE
-}
brf :: Ugen -> Ugen -> Ugen -> Ugen
brf in_ freq rq = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "BRF" [in_, freq, rq] Nothing 1 (Special 0) NoId

{- | Two zero fixed midcut.

 BRZ2 [ControlRate,AudioRate] in=0;    FILTER: TRUE
-}
brz2 :: Ugen -> Ugen
brz2 in_ = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "BRZ2" [in_] Nothing 1 (Special 0) NoId

{- | Stereo signal balancer

 Balance2 [ControlRate,AudioRate] left=0 right=0 pos=0 level=1;    FILTER: TRUE
-}
balance2 :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
balance2 left right pos level = mkUgen Nothing [ControlRate, AudioRate] (Right [0, 1]) "Balance2" [left, right, pos, level] Nothing 2 (Special 0) NoId

{- | physical model of bouncing object

 Ball [ControlRate,AudioRate] in=0 g=1 damp=0 friction=0.01
-}
ball :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
ball rate in_ g damp friction_ = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "Ball" [in_, g, damp, friction_] Nothing 1 (Special 0) NoId

{- | Autocorrelation beat tracker

 BeatTrack [ControlRate] chain=0 lock=0
-}
beatTrack :: Rate -> Ugen -> Ugen -> Ugen
beatTrack rate chain lock = mkUgen Nothing [ControlRate] (Left rate) "BeatTrack" [chain, lock] Nothing 4 (Special 0) NoId

{- | Template matching beat tracker

 BeatTrack2 [ControlRate] busindex=0 numfeatures=0 windowsize=2 phaseaccuracy=0.02 lock=0 weightingscheme=0
-}
beatTrack2 :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
beatTrack2 rate busindex numfeatures windowsize phaseaccuracy lock weightingscheme = mkUgen Nothing [ControlRate] (Left rate) "BeatTrack2" [busindex, numfeatures, windowsize, phaseaccuracy, lock, weightingscheme] Nothing 6 (Special 0) NoId

{- | 2D Ambisonic B-format panner.

 BiPanB2 [ControlRate,AudioRate] inA=0 inB=0 azimuth=0 gain=1
-}
biPanB2 :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
biPanB2 rate inA inB azimuth gain = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "BiPanB2" [inA, inB, azimuth, gain] Nothing 3 (Special 0) NoId

{- | Band limited impulse oscillator.

 Blip [ControlRate,AudioRate] freq=440 numharm=200
-}
blip :: Rate -> Ugen -> Ugen -> Ugen
blip rate freq numharm = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "Blip" [freq, numharm] Nothing 1 (Special 0) NoId

{- | (Undocumented class)

 BlockSize [InitialisationRate]
-}
blockSize :: Ugen
blockSize = mkUgen Nothing [InitialisationRate] (Left InitialisationRate) "BlockSize" [] Nothing 1 (Special 0) NoId

{- | Brown Noise.

 BrownNoise [ControlRate,AudioRate] ;    NONDET
-}
brownNoiseId :: ID a => a -> Rate -> Ugen
brownNoiseId z rate = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "BrownNoise" [] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of BrownNoise.
brownNoiseM :: Uid m => Rate -> m Ugen
brownNoiseM = liftUid1 brownNoiseId

-- | Unsafe variant of BrownNoise.
brownNoise :: Rate -> Ugen
brownNoise = liftUnsafe1 brownNoiseM

{- | Buffer based all pass delay line with cubic interpolation.

 BufAllpassC [AudioRate] buf=0 in=0 delaytime=0.2 decaytime=1;    FILTER: TRUE
-}
bufAllpassC :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
bufAllpassC buf in_ delaytime decaytime = mkUgen Nothing [AudioRate] (Right [1]) "BufAllpassC" [buf, in_, delaytime, decaytime] Nothing 1 (Special 0) NoId

{- | Buffer based all pass delay line with linear interpolation.

 BufAllpassL [AudioRate] buf=0 in=0 delaytime=0.2 decaytime=1;    FILTER: TRUE
-}
bufAllpassL :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
bufAllpassL buf in_ delaytime decaytime = mkUgen Nothing [AudioRate] (Right [1]) "BufAllpassL" [buf, in_, delaytime, decaytime] Nothing 1 (Special 0) NoId

{- | Buffer based all pass delay line with no interpolation.

 BufAllpassN [AudioRate] buf=0 in=0 delaytime=0.2 decaytime=1;    FILTER: TRUE
-}
bufAllpassN :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
bufAllpassN buf in_ delaytime decaytime = mkUgen Nothing [AudioRate] (Right [1]) "BufAllpassN" [buf, in_, delaytime, decaytime] Nothing 1 (Special 0) NoId

{- | Current number of channels of soundfile in buffer.

 BufChannels [InitialisationRate,ControlRate] bufnum=0
-}
bufChannels :: Rate -> Ugen -> Ugen
bufChannels rate bufnum = mkUgen Nothing [InitialisationRate, ControlRate] (Left rate) "BufChannels" [bufnum] Nothing 1 (Special 0) NoId

{- | Buffer based comb delay line with cubic interpolation.

 BufCombC [AudioRate] buf=0 in=0 delaytime=0.2 decaytime=1;    FILTER: TRUE
-}
bufCombC :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
bufCombC buf in_ delaytime decaytime = mkUgen Nothing [AudioRate] (Right [1]) "BufCombC" [buf, in_, delaytime, decaytime] Nothing 1 (Special 0) NoId

{- | Buffer based comb delay line with linear interpolation.

 BufCombL [AudioRate] buf=0 in=0 delaytime=0.2 decaytime=1;    FILTER: TRUE
-}
bufCombL :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
bufCombL buf in_ delaytime decaytime = mkUgen Nothing [AudioRate] (Right [1]) "BufCombL" [buf, in_, delaytime, decaytime] Nothing 1 (Special 0) NoId

{- | Buffer based comb delay line with no interpolation.

 BufCombN [AudioRate] buf=0 in=0 delaytime=0.2 decaytime=1;    FILTER: TRUE
-}
bufCombN :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
bufCombN buf in_ delaytime decaytime = mkUgen Nothing [AudioRate] (Right [1]) "BufCombN" [buf, in_, delaytime, decaytime] Nothing 1 (Special 0) NoId

{- | Buffer based simple delay line with cubic interpolation.

 BufDelayC [ControlRate,AudioRate] buf=0 in=0 delaytime=0.2;    FILTER: TRUE
-}
bufDelayC :: Ugen -> Ugen -> Ugen -> Ugen
bufDelayC buf in_ delaytime = mkUgen Nothing [ControlRate, AudioRate] (Right [1]) "BufDelayC" [buf, in_, delaytime] Nothing 1 (Special 0) NoId

{- | Buffer based simple delay line with linear interpolation.

 BufDelayL [ControlRate,AudioRate] buf=0 in=0 delaytime=0.2;    FILTER: TRUE
-}
bufDelayL :: Ugen -> Ugen -> Ugen -> Ugen
bufDelayL buf in_ delaytime = mkUgen Nothing [ControlRate, AudioRate] (Right [1]) "BufDelayL" [buf, in_, delaytime] Nothing 1 (Special 0) NoId

{- | Buffer based simple delay line with no interpolation.

 BufDelayN [ControlRate,AudioRate] buf=0 in=0 delaytime=0.2;    FILTER: TRUE
-}
bufDelayN :: Ugen -> Ugen -> Ugen -> Ugen
bufDelayN buf in_ delaytime = mkUgen Nothing [ControlRate, AudioRate] (Right [1]) "BufDelayN" [buf, in_, delaytime] Nothing 1 (Special 0) NoId

{- | Current duration of soundfile in buffer.

 BufDur [InitialisationRate,ControlRate] bufnum=0
-}
bufDur :: Rate -> Ugen -> Ugen
bufDur rate bufnum = mkUgen Nothing [InitialisationRate, ControlRate] (Left rate) "BufDur" [bufnum] Nothing 1 (Special 0) NoId

{- | Current number of frames allocated in the buffer.

 BufFrames [InitialisationRate,ControlRate] bufnum=0
-}
bufFrames :: Rate -> Ugen -> Ugen
bufFrames rate bufnum = mkUgen Nothing [InitialisationRate, ControlRate] (Left rate) "BufFrames" [bufnum] Nothing 1 (Special 0) NoId

{- | Buffer rate scaling in respect to server samplerate.

 BufRateScale [InitialisationRate,ControlRate] bufnum=0
-}
bufRateScale :: Rate -> Ugen -> Ugen
bufRateScale rate bufnum = mkUgen Nothing [InitialisationRate, ControlRate] (Left rate) "BufRateScale" [bufnum] Nothing 1 (Special 0) NoId

{- | Buffer reading oscillator.

 BufRd [ControlRate,AudioRate] bufnum=0 phase=0 loop=1 interpolation=2;    NC INPUT: True, ENUMERATION INPUTS: 2=Loop, 3=Interpolation
-}
bufRd :: Int -> Rate -> Ugen -> Ugen -> Loop Ugen -> Interpolation Ugen -> Ugen
bufRd numChannels rate bufnum phase loop interpolation = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "BufRd" [bufnum, phase, (from_loop loop), (from_interpolation interpolation)] Nothing numChannels (Special 0) NoId

{- | Buffer sample rate.

 BufSampleRate [InitialisationRate,ControlRate] bufnum=0
-}
bufSampleRate :: Rate -> Ugen -> Ugen
bufSampleRate rate bufnum = mkUgen Nothing [InitialisationRate, ControlRate] (Left rate) "BufSampleRate" [bufnum] Nothing 1 (Special 0) NoId

{- | Current number of samples in buffer.

 BufSamples [InitialisationRate,ControlRate] bufnum=0
-}
bufSamples :: Rate -> Ugen -> Ugen
bufSamples rate bufnum = mkUgen Nothing [InitialisationRate, ControlRate] (Left rate) "BufSamples" [bufnum] Nothing 1 (Special 0) NoId

{- | Buffer writing oscillator.

 BufWr [ControlRate,AudioRate] bufnum=0 phase=0 loop=1 *inputArray=0;    MCE=1, FILTER: TRUE, REORDERS INPUTS: [3,0,1,2], ENUMERATION INPUTS: 2=Loop
-}
bufWr :: Ugen -> Ugen -> Loop Ugen -> Ugen -> Ugen
bufWr bufnum phase loop inputArray = mkUgen Nothing [ControlRate, AudioRate] (Right [3]) "BufWr" [bufnum, phase, (from_loop loop)] (Just [inputArray]) 1 (Special 0) NoId

{- | Chorusing wavetable oscillator.

 COsc [ControlRate,AudioRate] bufnum=0 freq=440 beats=0.5
-}
cOsc :: Rate -> Ugen -> Ugen -> Ugen -> Ugen
cOsc rate bufnum freq beats = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "COsc" [bufnum, freq, beats] Nothing 1 (Special 0) NoId

{- | Test for infinity, not-a-number, and denormals

 CheckBadValues [ControlRate,AudioRate] in=0 id=0 post=2;    FILTER: TRUE
-}
checkBadValues :: Ugen -> Ugen -> Ugen -> Ugen
checkBadValues in_ id_ post = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "CheckBadValues" [in_, id_, post] Nothing 1 (Special 0) NoId

{- | Clip a signal outside given thresholds.

 Clip [InitialisationRate,ControlRate,AudioRate] in=0 lo=0 hi=1;    FILTER: TRUE
-}
clip :: Ugen -> Ugen -> Ugen -> Ugen
clip in_ lo hi = mkUgen Nothing [InitialisationRate, ControlRate, AudioRate] (Right [0]) "Clip" [in_, lo, hi] Nothing 1 (Special 0) NoId

{- | Clip Noise.

 ClipNoise [ControlRate,AudioRate] ;    NONDET
-}
clipNoiseId :: ID a => a -> Rate -> Ugen
clipNoiseId z rate = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "ClipNoise" [] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of ClipNoise.
clipNoiseM :: Uid m => Rate -> m Ugen
clipNoiseM = liftUid1 clipNoiseId

-- | Unsafe variant of ClipNoise.
clipNoise :: Rate -> Ugen
clipNoise = liftUnsafe1 clipNoiseM

{- | Statistical gate.

 CoinGate [ControlRate,AudioRate] prob=0 in=0;    FILTER: TRUE, NONDET
-}
coinGateId :: ID a => a -> Ugen -> Ugen -> Ugen
coinGateId z prob in_ = mkUgen Nothing [ControlRate, AudioRate] (Right [1]) "CoinGate" [prob, in_] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of CoinGate.
coinGateM :: Uid m => Ugen -> Ugen -> m Ugen
coinGateM = liftUid2 coinGateId

-- | Unsafe variant of CoinGate.
coinGate :: Ugen -> Ugen -> Ugen
coinGate = liftUnsafe2 coinGateM

{- | Comb delay line with cubic interpolation.

 CombC [ControlRate,AudioRate] in=0 maxdelaytime=0.2 delaytime=0.2 decaytime=1;    FILTER: TRUE
-}
combC :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
combC in_ maxdelaytime delaytime decaytime = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "CombC" [in_, maxdelaytime, delaytime, decaytime] Nothing 1 (Special 0) NoId

{- | Comb delay line with linear interpolation.

 CombL [ControlRate,AudioRate] in=0 maxdelaytime=0.2 delaytime=0.2 decaytime=1;    FILTER: TRUE
-}
combL :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
combL in_ maxdelaytime delaytime decaytime = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "CombL" [in_, maxdelaytime, delaytime, decaytime] Nothing 1 (Special 0) NoId

{- | Comb delay line with no interpolation.

 CombN [ControlRate,AudioRate] in=0 maxdelaytime=0.2 delaytime=0.2 decaytime=1;    FILTER: TRUE
-}
combN :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
combN in_ maxdelaytime delaytime decaytime = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "CombN" [in_, maxdelaytime, delaytime, decaytime] Nothing 1 (Special 0) NoId

{- | Compressor, expander, limiter, gate, ducker

 Compander [AudioRate] in=0 control=0 thresh=0.5 slopeBelow=1 slopeAbove=1 clampTime=0.01 relaxTime=0.1;    FILTER: TRUE
-}
compander :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
compander in_ control_ thresh slopeBelow slopeAbove clampTime relaxTime = mkUgen Nothing [AudioRate] (Right [0]) "Compander" [in_, control_, thresh, slopeBelow, slopeAbove, clampTime, relaxTime] Nothing 1 (Special 0) NoId

{- | Compressor, expander, limiter, gate, ducker.

 CompanderD [AudioRate] in=0 thresh=0.5 slopeBelow=1 slopeAbove=1 clampTime=0.01 relaxTime=0.01
-}
companderD :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
companderD rate in_ thresh slopeBelow slopeAbove clampTime relaxTime = mkUgen Nothing [AudioRate] (Left rate) "CompanderD" [in_, thresh, slopeBelow, slopeAbove, clampTime, relaxTime] Nothing 1 (Special 0) NoId

{- | Duration of one block

 ControlDur [InitialisationRate]
-}
controlDur :: Ugen
controlDur = mkUgen Nothing [InitialisationRate] (Left InitialisationRate) "ControlDur" [] Nothing 1 (Special 0) NoId

{- | Server control rate.

 ControlRate [InitialisationRate]
-}
controlRate :: Ugen
controlRate = mkUgen Nothing [InitialisationRate] (Left InitialisationRate) "ControlRate" [] Nothing 1 (Special 0) NoId

{- | Real-time convolver.

 Convolution [AudioRate] in=0 kernel=0 framesize=512
-}
convolution :: Ugen -> Ugen -> Ugen -> Ugen
convolution in_ kernel framesize = mkUgen Nothing [AudioRate] (Left AudioRate) "Convolution" [in_, kernel, framesize] Nothing 1 (Special 0) NoId

{- | Real-time fixed kernel convolver.

 Convolution2 [AudioRate] in=0 kernel=0 trigger=0 framesize=2048
-}
convolution2 :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
convolution2 in_ kernel trigger framesize = mkUgen Nothing [AudioRate] (Left AudioRate) "Convolution2" [in_, kernel, trigger, framesize] Nothing 1 (Special 0) NoId

{- | Real-time convolver with linear interpolation

 Convolution2L [AudioRate] in=0 kernel=0 trigger=0 framesize=2048 crossfade=1
-}
convolution2L :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
convolution2L rate in_ kernel trigger framesize crossfade = mkUgen Nothing [AudioRate] (Left rate) "Convolution2L" [in_, kernel, trigger, framesize, crossfade] Nothing 1 (Special 0) NoId

{- | Time based convolver.

 Convolution3 [ControlRate,AudioRate] in=0 kernel=0 trigger=0 framesize=2048
-}
convolution3 :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
convolution3 rate in_ kernel trigger framesize = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "Convolution3" [in_, kernel, trigger, framesize] Nothing 1 (Special 0) NoId

{- | Chaotic noise function.

 Crackle [ControlRate,AudioRate] chaosParam=1.5
-}
crackle :: Rate -> Ugen -> Ugen
crackle rate chaosParam = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "Crackle" [chaosParam] Nothing 1 (Special 0) NoId

{- | Cusp map chaotic generator

 CuspL [AudioRate] freq=22050 a=1 b=1.9 xi=0
-}
cuspL :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
cuspL rate freq a b xi = mkUgen Nothing [AudioRate] (Left rate) "CuspL" [freq, a, b, xi] Nothing 1 (Special 0) NoId

{- | Cusp map chaotic generator

 CuspN [AudioRate] freq=22050 a=1 b=1.9 xi=0
-}
cuspN :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
cuspN rate freq a b xi = mkUgen Nothing [AudioRate] (Left rate) "CuspN" [freq, a, b, xi] Nothing 1 (Special 0) NoId

{- | Create a constant amplitude signal

 DC [ControlRate,AudioRate] in=0
-}
dc :: Rate -> Ugen -> Ugen
dc rate in_ = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "DC" [in_] Nothing 1 (Special 0) NoId

{- | Demand rate brownian movement generator.

 Dbrown [DemandRate] length=100000000 lo=0 hi=1 step=0.01;    REORDERS INPUTS: [1,2,3,0], DEMAND/NONDET
-}
dbrownId :: ID a => a -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
dbrownId z length_ lo hi step = mkUgen Nothing [DemandRate] (Left DemandRate) "Dbrown" [length_, lo, hi, step] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of Dbrown.
dbrownM :: Uid m => Ugen -> Ugen -> Ugen -> Ugen -> m Ugen
dbrownM = liftUid4 dbrownId

-- | Unsafe variant of Dbrown.
dbrown :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
dbrown = liftUnsafe4 dbrownM

{- | Buffer read demand ugen

 Dbufrd [DemandRate] bufnum=0 phase=0 loop=1;    ENUMERATION INPUTS: 2=Loop, DEMAND/NONDET
-}
dbufrdId :: ID a => a -> Ugen -> Ugen -> Loop Ugen -> Ugen
dbufrdId z bufnum phase loop = mkUgen Nothing [DemandRate] (Left DemandRate) "Dbufrd" [bufnum, phase, (from_loop loop)] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of Dbufrd.
dbufrdM :: Uid m => Ugen -> Ugen -> Loop Ugen -> m Ugen
dbufrdM = liftUid3 dbufrdId

-- | Unsafe variant of Dbufrd.
dbufrd :: Ugen -> Ugen -> Loop Ugen -> Ugen
dbufrd = liftUnsafe3 dbufrdM

{- | Buffer write demand ugen

 Dbufwr [DemandRate] bufnum=0 phase=0 input=0 loop=1;    REORDERS INPUTS: [2,0,1,3], ENUMERATION INPUTS: 3=Loop, DEMAND/NONDET
-}
dbufwrId :: ID a => a -> Ugen -> Ugen -> Ugen -> Loop Ugen -> Ugen
dbufwrId z bufnum phase input loop = mkUgen Nothing [DemandRate] (Left DemandRate) "Dbufwr" [bufnum, phase, input, (from_loop loop)] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of Dbufwr.
dbufwrM :: Uid m => Ugen -> Ugen -> Ugen -> Loop Ugen -> m Ugen
dbufwrM = liftUid4 dbufwrId

-- | Unsafe variant of Dbufwr.
dbufwr :: Ugen -> Ugen -> Ugen -> Loop Ugen -> Ugen
dbufwr = liftUnsafe4 dbufwrM

{- | Constrain a demand-rate stream to a given sum

 Dconst [DemandRate] sum=0 in=0 tolerance=0.001;    DEMAND/NONDET
-}
dconstId :: ID a => a -> Ugen -> Ugen -> Ugen -> Ugen
dconstId z sum_ in_ tolerance = mkUgen Nothing [DemandRate] (Left DemandRate) "Dconst" [sum_, in_, tolerance] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of Dconst.
dconstM :: Uid m => Ugen -> Ugen -> Ugen -> m Ugen
dconstM = liftUid3 dconstId

-- | Unsafe variant of Dconst.
dconst :: Ugen -> Ugen -> Ugen -> Ugen
dconst = liftUnsafe3 dconstM

{- | Exponential decay

 Decay [ControlRate,AudioRate] in=0 decayTime=1;    FILTER: TRUE
-}
decay :: Ugen -> Ugen -> Ugen
decay in_ decayTime = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "Decay" [in_, decayTime] Nothing 1 (Special 0) NoId

{- | Exponential decay

 Decay2 [ControlRate,AudioRate] in=0 attackTime=0.01 decayTime=1;    FILTER: TRUE
-}
decay2 :: Ugen -> Ugen -> Ugen -> Ugen
decay2 in_ attackTime decayTime = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "Decay2" [in_, attackTime, decayTime] Nothing 1 (Special 0) NoId

{- | 2D Ambisonic B-format decoder.

 DecodeB2 [ControlRate,AudioRate] w=0 x=0 y=0 orientation=0.5;    NC INPUT: True, FILTER: TRUE
-}
decodeB2 :: Int -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
decodeB2 numChannels w x y orientation = mkUgen Nothing [ControlRate, AudioRate] (Right [0, 1, 2]) "DecodeB2" [w, x, y, orientation] Nothing numChannels (Special 0) NoId

{- | Convert signal to modal pitch.

 DegreeToKey [ControlRate,AudioRate] bufnum=0 in=0 octave=12;    FILTER: TRUE
-}
degreeToKey :: Ugen -> Ugen -> Ugen -> Ugen
degreeToKey bufnum in_ octave = mkUgen Nothing [ControlRate, AudioRate] (Right [1]) "DegreeToKey" [bufnum, in_, octave] Nothing 1 (Special 0) NoId

{- | Tap a delay line from a DelTapWr Ugen

 DelTapRd [ControlRate,AudioRate] buffer=0 phase=0 delTime=0 interp=1;    FILTER: TRUE
-}
delTapRd :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
delTapRd buffer phase delTime interp = mkUgen Nothing [ControlRate, AudioRate] (Right [1]) "DelTapRd" [buffer, phase, delTime, interp] Nothing 1 (Special 0) NoId

{- | Write to a buffer for a DelTapRd Ugen

 DelTapWr [ControlRate,AudioRate] buffer=0 in=0;    FILTER: TRUE
-}
delTapWr :: Ugen -> Ugen -> Ugen
delTapWr buffer in_ = mkUgen Nothing [ControlRate, AudioRate] (Right [1]) "DelTapWr" [buffer, in_] Nothing 1 (Special 0) NoId

{- | Single sample delay.

 Delay1 [ControlRate,AudioRate] in=0;    FILTER: TRUE
-}
delay1 :: Ugen -> Ugen
delay1 in_ = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "Delay1" [in_] Nothing 1 (Special 0) NoId

{- | Two sample delay.

 Delay2 [ControlRate,AudioRate] in=0;    FILTER: TRUE
-}
delay2 :: Ugen -> Ugen
delay2 in_ = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "Delay2" [in_] Nothing 1 (Special 0) NoId

{- | Simple delay line with cubic interpolation.

 DelayC [ControlRate,AudioRate] in=0 maxdelaytime=0.2 delaytime=0.2;    FILTER: TRUE
-}
delayC :: Ugen -> Ugen -> Ugen -> Ugen
delayC in_ maxdelaytime delaytime = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "DelayC" [in_, maxdelaytime, delaytime] Nothing 1 (Special 0) NoId

{- | Simple delay line with linear interpolation.

 DelayL [ControlRate,AudioRate] in=0 maxdelaytime=0.2 delaytime=0.2;    FILTER: TRUE
-}
delayL :: Ugen -> Ugen -> Ugen -> Ugen
delayL in_ maxdelaytime delaytime = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "DelayL" [in_, maxdelaytime, delaytime] Nothing 1 (Special 0) NoId

{- | Simple delay line with no interpolation.

 DelayN [ControlRate,AudioRate] in=0 maxdelaytime=0.2 delaytime=0.2;    FILTER: TRUE
-}
delayN :: Ugen -> Ugen -> Ugen -> Ugen
delayN in_ maxdelaytime delaytime = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "DelayN" [in_, maxdelaytime, delaytime] Nothing 1 (Special 0) NoId

{- | Demand results from demand rate Ugens.

 Demand [ControlRate,AudioRate] trig=0 reset=0 *demandUgens=0;    MCE=1, FILTER: TRUE
-}
demand :: Ugen -> Ugen -> Ugen -> Ugen
demand trig_ reset demandUgens = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "Demand" [trig_, reset] (Just [demandUgens]) (length (mceChannels demandUgens) + 0) (Special 0) NoId

{- | Demand rate envelope generator

 DemandEnvGen [ControlRate,AudioRate] level=0 dur=0 shape=1 curve=0 gate=1 reset=1 levelScale=1 levelBias=0 timeScale=1 doneAction=0;    ENUMERATION INPUTS: 9=DoneAction
-}
demandEnvGen :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> DoneAction Ugen -> Ugen
demandEnvGen rate level dur shape curve gate_ reset levelScale levelBias timeScale doneAction = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "DemandEnvGen" [level, dur, shape, curve, gate_, reset, levelScale, levelBias, timeScale, (from_done_action doneAction)] Nothing 1 (Special 0) NoId

{- | Search a buffer for a value

 DetectIndex [ControlRate,AudioRate] bufnum=0 in=0;    FILTER: TRUE
-}
detectIndex :: Ugen -> Ugen -> Ugen
detectIndex bufnum in_ = mkUgen Nothing [ControlRate, AudioRate] (Right [1]) "DetectIndex" [bufnum, in_] Nothing 1 (Special 0) NoId

{- | Detect when input falls below an amplitude threshold

 DetectSilence [ControlRate,AudioRate] in=0 amp=0.0001 time=0.1 doneAction=0;    FILTER: TRUE, ENUMERATION INPUTS: 3=DoneAction
-}
detectSilence :: Ugen -> Ugen -> Ugen -> DoneAction Ugen -> Ugen
detectSilence in_ amp time doneAction = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "DetectSilence" [in_, amp, time, (from_done_action doneAction)] Nothing 1 (Special 0) NoId

{- | Demand rate geometric series Ugen.

 Dgeom [DemandRate] length=100000000 start=1 grow=2;    REORDERS INPUTS: [1,2,0], DEMAND/NONDET
-}
dgeomId :: ID a => a -> Ugen -> Ugen -> Ugen -> Ugen
dgeomId z length_ start grow = mkUgen Nothing [DemandRate] (Left DemandRate) "Dgeom" [length_, start, grow] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of Dgeom.
dgeomM :: Uid m => Ugen -> Ugen -> Ugen -> m Ugen
dgeomM = liftUid3 dgeomId

-- | Unsafe variant of Dgeom.
dgeom :: Ugen -> Ugen -> Ugen -> Ugen
dgeom = liftUnsafe3 dgeomM

{- | Demand rate brownian movement generator.

 Dibrown [DemandRate] length=100000000 lo=0 hi=1 step=0.01;    REORDERS INPUTS: [1,2,3,0], DEMAND/NONDET
-}
dibrownId :: ID a => a -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
dibrownId z length_ lo hi step = mkUgen Nothing [DemandRate] (Left DemandRate) "Dibrown" [length_, lo, hi, step] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of Dibrown.
dibrownM :: Uid m => Ugen -> Ugen -> Ugen -> Ugen -> m Ugen
dibrownM = liftUid4 dibrownId

-- | Unsafe variant of Dibrown.
dibrown :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
dibrown = liftUnsafe4 dibrownM

{- | Stream in audio from a file.

 DiskIn [AudioRate] bufnum=0 loop=0;    NC INPUT: True, ENUMERATION INPUTS: 1=Loop
-}
diskIn :: Int -> Ugen -> Loop Ugen -> Ugen
diskIn numChannels bufnum loop = mkUgen Nothing [AudioRate] (Left AudioRate) "DiskIn" [bufnum, (from_loop loop)] Nothing numChannels (Special 0) NoId

{- | Record to a soundfile to disk.

 DiskOut [AudioRate] bufnum=0 *channelsArray=0;    MCE=1
-}
diskOut :: Ugen -> Ugen -> Ugen
diskOut bufnum input = mkUgen Nothing [AudioRate] (Left AudioRate) "DiskOut" [bufnum] (Just [input]) 1 (Special 0) NoId

{- | Demand rate white noise random generator.

 Diwhite [DemandRate] length=100000000 lo=0 hi=1;    REORDERS INPUTS: [1,2,0], DEMAND/NONDET
-}
diwhiteId :: ID a => a -> Ugen -> Ugen -> Ugen -> Ugen
diwhiteId z length_ lo hi = mkUgen Nothing [DemandRate] (Left DemandRate) "Diwhite" [length_, lo, hi] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of Diwhite.
diwhiteM :: Uid m => Ugen -> Ugen -> Ugen -> m Ugen
diwhiteM = liftUid3 diwhiteId

-- | Unsafe variant of Diwhite.
diwhite :: Ugen -> Ugen -> Ugen -> Ugen
diwhite = liftUnsafe3 diwhiteM

{- | Monitors another Ugen to see when it is finished

 Done [ControlRate] src=0
-}
done :: Ugen -> Ugen
done src = mkUgen Nothing [ControlRate] (Left ControlRate) "Done" [src] Nothing 1 (Special 0) NoId

{- | Print the current output value of a demand rate Ugen

 Dpoll [DemandRate] in=0 label=0 run=1 trigid=-1;    DEMAND/NONDET
-}
dpollId :: ID a => a -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
dpollId z in_ label_ run trigid = mkUgen Nothing [DemandRate] (Left DemandRate) "Dpoll" [in_, label_, run, trigid] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of Dpoll.
dpollM :: Uid m => Ugen -> Ugen -> Ugen -> Ugen -> m Ugen
dpollM = liftUid4 dpollId

-- | Unsafe variant of Dpoll.
dpoll :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
dpoll = liftUnsafe4 dpollM

{- | Demand rate random sequence generator.

 Drand [DemandRate] repeats=1 *list=0;    MCE=1, REORDERS INPUTS: [1,0], DEMAND/NONDET
-}
drandId :: ID a => a -> Ugen -> Ugen -> Ugen
drandId z repeats list_ = mkUgen Nothing [DemandRate] (Left DemandRate) "Drand" [repeats] (Just [list_]) 1 (Special 0) (toUid z)

-- | Monad variant of Drand.
drandM :: Uid m => Ugen -> Ugen -> m Ugen
drandM = liftUid2 drandId

-- | Unsafe variant of Drand.
drand :: Ugen -> Ugen -> Ugen
drand = liftUnsafe2 drandM

{- | demand rate reset

 Dreset [DemandRate] in=0 reset=0;    DEMAND/NONDET
-}
dresetId :: ID a => a -> Ugen -> Ugen -> Ugen
dresetId z in_ reset = mkUgen Nothing [DemandRate] (Left DemandRate) "Dreset" [in_, reset] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of Dreset.
dresetM :: Uid m => Ugen -> Ugen -> m Ugen
dresetM = liftUid2 dresetId

-- | Unsafe variant of Dreset.
dreset :: Ugen -> Ugen -> Ugen
dreset = liftUnsafe2 dresetM

{- | Demand rate sequence generator.

 Dseq [DemandRate] repeats=1 *list=0;    MCE=1, REORDERS INPUTS: [1,0], DEMAND/NONDET
-}
dseqId :: ID a => a -> Ugen -> Ugen -> Ugen
dseqId z repeats list_ = mkUgen Nothing [DemandRate] (Left DemandRate) "Dseq" [repeats] (Just [list_]) 1 (Special 0) (toUid z)

-- | Monad variant of Dseq.
dseqM :: Uid m => Ugen -> Ugen -> m Ugen
dseqM = liftUid2 dseqId

-- | Unsafe variant of Dseq.
dseq :: Ugen -> Ugen -> Ugen
dseq = liftUnsafe2 dseqM

{- | Demand rate sequence generator.

 Dser [DemandRate] repeats=1 *list=0;    MCE=1, REORDERS INPUTS: [1,0], DEMAND/NONDET
-}
dserId :: ID a => a -> Ugen -> Ugen -> Ugen
dserId z repeats list_ = mkUgen Nothing [DemandRate] (Left DemandRate) "Dser" [repeats] (Just [list_]) 1 (Special 0) (toUid z)

-- | Monad variant of Dser.
dserM :: Uid m => Ugen -> Ugen -> m Ugen
dserM = liftUid2 dserId

-- | Unsafe variant of Dser.
dser :: Ugen -> Ugen -> Ugen
dser = liftUnsafe2 dserM

{- | Demand rate arithmetic series Ugen.

 Dseries [DemandRate] length=100000000 start=1 step=1;    REORDERS INPUTS: [1,2,0], DEMAND/NONDET
-}
dseriesId :: ID a => a -> Ugen -> Ugen -> Ugen -> Ugen
dseriesId z length_ start step = mkUgen Nothing [DemandRate] (Left DemandRate) "Dseries" [length_, start, step] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of Dseries.
dseriesM :: Uid m => Ugen -> Ugen -> Ugen -> m Ugen
dseriesM = liftUid3 dseriesId

-- | Unsafe variant of Dseries.
dseries :: Ugen -> Ugen -> Ugen -> Ugen
dseries = liftUnsafe3 dseriesM

{- | Demand rate random sequence generator

 Dshuf [DemandRate] repeats=1 *list=0;    MCE=1, REORDERS INPUTS: [1,0], DEMAND/NONDET
-}
dshufId :: ID a => a -> Ugen -> Ugen -> Ugen
dshufId z repeats list_ = mkUgen Nothing [DemandRate] (Left DemandRate) "Dshuf" [repeats] (Just [list_]) 1 (Special 0) (toUid z)

-- | Monad variant of Dshuf.
dshufM :: Uid m => Ugen -> Ugen -> m Ugen
dshufM = liftUid2 dshufId

-- | Unsafe variant of Dshuf.
dshuf :: Ugen -> Ugen -> Ugen
dshuf = liftUnsafe2 dshufM

{- | Demand rate input replicator

 Dstutter [DemandRate] n=0 in=0;    DEMAND/NONDET
-}
dstutterId :: ID a => a -> Ugen -> Ugen -> Ugen
dstutterId z n in_ = mkUgen Nothing [DemandRate] (Left DemandRate) "Dstutter" [n, in_] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of Dstutter.
dstutterM :: Uid m => Ugen -> Ugen -> m Ugen
dstutterM = liftUid2 dstutterId

-- | Unsafe variant of Dstutter.
dstutter :: Ugen -> Ugen -> Ugen
dstutter = liftUnsafe2 dstutterM

{- | Demand rate generator for embedding different inputs

 Dswitch [DemandRate] index=0 *list=0;    MCE=1, REORDERS INPUTS: [1,0], DEMAND/NONDET
-}
dswitchId :: ID a => a -> Ugen -> Ugen -> Ugen
dswitchId z index_ list_ = mkUgen Nothing [DemandRate] (Left DemandRate) "Dswitch" [index_] (Just [list_]) 1 (Special 0) (toUid z)

-- | Monad variant of Dswitch.
dswitchM :: Uid m => Ugen -> Ugen -> m Ugen
dswitchM = liftUid2 dswitchId

-- | Unsafe variant of Dswitch.
dswitch :: Ugen -> Ugen -> Ugen
dswitch = liftUnsafe2 dswitchM

{- | Demand rate generator for switching between inputs.

 Dswitch1 [DemandRate] index=0 *list=0;    MCE=1, REORDERS INPUTS: [1,0], DEMAND/NONDET
-}
dswitch1Id :: ID a => a -> Ugen -> Ugen -> Ugen
dswitch1Id z index_ list_ = mkUgen Nothing [DemandRate] (Left DemandRate) "Dswitch1" [index_] (Just [list_]) 1 (Special 0) (toUid z)

-- | Monad variant of Dswitch1.
dswitch1M :: Uid m => Ugen -> Ugen -> m Ugen
dswitch1M = liftUid2 dswitch1Id

-- | Unsafe variant of Dswitch1.
dswitch1 :: Ugen -> Ugen -> Ugen
dswitch1 = liftUnsafe2 dswitch1M

{- | Return the same unique series of values for several demand streams

 Dunique [DemandRate] source=0 maxBufferSize=1024 protected=1;    DEMAND/NONDET
-}
duniqueId :: ID a => a -> Ugen -> Ugen -> Ugen -> Ugen
duniqueId z source maxBufferSize protected = mkUgen Nothing [DemandRate] (Left DemandRate) "Dunique" [source, maxBufferSize, protected] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of Dunique.
duniqueM :: Uid m => Ugen -> Ugen -> Ugen -> m Ugen
duniqueM = liftUid3 duniqueId

-- | Unsafe variant of Dunique.
dunique :: Ugen -> Ugen -> Ugen -> Ugen
dunique = liftUnsafe3 duniqueM

{- | Random impulses.

 Dust [ControlRate,AudioRate] density=0;    NONDET
-}
dustId :: ID a => a -> Rate -> Ugen -> Ugen
dustId z rate density = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "Dust" [density] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of Dust.
dustM :: Uid m => Rate -> Ugen -> m Ugen
dustM = liftUid2 dustId

-- | Unsafe variant of Dust.
dust :: Rate -> Ugen -> Ugen
dust = liftUnsafe2 dustM

{- | Random impulses.

 Dust2 [ControlRate,AudioRate] density=0;    NONDET
-}
dust2Id :: ID a => a -> Rate -> Ugen -> Ugen
dust2Id z rate density = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "Dust2" [density] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of Dust2.
dust2M :: Uid m => Rate -> Ugen -> m Ugen
dust2M = liftUid2 dust2Id

-- | Unsafe variant of Dust2.
dust2 :: Rate -> Ugen -> Ugen
dust2 = liftUnsafe2 dust2M

{- | Demand results from demand rate Ugens.

 Duty [ControlRate,AudioRate] dur=1 reset=0 doneAction=0 level=1;    REORDERS INPUTS: [0,1,3,2], ENUMERATION INPUTS: 2=DoneAction
-}
duty :: Rate -> Ugen -> Ugen -> DoneAction Ugen -> Ugen -> Ugen
duty rate dur reset doneAction level = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "Duty" [dur, reset, (from_done_action doneAction), level] Nothing 1 (Special 0) NoId

{- | Demand rate white noise random generator.

 Dwhite [DemandRate] length=100000000 lo=0 hi=1;    REORDERS INPUTS: [1,2,0], DEMAND/NONDET
-}
dwhiteId :: ID a => a -> Ugen -> Ugen -> Ugen -> Ugen
dwhiteId z length_ lo hi = mkUgen Nothing [DemandRate] (Left DemandRate) "Dwhite" [length_, lo, hi] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of Dwhite.
dwhiteM :: Uid m => Ugen -> Ugen -> Ugen -> m Ugen
dwhiteM = liftUid3 dwhiteId

-- | Unsafe variant of Dwhite.
dwhite :: Ugen -> Ugen -> Ugen -> Ugen
dwhite = liftUnsafe3 dwhiteM

{-
-- | Demand rate weighted random sequence generator
--
--  Dwrand [DemandRate] repeats=1 weights=0 *list=0;    MCE=1, REORDERS INPUTS: [2,1,0], DEMAND/NONDET
dwrandId :: ID a => a -> Ugen -> Ugen -> Ugen -> Ugen
dwrandId z repeats weights list_ = mkUgen Nothing [DemandRate] (Left DemandRate) "Dwrand" [repeats,weights] (Just [list_]) 1 (Special 0) (toUid z)

-- | Monad variant of Dwrand.
dwrandM :: Uid m => Ugen -> Ugen -> Ugen -> m Ugen
dwrandM = liftUid3 dwrandId

-- | Unsafe variant of Dwrand.
dwrand ::  Ugen -> Ugen -> Ugen -> Ugen
dwrand = liftUnsafe3 dwrandM
-}

{- | Demand rate random sequence generator.

 Dxrand [DemandRate] repeats=1 *list=0;    MCE=1, REORDERS INPUTS: [1,0], DEMAND/NONDET
-}
dxrandId :: ID a => a -> Ugen -> Ugen -> Ugen
dxrandId z repeats list_ = mkUgen Nothing [DemandRate] (Left DemandRate) "Dxrand" [repeats] (Just [list_]) 1 (Special 0) (toUid z)

-- | Monad variant of Dxrand.
dxrandM :: Uid m => Ugen -> Ugen -> m Ugen
dxrandM = liftUid2 dxrandId

-- | Unsafe variant of Dxrand.
dxrand :: Ugen -> Ugen -> Ugen
dxrand = liftUnsafe2 dxrandM

{- | Envelope generator

 EnvGen [ControlRate,AudioRate] gate=1 levelScale=1 levelBias=0 timeScale=1 doneAction=0 *envelope=0;    MCE=1, REORDERS INPUTS: [5,0,1,2,3,4], ENUMERATION INPUTS: 4=DoneAction, 5=Envelope
-}
envGen :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> DoneAction Ugen -> Envelope Ugen -> Ugen
envGen rate gate_ levelScale levelBias timeScale doneAction envelope_ = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "EnvGen" [gate_, levelScale, levelBias, timeScale, (from_done_action doneAction)] (Just [(envelope_to_ugen envelope_)]) 1 (Special 0) NoId

{- | Exponential single random number generator.

 ExpRand [InitialisationRate] lo=0.01 hi=1;    NONDET
-}
expRandId :: ID a => a -> Ugen -> Ugen -> Ugen
expRandId z lo hi = mkUgen Nothing [InitialisationRate] (Left InitialisationRate) "ExpRand" [lo, hi] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of ExpRand.
expRandM :: Uid m => Ugen -> Ugen -> m Ugen
expRandM = liftUid2 expRandId

-- | Unsafe variant of ExpRand.
expRand :: Ugen -> Ugen -> Ugen
expRand = liftUnsafe2 expRandM

{- | Feedback sine with chaotic phase indexing

 FBSineC [AudioRate] freq=22050 im=1 fb=0.1 a=1.1 c=0.5 xi=0.1 yi=0.1
-}
fbSineC :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
fbSineC rate freq im fb a c xi yi = mkUgen Nothing [AudioRate] (Left rate) "FBSineC" [freq, im, fb, a, c, xi, yi] Nothing 1 (Special 0) NoId

{- | Feedback sine with chaotic phase indexing

 FBSineL [AudioRate] freq=22050 im=1 fb=0.1 a=1.1 c=0.5 xi=0.1 yi=0.1
-}
fbSineL :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
fbSineL rate freq im fb a c xi yi = mkUgen Nothing [AudioRate] (Left rate) "FBSineL" [freq, im, fb, a, c, xi, yi] Nothing 1 (Special 0) NoId

{- | Feedback sine with chaotic phase indexing

 FBSineN [AudioRate] freq=22050 im=1 fb=0.1 a=1.1 c=0.5 xi=0.1 yi=0.1
-}
fbSineN :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
fbSineN rate freq im fb a c xi yi = mkUgen Nothing [AudioRate] (Left rate) "FBSineN" [freq, im, fb, a, c, xi, yi] Nothing 1 (Special 0) NoId

{- | Fast Fourier Transform

 FFT [ControlRate] buffer=0 in=0 hop=0.5 wintype=0 active=1 winsize=0
-}
fft :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
fft buffer in_ hop wintype active winsize = mkUgen Nothing [ControlRate] (Left ControlRate) "FFT" [buffer, in_, hop, wintype, active, winsize] Nothing 1 (Special 0) NoId

{- | First order filter section.

 FOS [ControlRate,AudioRate] in=0 a0=0 a1=0 b1=0;    FILTER: TRUE
-}
fos :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
fos in_ a0 a1 b1 = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "FOS" [in_, a0, a1, b1] Nothing 1 (Special 0) NoId

{- | Fast sine oscillator.

 FSinOsc [ControlRate,AudioRate] freq=440 iphase=0
-}
fSinOsc :: Rate -> Ugen -> Ugen -> Ugen
fSinOsc rate freq iphase = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "FSinOsc" [freq, iphase] Nothing 1 (Special 0) NoId

{- | Fold a signal outside given thresholds.

 Fold [InitialisationRate,ControlRate,AudioRate] in=0 lo=0 hi=1;    FILTER: TRUE
-}
fold :: Ugen -> Ugen -> Ugen -> Ugen
fold in_ lo hi = mkUgen Nothing [InitialisationRate, ControlRate, AudioRate] (Right [0]) "Fold" [in_, lo, hi] Nothing 1 (Special 0) NoId

{- | Formant oscillator

 Formant [AudioRate] fundfreq=440 formfreq=1760 bwfreq=880
-}
formant :: Rate -> Ugen -> Ugen -> Ugen -> Ugen
formant rate fundfreq formfreq bwfreq = mkUgen Nothing [AudioRate] (Left rate) "Formant" [fundfreq, formfreq, bwfreq] Nothing 1 (Special 0) NoId

{- | FOF-like filter.

 Formlet [ControlRate,AudioRate] in=0 freq=440 attacktime=1 decaytime=1;    FILTER: TRUE
-}
formlet :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
formlet in_ freq attacktime decaytime = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "Formlet" [in_, freq, attacktime, decaytime] Nothing 1 (Special 0) NoId

{- | When triggered, frees a node.

 Free [ControlRate] trig=0 id=0;    FILTER: TRUE
-}
free :: Ugen -> Ugen -> Ugen
free trig_ id_ = mkUgen Nothing [ControlRate] (Right [0]) "Free" [trig_, id_] Nothing 1 (Special 0) NoId

{- | When triggered, free enclosing synth.

 FreeSelf [ControlRate] in=0
-}
freeSelf :: Ugen -> Ugen
freeSelf in_ = mkUgen Nothing [ControlRate] (Left ControlRate) "FreeSelf" [in_] Nothing 1 (Special 0) NoId

{- | Free the enclosing synth when a Ugen is finished

 FreeSelfWhenDone [ControlRate] src=0
-}
freeSelfWhenDone :: Ugen -> Ugen
freeSelfWhenDone src = mkUgen Nothing [ControlRate] (Left ControlRate) "FreeSelfWhenDone" [src] Nothing 1 (Special 0) NoId

{- | A reverb

 FreeVerb [AudioRate] in=0 mix=0.33 room=0.5 damp=0.5;    FILTER: TRUE
-}
freeVerb :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
freeVerb in_ mix room damp = mkUgen Nothing [AudioRate] (Right [0]) "FreeVerb" [in_, mix, room, damp] Nothing 1 (Special 0) NoId

{- | A two-channel reverb

 FreeVerb2 [AudioRate] in=0 in2=0 mix=0.33 room=0.5 damp=0.5;    FILTER: TRUE
-}
freeVerb2 :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
freeVerb2 in_ in2 mix room damp = mkUgen Nothing [AudioRate] (Right [0]) "FreeVerb2" [in_, in2, mix, room, damp] Nothing 2 (Special 0) NoId

{- | Frequency Shifter.

 FreqShift [AudioRate] in=0 freq=0 phase=0
-}
freqShift :: Ugen -> Ugen -> Ugen -> Ugen
freqShift in_ freq phase = mkUgen Nothing [AudioRate] (Left AudioRate) "FreqShift" [in_, freq, phase] Nothing 1 (Special 0) NoId

{- | A two-channel reverb

 GVerb [AudioRate] in=0 roomsize=10 revtime=3 damping=0.5 inputbw=0.5 spread=15 drylevel=1 earlyreflevel=0.7 taillevel=0.5 maxroomsize=300;    FILTER: TRUE
-}
gVerb :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
gVerb in_ roomsize revtime damping inputbw spread drylevel earlyreflevel taillevel maxroomsize = mkUgen Nothing [AudioRate] (Right [0]) "GVerb" [in_, roomsize, revtime, damping, inputbw, spread, drylevel, earlyreflevel, taillevel, maxroomsize] Nothing 2 (Special 0) NoId

{- | Gate or hold.

 Gate [ControlRate,AudioRate] in=0 trig=0;    FILTER: TRUE
-}
gate :: Ugen -> Ugen -> Ugen
gate in_ trig_ = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "Gate" [in_, trig_] Nothing 1 (Special 0) NoId

{- | Gingerbreadman map chaotic generator

 GbmanL [AudioRate] freq=22050 xi=1.2 yi=2.1
-}
gbmanL :: Rate -> Ugen -> Ugen -> Ugen -> Ugen
gbmanL rate freq xi yi = mkUgen Nothing [AudioRate] (Left rate) "GbmanL" [freq, xi, yi] Nothing 1 (Special 0) NoId

{- | Gingerbreadman map chaotic generator

 GbmanN [AudioRate] freq=22050 xi=1.2 yi=2.1
-}
gbmanN :: Rate -> Ugen -> Ugen -> Ugen -> Ugen
gbmanN rate freq xi yi = mkUgen Nothing [AudioRate] (Left rate) "GbmanN" [freq, xi, yi] Nothing 1 (Special 0) NoId

{- | Dynamic stochastic synthesis generator.

 Gendy1 [ControlRate,AudioRate] ampdist=1 durdist=1 adparam=1 ddparam=1 minfreq=440 maxfreq=660 ampscale=0.5 durscale=0.5 initCPs=12 knum=0;    NONDET
-}
gendy1Id :: ID a => a -> Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
gendy1Id z rate ampdist durdist adparam ddparam minfreq maxfreq ampscale durscale initCPs knum = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "Gendy1" [ampdist, durdist, adparam, ddparam, minfreq, maxfreq, ampscale, durscale, initCPs, knum] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of Gendy1.
gendy1M :: Uid m => Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> m Ugen
gendy1M = liftUid11 gendy1Id

-- | Unsafe variant of Gendy1.
gendy1 :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
gendy1 = liftUnsafe11 gendy1M

{- | Dynamic stochastic synthesis generator.

 Gendy2 [ControlRate,AudioRate] ampdist=1 durdist=1 adparam=1 ddparam=1 minfreq=440 maxfreq=660 ampscale=0.5 durscale=0.5 initCPs=12 knum=0 a=1.17 c=0.31;    NONDET
-}
gendy2Id :: ID a => a -> Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
gendy2Id z rate ampdist durdist adparam ddparam minfreq maxfreq ampscale durscale initCPs knum a c = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "Gendy2" [ampdist, durdist, adparam, ddparam, minfreq, maxfreq, ampscale, durscale, initCPs, knum, a, c] Nothing 1 (Special 0) (toUid z)

{-
-- | Monad variant of Gendy2.
gendy2M :: Uid m => Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> m Ugen
gendy2M = liftUid13 gendy2Id

-- | Unsafe variant of Gendy2.
gendy2 ::  Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
gendy2 = liftUnsafe13 gendy2M
-}

{- | Dynamic stochastic synthesis generator.

 Gendy3 [ControlRate,AudioRate] ampdist=1 durdist=1 adparam=1 ddparam=1 freq=440 ampscale=0.5 durscale=0.5 initCPs=12 knum=0;    NONDET
-}
gendy3Id :: ID a => a -> Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
gendy3Id z rate ampdist durdist adparam ddparam freq ampscale durscale initCPs knum = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "Gendy3" [ampdist, durdist, adparam, ddparam, freq, ampscale, durscale, initCPs, knum] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of Gendy3.
gendy3M :: Uid m => Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> m Ugen
gendy3M = liftUid10 gendy3Id

-- | Unsafe variant of Gendy3.
gendy3 :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
gendy3 = liftUnsafe10 gendy3M

{- | Granular synthesis with sound stored in a buffer

 GrainBuf [AudioRate] trigger=0 dur=1 sndbuf=0 rate=1 pos=0 interp=2 pan=0 envbufnum=-1 maxGrains=512;    NC INPUT: True
-}
grainBuf :: Int -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
grainBuf numChannels trigger dur sndbuf rate_ pos interp pan envbufnum maxGrains = mkUgen Nothing [AudioRate] (Left AudioRate) "GrainBuf" [trigger, dur, sndbuf, rate_, pos, interp, pan, envbufnum, maxGrains] Nothing numChannels (Special 0) NoId

{- | Granular synthesis with frequency modulated sine tones

 GrainFM [AudioRate] trigger=0 dur=1 carfreq=440 modfreq=200 index=1 pan=0 envbufnum=-1 maxGrains=512;    NC INPUT: True
-}
grainFM :: Int -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
grainFM numChannels trigger dur carfreq modfreq index_ pan envbufnum maxGrains = mkUgen Nothing [AudioRate] (Left AudioRate) "GrainFM" [trigger, dur, carfreq, modfreq, index_, pan, envbufnum, maxGrains] Nothing numChannels (Special 0) NoId

{- | Granulate an input signal

 GrainIn [AudioRate] trigger=0 dur=1 in=0 pan=0 envbufnum=-1 maxGrains=512;    NC INPUT: True
-}
grainIn :: Int -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
grainIn numChannels trigger dur in_ pan envbufnum maxGrains = mkUgen Nothing [AudioRate] (Left AudioRate) "GrainIn" [trigger, dur, in_, pan, envbufnum, maxGrains] Nothing numChannels (Special 0) NoId

{- | Granular synthesis with sine tones

 GrainSin [AudioRate] trigger=0 dur=1 freq=440 pan=0 envbufnum=-1 maxGrains=512;    NC INPUT: True
-}
grainSin :: Int -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
grainSin numChannels trigger dur freq pan envbufnum maxGrains = mkUgen Nothing [AudioRate] (Left AudioRate) "GrainSin" [trigger, dur, freq, pan, envbufnum, maxGrains] Nothing numChannels (Special 0) NoId

{- | Gray Noise.

 GrayNoise [ControlRate,AudioRate] ;    NONDET
-}
grayNoiseId :: ID a => a -> Rate -> Ugen
grayNoiseId z rate = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "GrayNoise" [] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of GrayNoise.
grayNoiseM :: Uid m => Rate -> m Ugen
grayNoiseM = liftUid1 grayNoiseId

-- | Unsafe variant of GrayNoise.
grayNoise :: Rate -> Ugen
grayNoise = liftUnsafe1 grayNoiseM

{- | 2nd order Butterworth highpass filter.

 HPF [ControlRate,AudioRate] in=0 freq=440;    FILTER: TRUE
-}
hpf :: Ugen -> Ugen -> Ugen
hpf in_ freq = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "HPF" [in_, freq] Nothing 1 (Special 0) NoId

{- | Two point difference filter

 HPZ1 [ControlRate,AudioRate] in=0;    FILTER: TRUE
-}
hpz1 :: Ugen -> Ugen
hpz1 in_ = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "HPZ1" [in_] Nothing 1 (Special 0) NoId

{- | Two zero fixed midcut.

 HPZ2 [ControlRate,AudioRate] in=0;    FILTER: TRUE
-}
hpz2 :: Ugen -> Ugen
hpz2 in_ = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "HPZ2" [in_] Nothing 1 (Special 0) NoId

{- | Scrambled value with a hash function.

 Hasher [ControlRate,AudioRate] in=0;    FILTER: TRUE
-}
hasher :: Ugen -> Ugen
hasher in_ = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "Hasher" [in_] Nothing 1 (Special 0) NoId

{- | Henon map chaotic generator

 HenonC [AudioRate] freq=22050 a=1.4 b=0.3 x0=0 x1=0
-}
henonC :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
henonC rate freq a b x0 x1 = mkUgen Nothing [AudioRate] (Left rate) "HenonC" [freq, a, b, x0, x1] Nothing 1 (Special 0) NoId

{- | Henon map chaotic generator

 HenonL [AudioRate] freq=22050 a=1.4 b=0.3 x0=0 x1=0
-}
henonL :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
henonL rate freq a b x0 x1 = mkUgen Nothing [AudioRate] (Left rate) "HenonL" [freq, a, b, x0, x1] Nothing 1 (Special 0) NoId

{- | Henon map chaotic generator

 HenonN [AudioRate] freq=22050 a=1.4 b=0.3 x0=0 x1=0
-}
henonN :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
henonN rate freq a b x0 x1 = mkUgen Nothing [AudioRate] (Left rate) "HenonN" [freq, a, b, x0, x1] Nothing 1 (Special 0) NoId

{- | Applies the Hilbert transform to an input signal.

 Hilbert [AudioRate] in=0;    FILTER: TRUE
-}
hilbert :: Ugen -> Ugen
hilbert in_ = mkUgen Nothing [AudioRate] (Right [0]) "Hilbert" [in_] Nothing 2 (Special 0) NoId

{- | Envelope generator for polling values from an Env

 IEnvGen [ControlRate,AudioRate] index=0 *envelope=0;    MCE=1, REORDERS INPUTS: [1,0], ENUMERATION INPUTS: 1=IEnvelope
-}
iEnvGen :: Rate -> Ugen -> Envelope Ugen -> Ugen
iEnvGen rate index_ envelope_ = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "IEnvGen" [index_] (Just [(envelope_to_ienvgen_ugen envelope_)]) 1 (Special 0) NoId

{- | Inverse Fast Fourier Transform

 IFFT [ControlRate,AudioRate] buffer=0 wintype=0 winsize=0
-}
ifft :: Ugen -> Ugen -> Ugen -> Ugen
ifft buffer wintype winsize = mkUgen Nothing [ControlRate, AudioRate] (Left AudioRate) "IFFT" [buffer, wintype, winsize] Nothing 1 (Special 0) NoId

{- | Single integer random number generator.

 iRand [InitialisationRate] lo=0 hi=127;    NONDET
-}
iRandId :: ID a => a -> Ugen -> Ugen -> Ugen
iRandId z lo hi = mkUgen Nothing [InitialisationRate] (Left InitialisationRate) "IRand" [lo, hi] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of irand.
iRandM :: Uid m => Ugen -> Ugen -> m Ugen
iRandM = liftUid2 iRandId

-- | Unsafe variant of irand.
iRand :: Ugen -> Ugen -> Ugen
iRand = liftUnsafe2 iRandM

{- | Impulse oscillator.

 Impulse [ControlRate,AudioRate] freq=440 phase=0
-}
impulse :: Rate -> Ugen -> Ugen -> Ugen
impulse rate freq phase = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "Impulse" [freq, phase] Nothing 1 (Special 0) NoId

{- | Read a signal from a bus.

 In [ControlRate,AudioRate] bus=0;    NC INPUT: True
-}
in' :: Int -> Rate -> Ugen -> Ugen
in' numChannels rate bus = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "In" [bus] Nothing numChannels (Special 0) NoId

{- | Read signal from a bus with a current or one cycle old timestamp.

 InFeedback [AudioRate] bus=0;    NC INPUT: True
-}
inFeedback :: Int -> Ugen -> Ugen
inFeedback numChannels bus = mkUgen Nothing [AudioRate] (Left AudioRate) "InFeedback" [bus] Nothing numChannels (Special 0) NoId

{- | Tests if a signal is within a given range.

 InRange [InitialisationRate,ControlRate,AudioRate] in=0 lo=0 hi=1;    FILTER: TRUE
-}
inRange :: Ugen -> Ugen -> Ugen -> Ugen
inRange in_ lo hi = mkUgen Nothing [InitialisationRate, ControlRate, AudioRate] (Right [0]) "InRange" [in_, lo, hi] Nothing 1 (Special 0) NoId

{- | Test if a point is within a given rectangle.

 InRect [ControlRate,AudioRate] x=0 y=0 rect=0
-}
inRect :: Rate -> Ugen -> Ugen -> Ugen -> Ugen
inRect rate x y rect = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "InRect" [x, y, rect] Nothing 1 (Special 0) NoId

{- | Generate a trigger anytime a bus is set.

 InTrig [ControlRate] bus=0;    NC INPUT: True
-}
inTrig :: Int -> Ugen -> Ugen
inTrig numChannels bus = mkUgen Nothing [ControlRate] (Left ControlRate) "InTrig" [bus] Nothing numChannels (Special 0) NoId

{- | Index into a table with a signal

 Index [ControlRate,AudioRate] bufnum=0 in=0;    FILTER: TRUE
-}
index :: Ugen -> Ugen -> Ugen
index bufnum in_ = mkUgen Nothing [ControlRate, AudioRate] (Right [1]) "Index" [bufnum, in_] Nothing 1 (Special 0) NoId

{- | Finds the (lowest) point in the Buffer at which the input signal lies in-between the two values

 IndexInBetween [ControlRate,AudioRate] bufnum=0 in=0;    FILTER: TRUE
-}
indexInBetween :: Ugen -> Ugen -> Ugen
indexInBetween bufnum in_ = mkUgen Nothing [ControlRate, AudioRate] (Right [1]) "IndexInBetween" [bufnum, in_] Nothing 1 (Special 0) NoId

{- | Index into a table with a signal, linear interpolated

 IndexL [ControlRate,AudioRate] bufnum=0 in=0;    FILTER: TRUE
-}
indexL :: Ugen -> Ugen -> Ugen
indexL bufnum in_ = mkUgen Nothing [ControlRate, AudioRate] (Right [1]) "IndexL" [bufnum, in_] Nothing 1 (Special 0) NoId

{- | Base class for info ugens

 InfoUgenBase [InitialisationRate]
-}
infoUgenBase :: Rate -> Ugen
infoUgenBase rate = mkUgen Nothing [InitialisationRate] (Left rate) "InfoUgenBase" [] Nothing 1 (Special 0) NoId

{- | A leaky integrator.

 Integrator [ControlRate,AudioRate] in=0 coef=1;    FILTER: TRUE
-}
integrator :: Ugen -> Ugen -> Ugen
integrator in_ coef = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "Integrator" [in_, coef] Nothing 1 (Special 0) NoId

{- | Control to audio rate converter.

 K2A [AudioRate] in=0
-}
k2a :: Ugen -> Ugen
k2a in_ = mkUgen Nothing [AudioRate] (Left AudioRate) "K2A" [in_] Nothing 1 (Special 0) NoId

{- | Respond to the state of a key

 KeyState [ControlRate] keycode=0 minval=0 maxval=1 lag=0.2
-}
keyState :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
keyState rate keycode minval maxval lag_ = mkUgen Nothing [ControlRate] (Left rate) "KeyState" [keycode, minval, maxval, lag_] Nothing 1 (Special 0) NoId

{- | Key tracker

 KeyTrack [ControlRate] chain=0 keydecay=2 chromaleak=0.5
-}
keyTrack :: Rate -> Ugen -> Ugen -> Ugen -> Ugen
keyTrack rate chain keydecay chromaleak = mkUgen Nothing [ControlRate] (Left rate) "KeyTrack" [chain, keydecay, chromaleak] Nothing 1 (Special 0) NoId

{- | Sine oscillator bank

 Klang [AudioRate] freqscale=1 freqoffset=0 *specificationsArrayRef=0;    MCE=1, REORDERS INPUTS: [2,0,1]
-}
klang :: Rate -> Ugen -> Ugen -> Ugen -> Ugen
klang rate freqscale freqoffset specificationsArrayRef = mkUgen Nothing [AudioRate] (Left rate) "Klang" [freqscale, freqoffset] (Just [specificationsArrayRef]) 1 (Special 0) NoId

{- | Bank of resonators

 Klank [AudioRate] input=0 freqscale=1 freqoffset=0 decayscale=1 *specificationsArrayRef=0;    MCE=1, FILTER: TRUE, REORDERS INPUTS: [4,0,1,2,3]
-}
klank :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
klank input freqscale freqoffset decayscale specificationsArrayRef = mkUgen Nothing [AudioRate] (Right [0]) "Klank" [input, freqscale, freqoffset, decayscale] (Just [specificationsArrayRef]) 1 (Special 0) NoId

{- | Clipped noise

 LFClipNoise [ControlRate,AudioRate] freq=500;    NONDET
-}
lfClipNoiseId :: ID a => a -> Rate -> Ugen -> Ugen
lfClipNoiseId z rate freq = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "LFClipNoise" [freq] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of LFClipNoise.
lfClipNoiseM :: Uid m => Rate -> Ugen -> m Ugen
lfClipNoiseM = liftUid2 lfClipNoiseId

-- | Unsafe variant of LFClipNoise.
lfClipNoise :: Rate -> Ugen -> Ugen
lfClipNoise = liftUnsafe2 lfClipNoiseM

{- | A sine like shape made of two cubic pieces

 LFCub [ControlRate,AudioRate] freq=440 iphase=0
-}
lfCub :: Rate -> Ugen -> Ugen -> Ugen
lfCub rate freq iphase = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "LFCub" [freq, iphase] Nothing 1 (Special 0) NoId

{- | Dynamic clipped noise

 LFDClipNoise [ControlRate,AudioRate] freq=500;    NONDET
-}
lfdClipNoiseId :: ID a => a -> Rate -> Ugen -> Ugen
lfdClipNoiseId z rate freq = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "LFDClipNoise" [freq] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of LFDClipNoise.
lfdClipNoiseM :: Uid m => Rate -> Ugen -> m Ugen
lfdClipNoiseM = liftUid2 lfdClipNoiseId

-- | Unsafe variant of LFDClipNoise.
lfdClipNoise :: Rate -> Ugen -> Ugen
lfdClipNoise = liftUnsafe2 lfdClipNoiseM

{- | Dynamic step noise

 LFDNoise0 [ControlRate,AudioRate] freq=500;    NONDET
-}
lfdNoise0Id :: ID a => a -> Rate -> Ugen -> Ugen
lfdNoise0Id z rate freq = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "LFDNoise0" [freq] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of LFDNoise0.
lfdNoise0M :: Uid m => Rate -> Ugen -> m Ugen
lfdNoise0M = liftUid2 lfdNoise0Id

-- | Unsafe variant of LFDNoise0.
lfdNoise0 :: Rate -> Ugen -> Ugen
lfdNoise0 = liftUnsafe2 lfdNoise0M

{- | Dynamic ramp noise

 LFDNoise1 [ControlRate,AudioRate] freq=500;    NONDET
-}
lfdNoise1Id :: ID a => a -> Rate -> Ugen -> Ugen
lfdNoise1Id z rate freq = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "LFDNoise1" [freq] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of LFDNoise1.
lfdNoise1M :: Uid m => Rate -> Ugen -> m Ugen
lfdNoise1M = liftUid2 lfdNoise1Id

-- | Unsafe variant of LFDNoise1.
lfdNoise1 :: Rate -> Ugen -> Ugen
lfdNoise1 = liftUnsafe2 lfdNoise1M

{- | Dynamic cubic noise

 LFDNoise3 [ControlRate,AudioRate] freq=500;    NONDET
-}
lfdNoise3Id :: ID a => a -> Rate -> Ugen -> Ugen
lfdNoise3Id z rate freq = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "LFDNoise3" [freq] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of LFDNoise3.
lfdNoise3M :: Uid m => Rate -> Ugen -> m Ugen
lfdNoise3M = liftUid2 lfdNoise3Id

-- | Unsafe variant of LFDNoise3.
lfdNoise3 :: Rate -> Ugen -> Ugen
lfdNoise3 = liftUnsafe2 lfdNoise3M

{- | Gaussian function oscillator

 LFGauss [ControlRate,AudioRate] duration=1 width=0.1 iphase=0 loop=1 doneAction=0;    ENUMERATION INPUTS: 3=Loop, 4=DoneAction
-}
lfGauss :: Rate -> Ugen -> Ugen -> Ugen -> Loop Ugen -> DoneAction Ugen -> Ugen
lfGauss rate duration width iphase loop doneAction = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "LFGauss" [duration, width, iphase, (from_loop loop), (from_done_action doneAction)] Nothing 1 (Special 0) NoId

{- | Step noise

 LFNoise0 [ControlRate,AudioRate] freq=500;    NONDET
-}
lfNoise0Id :: ID a => a -> Rate -> Ugen -> Ugen
lfNoise0Id z rate freq = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "LFNoise0" [freq] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of LFNoise0.
lfNoise0M :: Uid m => Rate -> Ugen -> m Ugen
lfNoise0M = liftUid2 lfNoise0Id

-- | Unsafe variant of LFNoise0.
lfNoise0 :: Rate -> Ugen -> Ugen
lfNoise0 = liftUnsafe2 lfNoise0M

{- | Ramp noise

 LFNoise1 [ControlRate,AudioRate] freq=500;    NONDET
-}
lfNoise1Id :: ID a => a -> Rate -> Ugen -> Ugen
lfNoise1Id z rate freq = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "LFNoise1" [freq] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of LFNoise1.
lfNoise1M :: Uid m => Rate -> Ugen -> m Ugen
lfNoise1M = liftUid2 lfNoise1Id

-- | Unsafe variant of LFNoise1.
lfNoise1 :: Rate -> Ugen -> Ugen
lfNoise1 = liftUnsafe2 lfNoise1M

{- | Quadratic noise.

 LFNoise2 [ControlRate,AudioRate] freq=500;    NONDET
-}
lfNoise2Id :: ID a => a -> Rate -> Ugen -> Ugen
lfNoise2Id z rate freq = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "LFNoise2" [freq] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of LFNoise2.
lfNoise2M :: Uid m => Rate -> Ugen -> m Ugen
lfNoise2M = liftUid2 lfNoise2Id

-- | Unsafe variant of LFNoise2.
lfNoise2 :: Rate -> Ugen -> Ugen
lfNoise2 = liftUnsafe2 lfNoise2M

{- | Parabolic oscillator

 LFPar [ControlRate,AudioRate] freq=440 iphase=0
-}
lfPar :: Rate -> Ugen -> Ugen -> Ugen
lfPar rate freq iphase = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "LFPar" [freq, iphase] Nothing 1 (Special 0) NoId

{- | pulse oscillator

 LFPulse [ControlRate,AudioRate] freq=440 iphase=0 width=0.5
-}
lfPulse :: Rate -> Ugen -> Ugen -> Ugen -> Ugen
lfPulse rate freq iphase width = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "LFPulse" [freq, iphase, width] Nothing 1 (Special 0) NoId

{- | Sawtooth oscillator

 LFSaw [ControlRate,AudioRate] freq=440 iphase=0
-}
lfSaw :: Rate -> Ugen -> Ugen -> Ugen
lfSaw rate freq iphase = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "LFSaw" [freq, iphase] Nothing 1 (Special 0) NoId

{- | Triangle oscillator

 LFTri [ControlRate,AudioRate] freq=440 iphase=0
-}
lfTri :: Rate -> Ugen -> Ugen -> Ugen
lfTri rate freq iphase = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "LFTri" [freq, iphase] Nothing 1 (Special 0) NoId

{- | 2nd order Butterworth lowpass filter

 LPF [ControlRate,AudioRate] in=0 freq=440;    FILTER: TRUE
-}
lpf :: Ugen -> Ugen -> Ugen
lpf in_ freq = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "LPF" [in_, freq] Nothing 1 (Special 0) NoId

{- | Two point average filter

 LPZ1 [ControlRate,AudioRate] in=0;    FILTER: TRUE
-}
lpz1 :: Ugen -> Ugen
lpz1 in_ = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "LPZ1" [in_] Nothing 1 (Special 0) NoId

{- | Two zero fixed lowpass

 LPZ2 [ControlRate,AudioRate] in=0;    FILTER: TRUE
-}
lpz2 :: Ugen -> Ugen
lpz2 in_ = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "LPZ2" [in_] Nothing 1 (Special 0) NoId

{- | Exponential lag

 Lag [ControlRate,AudioRate] in=0 lagTime=0.1;    FILTER: TRUE
-}
lag :: Ugen -> Ugen -> Ugen
lag in_ lagTime = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "Lag" [in_, lagTime] Nothing 1 (Special 0) NoId

{- | Exponential lag

 Lag2 [ControlRate,AudioRate] in=0 lagTime=0.1;    FILTER: TRUE
-}
lag2 :: Ugen -> Ugen -> Ugen
lag2 in_ lagTime = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "Lag2" [in_, lagTime] Nothing 1 (Special 0) NoId

{- | Exponential lag

 Lag2UD [ControlRate,AudioRate] in=0 lagTimeU=0.1 lagTimeD=0.1;    FILTER: TRUE
-}
lag2UD :: Ugen -> Ugen -> Ugen -> Ugen
lag2UD in_ lagTimeU lagTimeD = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "Lag2UD" [in_, lagTimeU, lagTimeD] Nothing 1 (Special 0) NoId

{- | Exponential lag

 Lag3 [ControlRate,AudioRate] in=0 lagTime=0.1;    FILTER: TRUE
-}
lag3 :: Ugen -> Ugen -> Ugen
lag3 in_ lagTime = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "Lag3" [in_, lagTime] Nothing 1 (Special 0) NoId

{- | Exponential lag

 Lag3UD [ControlRate,AudioRate] in=0 lagTimeU=0.1 lagTimeD=0.1;    FILTER: TRUE
-}
lag3UD :: Ugen -> Ugen -> Ugen -> Ugen
lag3UD in_ lagTimeU lagTimeD = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "Lag3UD" [in_, lagTimeU, lagTimeD] Nothing 1 (Special 0) NoId

{- | Read a control signal from a bus with a lag

 LagIn [ControlRate] bus=0 lag=0.1;    NC INPUT: True
-}
lagIn :: Int -> Ugen -> Ugen -> Ugen
lagIn numChannels bus lag_ = mkUgen Nothing [ControlRate] (Left ControlRate) "LagIn" [bus, lag_] Nothing numChannels (Special 0) NoId

{- | Exponential lag

 LagUD [ControlRate,AudioRate] in=0 lagTimeU=0.1 lagTimeD=0.1;    FILTER: TRUE
-}
lagUD :: Ugen -> Ugen -> Ugen -> Ugen
lagUD in_ lagTimeU lagTimeD = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "LagUD" [in_, lagTimeU, lagTimeD] Nothing 1 (Special 0) NoId

{- | Output the last value before the input changed

 LastValue [ControlRate,AudioRate] in=0 diff=0.01;    FILTER: TRUE
-}
lastValue :: Ugen -> Ugen -> Ugen
lastValue in_ diff = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "LastValue" [in_, diff] Nothing 1 (Special 0) NoId

{- | Sample and hold

 Latch [ControlRate,AudioRate] in=0 trig=0;    FILTER: TRUE
-}
latch :: Ugen -> Ugen -> Ugen
latch in_ trig_ = mkUgen Nothing [ControlRate, AudioRate] (Right [0, 1]) "Latch" [in_, trig_] Nothing 1 (Special 0) NoId

{- | Latoocarfian chaotic generator

 LatoocarfianC [AudioRate] freq=22050 a=1 b=3 c=0.5 d=0.5 xi=0.5 yi=0.5
-}
latoocarfianC :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
latoocarfianC rate freq a b c d xi yi = mkUgen Nothing [AudioRate] (Left rate) "LatoocarfianC" [freq, a, b, c, d, xi, yi] Nothing 1 (Special 0) NoId

{- | Latoocarfian chaotic generator

 LatoocarfianL [AudioRate] freq=22050 a=1 b=3 c=0.5 d=0.5 xi=0.5 yi=0.5
-}
latoocarfianL :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
latoocarfianL rate freq a b c d xi yi = mkUgen Nothing [AudioRate] (Left rate) "LatoocarfianL" [freq, a, b, c, d, xi, yi] Nothing 1 (Special 0) NoId

{- | Latoocarfian chaotic generator

 LatoocarfianN [AudioRate] freq=22050 a=1 b=3 c=0.5 d=0.5 xi=0.5 yi=0.5
-}
latoocarfianN :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
latoocarfianN rate freq a b c d xi yi = mkUgen Nothing [AudioRate] (Left rate) "LatoocarfianN" [freq, a, b, c, d, xi, yi] Nothing 1 (Special 0) NoId

{- | Remove DC

 LeakDC [ControlRate,AudioRate] in=0 coef=0.995;    FILTER: TRUE
-}
leakDC :: Ugen -> Ugen -> Ugen
leakDC in_ coef = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "LeakDC" [in_, coef] Nothing 1 (Special 0) NoId

{- | Output least changed

 LeastChange [ControlRate,AudioRate] a=0 b=0
-}
leastChange :: Rate -> Ugen -> Ugen -> Ugen
leastChange rate a b = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "LeastChange" [a, b] Nothing 1 (Special 0) NoId

{- | Peak limiter

 Limiter [AudioRate] in=0 level=1 dur=0.01;    FILTER: TRUE
-}
limiter :: Ugen -> Ugen -> Ugen -> Ugen
limiter in_ level dur = mkUgen Nothing [AudioRate] (Right [0]) "Limiter" [in_, level, dur] Nothing 1 (Special 0) NoId

{- | Linear congruential chaotic generator

 LinCongC [AudioRate] freq=22050 a=1.1 c=0.13 m=1 xi=0
-}
linCongC :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
linCongC rate freq a c m xi = mkUgen Nothing [AudioRate] (Left rate) "LinCongC" [freq, a, c, m, xi] Nothing 1 (Special 0) NoId

{- | Linear congruential chaotic generator

 LinCongL [AudioRate] freq=22050 a=1.1 c=0.13 m=1 xi=0
-}
linCongL :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
linCongL rate freq a c m xi = mkUgen Nothing [AudioRate] (Left rate) "LinCongL" [freq, a, c, m, xi] Nothing 1 (Special 0) NoId

{- | Linear congruential chaotic generator

 LinCongN [AudioRate] freq=22050 a=1.1 c=0.13 m=1 xi=0
-}
linCongN :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
linCongN rate freq a c m xi = mkUgen Nothing [AudioRate] (Left rate) "LinCongN" [freq, a, c, m, xi] Nothing 1 (Special 0) NoId

{- | Map a linear range to an exponential range

 LinExp [InitialisationRate,ControlRate,AudioRate] in=0 srclo=0 srchi=1 dstlo=1 dsthi=2;    FILTER: TRUE
-}
linExp :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
linExp in_ srclo srchi dstlo dsthi = mkUgen Nothing [InitialisationRate, ControlRate, AudioRate] (Right [0]) "LinExp" [in_, srclo, srchi, dstlo, dsthi] Nothing 1 (Special 0) NoId

{- | Two channel linear pan.

 LinPan2 [ControlRate,AudioRate] in=0 pos=0 level=1;    FILTER: TRUE
-}
linPan2 :: Ugen -> Ugen -> Ugen -> Ugen
linPan2 in_ pos level = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "LinPan2" [in_, pos, level] Nothing 2 (Special 0) NoId

{- | Skewed random number generator.

 LinRand [InitialisationRate] lo=0 hi=1 minmax=0;    NONDET
-}
linRandId :: ID a => a -> Ugen -> Ugen -> Ugen -> Ugen
linRandId z lo hi minmax = mkUgen Nothing [InitialisationRate] (Left InitialisationRate) "LinRand" [lo, hi, minmax] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of LinRand.
linRandM :: Uid m => Ugen -> Ugen -> Ugen -> m Ugen
linRandM = liftUid3 linRandId

-- | Unsafe variant of LinRand.
linRand :: Ugen -> Ugen -> Ugen -> Ugen
linRand = liftUnsafe3 linRandM

{- | Two channel linear crossfade.

 LinXFade2 [ControlRate,AudioRate] inA=0 inB=0 pan=0 level=1;    FILTER: TRUE, PSUEDO INPUTS: [3]
-}
linXFade2 :: Ugen -> Ugen -> Ugen -> Ugen
linXFade2 inA inB pan = mkUgen Nothing [ControlRate, AudioRate] (Right [0, 1]) "LinXFade2" [inA, inB, pan] Nothing 1 (Special 0) NoId

{- | Line generator.

 Line [ControlRate,AudioRate] start=0 end=1 dur=1 doneAction=0;    ENUMERATION INPUTS: 3=DoneAction
-}
line :: Rate -> Ugen -> Ugen -> Ugen -> DoneAction Ugen -> Ugen
line rate start end dur doneAction = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "Line" [start, end, dur, (from_done_action doneAction)] Nothing 1 (Special 0) NoId

{- | Simple linear envelope generator.

 Linen [ControlRate] gate=1 attackTime=0.01 susLevel=1 releaseTime=1 doneAction=0;    ENUMERATION INPUTS: 4=DoneAction
-}
linen :: Ugen -> Ugen -> Ugen -> Ugen -> DoneAction Ugen -> Ugen
linen gate_ attackTime susLevel releaseTime doneAction = mkUgen Nothing [ControlRate] (Left ControlRate) "Linen" [gate_, attackTime, susLevel, releaseTime, (from_done_action doneAction)] Nothing 1 (Special 0) NoId

{- | Allocate a buffer local to the synth

 LocalBuf [InitialisationRate] numChannels=1 numFrames=1;    REORDERS INPUTS: [1,0], NONDET
-}
localBufId :: ID a => a -> Ugen -> Ugen -> Ugen
localBufId z numChannels numFrames = mkUgen Nothing [InitialisationRate] (Left InitialisationRate) "LocalBuf" [numChannels, numFrames] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of LocalBuf.
localBufM :: Uid m => Ugen -> Ugen -> m Ugen
localBufM = liftUid2 localBufId

-- | Unsafe variant of LocalBuf.
localBuf :: Ugen -> Ugen -> Ugen
localBuf = liftUnsafe2 localBufM

{- | Define and read from buses local to a synth.

 LocalIn [ControlRate,AudioRate] *default=0;    MCE=1, NC INPUT: True
-}
localIn :: Int -> Rate -> Ugen -> Ugen
localIn numChannels rate default_ = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "LocalIn" [] (Just [default_]) numChannels (Special 0) NoId

{- | Write to buses local to a synth.

 LocalOut [ControlRate,AudioRate] *channelsArray=0;    MCE=1, FILTER: TRUE
-}
localOut :: Ugen -> Ugen
localOut input = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "LocalOut" [] (Just [input]) 0 (Special 0) NoId

{- | Chaotic noise function

 Logistic [ControlRate,AudioRate] chaosParam=3 freq=1000 init=0.5
-}
logistic :: Rate -> Ugen -> Ugen -> Ugen -> Ugen
logistic rate chaosParam freq init_ = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "Logistic" [chaosParam, freq, init_] Nothing 1 (Special 0) NoId

{- | Lorenz chaotic generator

 LorenzL [AudioRate] freq=22050 s=10 r=28 b=2.667 h=0.05 xi=0.1 yi=0 zi=0
-}
lorenzL :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
lorenzL rate freq s r b h xi yi zi = mkUgen Nothing [AudioRate] (Left rate) "LorenzL" [freq, s, r, b, h, xi, yi, zi] Nothing 1 (Special 0) NoId

{- | Extraction of instantaneous loudness in sones

 Loudness [ControlRate] chain=0 smask=0.25 tmask=1
-}
loudness :: Ugen -> Ugen -> Ugen -> Ugen
loudness chain smask tmask = mkUgen Nothing [ControlRate] (Left ControlRate) "Loudness" [chain, smask, tmask] Nothing 1 (Special 0) NoId

{- | Mel frequency cepstral coefficients

 MFCC [ControlRate] chain=0 numcoeff=13
-}
mfcc :: Rate -> Ugen -> Ugen -> Ugen
mfcc rate chain numcoeff = mkUgen Nothing [ControlRate] (Left rate) "MFCC" [chain, numcoeff] Nothing 13 (Special 0) NoId

{- | Reduce precision.

 MantissaMask [ControlRate,AudioRate] in=0 bits=3;    FILTER: TRUE
-}
mantissaMask :: Ugen -> Ugen -> Ugen
mantissaMask in_ bits = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "MantissaMask" [in_, bits] Nothing 1 (Special 0) NoId

{- | Median filter.

 Median [ControlRate,AudioRate] length=3 in=0;    FILTER: TRUE
-}
median :: Ugen -> Ugen -> Ugen
median length_ in_ = mkUgen Nothing [ControlRate, AudioRate] (Right [1]) "Median" [length_, in_] Nothing 1 (Special 0) NoId

{- | Parametric filter.

 MidEQ [ControlRate,AudioRate] in=0 freq=440 rq=1 db=0;    FILTER: TRUE
-}
midEQ :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
midEQ in_ freq rq db = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "MidEQ" [in_, freq, rq, db] Nothing 1 (Special 0) NoId

{- | Minimum difference of two values in modulo arithmetics

 ModDif [InitialisationRate,ControlRate,AudioRate] x=0 y=0 mod=1;    FILTER: TRUE
-}
modDif :: Ugen -> Ugen -> Ugen -> Ugen
modDif x y mod_ = mkUgen Nothing [InitialisationRate, ControlRate, AudioRate] (Right [0]) "ModDif" [x, y, mod_] Nothing 1 (Special 0) NoId

{- | Moog VCF implementation, designed by Federico Fontana

 MoogFF [ControlRate,AudioRate] in=0 freq=100 gain=2 reset=0;    FILTER: TRUE
-}
moogFF :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
moogFF in_ freq gain reset = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "MoogFF" [in_, freq, gain, reset] Nothing 1 (Special 0) NoId

{- | Output most changed.

 MostChange [ControlRate,AudioRate] a=0 b=0;    FILTER: TRUE
-}
mostChange :: Ugen -> Ugen -> Ugen
mostChange a b = mkUgen Nothing [ControlRate, AudioRate] (Right [0, 1]) "MostChange" [a, b] Nothing 1 (Special 0) NoId

{- | Mouse button Ugen.

 MouseButton [ControlRate] minval=0 maxval=1 lag=0.2
-}
mouseButton :: Rate -> Ugen -> Ugen -> Ugen -> Ugen
mouseButton rate minval maxval lag_ = mkUgen Nothing [ControlRate] (Left rate) "MouseButton" [minval, maxval, lag_] Nothing 1 (Special 0) NoId

{- | Cursor tracking Ugen.

 MouseX [ControlRate] minval=0 maxval=1 warp=0 lag=0.2;    ENUMERATION INPUTS: 2=Warp
-}
mouseX :: Rate -> Ugen -> Ugen -> Warp Ugen -> Ugen -> Ugen
mouseX rate minval maxval warp lag_ = mkUgen Nothing [ControlRate] (Left rate) "MouseX" [minval, maxval, (from_warp warp), lag_] Nothing 1 (Special 0) NoId

{- | Cursor tracking Ugen.

 MouseY [ControlRate] minval=0 maxval=1 warp=0 lag=0.2;    ENUMERATION INPUTS: 2=Warp
-}
mouseY :: Rate -> Ugen -> Ugen -> Warp Ugen -> Ugen -> Ugen
mouseY rate minval maxval warp lag_ = mkUgen Nothing [ControlRate] (Left rate) "MouseY" [minval, maxval, (from_warp warp), lag_] Nothing 1 (Special 0) NoId

{- | Sum of uniform distributions.

 NRand [InitialisationRate] lo=0 hi=1 n=0;    NONDET
-}
nRandId :: ID a => a -> Ugen -> Ugen -> Ugen -> Ugen
nRandId z lo hi n = mkUgen Nothing [InitialisationRate] (Left InitialisationRate) "NRand" [lo, hi, n] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of NRand.
nRandM :: Uid m => Ugen -> Ugen -> Ugen -> m Ugen
nRandM = liftUid3 nRandId

-- | Unsafe variant of NRand.
nRand :: Ugen -> Ugen -> Ugen -> Ugen
nRand = liftUnsafe3 nRandM

{- | (Undocumented class)

 NodeID [InitialisationRate]
-}
nodeID :: Rate -> Ugen
nodeID rate = mkUgen Nothing [InitialisationRate] (Left rate) "NodeID" [] Nothing 1 (Special 0) NoId

{- | Flattens dynamics.

 Normalizer [AudioRate] in=0 level=1 dur=0.01;    FILTER: TRUE
-}
normalizer :: Ugen -> Ugen -> Ugen -> Ugen
normalizer in_ level dur = mkUgen Nothing [AudioRate] (Right [0]) "Normalizer" [in_, level, dur] Nothing 1 (Special 0) NoId

{- | Number of audio busses.

 NumAudioBuses [InitialisationRate]
-}
numAudioBuses :: Ugen
numAudioBuses = mkUgen Nothing [InitialisationRate] (Left InitialisationRate) "NumAudioBuses" [] Nothing 1 (Special 0) NoId

{- | Number of open buffers.

 NumBuffers [InitialisationRate]
-}
numBuffers :: Ugen
numBuffers = mkUgen Nothing [InitialisationRate] (Left InitialisationRate) "NumBuffers" [] Nothing 1 (Special 0) NoId

{- | Number of control busses.

 NumControlBuses [InitialisationRate]
-}
numControlBuses :: Ugen
numControlBuses = mkUgen Nothing [InitialisationRate] (Left InitialisationRate) "NumControlBuses" [] Nothing 1 (Special 0) NoId

{- | Number of input busses.

 NumInputBuses [InitialisationRate]
-}
numInputBuses :: Ugen
numInputBuses = mkUgen Nothing [InitialisationRate] (Left InitialisationRate) "NumInputBuses" [] Nothing 1 (Special 0) NoId

{- | Number of output busses.

 NumOutputBuses [InitialisationRate]
-}
numOutputBuses :: Ugen
numOutputBuses = mkUgen Nothing [InitialisationRate] (Left InitialisationRate) "NumOutputBuses" [] Nothing 1 (Special 0) NoId

{- | Number of currently running synths.

 NumRunningSynths [InitialisationRate,ControlRate]
-}
numRunningSynths :: Ugen
numRunningSynths = mkUgen Nothing [InitialisationRate, ControlRate] (Left InitialisationRate) "NumRunningSynths" [] Nothing 1 (Special 0) NoId

{- | Write a signal to a bus with sample accurate timing.

 OffsetOut [ControlRate,AudioRate] bus=0 *channelsArray=0;    MCE=1, FILTER: TRUE
-}
offsetOut :: Ugen -> Ugen -> Ugen
offsetOut bus input = mkUgen Nothing [ControlRate, AudioRate] (Right [1]) "OffsetOut" [bus] (Just [input]) 0 (Special 0) NoId

{- | One pole filter.

 OnePole [ControlRate,AudioRate] in=0 coef=0.5;    FILTER: TRUE
-}
onePole :: Ugen -> Ugen -> Ugen
onePole in_ coef = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "OnePole" [in_, coef] Nothing 1 (Special 0) NoId

{- | One zero filter.

 OneZero [ControlRate,AudioRate] in=0 coef=0.5;    FILTER: TRUE
-}
oneZero :: Ugen -> Ugen -> Ugen
oneZero in_ coef = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "OneZero" [in_, coef] Nothing 1 (Special 0) NoId

{- | Onset detector

 Onsets [ControlRate] chain=0 threshold=0.5 odftype=3 relaxtime=1 floor=0.1 mingap=10 medianspan=11 whtype=1 rawodf=0
-}
onsets :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
onsets chain threshold odftype relaxtime floor_ mingap medianspan whtype rawodf = mkUgen Nothing [ControlRate] (Left ControlRate) "Onsets" [chain, threshold, odftype, relaxtime, floor_, mingap, medianspan, whtype, rawodf] Nothing 1 (Special 0) NoId

{- | Interpolating wavetable oscillator.

 Osc [ControlRate,AudioRate] bufnum=0 freq=440 phase=0
-}
osc :: Rate -> Ugen -> Ugen -> Ugen -> Ugen
osc rate bufnum freq phase = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "Osc" [bufnum, freq, phase] Nothing 1 (Special 0) NoId

{- | Noninterpolating wavetable oscillator.

 OscN [ControlRate,AudioRate] bufnum=0 freq=440 phase=0
-}
oscN :: Rate -> Ugen -> Ugen -> Ugen -> Ugen
oscN rate bufnum freq phase = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "OscN" [bufnum, freq, phase] Nothing 1 (Special 0) NoId

{- | Write a signal to a bus.

 Out [ControlRate,AudioRate] bus=0 *channelsArray=0;    MCE=1, FILTER: TRUE
-}
out :: Ugen -> Ugen -> Ugen
out bus input = mkUgen Nothing [ControlRate, AudioRate] (Right [1]) "Out" [bus] (Just [input]) 0 (Special 0) NoId

{- | Very fast sine grain with a parabolic envelope

 PSinGrain [AudioRate] freq=440 dur=0.2 amp=0.1
-}
pSinGrain :: Rate -> Ugen -> Ugen -> Ugen -> Ugen
pSinGrain rate freq dur amp = mkUgen Nothing [AudioRate] (Left rate) "PSinGrain" [freq, dur, amp] Nothing 1 (Special 0) NoId

{- | Complex addition.

 PV_Add [ControlRate] bufferA=0 bufferB=0
-}
pv_Add :: Ugen -> Ugen -> Ugen
pv_Add bufferA bufferB = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_Add" [bufferA, bufferB] Nothing 1 (Special 0) NoId

{- | Scramble bins.

 PV_BinScramble [ControlRate] buffer=0 wipe=0 width=0.2 trig=0;    NONDET
-}
pv_BinScrambleId :: ID a => a -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
pv_BinScrambleId z buffer wipe width trig_ = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_BinScramble" [buffer, wipe, width, trig_] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of PV_BinScramble.
pv_BinScrambleM :: Uid m => Ugen -> Ugen -> Ugen -> Ugen -> m Ugen
pv_BinScrambleM = liftUid4 pv_BinScrambleId

-- | Unsafe variant of PV_BinScramble.
pv_BinScramble :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
pv_BinScramble = liftUnsafe4 pv_BinScrambleM

{- | Shift and stretch bin position.

 PV_BinShift [ControlRate] buffer=0 stretch=1 shift=0 interp=0
-}
pv_BinShift :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
pv_BinShift buffer stretch shift interp = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_BinShift" [buffer, stretch, shift, interp] Nothing 1 (Special 0) NoId

{- | Combine low and high bins from two inputs.

 PV_BinWipe [ControlRate] bufferA=0 bufferB=0 wipe=0
-}
pv_BinWipe :: Ugen -> Ugen -> Ugen -> Ugen
pv_BinWipe bufferA bufferB wipe = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_BinWipe" [bufferA, bufferB, wipe] Nothing 1 (Special 0) NoId

{- | Zero bins.

 PV_BrickWall [ControlRate] buffer=0 wipe=0
-}
pv_BrickWall :: Ugen -> Ugen -> Ugen
pv_BrickWall buffer wipe = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_BrickWall" [buffer, wipe] Nothing 1 (Special 0) NoId

{- | Complex plane attack.

 PV_ConformalMap [ControlRate] buffer=0 areal=0 aimag=0
-}
pv_ConformalMap :: Ugen -> Ugen -> Ugen -> Ugen
pv_ConformalMap buffer areal aimag = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_ConformalMap" [buffer, areal, aimag] Nothing 1 (Special 0) NoId

{- | Complex conjugate

 PV_Conj [ControlRate] buffer=0
-}
pv_Conj :: Ugen -> Ugen
pv_Conj buffer = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_Conj" [buffer] Nothing 1 (Special 0) NoId

{- | Copy an FFT buffer

 PV_Copy [ControlRate] bufferA=0 bufferB=0
-}
pv_Copy :: Ugen -> Ugen -> Ugen
pv_Copy bufferA bufferB = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_Copy" [bufferA, bufferB] Nothing 1 (Special 0) NoId

{- | Copy magnitudes and phases.

 PV_CopyPhase [ControlRate] bufferA=0 bufferB=0
-}
pv_CopyPhase :: Ugen -> Ugen -> Ugen
pv_CopyPhase bufferA bufferB = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_CopyPhase" [bufferA, bufferB] Nothing 1 (Special 0) NoId

{- | Random phase shifting.

 PV_Diffuser [ControlRate] buffer=0 trig=0
-}
pv_Diffuser :: Ugen -> Ugen -> Ugen
pv_Diffuser buffer trig_ = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_Diffuser" [buffer, trig_] Nothing 1 (Special 0) NoId

{- | Complex division

 PV_Div [ControlRate] bufferA=0 bufferB=0
-}
pv_Div :: Ugen -> Ugen -> Ugen
pv_Div bufferA bufferB = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_Div" [bufferA, bufferB] Nothing 1 (Special 0) NoId

{-
-- | FFT onset detector.
--
--  PV_HainsworthFoote [ControlRate,AudioRate] maxSize=0
pv_HainsworthFoote :: Ugen -> Ugen
pv_HainsworthFoote maxSize = mkUgen Nothing [ControlRate,AudioRate] (Left ControlRate) "PV_HainsworthFoote" [maxSize] Nothing 1 (Special 0) NoId

-- | FFT feature detector for onset detection.
--
--  PV_JensenAndersen [ControlRate,AudioRate] maxSize=0
pv_JensenAndersen :: Ugen -> Ugen
pv_JensenAndersen maxSize = mkUgen Nothing [ControlRate,AudioRate] (Left ControlRate) "PV_JensenAndersen" [maxSize] Nothing 1 (Special 0) NoId
-}

{- | Pass bins which are a local maximum.

 PV_LocalMax [ControlRate] buffer=0 threshold=0
-}
pv_LocalMax :: Ugen -> Ugen -> Ugen
pv_LocalMax buffer threshold = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_LocalMax" [buffer, threshold] Nothing 1 (Special 0) NoId

{- | Pass bins above a threshold.

 PV_MagAbove [ControlRate] buffer=0 threshold=0
-}
pv_MagAbove :: Ugen -> Ugen -> Ugen
pv_MagAbove buffer threshold = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_MagAbove" [buffer, threshold] Nothing 1 (Special 0) NoId

{- | Pass bins below a threshold.

 PV_MagBelow [ControlRate] buffer=0 threshold=0
-}
pv_MagBelow :: Ugen -> Ugen -> Ugen
pv_MagBelow buffer threshold = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_MagBelow" [buffer, threshold] Nothing 1 (Special 0) NoId

{- | Clip bins to a threshold.

 PV_MagClip [ControlRate] buffer=0 threshold=0
-}
pv_MagClip :: Ugen -> Ugen -> Ugen
pv_MagClip buffer threshold = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_MagClip" [buffer, threshold] Nothing 1 (Special 0) NoId

{- | Division of magnitudes

 PV_MagDiv [ControlRate] bufferA=0 bufferB=0 zeroed=0.0001
-}
pv_MagDiv :: Ugen -> Ugen -> Ugen -> Ugen
pv_MagDiv bufferA bufferB zeroed = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_MagDiv" [bufferA, bufferB, zeroed] Nothing 1 (Special 0) NoId

{- | Freeze magnitudes.

 PV_MagFreeze [ControlRate] buffer=0 freeze=0
-}
pv_MagFreeze :: Ugen -> Ugen -> Ugen
pv_MagFreeze buffer freeze = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_MagFreeze" [buffer, freeze] Nothing 1 (Special 0) NoId

{- | Multiply magnitudes.

 PV_MagMul [ControlRate] bufferA=0 bufferB=0
-}
pv_MagMul :: Ugen -> Ugen -> Ugen
pv_MagMul bufferA bufferB = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_MagMul" [bufferA, bufferB] Nothing 1 (Special 0) NoId

{- | Multiply magnitudes by noise.

 PV_MagNoise [ControlRate] buffer=0
-}
pv_MagNoise :: Ugen -> Ugen
pv_MagNoise buffer = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_MagNoise" [buffer] Nothing 1 (Special 0) NoId

{- | shift and stretch magnitude bin position.

 PV_MagShift [ControlRate] buffer=0 stretch=1 shift=0
-}
pv_MagShift :: Ugen -> Ugen -> Ugen -> Ugen
pv_MagShift buffer stretch shift = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_MagShift" [buffer, stretch, shift] Nothing 1 (Special 0) NoId

{- | Average magnitudes across bins.

 PV_MagSmear [ControlRate] buffer=0 bins=0
-}
pv_MagSmear :: Ugen -> Ugen -> Ugen
pv_MagSmear buffer bins = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_MagSmear" [buffer, bins] Nothing 1 (Special 0) NoId

{- | Square magnitudes.

 PV_MagSquared [ControlRate] buffer=0
-}
pv_MagSquared :: Ugen -> Ugen
pv_MagSquared buffer = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_MagSquared" [buffer] Nothing 1 (Special 0) NoId

{- | Maximum magnitude.

 PV_Max [ControlRate] bufferA=0 bufferB=0
-}
pv_Max :: Ugen -> Ugen -> Ugen
pv_Max bufferA bufferB = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_Max" [bufferA, bufferB] Nothing 1 (Special 0) NoId

{- | Minimum magnitude.

 PV_Min [ControlRate] bufferA=0 bufferB=0
-}
pv_Min :: Ugen -> Ugen -> Ugen
pv_Min bufferA bufferB = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_Min" [bufferA, bufferB] Nothing 1 (Special 0) NoId

{- | Complex multiply.

 PV_Mul [ControlRate] bufferA=0 bufferB=0
-}
pv_Mul :: Ugen -> Ugen -> Ugen
pv_Mul bufferA bufferB = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_Mul" [bufferA, bufferB] Nothing 1 (Special 0) NoId

{- | Shift phase.

 PV_PhaseShift [ControlRate] buffer=0 shift=0 integrate=0
-}
pv_PhaseShift :: Ugen -> Ugen -> Ugen -> Ugen
pv_PhaseShift buffer shift integrate = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_PhaseShift" [buffer, shift, integrate] Nothing 1 (Special 0) NoId

{- | Shift phase by 270 degrees.

 PV_PhaseShift270 [ControlRate] buffer=0
-}
pv_PhaseShift270 :: Ugen -> Ugen
pv_PhaseShift270 buffer = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_PhaseShift270" [buffer] Nothing 1 (Special 0) NoId

{- | Shift phase by 90 degrees.

 PV_PhaseShift90 [ControlRate] buffer=0
-}
pv_PhaseShift90 :: Ugen -> Ugen
pv_PhaseShift90 buffer = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_PhaseShift90" [buffer] Nothing 1 (Special 0) NoId

{- | Pass random bins.

 PV_RandComb [ControlRate] buffer=0 wipe=0 trig=0;    NONDET
-}
pv_RandCombId :: ID a => a -> Ugen -> Ugen -> Ugen -> Ugen
pv_RandCombId z buffer wipe trig_ = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_RandComb" [buffer, wipe, trig_] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of PV_RandComb.
pv_RandCombM :: Uid m => Ugen -> Ugen -> Ugen -> m Ugen
pv_RandCombM = liftUid3 pv_RandCombId

-- | Unsafe variant of PV_RandComb.
pv_RandComb :: Ugen -> Ugen -> Ugen -> Ugen
pv_RandComb = liftUnsafe3 pv_RandCombM

{- | Crossfade in random bin order.

 PV_RandWipe [ControlRate] bufferA=0 bufferB=0 wipe=0 trig=0;    NONDET
-}
pv_RandWipeId :: ID a => a -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
pv_RandWipeId z bufferA bufferB wipe trig_ = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_RandWipe" [bufferA, bufferB, wipe, trig_] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of PV_RandWipe.
pv_RandWipeM :: Uid m => Ugen -> Ugen -> Ugen -> Ugen -> m Ugen
pv_RandWipeM = liftUid4 pv_RandWipeId

-- | Unsafe variant of PV_RandWipe.
pv_RandWipe :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
pv_RandWipe = liftUnsafe4 pv_RandWipeM

{- | Make gaps in spectrum.

 PV_RectComb [ControlRate] buffer=0 numTeeth=0 phase=0 width=0.5
-}
pv_RectComb :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
pv_RectComb buffer numTeeth phase width = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_RectComb" [buffer, numTeeth, phase, width] Nothing 1 (Special 0) NoId

{- | Make gaps in spectrum.

 PV_RectComb2 [ControlRate] bufferA=0 bufferB=0 numTeeth=0 phase=0 width=0.5
-}
pv_RectComb2 :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
pv_RectComb2 bufferA bufferB numTeeth phase width = mkUgen Nothing [ControlRate] (Left ControlRate) "PV_RectComb2" [bufferA, bufferB, numTeeth, phase, width] Nothing 1 (Special 0) NoId

{- | Two channel equal power pan.

 Pan2 [ControlRate,AudioRate] in=0 pos=0 level=1;    FILTER: TRUE
-}
pan2 :: Ugen -> Ugen -> Ugen -> Ugen
pan2 in_ pos level = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "Pan2" [in_, pos, level] Nothing 2 (Special 0) NoId

{- | Four channel equal power pan.

 Pan4 [ControlRate,AudioRate] in=0 xpos=0 ypos=0 level=1
-}
pan4 :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
pan4 rate in_ xpos ypos level = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "Pan4" [in_, xpos, ypos, level] Nothing 4 (Special 0) NoId

{- | Azimuth panner

 PanAz [ControlRate,AudioRate] in=0 pos=0 level=1 width=2 orientation=0.5;    NC INPUT: True, FILTER: TRUE
-}
panAz :: Int -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
panAz numChannels in_ pos level width orientation = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "PanAz" [in_, pos, level, width, orientation] Nothing numChannels (Special 0) NoId

{- | Ambisonic B-format panner.

 PanB [ControlRate,AudioRate] in=0 azimuth=0 elevation=0 gain=1
-}
panB :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
panB rate in_ azimuth elevation gain = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "PanB" [in_, azimuth, elevation, gain] Nothing 4 (Special 0) NoId

{- | 2D Ambisonic B-format panner.

 PanB2 [ControlRate,AudioRate] in=0 azimuth=0 gain=1;    FILTER: TRUE
-}
panB2 :: Ugen -> Ugen -> Ugen -> Ugen
panB2 in_ azimuth gain = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "PanB2" [in_, azimuth, gain] Nothing 3 (Special 0) NoId

{- | Real-time partitioned convolution

 PartConv [AudioRate] in=0 fftsize=0 irbufnum=0
-}
partConv :: Ugen -> Ugen -> Ugen -> Ugen
partConv in_ fftsize irbufnum = mkUgen Nothing [AudioRate] (Left AudioRate) "PartConv" [in_, fftsize, irbufnum] Nothing 1 (Special 0) NoId

{- | When triggered, pauses a node.

 Pause [ControlRate] gate=0 id=0
-}
pause :: Ugen -> Ugen -> Ugen
pause gate_ id_ = mkUgen Nothing [ControlRate] (Left ControlRate) "Pause" [gate_, id_] Nothing 1 (Special 0) NoId

{- | When triggered, pause enclosing synth.

 PauseSelf [ControlRate] in=0
-}
pauseSelf :: Ugen -> Ugen
pauseSelf in_ = mkUgen Nothing [ControlRate] (Left ControlRate) "PauseSelf" [in_] Nothing 1 (Special 0) NoId

{- | FIXME: PauseSelfWhenDone purpose.

 PauseSelfWhenDone [ControlRate] src=0
-}
pauseSelfWhenDone :: Ugen -> Ugen
pauseSelfWhenDone src = mkUgen Nothing [ControlRate] (Left ControlRate) "PauseSelfWhenDone" [src] Nothing 1 (Special 0) NoId

{- | Track peak signal amplitude.

 Peak [ControlRate,AudioRate] in=0 trig=0;    FILTER: TRUE
-}
peak :: Ugen -> Ugen -> Ugen
peak in_ trig_ = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "Peak" [in_, trig_] Nothing 1 (Special 0) NoId

{- | Track peak signal amplitude.

 PeakFollower [ControlRate,AudioRate] in=0 decay=0.999;    FILTER: TRUE
-}
peakFollower :: Ugen -> Ugen -> Ugen
peakFollower in_ decay_ = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "PeakFollower" [in_, decay_] Nothing 1 (Special 0) NoId

{- | A resettable linear ramp between two levels.

 Phasor [ControlRate,AudioRate] trig=0 rate=1 start=0 end=1 resetPos=0
-}
phasor :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
phasor rate trig_ rate_ start end resetPos = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "Phasor" [trig_, rate_, start, end, resetPos] Nothing 1 (Special 0) NoId

{- | Pink Noise.

 PinkNoise [ControlRate,AudioRate] ;    NONDET
-}
pinkNoiseId :: ID a => a -> Rate -> Ugen
pinkNoiseId z rate = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "PinkNoise" [] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of PinkNoise.
pinkNoiseM :: Uid m => Rate -> m Ugen
pinkNoiseM = liftUid1 pinkNoiseId

-- | Unsafe variant of PinkNoise.
pinkNoise :: Rate -> Ugen
pinkNoise = liftUnsafe1 pinkNoiseM

{- | Autocorrelation pitch follower

 Pitch [ControlRate] in=0 initFreq=440 minFreq=60 maxFreq=4000 execFreq=100 maxBinsPerOctave=16 median=1 ampThreshold=0.01 peakThreshold=0.5 downSample=1 clar=0
-}
pitch :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
pitch in_ initFreq minFreq maxFreq execFreq maxBinsPerOctave median_ ampThreshold peakThreshold downSample clar = mkUgen Nothing [ControlRate] (Left ControlRate) "Pitch" [in_, initFreq, minFreq, maxFreq, execFreq, maxBinsPerOctave, median_, ampThreshold, peakThreshold, downSample, clar] Nothing 2 (Special 0) NoId

{- | Time domain pitch shifter.

 PitchShift [AudioRate] in=0 windowSize=0.2 pitchRatio=1 pitchDispersion=0 timeDispersion=0;    FILTER: TRUE
-}
pitchShift :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
pitchShift in_ windowSize pitchRatio pitchDispersion timeDispersion = mkUgen Nothing [AudioRate] (Right [0]) "PitchShift" [in_, windowSize, pitchRatio, pitchDispersion, timeDispersion] Nothing 1 (Special 0) NoId

{- | Sample playback oscillator.

 PlayBuf [ControlRate,AudioRate] bufnum=0 rate=1 trigger=1 startPos=0 loop=0 doneAction=0;    NC INPUT: True, ENUMERATION INPUTS: 4=Loop, 5=DoneAction
-}
playBuf :: Int -> Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Loop Ugen -> DoneAction Ugen -> Ugen
playBuf numChannels rate bufnum rate_ trigger startPos loop doneAction = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "PlayBuf" [bufnum, rate_, trigger, startPos, (from_loop loop), (from_done_action doneAction)] Nothing numChannels (Special 0) NoId

{- | A Karplus-Strong Ugen

 Pluck [AudioRate] in=0 trig=1 maxdelaytime=0.2 delaytime=0.2 decaytime=1 coef=0.5;    FILTER: TRUE
-}
pluck :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
pluck in_ trig_ maxdelaytime delaytime decaytime coef = mkUgen Nothing [AudioRate] (Right [0]) "Pluck" [in_, trig_, maxdelaytime, delaytime, decaytime, coef] Nothing 1 (Special 0) NoId

{-
-- | Print the current output value of a Ugen
--
--  Poll [ControlRate,AudioRate] trig=0 in=0 trigid=-1 label=0;    FILTER: TRUE, REORDERS INPUTS: [0,1,3,2]
poll :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
poll trig_ in_ trigid label_ = mkUgen Nothing [ControlRate,AudioRate] (Right [1]) "Poll" [trig_,in_,trigid,label_] Nothing 1 (Special 0) NoId
-}

{- | Band limited pulse wave.

 Pulse [ControlRate,AudioRate] freq=440 width=0.5
-}
pulse :: Rate -> Ugen -> Ugen -> Ugen
pulse rate freq width = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "Pulse" [freq, width] Nothing 1 (Special 0) NoId

{- | Pulse counter.

 PulseCount [ControlRate,AudioRate] trig=0 reset=0;    FILTER: TRUE
-}
pulseCount :: Ugen -> Ugen -> Ugen
pulseCount trig_ reset = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "PulseCount" [trig_, reset] Nothing 1 (Special 0) NoId

{- | Pulse divider.

 PulseDivider [ControlRate,AudioRate] trig=0 div=2 start=0;    FILTER: TRUE
-}
pulseDivider :: Ugen -> Ugen -> Ugen -> Ugen
pulseDivider trig_ div_ start = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "PulseDivider" [trig_, div_, start] Nothing 1 (Special 0) NoId

{- | General quadratic map chaotic generator

 QuadC [AudioRate] freq=22050 a=1 b=-1 c=-0.75 xi=0
-}
quadC :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
quadC rate freq a b c xi = mkUgen Nothing [AudioRate] (Left rate) "QuadC" [freq, a, b, c, xi] Nothing 1 (Special 0) NoId

{- | General quadratic map chaotic generator

 QuadL [AudioRate] freq=22050 a=1 b=-1 c=-0.75 xi=0
-}
quadL :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
quadL rate freq a b c xi = mkUgen Nothing [AudioRate] (Left rate) "QuadL" [freq, a, b, c, xi] Nothing 1 (Special 0) NoId

{- | General quadratic map chaotic generator

 QuadN [AudioRate] freq=22050 a=1 b=-1 c=-0.75 xi=0
-}
quadN :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
quadN rate freq a b c xi = mkUgen Nothing [AudioRate] (Left rate) "QuadN" [freq, a, b, c, xi] Nothing 1 (Special 0) NoId

{- | A resonant high pass filter.

 RHPF [ControlRate,AudioRate] in=0 freq=440 rq=1;    FILTER: TRUE
-}
rhpf :: Ugen -> Ugen -> Ugen -> Ugen
rhpf in_ freq rq = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "RHPF" [in_, freq, rq] Nothing 1 (Special 0) NoId

{- | A resonant low pass filter.

 RLPF [ControlRate,AudioRate] in=0 freq=440 rq=1;    FILTER: TRUE
-}
rlpf :: Ugen -> Ugen -> Ugen -> Ugen
rlpf in_ freq rq = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "RLPF" [in_, freq, rq] Nothing 1 (Special 0) NoId

{- | Number of radians per sample.

 RadiansPerSample [InitialisationRate]
-}
radiansPerSample :: Ugen
radiansPerSample = mkUgen Nothing [InitialisationRate] (Left InitialisationRate) "RadiansPerSample" [] Nothing 1 (Special 0) NoId

{- | Break a continuous signal into line segments

 Ramp [ControlRate,AudioRate] in=0 lagTime=0.1;    FILTER: TRUE
-}
ramp :: Ugen -> Ugen -> Ugen
ramp in_ lagTime = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "Ramp" [in_, lagTime] Nothing 1 (Special 0) NoId

{- | Single random number generator.

 Rand [InitialisationRate] lo=0 hi=1;    NONDET
-}
randId :: ID a => a -> Ugen -> Ugen -> Ugen
randId z lo hi = mkUgen Nothing [InitialisationRate] (Left InitialisationRate) "Rand" [lo, hi] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of Rand.
randM :: Uid m => Ugen -> Ugen -> m Ugen
randM = liftUid2 randId

-- | Unsafe variant of Rand.
rand :: Ugen -> Ugen -> Ugen
rand = liftUnsafe2 randM

{- | Set the synth's random generator ID.

 RandID [InitialisationRate,ControlRate] id=0
-}
randID :: Rate -> Ugen -> Ugen
randID rate id_ = mkUgen Nothing [InitialisationRate, ControlRate] (Left rate) "RandID" [id_] Nothing 0 (Special 0) NoId

{- | Sets the synth's random generator seed.

 RandSeed [InitialisationRate,ControlRate,AudioRate] trig=0 seed=56789
-}
randSeed :: Rate -> Ugen -> Ugen -> Ugen
randSeed rate trig_ seed = mkUgen Nothing [InitialisationRate, ControlRate, AudioRate] (Left rate) "RandSeed" [trig_, seed] Nothing 0 (Special 0) NoId

{- | Record or overdub into a Buffer.

 RecordBuf [ControlRate,AudioRate] bufnum=0 offset=0 recLevel=1 preLevel=0 run=1 loop=1 trigger=1 doneAction=0 *inputArray=0;    MCE=1, REORDERS INPUTS: [8,0,1,2,3,4,5,6,7], ENUMERATION INPUTS: 5=Loop, 7=DoneAction
-}
recordBuf :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Loop Ugen -> Ugen -> DoneAction Ugen -> Ugen -> Ugen
recordBuf rate bufnum offset recLevel preLevel run loop trigger doneAction inputArray = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "RecordBuf" [bufnum, offset, recLevel, preLevel, run, (from_loop loop), trigger, (from_done_action doneAction)] (Just [inputArray]) 1 (Special 0) NoId

{- | Send signal to a bus, overwriting previous contents.

 ReplaceOut [ControlRate,AudioRate] bus=0 *channelsArray=0;    MCE=1, FILTER: TRUE
-}
replaceOut :: Ugen -> Ugen -> Ugen
replaceOut bus input = mkUgen Nothing [ControlRate, AudioRate] (Right [1]) "ReplaceOut" [bus] (Just [input]) 0 (Special 0) NoId

{- | Resonant filter.

 Resonz [ControlRate,AudioRate] in=0 freq=440 bwr=1;    FILTER: TRUE
-}
resonz :: Ugen -> Ugen -> Ugen -> Ugen
resonz in_ freq bwr = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "Resonz" [in_, freq, bwr] Nothing 1 (Special 0) NoId

{- | Ringing filter.

 Ringz [ControlRate,AudioRate] in=0 freq=440 decaytime=1;    FILTER: TRUE
-}
ringz :: Ugen -> Ugen -> Ugen -> Ugen
ringz in_ freq decaytime = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "Ringz" [in_, freq, decaytime] Nothing 1 (Special 0) NoId

{- | Rotate a sound field.

 Rotate2 [ControlRate,AudioRate] x=0 y=0 pos=0;    FILTER: TRUE
-}
rotate2 :: Ugen -> Ugen -> Ugen -> Ugen
rotate2 x y pos = mkUgen Nothing [ControlRate, AudioRate] (Right [0, 1]) "Rotate2" [x, y, pos] Nothing 2 (Special 0) NoId

{- | Track maximum level.

 RunningMax [ControlRate,AudioRate] in=0 trig=0;    FILTER: TRUE
-}
runningMax :: Ugen -> Ugen -> Ugen
runningMax in_ trig_ = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "RunningMax" [in_, trig_] Nothing 1 (Special 0) NoId

{- | Track minimum level.

 RunningMin [ControlRate,AudioRate] in=0 trig=0;    FILTER: TRUE
-}
runningMin :: Ugen -> Ugen -> Ugen
runningMin in_ trig_ = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "RunningMin" [in_, trig_] Nothing 1 (Special 0) NoId

{- | Running sum over n frames

 RunningSum [ControlRate,AudioRate] in=0 numsamp=40;    FILTER: TRUE
-}
runningSum :: Ugen -> Ugen -> Ugen
runningSum in_ numsamp = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "RunningSum" [in_, numsamp] Nothing 1 (Special 0) NoId

{- | Second order filter section (biquad).

 SOS [ControlRate,AudioRate] in=0 a0=0 a1=0 a2=0 b1=0 b2=0;    FILTER: TRUE
-}
sos :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
sos in_ a0 a1 a2 b1 b2 = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "SOS" [in_, a0, a1, a2, b1, b2] Nothing 1 (Special 0) NoId

{- | Duration of one sample.

 SampleDur [InitialisationRate]
-}
sampleDur :: Ugen
sampleDur = mkUgen Nothing [InitialisationRate] (Left InitialisationRate) "SampleDur" [] Nothing 1 (Special 0) NoId

{- | Server sample rate.

 SampleRate [InitialisationRate]
-}
sampleRate :: Ugen
sampleRate = mkUgen Nothing [InitialisationRate] (Left InitialisationRate) "SampleRate" [] Nothing 1 (Special 0) NoId

{- | Remove infinity, NaN, and denormals

 Sanitize [ControlRate,AudioRate] in=0 replace=0;    FILTER: TRUE
-}
sanitize :: Ugen -> Ugen -> Ugen
sanitize in_ replace = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "Sanitize" [in_, replace] Nothing 1 (Special 0) NoId

{- | Band limited sawtooth.

 Saw [ControlRate,AudioRate] freq=440
-}
saw :: Rate -> Ugen -> Ugen
saw rate freq = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "Saw" [freq] Nothing 1 (Special 0) NoId

{- | Schmidt trigger.

 Schmidt [InitialisationRate,ControlRate,AudioRate] in=0 lo=0 hi=1;    FILTER: TRUE
-}
schmidt :: Ugen -> Ugen -> Ugen -> Ugen
schmidt in_ lo hi = mkUgen Nothing [InitialisationRate, ControlRate, AudioRate] (Right [0]) "Schmidt" [in_, lo, hi] Nothing 1 (Special 0) NoId

{- | Select output from an array of inputs.

 Select [InitialisationRate,ControlRate,AudioRate] which=0 *array=0;    MCE=1, FILTER: TRUE
-}
select :: Ugen -> Ugen -> Ugen
select which array = mkUgen Nothing [InitialisationRate, ControlRate, AudioRate] (Right [0, 1]) "Select" [which] (Just [array]) 1 (Special 0) NoId

{- | Send a trigger message from the server back to the client.

 SendTrig [ControlRate,AudioRate] in=0 id=0 value=0;    FILTER: TRUE
-}
sendTrig :: Ugen -> Ugen -> Ugen -> Ugen
sendTrig in_ id_ value = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "SendTrig" [in_, id_, value] Nothing 0 (Special 0) NoId

{- | Set-reset flip flop.

 SetResetFF [ControlRate,AudioRate] trig=0 reset=0;    FILTER: TRUE
-}
setResetFF :: Ugen -> Ugen -> Ugen
setResetFF trig_ reset = mkUgen Nothing [ControlRate, AudioRate] (Right [0, 1]) "SetResetFF" [trig_, reset] Nothing 1 (Special 0) NoId

{- | Wave shaper.

 Shaper [ControlRate,AudioRate] bufnum=0 in=0;    FILTER: TRUE
-}
shaper :: Ugen -> Ugen -> Ugen
shaper bufnum in_ = mkUgen Nothing [ControlRate, AudioRate] (Right [1]) "Shaper" [bufnum, in_] Nothing 1 (Special 0) NoId

{- | Interpolating sine wavetable oscillator.

 SinOsc [ControlRate,AudioRate] freq=440 phase=0
-}
sinOsc :: Rate -> Ugen -> Ugen -> Ugen
sinOsc rate freq phase = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "SinOsc" [freq, phase] Nothing 1 (Special 0) NoId

{- | Feedback FM oscillator

 SinOscFB [ControlRate,AudioRate] freq=440 feedback=0
-}
sinOscFB :: Rate -> Ugen -> Ugen -> Ugen
sinOscFB rate freq feedback = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "SinOscFB" [freq, feedback] Nothing 1 (Special 0) NoId

{- | Slew rate limiter.

 Slew [ControlRate,AudioRate] in=0 up=1 dn=1;    FILTER: TRUE
-}
slew :: Ugen -> Ugen -> Ugen -> Ugen
slew in_ up dn = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "Slew" [in_, up, dn] Nothing 1 (Special 0) NoId

{- | Slope of signal

 Slope [ControlRate,AudioRate] in=0;    FILTER: TRUE
-}
slope :: Ugen -> Ugen
slope in_ = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "Slope" [in_] Nothing 1 (Special 0) NoId

{- | Spectral centroid

 SpecCentroid [ControlRate] buffer=0
-}
specCentroid :: Rate -> Ugen -> Ugen
specCentroid rate buffer = mkUgen Nothing [ControlRate] (Left rate) "SpecCentroid" [buffer] Nothing 1 (Special 0) NoId

{- | Spectral Flatness measure

 SpecFlatness [ControlRate] buffer=0
-}
specFlatness :: Rate -> Ugen -> Ugen
specFlatness rate buffer = mkUgen Nothing [ControlRate] (Left rate) "SpecFlatness" [buffer] Nothing 1 (Special 0) NoId

{- | Find a percentile of FFT magnitude spectrum

 SpecPcile [ControlRate] buffer=0 fraction=0.5 interpolate=0
-}
specPcile :: Rate -> Ugen -> Ugen -> Ugen -> Ugen
specPcile rate buffer fraction interpolate = mkUgen Nothing [ControlRate] (Left rate) "SpecPcile" [buffer, fraction, interpolate] Nothing 1 (Special 0) NoId

{- | physical model of resonating spring

 Spring [ControlRate,AudioRate] in=0 spring=1 damp=0
-}
spring :: Rate -> Ugen -> Ugen -> Ugen -> Ugen
spring rate in_ spring_ damp = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "Spring" [in_, spring_, damp] Nothing 1 (Special 0) NoId

{- | Standard map chaotic generator

 StandardL [AudioRate] freq=22050 k=1 xi=0.5 yi=0
-}
standardL :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
standardL rate freq k xi yi = mkUgen Nothing [AudioRate] (Left rate) "StandardL" [freq, k, xi, yi] Nothing 1 (Special 0) NoId

{- | Standard map chaotic generator

 StandardN [AudioRate] freq=22050 k=1 xi=0.5 yi=0
-}
standardN :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
standardN rate freq k xi yi = mkUgen Nothing [AudioRate] (Left rate) "StandardN" [freq, k, xi, yi] Nothing 1 (Special 0) NoId

{- | Pulse counter.

 Stepper [ControlRate,AudioRate] trig=0 reset=0 min=0 max=7 step=1 resetval=0;    FILTER: TRUE
-}
stepper :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
stepper trig_ reset min_ max_ step resetval = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "Stepper" [trig_, reset, min_, max_, step, resetval] Nothing 1 (Special 0) NoId

{- | Stereo real-time convolver with linear interpolation

 StereoConvolution2L [AudioRate] in=0 kernelL=0 kernelR=0 trigger=0 framesize=2048 crossfade=1
-}
stereoConvolution2L :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
stereoConvolution2L rate in_ kernelL kernelR trigger framesize crossfade = mkUgen Nothing [AudioRate] (Left rate) "StereoConvolution2L" [in_, kernelL, kernelR, trigger, framesize, crossfade] Nothing 2 (Special 0) NoId

{- | Offset from synth start within one sample.

 SubsampleOffset [InitialisationRate]
-}
subsampleOffset :: Ugen
subsampleOffset = mkUgen Nothing [InitialisationRate] (Left InitialisationRate) "SubsampleOffset" [] Nothing 1 (Special 0) NoId

{- | Sum three signals

 Sum3 [] in0=0 in1=0 in2=0;    FILTER: TRUE
-}
sum3 :: Ugen -> Ugen -> Ugen -> Ugen
sum3 in0 in1 in2 = mkUgen Nothing [InitialisationRate, ControlRate, AudioRate, DemandRate] (Right [0, 1, 2]) "Sum3" [in0, in1, in2] Nothing 1 (Special 0) NoId

{- | Sum four signals

 Sum4 [] in0=0 in1=0 in2=0 in3=0;    FILTER: TRUE
-}
sum4 :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
sum4 in0 in1 in2 in3 = mkUgen Nothing [InitialisationRate, ControlRate, AudioRate, DemandRate] (Right [0, 1, 2, 3]) "Sum4" [in0, in1, in2, in3] Nothing 1 (Special 0) NoId

{- | Triggered linear ramp

 Sweep [ControlRate,AudioRate] trig=0 rate=1;    FILTER: TRUE
-}
sweep :: Rate -> Ugen -> Ugen -> Ugen
sweep rate trig_ rate_ = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "Sweep" [trig_, rate_] Nothing 1 (Special 0) NoId

{- | Hard sync sawtooth wave.

 SyncSaw [ControlRate,AudioRate] syncFreq=440 sawFreq=440
-}
syncSaw :: Rate -> Ugen -> Ugen -> Ugen
syncSaw rate syncFreq sawFreq = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "SyncSaw" [syncFreq, sawFreq] Nothing 1 (Special 0) NoId

{- | Control rate trigger to audio rate trigger converter

 T2A [AudioRate] in=0 offset=0
-}
t2a :: Ugen -> Ugen -> Ugen
t2a in_ offset = mkUgen Nothing [AudioRate] (Left AudioRate) "T2A" [in_, offset] Nothing 1 (Special 0) NoId

{- | Audio rate trigger to control rate trigger converter

 T2K [ControlRate] in=0
-}
t2k :: Ugen -> Ugen
t2k in_ = mkUgen Nothing [ControlRate] (Left ControlRate) "T2K" [in_] Nothing 1 (Special 0) NoId

{- | physical model of bouncing object

 TBall [ControlRate,AudioRate] in=0 g=10 damp=0 friction=0.01
-}
tBall :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
tBall rate in_ g damp friction_ = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "TBall" [in_, g, damp, friction_] Nothing 1 (Special 0) NoId

{- | Trigger delay.

 TDelay [ControlRate,AudioRate] in=0 dur=0.1;    FILTER: TRUE
-}
tDelay :: Ugen -> Ugen -> Ugen
tDelay in_ dur = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "TDelay" [in_, dur] Nothing 1 (Special 0) NoId

{- | Demand results as trigger from demand rate Ugens.

 TDuty [ControlRate,AudioRate] dur=1 reset=0 doneAction=0 level=1 gapFirst=0;    REORDERS INPUTS: [0,1,3,2,4], ENUMERATION INPUTS: 2=DoneAction
-}
tDuty :: Rate -> Ugen -> Ugen -> DoneAction Ugen -> Ugen -> Ugen -> Ugen
tDuty rate dur reset doneAction level gapFirst = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "TDuty" [dur, reset, (from_done_action doneAction), level, gapFirst] Nothing 1 (Special 0) NoId

{- | Triggered exponential random number generator.

 TExpRand [ControlRate,AudioRate] lo=0.01 hi=1 trig=0;    FILTER: TRUE, NONDET
-}
tExpRandId :: ID a => a -> Ugen -> Ugen -> Ugen -> Ugen
tExpRandId z lo hi trig_ = mkUgen Nothing [ControlRate, AudioRate] (Right [2]) "TExpRand" [lo, hi, trig_] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of TExpRand.
tExpRandM :: Uid m => Ugen -> Ugen -> Ugen -> m Ugen
tExpRandM = liftUid3 tExpRandId

-- | Unsafe variant of TExpRand.
tExpRand :: Ugen -> Ugen -> Ugen -> Ugen
tExpRand = liftUnsafe3 tExpRandM

{- | Buffer granulator.

 TGrains [AudioRate] trigger=0 bufnum=0 rate=1 centerPos=0 dur=0.1 pan=0 amp=0.1 interp=4;    NC INPUT: True
-}
tGrains :: Int -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
tGrains numChannels trigger bufnum rate_ centerPos dur pan amp interp = mkUgen Nothing [AudioRate] (Left AudioRate) "TGrains" [trigger, bufnum, rate_, centerPos, dur, pan, amp, interp] Nothing numChannels (Special 0) NoId

{- | Triggered integer random number generator.

 TIRand [ControlRate,AudioRate] lo=0 hi=127 trig=0;    FILTER: TRUE, NONDET
-}
tiRandId :: ID a => a -> Ugen -> Ugen -> Ugen -> Ugen
tiRandId z lo hi trig_ = mkUgen Nothing [ControlRate, AudioRate] (Right [2]) "TIRand" [lo, hi, trig_] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of Tirand.
tiRandM :: Uid m => Ugen -> Ugen -> Ugen -> m Ugen
tiRandM = liftUid3 tiRandId

-- | Unsafe variant of Tirand.
tiRand :: Ugen -> Ugen -> Ugen -> Ugen
tiRand = liftUnsafe3 tiRandM

{- | Triggered random number generator.

 TRand [ControlRate,AudioRate] lo=0 hi=1 trig=0;    FILTER: TRUE, NONDET
-}
tRandId :: ID a => a -> Ugen -> Ugen -> Ugen -> Ugen
tRandId z lo hi trig_ = mkUgen Nothing [ControlRate, AudioRate] (Right [2]) "TRand" [lo, hi, trig_] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of TRand.
tRandM :: Uid m => Ugen -> Ugen -> Ugen -> m Ugen
tRandM = liftUid3 tRandId

-- | Unsafe variant of TRand.
tRand :: Ugen -> Ugen -> Ugen -> Ugen
tRand = liftUnsafe3 tRandM

{- | Triggered windex.

 TWindex [ControlRate,AudioRate] in=0 normalize=0 *array=0;    MCE=1, FILTER: TRUE, REORDERS INPUTS: [0,2,1], NONDET
-}
tWindexId :: ID a => a -> Ugen -> Ugen -> Ugen -> Ugen
tWindexId z in_ normalize array = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "TWindex" [in_, normalize] (Just [array]) 1 (Special 0) (toUid z)

-- | Monad variant of TWindex.
tWindexM :: Uid m => Ugen -> Ugen -> Ugen -> m Ugen
tWindexM = liftUid3 tWindexId

-- | Unsafe variant of TWindex.
tWindex :: Ugen -> Ugen -> Ugen -> Ugen
tWindex = liftUnsafe3 tWindexM

{- | Returns time since last triggered.

 Timer [ControlRate,AudioRate] trig=0;    FILTER: TRUE
-}
timer :: Ugen -> Ugen
timer trig_ = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "Timer" [trig_] Nothing 1 (Special 0) NoId

{- | Toggle flip flop.

 ToggleFF [ControlRate,AudioRate] trig=0;    FILTER: TRUE
-}
toggleFF :: Ugen -> Ugen
toggleFF trig_ = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "ToggleFF" [trig_] Nothing 1 (Special 0) NoId

{- | Timed trigger.

 Trig [ControlRate,AudioRate] in=0 dur=0.1;    FILTER: TRUE
-}
trig :: Ugen -> Ugen -> Ugen
trig in_ dur = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "Trig" [in_, dur] Nothing 1 (Special 0) NoId

{- | Timed trigger.

 Trig1 [ControlRate,AudioRate] in=0 dur=0.1;    FILTER: TRUE
-}
trig1 :: Ugen -> Ugen -> Ugen
trig1 in_ dur = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "Trig1" [in_, dur] Nothing 1 (Special 0) NoId

{- | Two pole filter.

 TwoPole [ControlRate,AudioRate] in=0 freq=440 radius=0.8;    FILTER: TRUE
-}
twoPole :: Ugen -> Ugen -> Ugen -> Ugen
twoPole in_ freq radius = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "TwoPole" [in_, freq, radius] Nothing 1 (Special 0) NoId

{- | Two zero filter.

 TwoZero [ControlRate,AudioRate] in=0 freq=440 radius=0.8;    FILTER: TRUE
-}
twoZero :: Ugen -> Ugen -> Ugen -> Ugen
twoZero in_ freq radius = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "TwoZero" [in_, freq, radius] Nothing 1 (Special 0) NoId

{- | Stream in audio from a file, with variable rate

 VDiskIn [AudioRate] bufnum=0 rate=1 loop=0 sendID=0;    NC INPUT: True, ENUMERATION INPUTS: 2=Loop
-}
vDiskIn :: Int -> Ugen -> Ugen -> Loop Ugen -> Ugen -> Ugen
vDiskIn numChannels bufnum rate_ loop sendID = mkUgen Nothing [AudioRate] (Left AudioRate) "VDiskIn" [bufnum, rate_, (from_loop loop), sendID] Nothing numChannels (Special 0) NoId

{- | Variable wavetable oscillator.

 VOsc [ControlRate,AudioRate] bufpos=0 freq=440 phase=0
-}
vOsc :: Rate -> Ugen -> Ugen -> Ugen -> Ugen
vOsc rate bufpos freq phase = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "VOsc" [bufpos, freq, phase] Nothing 1 (Special 0) NoId

{- | Three variable wavetable oscillators.

 VOsc3 [ControlRate,AudioRate] bufpos=0 freq1=110 freq2=220 freq3=440
-}
vOsc3 :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
vOsc3 rate bufpos freq1 freq2 freq3 = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "VOsc3" [bufpos, freq1, freq2, freq3] Nothing 1 (Special 0) NoId

{- | Variable shaped lag

 VarLag [ControlRate,AudioRate] in=0 time=0.1 curvature=0 warp=5 start=0;    FILTER: TRUE
-}
varLag :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
varLag in_ time curvature warp start = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "VarLag" [in_, time, curvature, warp, start] Nothing 1 (Special 0) NoId

{- | Variable duty saw

 VarSaw [ControlRate,AudioRate] freq=440 iphase=0 width=0.5
-}
varSaw :: Rate -> Ugen -> Ugen -> Ugen -> Ugen
varSaw rate freq iphase width = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "VarSaw" [freq, iphase, width] Nothing 1 (Special 0) NoId

{- | The Vibrato oscillator models a slow frequency modulation.

 Vibrato [ControlRate,AudioRate] freq=440 rate=6 depth=0.02 delay=0 onset=0 rateVariation=0.04 depthVariation=0.1 iphase=0 trig=0;    NONDET
-}
vibratoId :: ID a => a -> Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
vibratoId z rate freq rate_ depth delay onset rateVariation depthVariation iphase trig_ = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "Vibrato" [freq, rate_, depth, delay, onset, rateVariation, depthVariation, iphase, trig_] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of Vibrato.
vibratoM :: Uid m => Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> m Ugen
vibratoM = liftUid10 vibratoId

-- | Unsafe variant of Vibrato.
vibrato :: Rate -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
vibrato = liftUnsafe10 vibratoM

{- | Warp a buffer with a time pointer

 Warp1 [AudioRate] bufnum=0 pointer=0 freqScale=1 windowSize=0.2 envbufnum=-1 overlaps=8 windowRandRatio=0 interp=1;    NC INPUT: True
-}
warp1 :: Int -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen -> Ugen
warp1 numChannels bufnum pointer freqScale windowSize envbufnum overlaps windowRandRatio interp = mkUgen Nothing [AudioRate] (Left AudioRate) "Warp1" [bufnum, pointer, freqScale, windowSize, envbufnum, overlaps, windowRandRatio, interp] Nothing numChannels (Special 0) NoId

{- | White noise.

 WhiteNoise [ControlRate,AudioRate] ;    NONDET
-}
whiteNoiseId :: ID a => a -> Rate -> Ugen
whiteNoiseId z rate = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "WhiteNoise" [] Nothing 1 (Special 0) (toUid z)

-- | Monad variant of WhiteNoise.
whiteNoiseM :: Uid m => Rate -> m Ugen
whiteNoiseM = liftUid1 whiteNoiseId

-- | Unsafe variant of WhiteNoise.
whiteNoise :: Rate -> Ugen
whiteNoise = liftUnsafe1 whiteNoiseM

{- | Wrap a signal outside given thresholds.

 Wrap [InitialisationRate,ControlRate,AudioRate] in=0 lo=0 hi=1;    FILTER: TRUE
-}
wrap :: Ugen -> Ugen -> Ugen -> Ugen
wrap in_ lo hi = mkUgen Nothing [InitialisationRate, ControlRate, AudioRate] (Right [0]) "Wrap" [in_, lo, hi] Nothing 1 (Special 0) NoId

{- | Index into a table with a signal.

 WrapIndex [ControlRate,AudioRate] bufnum=0 in=0;    FILTER: TRUE
-}
wrapIndex :: Ugen -> Ugen -> Ugen
wrapIndex bufnum in_ = mkUgen Nothing [ControlRate, AudioRate] (Right [1]) "WrapIndex" [bufnum, in_] Nothing 1 (Special 0) NoId

{- | Equal power two channel cross fade.

 XFade2 [ControlRate,AudioRate] inA=0 inB=0 pan=0 level=1;    FILTER: TRUE
-}
xFade2 :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
xFade2 inA inB pan level = mkUgen Nothing [ControlRate, AudioRate] (Right [0, 1]) "XFade2" [inA, inB, pan, level] Nothing 1 (Special 0) NoId

{- | Exponential line generator.

 XLine [ControlRate,AudioRate] start=1 end=2 dur=1 doneAction=0;    ENUMERATION INPUTS: 3=DoneAction
-}
xLine :: Rate -> Ugen -> Ugen -> Ugen -> DoneAction Ugen -> Ugen
xLine rate start end dur doneAction = mkUgen Nothing [ControlRate, AudioRate] (Left rate) "XLine" [start, end, dur, (from_done_action doneAction)] Nothing 1 (Special 0) NoId

{- | Send signal to a bus, crossfading with previous contents.

 XOut [ControlRate,AudioRate] bus=0 xfade=0 *channelsArray=0;    MCE=1, FILTER: TRUE
-}
xOut :: Ugen -> Ugen -> Ugen -> Ugen
xOut bus xfade input = mkUgen Nothing [ControlRate, AudioRate] (Right [2]) "XOut" [bus, xfade] (Just [input]) 0 (Special 0) NoId

{- | Zero crossing frequency follower

 ZeroCrossing [ControlRate,AudioRate] in=0;    FILTER: TRUE
-}
zeroCrossing :: Ugen -> Ugen
zeroCrossing in_ = mkUgen Nothing [ControlRate, AudioRate] (Right [0]) "ZeroCrossing" [in_] Nothing 1 (Special 0) NoId

{- | LocalBuf count

 MaxLocalBufs [InitialisationRate,ControlRate] count=0
-}
maxLocalBufs :: Ugen -> Ugen
maxLocalBufs count = mkUgen Nothing [InitialisationRate, ControlRate] (Left ControlRate) "MaxLocalBufs" [count] Nothing 1 (Special 0) NoId

{- | Multiply add

 MulAdd [InitialisationRate,ControlRate,AudioRate] in=0 mul=0 add=0;    FILTER: TRUE
-}
mulAdd :: Ugen -> Ugen -> Ugen -> Ugen
mulAdd in_ mul add = mkUgen Nothing [InitialisationRate, ControlRate, AudioRate] (Right [0, 1, 2]) "MulAdd" [in_, mul, add] Nothing 1 (Special 0) NoId

{- | Set local buffer

 SetBuf [InitialisationRate] buf=0 offset=0 length=0 *array=0;    MCE=1, REORDERS INPUTS: [0,1,2,3]
-}
setBuf :: Ugen -> Ugen -> Ugen -> Ugen -> Ugen
setBuf buf offset length_ array = mkUgen Nothing [InitialisationRate] (Left InitialisationRate) "SetBuf" [buf, offset, length_] (Just [array]) 1 (Special 0) NoId
