-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | library to make electronic music -- -- Let's make music with text! We can use Csound to describe our music. -- Csound has so many fantastic sound generators. It's very efficient. -- But sometimes Csound is too low level. So many details: integer -- identifiers for instruments and arrays, should I use control rate or -- audio rate signals, lack of abstractions, no nested expressions and it -- has limited set of types. This library embeds Csound in Haskell. It's -- Csound code generator. We can use powerful Csound's primitives and -- glue them together with Haskell abstractions. Start with the module -- Csound.Base. It contains basic types and functions. -- -- Key principles -- -- -- -- For the future -- -- @package csound-expression @version 1.0.4 -- | Functions to make your own opcodes. You can find a lot of examples in -- source code (see directory Csound/Opcode) module Csound.LowLevel -- | The Csound rates. data Rate Xr :: Rate Ar :: Rate Kr :: Rate Ir :: Rate Sr :: Rate Fr :: Rate type Name = String -- | The inner representation of csound expressions. type E = Fix RatedExp i :: Rate k :: Rate a :: Rate x :: Rate s :: Rate f :: Rate is :: Int -> [Rate] ks :: Int -> [Rate] as :: Int -> [Rate] type Spec1 = [(Rate, [Rate])] opcs :: (Val a, Val b) => Name -> Spec1 -> [a] -> b opc0 :: Val a => Name -> Spec1 -> a opc1 :: (Val a, Val b) => Name -> Spec1 -> a -> b opc2 :: (Val a1, Val a2, Val b) => Name -> Spec1 -> a1 -> a2 -> b opc3 :: (Val a1, Val a2, Val a3, Val b) => Name -> Spec1 -> a1 -> a2 -> a3 -> b opc4 :: (Val a1, Val a2, Val a3, Val a4, Val b) => Name -> Spec1 -> a1 -> a2 -> a3 -> a4 -> b opc5 :: (Val a1, Val a2, Val a3, Val a4, Val a5, Val b) => Name -> Spec1 -> a1 -> a2 -> a3 -> a4 -> a5 -> b opc6 :: (Val a1, Val a2, Val a3, Val a4, Val a5, Val a6, Val b) => Name -> Spec1 -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> b opc7 :: (Val a1, Val a2, Val a3, Val a4, Val a5, Val a6, Val a7, Val b) => Name -> Spec1 -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> a7 -> b opc8 :: (Val a1, Val a2, Val a3, Val a4, Val a5, Val a6, Val a7, Val a8, Val b) => Name -> Spec1 -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> a7 -> a8 -> b opc9 :: (Val a1, Val a2, Val a3, Val a4, Val a5, Val a6, Val a7, Val a8, Val a9, Val b) => Name -> Spec1 -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> a7 -> a8 -> a9 -> b opc10 :: (Val a1, Val a2, Val a3, Val a4, Val a5, Val a6, Val a7, Val a8, Val a9, Val a10, Val b) => Name -> Spec1 -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> a7 -> a8 -> a9 -> a10 -> b opc11 :: (Val a1, Val a2, Val a3, Val a4, Val a5, Val a6, Val a7, Val a8, Val a9, Val a10, Val a11, Val b) => Name -> Spec1 -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> a7 -> a8 -> a9 -> a10 -> a11 -> b opc12 :: (Val a1, Val a2, Val a3, Val a4, Val a5, Val a6, Val a7, Val a8, Val a9, Val a10, Val a11, Val a12, Val b) => Name -> Spec1 -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> a7 -> a8 -> a9 -> a10 -> a11 -> a12 -> b type Specs = ([Rate], [Rate]) mopcs :: (Val a, CsdTuple b) => Name -> Specs -> [a] -> b mopc0 :: CsdTuple a => Name -> Specs -> a mopc1 :: (Val a, CsdTuple b) => Name -> Specs -> a -> b mopc2 :: (Val a1, Val a2, CsdTuple b) => Name -> Specs -> a1 -> a2 -> b mopc3 :: (Val a1, Val a2, Val a3, CsdTuple b) => Name -> Specs -> a1 -> a2 -> a3 -> b mopc4 :: (Val a1, Val a2, Val a3, Val a4, CsdTuple b) => Name -> Specs -> a1 -> a2 -> a3 -> a4 -> b mopc5 :: (Val a1, Val a2, Val a3, Val a4, Val a5, CsdTuple b) => Name -> Specs -> a1 -> a2 -> a3 -> a4 -> a5 -> b mopc6 :: (Val a1, Val a2, Val a3, Val a4, Val a5, Val a6, CsdTuple b) => Name -> Specs -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> b mopc7 :: (Val a1, Val a2, Val a3, Val a4, Val a5, Val a6, Val a7, CsdTuple b) => Name -> Specs -> a1 -> a2 -> a3 -> a4 -> a5 -> a6 -> a7 -> b -- | Converts a value to the private representation. toE :: Val a => a -> E se :: Val a => E -> SE a se_ :: E -> SE () -- | Basic signal processing module Csound.Opcode.Basic -- | Reads p3-argument for the current instrument. idur :: D -- | Reads 0dbfs value. zeroDbfs :: D -- | Reads sr value. sampleRate :: D -- | Reads ksmps value. blockSize :: D -- | Simple, fast sine oscillator, that uses only one multiply, and two add -- operations to generate one sample of output, and does not require a -- function table. -- --
--   ares oscils iamp, icps, iphs [, iflg]
--   
-- -- doc: http://www.csounds.com/manual/html/oscils.html oscils :: D -> D -> D -> Sig -- | High precision oscillator. -- --
--   ares poscil xamp, xcps, ifn [, iphs]
--   kres poscil kamp, kcps, ifn [, iphs]
--   
-- -- doc: http://www.csounds.com/manual/html/poscil.html poscil :: Sig -> Sig -> Tab -> Sig -- | High precision oscillator with cubic interpolation. -- --
--   ares poscil3 xamp, xcps, ifn [, iphs]
--   kres poscil3 kamp, kcps, ifn [, iphs]
--   
-- -- doc: http://www.csounds.com/manual/html/poscil3.html poscil3 :: Sig -> Sig -> Tab -> Sig -- | oscil reads table ifn sequentially and repeatedly at a frequency xcps. -- The amplitude is scaled by xamp. -- --
--   ares oscil xamp, xcps, ifn [, iphs]
--   kres oscil kamp, kcps, ifn [, iphs]
--   
-- -- doc: http://www.csounds.com/manual/html/oscil.html oscil :: Sig -> Sig -> Tab -> Sig -- | oscili reads table ifn sequentially and repeatedly at a frequency -- xcps. The amplitude is scaled by xamp. Linear interpolation is applied -- for table look up from internal phase values. -- --
--   ares oscili xamp, xcps, ifn [, iphs]
--   kres oscili kamp, kcps, ifn [, iphs]
--   
-- -- doc: http://www.csounds.com/manual/html/oscili.html oscili :: Sig -> Sig -> Tab -> Sig -- | oscil3 reads table ifn sequentially and repeatedly at a frequency -- xcps. The amplitude is scaled by xamp. Cubic interpolation is applied -- for table look up from internal phase values. -- --
--   ares oscil3 xamp, xcps, ifn [, iphs]
--   kres oscil3 kamp, kcps, ifn [, iphs]
--   
-- -- doc: http://www.csounds.com/manual/html/oscil3.html oscil3 :: Sig -> Sig -> Tab -> Sig -- | Output is a set of harmonically related sine partials. -- --
--   ares buzz xamp, xcps, knh, ifn [, iphs]
--   
-- -- doc: http://www.csounds.com/manual/html/buzz.html buzz :: Sig -> Sig -> Sig -> Tab -> Sig -- | Output is a set of harmonically related cosine partials. -- --
--   ares gbuzz xamp, xcps, knh, klh, kmul, ifn [, iphs]
--   
-- -- doc: http://www.csounds.com/manual/html/gbuzz.html gbuzz :: Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Sig -- | Generates a set of impulses of amplitude kamp separated by kintvl -- seconds (or samples if kintvl is negative). The first impulse is -- generated after a delay of ioffset seconds. -- --
--   ares mpulse kamp, kintvl [, ioffset]
--   
-- -- doc: http://www.csounds.com/manual/html/mpulse.html mpulse :: Sig -> Sig -> Sig -- | Implementation of a band limited, analog modeled oscillator, based on -- integration of band limited impulses. vco can be used to simulate a -- variety of analog wave forms. -- --
--   ares vco xamp, xcps, iwave, kpw [, ifn] [, imaxd] [, ileak] [, inyx] \
--       [, iphs] [, iskip]
--   
-- -- doc: http://www.csounds.com/manual/html/vco.html vco :: Sig -> Sig -> D -> Sig -> Sig -- | vco2 is similar to vco. But the implementation uses pre-calculated -- tables of band-limited waveforms (see also GEN30) rather than -- integrating impulses. This opcode can be faster than vco (especially -- if a low control-rate is used) and also allows better sound quality. -- Additionally, there are more waveforms and oscillator phase can be -- modulated at k-rate. The disadvantage is increased memory usage. For -- more details about vco2 tables, see also vco2init and vco2ft. -- --
--   ares vco2 kamp, kcps [, imode] [, kpw] [, kphs] [, inyx]
--   
-- -- doc: http://www.csounds.com/manual/html/vco2.html vco2 :: Sig -> Sig -> Sig -- | Produce a normalized moving phase value. -- --
--   ares phasor xcps [, iphs]
--   kres phasor kcps [, iphs]
--   
-- -- doc: http://www.csounds.com/manual/html/phasor.html phasor :: Sig -> Sig -- | Produces a moving phase value between zero and one and an extra -- impulse output (sync out) whenever its phase value crosses or -- is reset to zero. The phase can be reset at any time by an impulse on -- the sync in parameter. -- --
--   aphase, asyncout syncphasor xcps, asyncin, [, iphs]
--   
-- -- doc: http://www.csounds.com/manual/html/syncphasor.html syncphasor :: Sig -> Sig -> (Sig, Sig) -- | Output is a controlled random number series between -amp and +amp -- --
--   ares rand xamp [, iseed] [, isel] [, ioffset]
--   kres rand xamp [, iseed] [, isel] [, ioffset]
--   
-- -- doc: http://www.csounds.com/manual/html/rand.html rand :: Sig -> SE Sig -- | Generates a controlled random number series with interpolation between -- each new number. -- --
--   ares randi xamp, xcps [, iseed] [, isize] [, ioffset]
--   kres randi kamp, kcps [, iseed] [, isize] [, ioffset]
--   
-- -- doc: http://www.csounds.com/manual/html/randi.html randi :: Sig -> Sig -> SE Sig -- | Generates random numbers and holds them for a period of time. -- --
--   ares randh xamp, xcps [, iseed] [, isize] [, ioffset]
--   kres randh kamp, kcps [, iseed] [, isize] [, ioffset]
--   
-- -- doc: http://www.csounds.com/manual/html/randh.html randh :: Sig -> Sig -> SE Sig -- | 31-bit bipolar random opcodes with controllable distribution. These -- units are portable, i.e. using the same seed value will generate the -- same random sequence on all systems. The distribution of --generated -- random numbers can be varied at k-rate. -- --
--   ax rnd31 kscl, krpow [, iseed]
--   ix rnd31 iscl, irpow [, iseed]
--   kx rnd31 kscl, krpow [, iseed]
--   
-- -- doc: http://www.csounds.com/manual/html/rnd31.html rnd31 :: Sig -> Sig -> SE Sig -- | Generates is a controlled pseudo-random number series between min and -- max values. -- --
--   ax random kscl, krpow
--   ix random iscl, irpow
--   kx random kscl, krpow
--   
-- -- doc: http://www.csounds.com/manual/html/random.html random :: Sig -> Sig -> SE Sig -- | Generates a user-controlled random number series with interpolation -- between each new number. -- --
--   ares randomi kmin, kmax, xcps [,imode] [,ifirstval]
--   kres randomi kmin, kmax, kcps [,imode] [,ifirstval]
--   
-- -- doc: http://www.csounds.com/manual/html/randomi.html randomi :: Sig -> Sig -> Sig -> SE Sig -- | Generates random numbers with a user-defined limit and holds them for -- a period of time. -- --
--   ares randomh kmin, kmax, xcps [,imode] [,ifirstval]
--   kres randomh kmin, kmax, kcps [,imode] [,ifirstval]
--   
-- -- doc: http://www.csounds.com/manual/html/randomh.html randomh :: Sig -> Sig -> Sig -> SE Sig -- | Generates approximate pink noise (-3dB/oct response) by one of two -- different methods: -- -- -- --
--   ares pinkish xin [, imethod] [, inumbands] [, iseed] [, iskip]
--   
-- -- doc: http://www.csounds.com/manual/html/pinkish.html pinkish :: Sig -> SE Sig -- | A white noise generator with an IIR lowpass filter. -- --
--   ares noise xamp, kbeta
--   
-- -- doc: http://www.csounds.com/manual/html/noise.html noise :: Sig -> Sig -> SE Sig -- | Trace a series of line segments between specified points. -- --
--   ares linseg ia, idur1, ib [, idur2] [, ic] [...]
--   kres linseg ia, idur1, ib [, idur2] [, ic] [...]
--   
-- -- doc: http://www.csounds.com/manual/html/linseg.html linseg :: [D] -> Sig -- | Trace a series of exponential segments between specified points. -- --
--   ares expseg ia, idur1, ib [, idur2] [, ic] [...]
--   kres expseg ia, idur1, ib [, idur2] [, ic] [...]
--   
-- -- doc: http://www.csounds.com/manual/html/expseg.html expseg :: [D] -> Sig -- | Trace a series of line segments between specified points including a -- release segment. -- --
--   ares linsegr ia, idur1, ib [, idur2] [, ic] [...], irel, iz
--   kres linsegr ia, idur1, ib [, idur2] [, ic] [...], irel, iz
--   
-- -- doc: http://www.csounds.com/manual/html/linsegr.html linsegr :: [D] -> D -> D -> Sig -- | Trace a series of exponential segments between specified points -- including a release segment. -- --
--   ares expsegr ia, idur1, ib [, idur2] [, ic] [...], irel, iz
--   kres expsegr ia, idur1, ib [, idur2] [, ic] [...], irel, iz
--   
-- -- doc: http://www.csounds.com/manual/html/expsegr.html expsegr :: [D] -> D -> D -> Sig -- | Generate control signal consisting of held segments delimited by two -- or more specified points. The entire envelope is looped at kfreq rate. -- Each parameter can be varied at k-rate. -- --
--   ksig lpshold kfreq, ktrig, ktime0, kvalue0  [, ktime1] [, kvalue1] \
--         [, ktime2] [, kvalue2] [...]
--   
-- -- doc: http://www.csounds.com/manual/html/lpshold.html lpshold :: Sig -> Sig -> [Sig] -> Sig -- | Generate control signal consisting of linear segments delimited by two -- or more specified points. The entire envelope is looped at kfreq rate. -- Each parameter can be varied at k-rate. -- --
--   ksig loopseg kfreq, ktrig, iphase, ktime0, kvalue0 [, ktime1] [, kvalue1] \
--         [, ktime2] [, kvalue2] [...]
--   
-- -- doc: http://www.csounds.com/manual/html/loopseg.html loopseg :: Sig -> Sig -> [Sig] -> Sig -- | Generate control signal consisting of controllable exponential -- segments or linear segments delimited by two or more specified points. -- The entire envelope is looped at kfreq rate. Each parameter can be -- varied at k-rate. -- --
--   ksig looptseg kfreq, ktrig, ktime0, kvalue0, ktype0, [, ktime1] [, kvalue1] [,ktype1] \
--         [, ktime2] [, kvalue2] [,ktype2] [...][, ktimeN] [, kvalueN]
--   
-- -- doc: http://www.csounds.com/manual/html/looptseg.html looptseg :: Sig -> Sig -> [Sig] -> Sig -- | Apply a stright line rise and decay pattern to an imput amp signal. -- --
--   kr linen kamp, iris, idur, idec
--   ar linen xamp, iris, idur, idec
--   
-- -- doc: http://www.csounds.com/manual/html/linen.html linen :: Sig -> D -> D -> D -> Sig -- | Apply a stright line rise then an exponential decay decay while the -- note is extended in time. -- --
--   kr linenr kamp, iris, idur, iatdec
--   ar linenr xamp, iris, idur, iatdec
--   
-- -- doc: http://www.csounds.com/manual/html/linenr.html linenr :: Sig -> D -> D -> D -> Sig -- | Apply an envelope consisting of 3 segments: -- -- -- --
--   kr envlpx kamp, irise, idur, idec, ifn, iatss, iatdec, [ixmod]
--   ar envlpx xamp, irise, idur, idec, ifn, iatss, iatdec, [ixmod]
--   
-- -- doc: http://www.csounds.com/manual/html/envlpx.html envlpx :: Sig -> D -> D -> D -> Tab -> D -> D -> Sig -- | This is an interpolating variable time delay, it is not very different -- from the existing implementation (deltapi), it is only easier to use. -- --
--   ares vdelay asig, adel, imaxdel [, iskip]
--   
-- -- doc: http://www.csounds.com/manual/html/vdelay.html vdelay :: Sig -> Sig -> D -> Sig -- | A variable delay opcode with high quality interpolation. -- --
--   aout vdelayx ain, adl, imd, iws [, ist]
--   
-- -- doc: http://www.csounds.com/manual/html/vdelayx.html vdelayx :: Sig -> Sig -> D -> D -> Sig -- | Variable delay opcodes with high quality interpolation. -- -- aout vdelayxw ain, adl, imd, iws [, ist] -- -- doc: http://www.csounds.com/manual/html/vdelayxw.html vdelayxw :: Sig -> Sig -> D -> D -> Sig -- | Reads from an automatically established digital delay line. -- --
--   ares delayr idlt [, iskip]
--   
-- -- doc: http://www.csounds.com/manual/html/delayr.html delayr :: D -> SE Sig -- | Writes the audio signal to a digital delay line. -- --
--   delayw asig
--   
-- -- doc: http://www.csounds.com/manual/html/delayw.html delayw :: Sig -> SE () -- | Tap a delay line at variable offset times. -- --
--   ares deltap kdlt
--   
-- -- doc: http://www.csounds.com/manual/html/deltap.html deltap :: Sig -> SE Sig -- | Taps a delay line at variable offset times, uses interpolation. -- --
--   ares deltapi xdlt
--   
-- -- doc: http://www.csounds.com/manual/html/deltapi.html deltapi :: Sig -> SE Sig -- | Taps a delay line at variable offset times, uses cubic interpolation. -- --
--   ares deltap3 xdlt
--   
-- -- doc: http://www.csounds.com/manual/html/deltap3.html deltap3 :: Sig -> SE Sig -- | deltapx is similar to deltapi or deltap3. However, it allows higher -- quality interpolation. This opcode can read from and write to a -- delayr/delayw delay line with interpolation. -- --
--   aout deltapx adel, iwsize
--   
-- -- doc: http://www.csounds.com/manual/html/deltapx.html deltapx :: Sig -> D -> SE Sig -- | deltapxw mixes the input signal to a delay line. This opcode can be -- mixed with reading units (deltap, deltapn, deltapi, deltap3, and -- deltapx) in any order; the actual delay time is the difference of the -- read and write time. This opcode can read from and write to a -- delayr/delayw delay line with interpolation. -- --
--   deltapxw ain, adel, iwsize
--   
-- -- doc: http://www.csounds.com/manual/html/deltapxw.html deltapxw :: Sig -> Sig -> D -> SE () -- | A first-order recursive low-pass filter with variable frequency -- response. -- -- tone is a 1 term IIR filter. Its formula is: -- --
--   yn = c1 * xn + c2 * yn-1
--   
-- -- where -- -- -- --
--   ares tone asig, khp [, iskip]
--   
-- -- doc: http://www.csounds.com/manual/html/tone.html tone :: Sig -> Sig -> Sig -- | Implementation of a second-order low-pass Butterworth filter. -- --
--   ares butlp asig, kfreq [, iskip]
--   
-- -- doc: http://www.csounds.com/manual/html/butterlp.html butlp :: Sig -> Sig -> Sig -- | A hi-pass filter whose transfer functions are the complements of the -- tone opcode. -- --
--   ares atone asig, khp [, iskip]
--   
-- -- doc: http://www.csounds.com/manual/html/atone.html atone :: Sig -> Sig -> Sig -- | Implementation of second-order high-pass Butterworth filter. -- --
--   ares buthp asig, kfreq [, iskip]
--   
-- -- doc: http://www.csounds.com/manual/html/butterhp.html buthp :: Sig -> Sig -> Sig -- | A second-order resonant filter. -- --
--   ares reson asig, kcf, kbw [, iscl] [, iskip]
--   
-- -- doc: http://www.csounds.com/manual/html/reson.html reson :: Sig -> Sig -> Sig -> Sig -- | Implementation of a second-order band-pass Butterworth filter. -- --
--   ares butbp asig, kfreq, kband [, iskip]
--   
-- -- doc: http://www.csounds.com/manual/html/butterbp.html butbp :: Sig -> Sig -> Sig -> Sig -- | A notch filter whose transfer functions are the complements of the -- reson opcode. -- --
--   ares areson asig, kcf, kbw [, iscl] [, iskip]
--   
-- -- doc: http://www.csounds.com/manual/html/areson.html areson :: Sig -> Sig -> Sig -> Sig -- | Implementation of a second-order band-reject Butterworth filter. -- --
--   ares butbr asig, kfreq, kband [, iskip]
--   
-- -- doc: http://www.csounds.com/manual/html/butterbr.html butbr :: Sig -> Sig -> Sig -> Sig -- | Applies portamento to a step-valued control signal. -- --
--   kres port ksig, ihtim [, isig]
--   
-- -- doc: http://www.csounds.com/manual/html/port.html port :: Sig -> D -> Sig -- | Applies portamento to a step-valued control signal. -- --
--   kres portk ksig, khtim [, isig]
--   
-- -- doc: http://www.csounds.com/manual/html/portk.html portk :: Sig -> Sig -> Sig -- | Moogladder is an new digital implementation of the Moog ladder filter -- based on the work of Antti Huovilainen, described in the paper -- Non-Linear Digital Implementation of the Moog Ladder Filter -- (Proceedings of DaFX04, Univ of Napoli). This implementation is -- probably a more accurate digital representation of the original -- analogue filter. -- --
--   asig moogladder ain, kcf, kres[, istor]
--   
-- -- doc: http://www.csounds.com/manual/html/moogladder.html moogladder :: Sig -> Sig -> Sig -> Sig -- | Variably reverberates an input signal with a “colored” frequency -- response. -- --
--   ares vcomb asig, krvt, xlpt, imaxlpt [, iskip] [, insmps]
--   
-- -- doc: http://www.csounds.com/manual/html/vcomb.html vcomb :: Sig -> Sig -> Sig -> D -> Sig -- | A second-order multi-mode filter. -- --
--   ares bqrez asig, xfco, xres [, imode] [, iskip]
--   
-- -- doc: http://www.csounds.com/manual/html/bqrez.html bqrez :: Sig -> Sig -> Sig -> Sig -- | Reverberates an input signal with a “colored” frequency response. -- --
--   ares comb asig, krvt, ilpt [, iskip] [, insmps]
--   
-- -- doc: http://www.csounds.com/manual/html/comb.html comb :: Sig -> Sig -> D -> Sig -- | freeverb is a stereo reverb unit based on Jezar's public domain C++ -- sources, composed of eight parallel comb filters on both channels, -- followed by four allpass units in series. The filters on the right -- channel are slightly detuned compared to the left channel in order to -- create a stereo effect. -- --
--   aoutL, aoutR freeverb ainL, ainR, kRoomSize, kHFDamp[, iSRate[, iSkip]] 
--   
-- -- doc: http://www.csounds.com/manual/html/freeverb.html freeverb :: Sig -> Sig -> Sig -> Sig -> (Sig, Sig) -- | 8 delay line stereo FDN reverb, with feedback matrix based upon -- physical modeling scattering junction of 8 lossless waveguides of -- equal characteristic impedance. Based on Csound orchestra version by -- Sean Costello. -- --
--   aoutL, aoutR reverbsc ainL, ainR, kfblvl, kfco[, israte[, ipitchm[, iskip]]] 
--   
-- -- doc: http://www.csounds.com/manual/html/reverbsc.html reverbsc :: Sig -> Sig -> Sig -> Sig -> (Sig, Sig) -- | Reverberates an input signal with a “natural room” frequency response. -- --
--   ares reverb asig, krvt [, iskip]
--   
-- -- doc: http://www.csounds.com/manual/html/reverb.html reverb :: Sig -> Sig -> Sig -- | This is a reverberator consisting of 6 parallel comb-lowpass filters -- being fed into series of 5 allpass filters. -- --
--   ares reverb2 asig, ktime, khdif
--   
-- -- doc: http://www.csounds.com/manual/html/reverb2.html reverb2 :: Sig -> Sig -> Sig -> Sig -- | This is a reverberator consisting of 6 parallel comb-lowpass filters -- being fed into a series of 5 allpass filters. nreverb replaces reverb2 -- (version 3.48) and so both opcodes are identical. -- --
--   ares nreverb asig, ktime, khdif [, iskip] [,inumCombs] [, ifnCombs] \
--         [, inumAlpas] [, ifnAlpas]
--   
-- -- doc: http://www.csounds.com/manual/html/nreverb.html nreverb :: Sig -> Sig -> Sig -> Sig -- | babo stands for ball-within-the-box. It is a physical model -- reverberator based on the paper by Davide Rocchesso The Ball within -- the Box: a sound-processing metaphor, Computer Music Journal, Vol -- 19, N.4, pp.45-47, Winter 1995. -- -- The resonator geometry can be defined, along with some response -- characteristics, the position of the listener within the resonator, -- and the position of the sound source. -- --
--   a1, a2 babo asig, ksrcx, ksrcy, ksrcz, irx, iry, irz [, idiff] [, ifno]
--   
-- -- doc: http://www.csounds.com/manual/html/babo.html babo :: Sig -> Sig -> Sig -> Sig -> D -> D -> D -> (Sig, Sig) -- | Determines the root-mean-square amplitude of an audio signal. It -- low-pass filters the actual value, to average in the manner of a VU -- meter. -- --
--   kres rms asig [, ihp] [, iskip]
--   
-- -- doc: http://www.csounds.com/manual/html/rms.html rms :: Sig -> Sig -- | The rms power of asig can be interrogated, set, or adjusted to match -- that of a comparator signal. -- --
--   ares balance asig, acomp [, ihp] [, iskip]
--   
-- -- doc: http://www.csounds.com/manual/html/balance.html balance :: Sig -> Sig -> Sig -- | Envelope follower unit generator. -- --
--   ares follow asig, idt
--   
-- -- doc: http://www.csounds.com/manual/html/follow.html follow :: Sig -> D -> Sig -- | A controllable envelope extractor using the algorithm attributed to -- Jean-Marc Jot. -- --
--   ares follow2 asig, katt, krel
--   
-- -- doc: http://www.csounds.com/manual/html/follow2.html follow2 :: Sig -> Sig -> Sig -> Sig -- | These opcodes maintain the output k-rate variable as the peak absolute -- level so far received. -- --
--   kres peak asig
--   kres peak ksig
--   
-- -- doc: http://www.csounds.com/manual/html/peak.html peak :: Sig -> Sig -- | max_k outputs the local maximum (or minimum) value of the incoming -- asig signal, checked in the time interval between ktrig has become -- true twice. -- --
--   knumkout max_k asig, ktrig, itype
--   
-- -- doc: http://www.csounds.com/manual/html/max_k.html max_k :: Sig -> Sig -> D -> Sig -- | ptrack takes an input signal, splits it into ihopsize blocks and using -- a STFT method, extracts an estimated pitch for its fundamental -- frequency as well as estimating the total amplitude of the signal in -- dB, relative to full-scale (0dB). The method implies an analysis -- window size of 2*ihopsize samples (overlaping by 1/2 window), which -- has to be a power-of-two, between 128 and 8192 (hopsizes between 64 -- and 4096). Smaller windows will give better time precision, but worse -- frequency accuracy (esp. in low fundamentals).This opcode is based on -- an original algorithm by M. Puckette. -- --
--   kcps, kamp ptrack asig, ihopsize[,ipeaks]
--   
-- -- doc: http://www.csounds.com/manual/html/ptrack.html ptrack :: Sig -> D -> (Sig, Sig) -- | Using the same techniques as spectrum and specptrk, pitch tracks the -- pitch of the signal in octave point decimal form, and amplitude in dB. -- --
--   koct, kamp pitch asig, iupdte, ilo, ihi, idbthresh [, ifrqs] [, iconf] \
--         [, istrt] [, iocts] [, iq] [, inptls] [, irolloff] [, iskip]
--   
-- -- doc: http://www.csounds.com/manual/html/pitch.html pitch :: Sig -> D -> D -> D -> D -> (Sig, Sig) -- | Follows the pitch of a signal based on the AMDF method (Average -- Magnitude Difference Function). Outputs pitch and amplitude tracking -- signals. The method is quite fast and should run in realtime. This -- technique usually works best for monophonic signals. -- --
--   kcps, krms pitchamdf asig, imincps, imaxcps [, icps] [, imedi] \
--         [, idowns] [, iexcps] [, irmsmedi]
--   
-- -- doc: http://www.csounds.com/manual/html/pitchamdf.html pitchamdf :: Sig -> D -> D -> (Sig, Sig) -- | Estimate the tempo of beat patterns in a control signal. -- --
--   ktemp tempest kin, iprd, imindur, imemdur, ihp, ithresh, ihtim, ixfdbak, \
--         istartempo, ifn [, idisprd] [, itweek]
--   
-- -- doc: http://www.csounds.com/manual/html/tempest.html tempest :: Sig -> D -> D -> D -> D -> D -> D -> D -> D -> Tab -> Sig -- | This unit functions as an audio compressor, limiter, expander, or -- noise gate, using either soft-knee or hard-knee mapping, and with -- dynamically variable performance characteristics. It takes two audio -- input signals, aasig and acsig, the first of which is modified by a -- running analysis of the second. Both signals can be the same, or the -- first can be modified by a different controlling signal. -- -- compress first examines the controlling acsig by performing envelope -- detection. This is directed by two control values katt and krel, -- defining the attack and release time constants (in seconds) of the -- detector. The detector rides the peaks (not the RMS) of the control -- signal. Typical values are .01 and .1, the latter usually being -- similar to ilook. -- -- The running envelope is next converted to decibels, then passed -- through a mapping function to determine what compresser action (if -- any) should be taken. The mapping function is defined by four decibel -- control values. These are given as positive values, where 0 db -- corresponds to an amplitude of 1, and 90 db corresponds to an -- amplitude of 32768. -- --
--   ar compress aasig, acsig, kthresh, kloknee, khiknee, kratio, katt, krel, ilook
--   
-- -- doc: http://www.csounds.com/manual/html/compress.html compress :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> D -> Sig -- | This opcode dynamically modifies a gain value applied to the input -- sound ain by comparing its power level to a given threshold level. The -- signal will be compressed/expanded with different factors regarding -- that it is over or under the threshold. -- --
--   ares dam asig, kthreshold, icomp1, icomp2, irtime, iftime
--   
-- -- doc: http://www.csounds.com/manual/html/dam.html dam :: Sig -> Sig -> D -> D -> D -> D -> Sig -- | Clips an a-rate signal to a predefined limit, in a “soft” manner, -- using one of three methods. -- --
--   ares clip asig, imeth, ilimit [, iarg]
--   
-- -- doc: http://www.csounds.com/manual/html/clip.html clip :: Sig -> D -> D -> Sig -- | Sets the lower and upper limits of the value it processes. -- --
--   ares limit asig, klow, khigh
--   ires limit isig, ilow, ihigh
--   kres limit ksig, klow, khigh
--   
-- -- doc: http://www.csounds.com/manual/html/limit.html limit :: Sig -> Sig -> Sig -> Sig -- | Performs a sample-and-hold operation on its input. -- --
--   ares samphold asig, agate [, ival] [, ivstor]
--   kres samphold ksig, kgate [, ival] [, ivstor]
--   
-- -- doc: http://www.csounds.com/manual/html/samphold.html samphold :: Sig -> Sig -> Sig -- | Access values of the current buffer of an a-rate variable by indexing. -- Useful for doing sample-by-sample manipulation at k-rate without using -- setksmps 1. -- --
--   kval vaget kndx, avar
--   
-- -- doc: http://www.csounds.com/manual/html/vaget.html vaget :: Sig -> Sig -> Sig -- | Write values into the current buffer of an a-rate variable at the -- given index. Useful for doing sample-by-sample manipulation at k-rate -- without using setksmps 1. -- --
--   vaset kval, kndx, avar
--   
-- -- doc: http://www.csounds.com/manual/html/vaset.html vaset :: Sig -> Sig -> Sig -> SE () -- | Distribute an audio signal amongst four channels with localization -- control. -- --
--   a1, a2, a3, a4 pan asig, kx, ky, ifn [, imode] [, ioffset]
--   
-- -- doc: http://www.csounds.com/manual/html/pan.html pan :: Sig -> Sig -> Sig -> Tab -> (Sig, Sig, Sig, Sig) -- | Distribute an audio signal across two channels with a choice of -- methods. -- --
--   a1, a2 pan2 asig, xp [, imode]
--   
-- -- doc: http://www.csounds.com/manual/html/pan2.html pan2 :: Sig -> Sig -> (Sig, Sig) -- | This opcode takes a source signal and spatialises it in the 3 -- dimensional space around a listener using head related transfer -- function (HRTF) based filters. It produces a static output (azimuth -- and elevation parameters are i-rate), because a static source allows -- much more efficient processing than hrtfmove and hrtfmove2,. -- --
--   aleft, aright hrtfstat asrc, iAz, iElev, ifilel, ifiler [,iradius, isr]
--   
-- -- doc: http://www.csounds.com/manual/html/hrtfstat.html hrtfstat :: Sig -> D -> D -> Str -> Str -> (Sig, Sig) -- | This opcode takes a source signal and spatialises it in the 3 -- dimensional space around a listener by convolving the source with -- stored head related transfer function (HRTF) based filters. -- --
--   aleft, aright hrtfmove asrc, kAz, kElev, ifilel, ifiler [, imode, ifade, isr]
--   
-- -- doc: http://www.csounds.com/manual/html/hrtfmove.html hrtfmove :: Sig -> Sig -> Sig -> Str -> Str -> (Sig, Sig) -- | This opcode takes a source signal and spatialises it in the 3 -- dimensional space around a listener using head related transfer -- function (HRTF) based filters. -- --
--   aleft, aright hrtfmove2 asrc, kAz, kElev, ifilel, ifiler [,ioverlap, iradius, isr]
--   
-- -- doc: http://www.csounds.com/manual/html/hrtfmove2.html hrtfmove2 :: Sig -> Sig -> Sig -> Str -> Str -> (Sig, Sig) -- | Extend the duration of real-time generated events and handle their -- extra life (Usually for usage along with release instead of linenr, -- linsegr, etc). -- --
--   xtratim iextradur
--   
-- -- doc: http://www.csounds.com/manual/html/xtratim.html xtratim :: D -> SE () -- | Advanced Signal Processing module Csound.Opcode.Advanced -- | A basic frequency modulated oscillator. -- --
--   ares foscil xamp, kcps, xcar, xmod, kndx, ifn [, iphs]
--   
-- -- doc: http://www.csounds.com/manual/html/foscil.html foscil :: Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Sig -- | Basic frequency modulated oscillator with linear interpolation. -- --
--   ares foscili xamp, kcps, xcar, xmod, kndx, ifn [, iphs]
--   
-- -- doc: http://www.csounds.com/manual/html/foscili.html foscili :: Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Sig crossfm :: Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> (Sig, Sig) crossfmi :: Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> (Sig, Sig) crosspm :: Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> (Sig, Sig) crosspmi :: Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> (Sig, Sig) crossfmpm :: Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> (Sig, Sig) crossfmpmi :: Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> (Sig, Sig) -- | Distort an audio signal via waveshaping and optional clipping. -- --
--   ar distort asig, kdist, ifn[, ihp, istor]
--   
-- -- doc: http://www.csounds.com/manual/html/distort.html distort :: Sig -> Sig -> Tab -> Sig -- | Implementation of modified hyperbolic tangent distortion. distort1 can -- be used to generate wave shaping distortion based on a modification of -- the tanh function. -- --
--          exp(asig * (shape1 + pregain)) - exp(asig * (shape2 - pregain))
--   aout = ---------------------------------------------------------------
--          exp(asig * pregain)            + exp(-asig * pregain)
--   
-- --
--   ares distort1 asig, kpregain, kpostgain, kshape1, kshape2[, imode]
--   
-- -- doc: http://www.csounds.com/manual/html/distort1.html distort1 :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | The powershape opcode raises an input signal to a power with pre- and -- post-scaling of the signal so that the output will be in a predictable -- range. It also processes negative inputs in a symmetrical way to -- positive inputs, calculating a dynamic transfer function that is -- useful for waveshaping. -- --
--   aout powershape ain, kShapeAmount [, ifullscale]
--   
-- -- doc: http://www.csounds.com/manual/html/powershape.html powershape :: Sig -> Sig -> Sig -- | The polynomial opcode calculates a polynomial with a single a-rate -- input variable. The polynomial is a sum of any number of terms in the -- form kn*x^n where kn is the nth coefficient of the expression. These -- coefficients are k-rate values. -- --
--   aout polynomial ain, k0 [, k1 [, k2 [...]]]
--   
-- -- doc: http://www.csounds.com/manual/html/polynomial.html polynomial :: Sig -> [Sig] -> Sig -- | The chebyshevpoly opcode calculates the value of a polynomial -- expression with a single a-rate input variable that is made up of a -- linear combination of the first N Chebyshev polynomials of the first -- kind. Each Chebyshev polynomial, Tn(x), is weighted by a k-rate -- coefficient, kn, so that the opcode is calculating a sum of any number -- of terms in the form kn*Tn(x). Thus, the chebyshevpoly opcode allows -- for the waveshaping of an audio signal with a dynamic transfer -- function that gives precise control over the harmonic content of the -- output. -- --
--   aout chebyshevpoly ain, k0 [, k1 [, k2 [...]]]
--   
-- -- doc: http://www.csounds.com/manual/html/chebyshevpoly.html chebyshevpoly :: Sig -> [Sig] -> Sig -- | A user controlled flanger. -- --
--   ares flanger asig, adel, kfeedback [, imaxd]
--   
-- -- doc: http://www.csounds.com/manual/html/flanger.html flanger :: Sig -> Sig -> Sig -> Sig -- | Analyze an audio input and generate harmonizing voices in synchrony. -- --
--   ares harmon asig, kestfrq, kmaxvar, kgenfreq1, kgenfreq2, imode, \
--         iminfrq, iprd
--   
-- -- doc: http://www.csounds.com/manual/html/harmon.html harmon :: Sig -> Sig -> Sig -> Sig -> Sig -> D -> D -> D -> Sig -- | An implementation of iord number of first-order allpass filters in -- series. -- --
--   ares phaser1 asig, kfreq, kord, kfeedback [, iskip]
--   
-- -- doc: http://www.csounds.com/manual/html/phaser1.html phaser1 :: Sig -> Sig -> Sig -> Sig -> Sig -- | An implementation of iord number of second-order allpass filters in -- series. -- --
--   ares phaser2 asig, kfreq, kq, kord, kmode, ksep, kfeedback
--   
-- -- doc: http://www.csounds.com/manual/html/phaser2.html phaser2 :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | The pdclip opcode allows a percentage of the input range of a signal -- to be clipped to fullscale. It is similar to simply multiplying the -- signal and limiting the range of the result, but pdclip allows you to -- think about how much of the signal range is being distorted instead of -- the scalar factor and has a offset parameter for assymetric clipping -- of the signal range. pdclip is also useful for remapping phasors for -- phase distortion synthesis. -- --
--   aout pdclip ain, kWidth, kCenter [, ibipolar [, ifullscale]]
--   
-- -- doc: http://www.csounds.com/manual/html/pdclip.html pdclip :: Sig -> Sig -> Sig -> Sig -- | The pdhalf opcode is designed to emulate the classic phase -- distortion synthesis method of the Casio CZ-series of synthesizers -- from the mid-1980's. This technique reads the first and second halves -- of a function table at different rates in order to warp the waveform. -- For example, pdhalf can smoothly transform a sine wave into something -- approximating the shape of a saw wave. -- --
--   aout pdhalf ain, kShapeAmount [, ibipolar [, ifullscale]]
--   
-- -- doc: http://www.csounds.com/manual/html/pdhalf.html pdhalf :: Sig -> Sig -> Sig -> Sig -- | The pdhalfy opcode is a variation on the phase distortion synthesis -- method of the pdhalf opcode. It is useful for distorting a phasor in -- order to read two unequal portions of a table in the same number of -- samples. -- --
--   aout pdhalfy ain, kShapeAmount [, ibipolar [, ifullscale]]
--   
-- -- doc: http://www.csounds.com/manual/html/pdhalfy.html pdhalfy :: Sig -> Sig -> Sig -> Sig -- | A fast and robust method for approximating sound propagation, -- achieving convincing Doppler shifts without having to solve equations. -- The method computes frequency shifts based on reading an input delay -- line at a delay time computed from the distance between source and mic -- and the speed of sound. One instance of the opcode is required for -- each dimension of space through which the sound source moves. If the -- source sound moves at a constant speed from in front of the -- microphone, through the microphone, to behind the microphone, then the -- output will be frequency shifted above the source frequency at a -- constant frequency while the source approaches, then discontinuously -- will be shifted below the source frequency at a constant frequency as -- the source recedes from the microphone. If the source sound moves at a -- constant speed through a point to one side of the microphone, then the -- rate of change of position will not be constant, and the familiar -- Doppler frequency shift typical of a siren or engine approaching and -- receding along a road beside a listener will be heard. -- --
--   ashifted doppler asource, ksourceposition, kmicposition [, isoundspeed, ifiltercutoff]
--   
-- -- doc: http://www.csounds.com/manual/html/doppler.html doppler :: Sig -> Sig -> Sig -> Sig -- | Audio output is a succession of sinusoid bursts initiated at frequency -- xfund with a spectral peak at xform. For xfund above 25 Hz these burts -- produce a speech-like formant with spectral characteristics determined -- by the k-input parameters. For lower fundamentals this generator -- provides a special form of granular synthesis. -- --
--   ar fof xamp, xfund, xform, koct, kband, kris, kdur, kdec, iolaps, ifna, ifnb, itotdur, [iphs, ifmode]
--   
-- -- doc: http://www.csounds.com/manual/html/fof.html fof :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> D -> Tab -> Tab -> D -> Sig -- | Convolution based on a uniformly partitioned overlap-save algorithm. -- Compared to the convolve opcode, pconvolve has these benefits: -- -- -- --
--   ar1 [, ar2] [, ar3] [, ar4] pconvolve ain, ifilcod [, ipartitionsize, ichannel]
--   
-- -- doc: http://www.csounds.com/manual/html/pconvolve.html pconvolve :: CsdTuple a => Sig -> Str -> a -- | Output is the convolution of signal ain and the impulse response -- contained in ifilcod. If more than one output signal is supplied, each -- will be convolved with the same impulse response. Note that it is -- considerably more efficient to use one instance of the operator when -- processing a mono input to create stereo, or quad, outputs. -- --
--   ar1 [, ar2] [, ar3] [, ar4] convolve ain, ifilcod [, ichannel]
--   
-- -- doc: http://www.csounds.com/manual/html/convolve.html convolve :: CsdTuple a => Sig -> D -> a -- | Low latency multichannel convolution, using a function table as -- impulse response source. The algorithm is to split the impulse -- response to partitions of length determined by the iplen parameter, -- and delay and mix partitions so that the original, full length impulse -- response is reconstructed without gaps. The output delay (latency) is -- iplen samples, and does not depend on the control rate, unlike in the -- case of other convolve opcodes. -- --
--   a1[, a2[, a3[, ... a8]]] ftconv ain, ift, iplen[, iskipsamples \
--        [, iirlen[, iskipinit]]]
--   
-- -- doc: http://www.csounds.com/manual/html/ftconv.html ftconv :: CsdTuple a => Sig -> Tab -> D -> a -- | A direct convolution opcode. -- --
--   ares dconv asig, isize, ifn
--   
-- -- doc: http://www.csounds.com/manual/html/dconv.html dconv :: Sig -> D -> Tab -> Sig -- | Generate an fsig from a mono audio source ain, using phase vocoder -- overlap-add analysis. -- --
--   fsig pvsanal ain, ifftsize, ioverlap, iwinsize, iwintype [, iformat] [, iinit]
--   
-- -- doc: http://www.csounds.com/manual/html/pvsanal.html pvsanal :: Sig -> D -> D -> D -> D -> Spec -- | pvstanal implements phase vocoder analysis by reading function tables -- containing sampled-sound sources, with GEN01, and pvstanal will accept -- deferred allocation tables. -- -- This opcode allows for time and frequency-independent scaling. Time is -- advanced internally, but controlled by a tempo scaling parameter; when -- an onset is detected, timescaling is momentarily stopped to avoid -- smearing of attacks. The quality of the effect is generally improved -- with phase locking switched on. -- -- pvstanal will also scale pitch, independently of frequency, using a -- transposition factor (k-rate). -- --
--   fsig pvstanal ktimescal, kamp, kpitch, ktab, [kdetect, kwrap, ioffset,ifftsize, ihop, idbthresh]
--   
-- -- doc: http://www.csounds.com/manual/html/pvstanal.html pvstanal :: Sig -> Sig -> Sig -> Sig -> Spec -- | Resynthesise phase vocoder data (f-signal) using a FFT overlap-add. -- --
--   ares pvsynth fsrc, [iinit]
--   
-- -- doc: http://www.csounds.com/manual/html/pvsynth.html pvsynth :: Spec -> Sig -- | Resynthesize using a fast oscillator-bank. -- --
--   ares pvsadsyn fsrc, inoscs, kfmod [, ibinoffset] [, ibinincr] [, iinit]
--   
-- -- doc: http://www.csounds.com/manual/html/pvsadsyn.html pvsadsyn :: Spec -> D -> Sig -> Sig -- | This opcode writes a fsig to a PVOCEX file (which in turn can be read -- by pvsfread or other programs that support PVOCEX file input). -- --
--   pvsfwrite fsig, ifile
--   
-- -- doc: http://www.csounds.com/manual/html/pvsfwrite.html pvswrite :: Spec -> Str -> SE () -- | Create an fsig stream by reading a selected channel from a PVOC-EX -- analysis file loaded into memory, with frame interpolation. Only -- format 0 files (amplitude+frequency) are currently supported. The -- operation of this opcode mirrors that of pvoc, but outputs an fsig -- instead of a resynthesized signal. -- --
--   fsig pvsfread ktimpt, ifn [, ichan]
--   
-- -- doc: http://www.csounds.com/manual/html/pvsfread.html pvsfread :: Sig -> Str -> Spec -- | Create an fsig stream by reading a selected channel from a PVOC-EX -- analysis file, with frame interpolation. -- --
--   fsig pvsdiskin SFname,ktscal,kgain[,ioffset, ichan]
--   
-- -- doc: http://www.csounds.com/manual/html/pvsdiskin.html pvsdiskin :: Str -> Sig -> Sig -> Spec -- | Get format information about fsrc, whether created by an opcode such -- as pvsanal, or obtained from a PVOCEX file by pvsfread. This -- information is available at init time, and can be used to set -- parameters for other pvs opcodes, and in particular for creating -- function tables (e.g. for pvsftw), or setting the number of -- oscillators for pvsadsyn. -- --
--   ioverlap, inumbins, iwinsize, iformat pvsinfo fsrc
--   
-- -- doc: http://www.csounds.com/manual/html/pvsinfo.html pvsinfo :: Spec -> (D, D, D, D) -- | Obtain the amp and freq values off a PVS signal bin as k-rate -- variables. -- --
--   kamp, kfr pvsbin fsig, kbin
--   
-- -- doc: http://www.csounds.com/manual/html/pvsbin.html pvsbin :: Spec -> Sig -> (Sig, Sig) -- | Calculate the spectral centroid of a signal from its discrete Fourier -- transform. -- --
--   kcent pvscent fsig
--   
-- -- doc: http://www.csounds.com/manual/html/pvscent.html pvscent :: Spec -> Sig -- | Scale the frequency components of a pv stream, resulting in pitch -- shift. Output amplitudes can be optionally modified in order to -- attempt formant preservation. -- --
--   fsig pvscale fsigin, kscal[, kkeepform, kgain, kcoefs]
--   
-- -- doc: http://www.csounds.com/manual/html/pvscale.html pvscale :: Spec -> Sig -> Spec -- | Shift the frequency components of a pv stream, stretching/compressing -- its spectrum. -- --
--   fsig pvshift fsigin, kshift, klowest[, kkeepform, igain, kcoefs]
--   
-- -- doc: http://www.csounds.com/manual/html/pvshift.html pvshift :: Spec -> Sig -> Sig -> Spec -- | Filter the pvoc frames, passing bins whose frequency is within a band, -- and with linear interpolation for transitional bands. -- --
--   fsig pvsbandp fsigin, xlowcut, xlowfull, \
--         xhighfull, xhighcut[, ktype]
--   
-- -- doc: http://www.csounds.com/manual/html/pvsbandp.html pvsbandp :: Spec -> Sig -> Sig -> Sig -> Sig -> Spec -- | Filter the pvoc frames, rejecting bins whose frequency is within a -- band, and with linear interpolation for transitional bands. -- --
--   fsig pvsbandr fsigin, xlowcut, xlowfull, \
--         xhighfull, xhighcut[, ktype]
--   
-- -- doc: http://www.csounds.com/manual/html/pvsbandr.html pvsbandr :: Spec -> Sig -> Sig -> Sig -> Sig -> Spec -- | Mix seamlessly two pv signals. This opcode combines the most -- prominent components of two pvoc streams into a single mixed stream. -- --
--   fsig pvsmix fsigin1, fsigin2
--   
-- -- doc: http://www.csounds.com/manual/html/pvsmix.html pvsmix :: Spec -> Spec -> Spec -- | Performs cross-synthesis between two source fsigs. -- --
--   fsig pvscross fsrc, fdest, kamp1, kamp2
--   
-- -- doc: http://www.csounds.com/manual/html/pvscross.html pvscross :: Spec -> Spec -> Sig -> Sig -> Spec -- | Multiply amplitudes of a pvoc stream by those of a second pvoc stream, -- with dynamic scaling. -- --
--   fsig pvsfilter fsigin, fsigfil, kdepth[, igain]
--   
-- -- doc: http://www.csounds.com/manual/html/pvsfilter.html pvsfilter :: Spec -> Spec -> Sig -> Spec -- | This opcode provides support for cross-synthesis of amplitudes and -- frequencies. It takes the amplitudes of one input fsig and combines -- with frequencies from another. It is a spectral version of the -- well-known channel vocoder. -- --
--   fsig pvsvoc famp, fexc, kdepth, kgain [,kcoefs]
--   
-- -- doc: http://www.csounds.com/manual/html/pvsvoc.html pvsvoc :: Spec -> Spec -> Sig -> Sig -> Spec -- | Performs morphing (or interpolation) between two source fsigs. -- --
--   fsig pvsmorph fsrc, fdest, kamp1, kamp2
--   
-- -- doc: http://www.csounds.com/manual/html/pvsmotph.html pvsmorph :: Spec -> Spec -> Sig -> Sig -> Spec -- | This opcodes freezes the evolution of pvs stream by locking -- into steady amplitude and/or frequency values for each bin. The -- freezing is controlled, independently for amplitudes and frequencies, -- by a control-rate trigger, which switches the freezing on if -- equal to or above 1 and off if below 1. -- --
--   fsig pvsfreeze fsigin, kfreeza, kfreezf
--   
-- -- doc: http://www.csounds.com/manual/html/pvsfreeze.html pvsfreeze :: Spec -> Sig -> Sig -> Sig -- | Modify amplitudes of fsrc using function table, with dynamic scaling. -- --
--   fsig pvsmaska fsrc, ifn, kdepth
--   
-- -- doc: http://www.csounds.com/manual/html/pvsmaska.html pvsmaska :: Spec -> Tab -> Sig -> Spec -- | Average the amp/freq time functions of each analysis channel for a -- specified time (truncated to number of frames). As a side-effect the -- input pvoc stream will be delayed by that amount. -- --
--   fsig pvsblur fsigin, kblurtime, imaxdel
--   
-- -- doc: http://www.csounds.com/manual/html/pvsblur.html pvsblur :: Spec -> Sig -> D -> Spec -- | Transforms a pvoc stream according to a masking function table; if the -- pvoc stream amplitude falls below the value of the function for a -- specific pvoc channel, it applies a gain to that channel. -- -- The pvoc stream amplitudes are compared to a masking table, if the -- fall below the table values, they are scaled by kgain. Prior to the -- operation, table values are scaled by klevel, which can be used as -- masking depth control. -- -- Tables have to be at least fftsize/2 in size; for most GENS it is -- important to use an extended-guard point (size power-of-two plus one), -- however this is not necessary with GEN43. -- -- One of the typical uses of pvstencil would be in noise reduction. A -- noise print can be analysed with pvanal into a PVOC-EX file and loaded -- in a table with GEN43. This then can be used as the masking table for -- pvstencil and the amount of reduction would be controlled by kgain. -- Skipping post-normalisation will keep the original noise print average -- amplitudes. This would provide a good starting point for a successful -- noise reduction (so that klevel can be generally set to close to 1). -- -- Other possible transformation effects are possible, such as filtering -- and `inverse-masking'. -- --
--   fsig pvstencil fsigin, kgain, klevel, iftable
--   
-- -- doc: http://www.csounds.com/manual/html/pvstencil.html pvstencil :: Spec -> Sig -> Sig -> Tab -> Sig -- | This opcode arpeggiates spectral components, by amplifying one bin and -- attenuating all the others around it. Used with an LFO it will provide -- a spectral arpeggiator similar to Trevor Wishart's CDP program -- specarp. -- --
--   fsig pvsarp fsigin, kbin, kdepth, kgain
--   
-- -- doc: http://www.csounds.com/manual/html/pvsarp.html pvsarp :: Spec -> Sig -> Sig -> Sig -> Spec -- | Smooth the amplitude and frequency time functions of a pv stream using -- a 1st order lowpass IIR with time-varying cutoff frequency. This -- opcode uses the same filter as the tone opcode, but this time acting -- separately on the amplitude and frequency time functions that make up -- a pv stream. The cutoff frequency parameter runs at the control-rate, -- but unlike tone and tonek, it is not specified in Hz, but as fractions -- of 1/2 frame-rate (actually the pv stream sampling rate), which is -- easier to understand. This means that the highest cutoff frequency is -- 1 and the lowest 0; the lower the frequency the smoother the functions -- and more pronounced the effect will be. -- -- These are filters applied to control signals so the effect is -- basically blurring the spectral evolution. The effects produced are -- more or less similar to pvsblur, but with two important differences: -- 1.smoothing of amplitudes and frequencies use separate sets of -- filters; and 2. there is no increase in computational cost when higher -- amounts of blurring (smoothing) are desired. -- --
--   fsig pvsmooth fsigin, kacf, kfcf
--   
-- -- doc: http://www.csounds.com/manual/html/pvsmooth.html pvsmooth :: Spec -> Sig -> Sig -> Spec -- | An audio signal is modified by a string resonator with variable -- fundamental frequency. -- --
--   ares streson asig, kfr, ifdbgain
--   
-- -- doc: http://www.csounds.com/manual/html/streson.html streson :: Sig -> Sig -> D -> Sig -- | Audio output is a naturally decaying plucked string or drum sound -- based on the Karplus-Strong algorithms. -- --
--   ares pluck kamp, kcps, icps, ifn, imeth [, iparm1] [, iparm2]     
--   
-- -- doc: http://www.csounds.com/manual/html/pluck.html pluck :: Sig -> Sig -> D -> Tab -> D -> Sig -- | repluck is an implementation of the physical model of the plucked -- string. A user can control the pluck point, the pickup point, the -- filter, and an additional audio signal, axcite. axcite is used to -- excite the string. Based on the Karplus-Strong algorithm. -- --
--   ares repluck iplk, kamp, icps, kpick, krefl, axcite
--   
-- -- doc: http://www.csounds.com/manual/html/repluck.html repluck :: D -> Sig -> D -> Sig -> Sig -> Sig -> Sig -- | Audio output is a tone similar to a bowed string, using a physical -- model developed from Perry Cook, but re-coded for Csound. -- --
--   ares wgbow kamp, kfreq, kpres, krat, kvibf, kvamp, ifn [, iminfreq]
--   
-- -- doc: http://www.csounds.com/manual/html/wgbow.html wgbow :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Sig -- | A physical model of a bowed bar, belonging to the Perry Cook family of -- waveguide instruments. -- --
--   ares wgbowedbar kamp, kfreq, kpos, kbowpres, kgain [, iconst] [, itvel] \
--        [, ibowpos] [, ilow]
--   
-- -- doc: http://www.csounds.com/manual/html/wgbowedbar.html wgbowedbar :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | Audio output is a tone related to a brass instrument, using a physical -- model developed from Perry Cook, but re-coded for Csound. -- --
--   ares wgbrass kamp, kfreq, ktens, iatt, kvibf, kvamp, ifn [, iminfreq]   
--   
-- -- doc: http://www.csounds.com/manual/html/wgbrass.html wgbrass :: Sig -> Sig -> Sig -> D -> Sig -> Sig -> Tab -> Sig -- | Audio output is a tone similar to a clarinet, using a physical model -- developed from Perry Cook, but re-coded for Csound. -- --
--   ares wgclar kamp, kfreq, kstiff, iatt, idetk, kngain, kvibf, kvamp, ifn \
--         [, iminfreq]
--   
-- -- doc: http://www.csounds.com/manual/html/wgclar.html wgclar :: Sig -> Sig -> Sig -> D -> D -> Sig -> Sig -> Sig -> Tab -> Sig -- | Audio output is a tone similar to a flute, using a physical model -- developed from Perry Cook, but re-coded for Csound. -- --
--   ares wgflute kamp, kfreq, kjet, iatt, idetk, kngain, kvibf, kvamp, ifn \
--        [, iminfreq] [, ijetrf] [, iendrf]
--   
-- -- doc: http://www.csounds.com/manual/html/wgflute.html wgflute :: Sig -> Sig -> Sig -> D -> D -> Sig -> Sig -> Sig -> Tab -> Sig -- | A high fidelity simulation of a plucked string, using interpolating -- delay-lines. -- --
--   ares wgpluck icps, iamp, kpick, iplk, idamp, ifilt, axcite
--   
-- -- doc: http://www.csounds.com/manual/html/wgpluck.html wgpluck :: D -> D -> Sig -> D -> D -> D -> Sig -> Sig -- | wgpluck2 is an implementation of the physical model of the plucked -- string, with control over the pluck point, the pickup point and the -- filter. Based on the Karplus-Strong algorithm. -- --
--   ares wgpluck2 iplk, kamp, icps, kpick, krefl
--   
-- -- doc: http://www.csounds.com/manual/html/wgpluck2.html wgpluck2 :: D -> Sig -> D -> Sig -> Sig -> Sig -- | A simple waveguide model consisting of one delay-line and one -- first-order lowpass filter. -- --
--   ares wguide1 asig, xfreq, kcutoff, kfeedback
--   
-- -- doc: http://www.csounds.com/manual/html/wguide1.html wguide1 :: Sig -> Sig -> Sig -> Sig -> Sig -- | A model of beaten plate consisting of two parallel delay-lines and two -- first-order lowpass filters. -- --
--   ares wguide2 asig, xfreq1, xfreq2, kcutoff1, kcutoff2, \
--         kfeedback1, kfeedback2
--   
-- -- doc: http://www.csounds.com/manual/html/wguide2.html wguide2 :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | Uses FM synthesis to create a Hammond B3 organ sound. It comes from a -- family of FM sounds, all using 4 basic oscillators and various -- architectures, as used in the TX81Z synthesizer. -- --
--   ares fmb3 kamp, kfreq, kc1, kc2, kvdepth, kvrate, ifn1, ifn2, ifn3, \
--        ifn4, ivfn
--   
-- -- doc: http://www.csounds.com/manual/html/fmb3.html fmb3 :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> Tab -> Tab -> Tab -> Sig -- | Uses FM synthesis to create a tublar bell sound. It comes from a -- family of FM sounds, all using 4 basic oscillators and various -- architectures, as used in the TX81Z synthesizer. -- --
--   ares fmbell kamp, kfreq, kc1, kc2, kvdepth, kvrate, ifn1, ifn2, ifn3, \
--         ifn4, ivfn[, isus]
--   
-- -- doc: http://www.csounds.com/manual/html/fmbell.html fmbell :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> Tab -> Tab -> Tab -> Sig -- | Uses FM synthesis to create a “Heavy Metal” sound. It comes from a -- family of FM sounds, all using 4 basic oscillators and various -- architectures, as used in the TX81Z synthesizer. -- --
--   ares fmmetal kamp, kfreq, kc1, kc2, kvdepth, kvrate, ifn1, ifn2, ifn3, \
--         ifn4, ivfn
--   
-- -- doc: http://www.csounds.com/manual/html/fmmetal.html fmmetal :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> Tab -> Tab -> Tab -> Sig -- | Uses FM synthesis to create a percussive flute sound. It comes from a -- family of FM sounds, all using 4 basic oscillators and various -- architectures, as used in the TX81Z synthesizer. -- --
--   ares fmpercfl kamp, kfreq, kc1, kc2, kvdepth, kvrate, ifn1, ifn2, \
--         ifn3, ifn4, ivfn
--   
-- -- doc: http://www.csounds.com/manual/html/fmpercfl.html fmpercfl :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> Tab -> Tab -> Tab -> Sig -- | Uses FM synthesis to create a Fender Rhodes electric piano sound. It -- comes from a family of FM sounds, all using 4 basic oscillators and -- various architectures, as used in the TX81Z synthesizer. -- --
--   ares fmrhode kamp, kfreq, kc1, kc2, kvdepth, kvrate, ifn1, ifn2, \
--         ifn3, ifn4, ivfn
--   
-- -- doc: http://www.csounds.com/manual/html/fmrhode.html fmrhode :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> Tab -> Tab -> Tab -> Sig -- | FM Singing Voice Synthesis -- --
--   ares fmvoice kamp, kfreq, kvowel, ktilt, kvibamt, kvibrate, ifn1, \
--        ifn2, ifn3, ifn4, ivibfn
--   
-- -- doc: http://www.csounds.com/manual/html/fmvoice.html fmvoice :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> Tab -> Tab -> Tab -> Sig fmwurlie :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> Tab -> Tab -> Tab -> Sig -- | bamboo is a semi-physical model of a bamboo sound. -- --
--   ares bamboo kamp, idettack [, inum] [, idamp] [, imaxshake] [, ifreq] \
--        [, ifreq1] [, ifreq2]
--   
-- -- doc: http://www.csounds.com/manual/html/bamboo.html bamboo :: Sig -> D -> Sig -- | cabasa is a semi-physical model of a cabasa sound. -- --
--   ares cabasa iamp, idettack [, inum] [, idamp] [, imaxshake]
--   
-- -- doc: http://www.csounds.com/manual/html/cabasa.html cabasa :: D -> D -> Sig -- | crunch is a semi-physical model of a crunch sound. -- --
--   ares crunch iamp, idettack [, inum] [, idamp] [, imaxshake]
--   
-- -- doc: http://www.csounds.com/manual/html/crunch.html crunch :: D -> D -> Sig -- | dripwater is a semi-physical model of a water drop. -- --
--   ares dripwater kamp, idettack [, inum] [, idamp] [, imaxshake] [, ifreq] \
--         [, ifreq1] [, ifreq2]
--   
-- -- doc: http://www.csounds.com/manual/html/dripwater.html dripwater :: Sig -> D -> Sig -- | guiro is a semi-physical model of a guiro sound. -- --
--   ares guiro kamp, idettack [, inum] [, idamp] [, imaxshake] [, ifreq] [, ifreq1]
--   
-- -- doc: http://www.csounds.com/manual/html/guiro.html guiro :: Sig -> D -> Sig -- | sandpaper is a semi-physical model of a sandpaper sound. -- --
--   ares sandpaper iamp, idettack [, inum] [, idamp] [, imaxshake]
--   
-- -- doc: http://www.csounds.com/manual/html/sandpaper.html sandpaper :: D -> D -> Sig -- | sekere is a semi-physical model of a sekere sound. -- --
--   ares sekere iamp, idettack [, inum] [, idamp] [, imaxshake]
--   
-- -- doc: http://www.csounds.com/manual/html/sekere.html sekere :: D -> D -> Sig -- | sleighbells is a semi-physical model of a sleighbell sound. -- --
--   ares sleighbells kamp, idettack [, inum] [, idamp] [, imaxshake] [, ifreq] \
--        [, ifreq1] [, ifreq2]
--   
-- -- doc: http://www.csounds.com/manual/html/sleighbells.html sleighbells :: Sig -> D -> Sig -- | stix is a semi-physical model of a stick sound. -- --
--   ares stix iamp, idettack [, inum] [, idamp] [, imaxshake]
--   
-- -- doc: http://www.csounds.com/manual/html/stix.html stix :: D -> D -> Sig -- | tambourine is a semi-physical model of a tambourine sound. -- --
--   ares tambourine kamp, idettack [, inum] [, idamp] [, imaxshake] [, ifreq] \
--        [, ifreq1] [, ifreq2]
--   
-- -- doc: http://www.csounds.com/manual/html/tambourine.html tambourine :: Sig -> D -> Sig -- | Audio output is a tone related to the striking of a cow bell or -- similar. -- --
--   ares gogobel kamp, kfreq, ihrd, ipos, imp, kvibf, kvamp, ivfn
--   
-- -- doc: http://www.csounds.com/manual/html/gogobel.html gogobel :: Sig -> Sig -> D -> D -> D -> Sig -> Sig -> Tab -> Sig -- | Audio output is a tone related to the striking of a wooden block as -- found in a marimba. -- --
--   ares marimba kamp, kfreq, ihrd, ipos, imp, kvibf, kvamp, ivibfn, idec \
--        [, idoubles] [, itriples]
--   
-- -- doc: http://www.csounds.com/manual/html/marimba.html marimba :: Sig -> Sig -> D -> D -> Tab -> Sig -> Sig -> Tab -> D -> Sig -- | Audio output is a tone related to the shaking of a maraca or similar -- gourd instrument. -- --
--   ares shaker kamp, kfreq, kbeans, kdamp, ktimes [, idecay]
--   
-- -- doc: http://www.csounds.com/manual/html/shaker.html shaker :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -- | Audio output is a tone related to the striking of a metal block as -- found in a vibraphone. -- --
--   ares vibes kamp, kfreq, ihrd, ipos, imp, kvibf, kvamp, ivibfn, idec
--   
-- -- doc: http://www.csounds.com/manual/html/vibes.html vibes :: Sig -> Sig -> D -> D -> Tab -> Sig -> Sig -> Tab -> D -> Sig -- | Audio output is a tone similar to a struck metal bar, using a physical -- model developed from solving the partial differential equation. There -- are controls over the boundary conditions as well as the bar -- characteristics. -- --
--   ares barmodel kbcL, kbcR, iK, ib, kscan, iT30, ipos, ivel, iwid
--   
-- -- doc: http://www.csounds.com/manual/html/barmodel.html barmodel :: Sig -> Sig -> D -> D -> Sig -> D -> D -> D -> D -> Sig -- | An emulation of a mandolin. -- --
--   ares mandol kamp, kfreq, kpluck, kdetune, kgain, ksize, ifn [, iminfreq]
--   
-- -- doc: http://www.csounds.com/manual/html/mandol.html mandol :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Sig -- | An emulation of a mini-Moog synthesizer. -- --
--   ares moog kamp, kfreq, kfiltq, kfiltrate, kvibf, kvamp, iafn, iwfn, ivfn
--   
-- -- doc: http://www.csounds.com/manual/html/moog.html moog :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> Tab -> Sig -- | An emulation of a human voice. -- --
--   ares voice kamp, kfreq, kphoneme, kform, kvibf, kvamp, ifn, ivfn
--   
-- -- doc: http://www.csounds.com/manual/html/voice.html voice :: Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> Sig -- | Data module Csound.Opcode.Data -- | Accesses table values by direct indexing. -- --
--   ares table andx, ifn [, ixmode] [, ixoff] [, iwrap]
--   ires table indx, ifn [, ixmode] [, ixoff] [, iwrap]
--   kres table kndx, ifn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- doc: http://www.csounds.com/manual/html/table.html table :: Sig -> Tab -> Sig -- | Accesses table values by direct indexing with linear interpolation. -- --
--   ares tablei andx, ifn [, ixmode] [, ixoff] [, iwrap]
--   ires tablei indx, ifn [, ixmode] [, ixoff] [, iwrap]
--   kres tablei kndx, ifn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- doc: http://www.csounds.com/manual/html/tablei.html tablei :: Sig -> Tab -> Sig -- | Accesses table values by direct indexing with cubic interpolation. -- --
--   ares table3 andx, ifn [, ixmode] [, ixoff] [, iwrap]
--   ires table3 indx, ifn [, ixmode] [, ixoff] [, iwrap]
--   kres table3 kndx, ifn [, ixmode] [, ixoff] [, iwrap]
--   
-- -- doc: http://www.csounds.com/manual/html/table3.html table3 :: Sig -> Tab -> Sig -- | Fast table opcodes. Faster than table and tablew because don't allow -- wrap-around and limit and don't check index validity. Have been -- implemented in order to provide fast access to arrays. Support -- non-power of two tables (can be generated by any GEN function by -- giving a negative length value). -- --
--   ir tab_i indx, ifn[, ixmode]
--   
-- -- doc: http://www.csounds.com/manual/html/tab.html tab_i :: D -> Tab -> D -- | Fast table opcodes. Faster than table and tablew because don't allow -- wrap-around and limit and don't check index validity. Have been -- implemented in order to provide fast access to arrays. Support -- non-power of two tables (can be generated by any GEN function by -- giving a negative length value). -- --
--   kr tab kndx, ifn[, ixmode]
--   ar tab xndx, ifn[, ixmode]
--   
-- -- doc: http://www.csounds.com/manual/html/tab.html tab :: Sig -> Tab -> Sig -- | Reads from numbered channels in an external audio signal or stream. -- --
--   ain1[, ...] inch kchan1[,...]
--   
-- -- doc: http://www.csounds.com/manual/html/inch.html inch :: CsdTuple a => [Sig] -> a -- | Writes multi-channel audio data, with user-controllable channels, to -- an external device or stream. -- --
--   outch kchan1, asig1 [, kchan2] [, asig2] [...]
--   
-- -- doc: http://www.csounds.com/manual/html/outch.html outch :: [(Sig, Sig)] -> SE () -- | This opcode implements a crossfading looper with variable loop -- parameters and three looping modes, optionally using a table for its -- crossfade shape. It accepts non-power-of-two tables for its source -- sounds, such as deferred-allocation GEN01 tables. -- --
--   asig flooper2 kamp, kpitch, kloopstart, kloopend, kcrossfade, ifn \
--         [, istart, imode, ifenv, iskip]
--   
-- -- doc: http://www.csounds.com/manual/html/flooper2.html flooper2 :: Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Sig -- | This opcode records input audio and plays it back in a loop with -- user-defined duration and crossfade time. It also allows the pitch of -- the loop to be controlled, including reversed playback. -- --
--   asig, krec sndloop ain, kpitch, ktrig, idur, ifad
--   
-- -- doc: http://www.csounds.com/manual/html/sndloop.html sndloop :: Sig -> Sig -> Sig -> D -> D -> (Sig, Sig) -- | Reads audio data from an external device or stream. Up to 24 channels -- may be read before v5.14, extended to 40 in later versions. -- --
--   ar1[, ar2[, ar3[, ... a24]]] soundin ifilcod [, iskptim] [, iformat] \
--        [, iskipinit] [, ibufsize]
--   
-- -- doc: http://www.csounds.com/manual/html/soundin.html soundin :: CsdTuple a => Str -> a -- | Reads audio data from a file, and can alter its pitch using one of -- several available interpolation types, as well as convert the sample -- rate to match the orchestra sr setting. diskin2 can also read -- multichannel files with any number of channels in the range 1 to 24 in -- versions before 5.14, and 40 after. . diskin2 allows more control and -- higher sound quality than diskin, but there is also the disadvantage -- of higher CPU usage. -- --
--   a1[, a2[, ... aN]] diskin2 ifilcod, kpitch[, iskiptim \
--         [, iwrap[, iformat [, iwsize[, ibufsize[, iskipinit]]]]]]
--   
-- -- doc: http://www.csounds.com/manual/html/diskin2.html diskin2 :: CsdTuple a => Str -> Sig -> a -- | Reads stereo audio data from an external MP3 file. -- --
--   ar1, ar2 mp3in ifilcod[, iskptim, iformat, iskipinit, ibufsize]
--   
-- -- doc: http://www.csounds.com/manual/html/mp3in.html mp3in :: Str -> (Sig, Sig) -- | Returns the length of a sound file. -- --
--   ir filelen ifilcod, [iallowraw]
--   
-- -- doc: http://www.csounds.com/manual/html/filelen.html filelen :: Str -> D -- | Returns the sample rate of a sound file. -- --
--   ir filesr ifilcod [, iallowraw]
--   
-- -- doc: http://www.csounds.com/manual/html/filesr.html filesr :: Str -> D -- | Returns the number of channels in a sound file. -- --
--   ir filenchnls ifilcod [, iallowraw]
--   
-- -- doc: http://www.csounds.com/manual/html/filechnls.html filenchnls :: Str -> D -- | Returns the peak absolute value of a sound file. -- --
--   ir filepeak ifilcod [, ichnl]
--   
-- -- doc: http://www.csounds.com/manual/html/filepeak.html filepeak :: Str -> D -- | Returns the number of bits in each sample in a sound file. -- --
--   ir filebit ifilcod [, iallowraw]
--   
-- -- doc: http://www.csounds.com/manual/html/filebit.html filebit :: Str -> D -- | fout outputs N a-rate signals to a specified file of N channels. -- --
--   fout ifilename, iformat, aout1 [, aout2, aout3,...,aoutN]
--   
-- -- doc: http://www.csounds.com/manual/html/fout.html fout :: [Sig] -> SE () -- | Floating number types: Sig or D. class Val a => Nums a -- | Modify a signal by down-sampling. -- --
--   kres downsamp asig [, iwlen]
--   
-- -- doc: http://www.csounds.com/manual/html/downsamp.html downsamp :: Sig -> Sig -- | Modify a signal by up-sampling. -- --
--   ares upsamp ksig
--   
-- -- doc: http://www.csounds.com/manual/html/upsamp.html upsamp :: Sig -> Sig -- | Converts a control signal to an audio signal using linear -- interpolation. -- --
--   ares interp ksig [, iskip] [, imode]
--   
-- -- doc: http://www.csounds.com/manual/html/interp.html interp :: Sig -> Sig -- | Returns the amplitude equivalent of the decibel value x. Thus: -- -- -- --
--   ampdb(x)  (no rate restriction)
--   
-- -- doc: http://www.csounds.com/manual/html/ampdb.html ampdb :: Nums a => a -> a -- | Returns the amplitude equivalent of the full scale decibel (dB FS) -- value x. The logarithmic full scale decibel values will be converted -- to linear 16-bit signed integer values from −32,768 to +32,767. -- --
--   ampdbfs(x)  (no rate restriction)
--   
-- -- doc: http://www.csounds.com/manual/html/ampdbfs.html ampdbfs :: Nums a => a -> a -- | Returns the decibel equivalent of the raw amplitude x. -- --
--   dbamp(x)  (init-rate or control-rate args only)
--   
-- -- doc: http://www.csounds.com/manual/html/dbamp.html dbamp :: Nums a => a -> a -- | Returns the decibel equivalent of the raw amplitude x, relative to -- full scale amplitude. Full scale is assumed to be 16 bit. New is -- Csound version 4.10. -- --
--   dbfsamp(x)  (init-rate or control-rate args only)
--   
-- -- doc: http://www.csounds.com/manual/html/dbfsamp.html dbfsamp :: Nums a => a -> a -- | Calculates a factor to raise/lower a frequency by a given amount of -- cents. -- --
--   cent(x) (no rate restriction)
--   
-- -- doc: http://www.csounds.com/manual/html/cent.html cent :: Nums a => a -> a -- | Converts a Midi note number value to cycles-per-second. -- --
--   cpsmidinn (MidiNoteNumber)  (init- or control-rate args only)
--   
-- -- doc: http://www.csounds.com/manual/html/cpsmidinn.html cpsmidinn :: Nums a => a -> a -- | Converts an octave-point-decimal value to cycles-per-second. -- --
--   cpsoct(oct) (no rate restriction)
--   
-- -- doc: http://www.csounds.com/manual/html/cpsoct.html cpsoct :: Nums a => a -> a -- | Converts a pitch-class value to cycles-per-second. -- --
--   cpspch (pch)  (init- or control-rate args only)
--   
-- -- doc: http://www.csounds.com/manual/html/cpspch.html cpspch :: Nums a => a -> a -- | Calculates a factor to raise/lower a frequency by a given amount of -- octaves. -- --
--   octave(x) (no rate restriction)
--   
-- -- doc: http://www.csounds.com/manual/html/octave.html octave :: Nums a => a -> a -- | Converts a cycles-per-second value to octave-point-decimal. -- --
--   octcps (cps)  (init- or control-rate args only)
--   
-- -- doc: http://www.csounds.com/manual/html/octcps.html octcps :: Nums a => a -> a -- | Converts a Midi note number value to octave-point-decimal. -- --
--   octmidinn (MidiNoteNumber)  (init- or control-rate args only)
--   
-- -- doc: http://www.csounds.com/manual/html/octmidinn.html octmidinn :: Nums a => a -> a -- | Converts a pitch-class value to octave-point-decimal. -- --
--   octpch (pch)  (init- or control-rate args only)
--   
-- -- doc: http://www.csounds.com/manual/html/octpch.html octpch :: Nums a => a -> a -- | Converts a Midi note number value to octave point pitch-class units. -- --
--   pchmidinn (MidiNoteNumber)  (init- or control-rate args only)
--   
-- -- doc: http://www.csounds.com/manual/html/pchmidinn.html pchmidinn :: Nums a => a -> a -- | Converts an octave-point-decimal value to pitch-class. -- --
--   pchoct (oct)  (init- or control-rate args only)
--   
-- -- doc: http://www.csounds.com/manual/html/pchoct.html pchoct :: Nums a => a -> a -- | Calculates a factor to raise/lower a frequency by a given amount of -- semitones. -- --
--   semitone(x) (no rate restriction)
--   
-- -- doc: http://www.csounds.com/manual/html/semitone.html semitone :: Nums a => a -> a -- | Fractional part of the number. fracD :: D -> D -- | Floor operator for numbers. floorD :: D -> D -- | Ceiling operator for numbers. ceilD :: D -> D -- | Integer part of the number. intD :: D -> D -- | Round operator for numbers. roundD :: D -> D -- | Fractional part of the signal. fracSig :: Sig -> Sig -- | Floor operator for signals. floorSig :: Sig -> Sig -- | Ceiling operator for signals. ceilSig :: Sig -> Sig -- | Integer part of the number for signals. intSig :: Sig -> Sig -- | Round operator for signals. roundSig :: Sig -> Sig -- | These units will print orchestra init-values. -- --
--   print iarg [, iarg1] [, iarg2] [...]
--   
-- -- doc: http://www.csounds.com/manual/html/print.html printi :: [D] -> SE () -- | Prints one k-rate value at specified intervals. -- --
--   printk itime, kval [, ispace]
--   
-- -- doc: http://www.csounds.com/manual/html/printk.html printk :: D -> Sig -> SE () -- | sprintf write printf-style formatted output to a string variable, -- similarly to the C function sprintf(). sprintf runs at i-time only. -- --
--   Sdst sprintf Sfmt, xarg1[, xarg2[, ... ]]
--   
-- -- doc: http://www.csounds.com/manual/html/sprintf.html sprintf :: Str -> [D] -> Str -- | sprintfk writes printf-style formatted output to a string variable, -- similarly to the C function sprintf(). sprintfk runs both at -- initialization and performance time. -- --
--   Sdst sprintfk Sfmt, xarg1[, xarg2[, ... ]]
--   
-- -- doc: http://www.csounds.com/manual/html/sprintfk.html sprintfk :: Str -> [Sig] -> Str -- | Concatenate two strings and store the result in a variable. strcat -- runs at i-time only. It is allowed for any of the input arguments to -- be the same as the output variable. -- --
--   Sdst strcat Ssrc1, Ssrc2
--   
-- -- doc: http://www.csounds.com/manual/html/strcat.html strcat :: Str -> Str -> Str -- | Concatenate two strings and store the result in a variable. strcatk -- does the concatenation both at initialization and performance time. It -- is allowed for any of the input arguments to be the same as the output -- variable. -- --
--   Sdst strcatk Ssrc1, Ssrc2
--   
-- -- doc: http://www.csounds.com/manual/html/strcatk.html strcatk :: Str -> Str -> Str instance Nums D instance Nums Sig -- | Realtime Interaction module Csound.Opcode.Interaction -- | Get the note number of the current MIDI event, expressed in -- cycles-per-second. -- --
--   icps cpsmidi
--   
-- -- doc: http://www.csounds.com/manual/html/cpsmidi.html cpsmidi :: Msg -> D -- | Get the velocity of the current MIDI event. -- --
--   iamp ampmidi iscal [, ifn]
--   
-- -- doc: http://www.csounds.com/manual/html/ampmidi.html ampmidi :: Msg -> D -- | Get the current pitch-bend value for this channel. -- --
--   kbend pchbend [imin] [, imax]
--   
-- -- doc: http://www.csounds.com/manual/html/pchbend.html pchbend :: Msg -> Sig -- | Get the current after-touch value for this channel. -- --
--   kaft aftouch [imin] [, imax]
--   
-- -- doc: http://www.csounds.com/manual/html/.html aftouch :: Msg -> Sig -- | Allows a floating-point 7-bit MIDI signal scaled with a minimum and a -- maximum range. -- --
--   idest ctrl7 ichan, ictlno, imin, imax [, ifn]
--   kdest ctrl7 ichan, ictlno, kmin, kmax [, ifn]
--   adest ctrl7 ichan, ictlno, kmin, kmax [, ifn] [, icutoff]
--   
-- -- doc: http://www.csounds.com/manual/html/ctrl7.html ctrl7 :: D -> D -> Sig -> Sig -> Sig -- | Returns the ASCII code of a key that has been pressed, or -1 if no key -- has been pressed. -- --
--   kres[, kkeydown] sensekey
--   
-- -- doc: http://www.csounds.com/manual/html/sensekey.html sensekey :: (Sig, Sig) -- | Sense the cursor position in an output window. When xyin is called the -- position of the mouse within the output window is used to reply to the -- request. This simple mechanism does mean that only one xyin can be -- used accurately at once. The position of the mouse is reported in the -- output window. -- --
--   kx, ky xyin iprd, ixmin, ixmax, iymin, iymax [, ixinit] [, iyinit]
--   
-- -- doc: http://www.csounds.com/manual/html/xyin.html xyin :: D -> D -> D -> D -> D -> (Sig, Sig) -- | Here you will find all opcodes from the Csound floss manual -- (http://en.flossmanuals.net/csound/overview/). If you are -- missing some opcodes feel free to use Csound.LowLevel. It's -- easy. If it's some opcode you like a lot you can send it to me by -- email and I will include it here. -- -- All opcodes are defined without initialisation arguments. If you want -- to supply the auxiliary arguments use the function withInits. module Csound.Opcode -- | Creating Function Tables (Buffers) module Csound.Tab -- | Csound f-tables. You can make a value of Tab with the function -- gen or use more higher level functions. data Tab -- | Table contains all provided values (table is extended to contain all -- values and to be of the power of 2 or the power of two plus one). doubles :: [Double] -> Tab type PartialStrength = Double type PartialNumber = Double type PartialPhase = Double type PartialDC = Double -- | Series of harmonic partials: -- --
--   sine = sines [1]
--   
-- --
--   saw = sines $ fmap (1 / ) [1 .. 10]
--   
-- --
--   square = sines $ fmap (1 / ) [1, 3 .. 11]
--   
-- --
--   triangle = sines $ zipWith (\a b -> a / (b ** 2)) (cycle [1, -1]) [1, 3 .. 11]
--   
sines :: [PartialStrength] -> Tab -- | Specifies series of possibly inharmonic partials. sines3 :: [(PartialNumber, PartialStrength, PartialPhase)] -> Tab -- | Specifies series of possibly inharmonic partials with direct current. sines4 :: [(PartialNumber, PartialStrength, PartialPhase, PartialDC)] -> Tab -- | Generates values similar to the opcode buzz. -- --
--   buzzes numberOfHarmonics [lowestHarmonic, coefficientOfAttenuation]
--   
-- -- With buzzes n [l, r] you get n harmonics from -- l that are attenuated by the factor of r on each -- step. buzzes :: Double -> [Double] -> Tab -- | Constant segments (sample and hold). -- --
--   consts [a, n1, b, n2, c, ...]
--   
-- -- where -- -- consts :: [Double] -> Tab -- | Segments of straight lines. -- --
--   segs [a, n1, b, n2, c, ...]
--   
-- -- where -- -- segs :: [Double] -> Tab -- | Segments of cubic polynomials. -- --
--   cubes [a, n1, b, n2, c, ...]
--   
-- -- where -- -- cubes :: [Double] -> Tab -- | Segments of the exponential curves. -- --
--   exps [a, n1, b, n2, c, ...]
--   
-- -- where -- -- exps :: [Double] -> Tab -- | Cubic spline curve. -- --
--   splines [a, n1, b, n2, c, ...]
--   
-- -- where -- -- splines :: [Double] -> Tab -- | Equally spaced constant segments. -- --
--   econsts [a, b, c, ...] 
--   
-- -- is the same as -- --
--   consts [a, 1, b, 1, c, ...]
--   
econsts :: [Double] -> Tab -- | Equally spaced segments of straight lines. -- --
--   esegs [a, b, c, ...] 
--   
-- -- is the same as -- --
--   segs [a, 1, b, 1, c, ...]
--   
esegs :: [Double] -> Tab -- | Equally spaced segments of cubic polynomials. -- --
--   ecubes [a, b, c, ...] 
--   
-- -- is the same as -- --
--   cubes [a, 1, b, 1, c, ...]
--   
ecubes :: [Double] -> Tab -- | Equally spaced segments of exponential curves. -- --
--   eexps [a, b, c, ...] 
--   
-- -- is the same as -- --
--   exps [a, 1, b, 1, c, ...]
--   
eexps :: [Double] -> Tab -- | Equally spaced spline curve. -- --
--   esplines [a, b, c, ...] 
--   
-- -- is the same as -- --
--   splines [a, 1, b, 1, c, ...]
--   
esplines :: [Double] -> Tab -- | Polynomials. -- --
--   polys xl xr [c0, c1, c2, ..]
--   
-- -- where -- -- -- --
--   c0 + c1 * x + c2 * x * x + ...
--   
polys :: Double -> Double -> [Double] -> Tab -- | Chebyshev polynomials of the first kind. -- --
--   polys xl xr [h0, h1, h2, ..]
--   
-- -- where -- -- chebs1 :: Double -> Double -> [Double] -> Tab -- | Chebyshev polynomials of the second kind. -- --
--   polys xl xr [h0, h1, h2, ..]
--   
-- -- where -- -- chebs2 :: Double -> Double -> [Double] -> Tab -- | Creates a table of doubles (It's f-table in Csound). Arguments are: -- -- -- -- All tables are created at 0 and memory is never released. gen :: Int -> [Double] -> Tab -- | Skips normalization (sets table size to negative value) skipNorm :: Tab -> Tab -- | Sets an absolute size value. As you can do it in the Csound files. setSize :: Int -> Tab -> Tab -- | Sets the relative size value. You can set the base value in the -- options (see tabResolution at CsdOptions, with -- tabResolution you can easily change table sizes for all your tables). -- Here zero means the base value. 1 is the base value multiplied by 2, 2 -- is the base value multiplied by 4 and so on. Negative values mean -- division by the specified degree. setDegree :: Int -> Tab -> Tab -- | Adds guard point to the table size (details of the interpolation -- schemes: you do need guard point if your intention is to read the -- table once but you don't need the guard point if you read table in -- many cycles, the guard point is the the first point of your table). guardPoint :: Tab -> Tab -- | Shortcut for guardPoint. gp :: Tab -> Tab -- | Sets degrees from -3 to 3. lllofi :: Tab -> Tab -- | Sets degrees from -3 to 3. llofi :: Tab -> Tab -- | Sets degrees from -3 to 3. lofi :: Tab -> Tab -- | Sets degrees from -3 to 3. midfi :: Tab -> Tab -- | Sets degrees from -3 to 3. hifi :: Tab -> Tab -- | Sets degrees from -3 to 3. hhifi :: Tab -> Tab -- | Sets degrees from -3 to 3. hhhifi :: Tab -> Tab -- | The vital tools. module Csound.Air -- | Pure tone. osc :: Sig -> Sig -- | Sawtooth. saw :: Sig -> Sig -- | Square wave. sq :: Sig -> Sig -- | Triangle wave. tri :: Sig -> Sig -- | Turns a bipolar sound (ranges from -1 to 1) to unipolar (ranges from 0 -- to 1) unipolar :: Sig -> Sig -- | Unipolar pure tone. uosc :: Sig -> Sig -- | Unipolar sawtooth. usaw :: Sig -> Sig -- | Unipolar square wave. usq :: Sig -> Sig -- | Unipolar triangle wave. utri :: Sig -> Sig -- | Low-pass filter. -- --
--   lp cutoff sig
--   
lp :: Sig -> Sig -> Sig -- | High-pass filter. -- --
--   hp cutoff sig
--   
hp :: Sig -> Sig -> Sig -- | Band-pass filter. -- --
--   bp cutoff bandwidth sig
--   
bp :: Sig -> Sig -> Sig -> Sig -- | Band-regect filter. -- --
--   br cutoff bandwidth sig
--   
br :: Sig -> Sig -> Sig -> Sig -- | Low-pass filter. -- --
--   blp cutoff sig
--   
blp :: Sig -> Sig -> Sig -- | High-pass filter. -- --
--   bhp cutoff sig
--   
bhp :: Sig -> Sig -> Sig -- | Band-pass filter. -- --
--   bbp cutoff bandwidth sig
--   
bbp :: Sig -> Sig -> Sig -> Sig -- | Band-regect filter. -- --
--   bbr cutoff bandwidth sig
--   
bbr :: Sig -> Sig -> Sig -> Sig -- | Reads table once during the note length. once :: Tab -> Sig -- | Mean value. mean :: Fractional a => [a] -> a -- | Harmonic series. Takes a function that transforms the signal by some -- parameter and the list of parameters. It constructs the series of -- transformers and sums them at the end with equal strength. hase :: (a -> Sig -> Sig) -> [a] -> Sig -> Sig -- | Harmonic series, but now you can specify the weights of the final sum. whase :: (a -> Sig -> Sig) -> [(Sig, a)] -> Sig -> Sig -- | Harmonic series for functions with side effects. haseS :: (a -> Sig -> SE Sig) -> [a] -> Sig -> SE Sig -- | Weighted harmonic series for functions with side effects. whaseS :: (a -> Sig -> SE Sig) -> [(Sig, a)] -> Sig -> SE Sig -- | Crossfade. -- --
--   cfd coeff sig1 sig2
--   
-- -- If coeff equals 0 then we get the first signal and if it equals 1 we -- get the second signal. cfd :: Sig -> Sig -> Sig -> Sig -- | Generic crossfade for n coefficients and n+1 signals. -- --
--   cfds coeffs sigs
--   
cfds :: [Sig] -> [Sig] -> Sig -- | Spectral crossfade. cfdSpec :: Sig -> Spec -> Spec -> Spec -- | Generic spectral crossfade. cfdsSpec :: [Sig] -> [Spec] -> Spec -- | Basic types and functions. -- -- WARNING (for Csound users): the maximum amplitude is 1.0. There is no -- way to alter it. don't define your amplitudes with 9000 or 11000. But -- the good news are: all signals are clipped by 1 so that you can not -- damage your ears and your speakers by a little typo. module Csound.Base class Val a -- | Doubles. data D -- | Strings. data Str -- | Appends initialisation arguments. It's up to you to supply arguments -- with the right types. For example: -- --
--   oscil 0.5 440 sinWave `withInits` (0.5 :: D)
--   
withInits :: (Val a, CsdTuple inits) => a -> inits -> Sig -- | Audio or control rate signals. data Sig -- | Spectrum of the signal (see FFT and Spectral Processing at -- Csound.Opcode.Advanced). data Spec -- | Boolean signals. data BoolSig -- | Boolean constants. data BoolD -- | Csound's synonym for IO-monad. SE means Side Effect. You -- will bump into SE trying to read and write to delay lines, -- making random signals or trying to save your audio to file. Instrument -- is expected to return a value of SE [Sig]. So it's okay to do -- some side effects when playing a note. data SE a -- | Describes tuples of Csound values. It's used for functions that can -- return several results (such as soundin or diskin2). -- Tuples can be nested. class CsdTuple a -- | Values that can be converted to signals. class ToSig a ar :: ToSig a => a -> Sig kr :: ToSig a => a -> Sig -- | Converts signal to double. ir :: Sig -> D -- | Converts Haskell's doubles to Csound's doubles double :: Double -> D -- | Converts Haskell's strings to Csound's strings str :: String -> Str -- | Output of the instrument. class Out a -- | The abstract type of musical tracks. data SigOut -- | Applies a global effect function to the signal. With this function we -- can add reverb or panning to the mixed signal. The argument function -- takes a list of signals. Each cell of the list contains a signal on -- the given channel. effect :: ([Sig] -> SE [Sig]) -> SigOut -> SigOut type Outs = SE [Sig] type Sig2 = (Sig, Sig) type Sig3 = (Sig, Sig, Sig) type Sig4 = (Sig, Sig, Sig, Sig) score :: (Arg a, Out b) => (a -> b) -> [(Double, Double, a)] -> SigOut -- | Describes all Csound values that can be used in the score section. -- Instruments are triggered with the values from this type class. Actual -- methods are hidden, but you can easily make instances for your own -- types with function makeArgMethods. You need to describe the -- new instance in terms of some existing one. For example: -- --
--   data Note = Note 
--       { noteAmplitude    :: D
--       , notePitch        :: D
--       , noteVibrato      :: D
--       , noteSample       :: S
--       }
--   
--   instance Arg Note where
--       argMethods = makeArgMethods to from
--           where to (amp, pch, vibr, sample) = Note amp pch vibr sample
--                 from (Note amp pch vibr sample) = (amp, pch, vibr, sample)
--   
-- -- Then you can use this type in an instrument definition. -- --
--   instr :: Note -> Out
--   instr x = ...
--   
class Arg a argMethods :: Arg a => ArgMethods a -- | The abstract type of methods for the class Arg. data ArgMethods a -- | Defines instance of type class Arg for a new type in terms of -- an old one. makeArgMethods :: Arg a => (a -> b) -> (b -> a) -> ArgMethods b -- | Midi messages. data Msg massign :: Out a => Channel -> (Msg -> a) -> SigOut pgmassign :: Out a => Maybe Channel -> Int -> (Msg -> a) -> SigOut -- | Renders Csound file. renderCsd :: [SigOut] -> String -- | Renders Csound file with options. renderCsdBy :: CsdOptions -> [SigOut] -> String type Channel = Int type CtrlId = Int -- | Csound options. The default value is -- --
--   instance Default CsdOptions where
--       def = CsdOptions 
--               { csdFlags = ""
--               , csdRate  = 44100
--               , csdBlockSize = 64
--               , csdSeed = Nothing
--               , csdInitc7 = []
--               , csdEffect = mixing
--               , csdKrate  = ["linseg", "expseg", "linsegr", "expsegr", "linen", "linenr", "envlpx"],
--               , tabResolution = 8192 }  -- should be power of 2
--   
data CsdOptions CsdOptions :: String -> Int -> Int -> Maybe Int -> [(Channel, CtrlId, Double)] -> ([[Sig]] -> Outs) -> [String] -> Int -> CsdOptions csdFlags :: CsdOptions -> String csdRate :: CsdOptions -> Int csdBlockSize :: CsdOptions -> Int csdSeed :: CsdOptions -> Maybe Int csdInitc7 :: CsdOptions -> [(Channel, CtrlId, Double)] csdEffect :: CsdOptions -> [[Sig]] -> Outs csdKrate :: CsdOptions -> [String] tabResolution :: CsdOptions -> Int -- | Sums signals for every channel. mixing :: [[Sig]] -> Outs -- | Sums signals for every channel and the processes the output with the -- given function. mixingBy :: ([Sig] -> Outs) -> ([[Sig]] -> Outs)