-- 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 -- --
-- ares oscils iamp, icps, iphs [, iflg] ---- -- doc: http://www.csounds.com/manual/html/oscils.html oscils :: Iamp -> Icps -> 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 :: Amp -> Cps -> 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 :: Amp -> Cps -> 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 :: Amp -> Cps -> 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 :: Amp -> Cps -> 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 :: Amp -> Cps -> Tab -> Sig -- | Accesses table values by incremental sampling with linear -- interpolation. -- --
-- kres oscil1i idel, kamp, idur, ifn ---- -- doc: http://www.csounds.com/manual/html/oscil1i.html oscil1i :: D -> Amp -> D -> 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 :: Amp -> Cps -> 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 :: Amp -> Cps -> 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 :: Amp -> 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 :: Amp -> Cps -> 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 :: Amp -> Cps -> 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 :: Cps -> 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 :: Amp -> 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 :: Amp -> 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 :: Amp -> 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 :: Amp -> Amp -> Cps -> 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 :: Amp -> Amp -> Cps -> 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 :: Amp -> Sig -> SE Sig -- | Unsafe version of the pinkish opcode. Unsafe means that there -- can be possible alias on the expression level. Two expressions with -- the same arguments can be unexpectedly rendered as the same expression -- within one instrument. pinkish' :: Sig -> Sig -- | Unsafe version of the noise opcode. Unsafe means that there can -- be possible alias on the expression level. Two expressions with the -- same arguments can be unexpectedly rendered as the same expression -- within one instrument. noise' :: Amp -> Sig -> 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] -> Ksig -- | 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] -> Ksig -- | 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 -> Ksig -- | 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 -> Ksig -- | 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] -> Ksig -- | 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] -> Ksig -- | 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] -> Ksig -- | 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 :: Amp -> 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 :: Amp -> 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 :: Amp -> 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 :: Amp -> Cps -> 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 :: Amp -> Cps -> Sig -> Sig -> Sig -> Tab -> Sig crossfm :: Cps -> Cps -> Sig -> Sig -> Sig -> Tab -> Tab -> (Sig, Sig) crossfmi :: Cps -> Cps -> Sig -> Sig -> Sig -> Tab -> Tab -> (Sig, Sig) crosspm :: Cps -> Cps -> Sig -> Sig -> Sig -> Tab -> Tab -> (Sig, Sig) crosspmi :: Cps -> Cps -> Sig -> Sig -> Sig -> Tab -> Tab -> (Sig, Sig) crossfmpm :: Cps -> Cps -> Sig -> Sig -> Sig -> Tab -> Tab -> (Sig, Sig) crossfmpmi :: Cps -> Cps -> 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 :: Amp -> Cps -> 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 :: Amp -> Cps -> Icps -> 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 -> Amp -> Icps -> 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 :: Amp -> Cps -> 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 :: Amp -> Cps -> 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 :: Amp -> Cps -> 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 :: Amp -> Cps -> 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 :: Amp -> Cps -> 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 :: Icps -> Iamp -> 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 -> Amp -> 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 :: Amp -> Cps -> 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 :: Amp -> Cps -> Cps -> 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 :: Amp -> Cps -> 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 :: Amp -> Cps -> 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 :: Amp -> Cps -> 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 :: Amp -> Cps -> 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 :: Amp -> Cps -> 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 :: Amp -> Cps -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> Tab -> Tab -> Tab -> Sig fmwurlie :: Amp -> Cps -> 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 :: Amp -> 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 :: Iamp -> 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 :: Iamp -> 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 :: Amp -> 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 :: Amp -> 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 :: Iamp -> 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 :: Iamp -> 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 :: Amp -> 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 :: Iamp -> 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 :: Amp -> 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 :: Amp -> Cps -> 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 :: Amp -> Cps -> 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 :: Amp -> Cps -> 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 :: Amp -> Cps -> 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 :: Amp -> Cps -> 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 :: Amp -> Cps -> 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 :: Amp -> Cps -> Sig -> Sig -> Sig -> Sig -> Sig -> Tab -> Tab -> 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) -- | 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 -- | Accesses table values by direct indexing. -- --
-- ires table indx, ifn [, ixmode] [, ixoff] [, iwrap] ---- -- doc: http://www.csounds.com/manual/html/table.html tableD :: D -> Tab -> D -- | Accesses table values by direct indexing with linear interpolation. -- --
-- ires tablei indx, ifn [, ixmode] [, ixoff] [, iwrap] ---- -- doc: http://www.csounds.com/manual/html/tablei.html tableiD :: D -> Tab -> D -- | Accesses table values by direct indexing with cubic interpolation. -- --
-- ires table3 indx, ifn [, ixmode] [, ixoff] [, iwrap] ---- -- doc: http://www.csounds.com/manual/html/table3.html table3D :: 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). -- --
-- 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 -> Cps -> 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 -- | 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 size fidelity (how many points in the table by default). data TabFi -- | Sets different table size for different GEN-routines. -- --
-- fineFi n ps ---- -- where -- --
-- coarseFi n ---- -- where n is a degree of 2. For example, n = 10 sets -- size to 1024 points for all tables by default. coarseFi :: Int -> TabFi -- | 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 -- | Just like sines3 but phases are set to zero. sines2 :: [(PartialNumber, PartialStrength)] -> Tab -- | Just like sines2 but partial strength is set to one. partials :: [PartialNumber] -> 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 -- --
-- lins [a, n1, b, n2, c, ...] ---- -- where -- --
-- cubes [a, n1, b, n2, c, ...] ---- -- where -- --
-- exps [a, n1, b, n2, c, ...] ---- -- where -- --
-- splines [a, n1, b, n2, c, ...] ---- -- where -- --
-- econsts [a, b, c, ...] ---- -- is the same as -- --
-- consts [a, 1, b, 1, c, ...] --econsts :: [Double] -> Tab -- | Equally spaced segments of straight lines. -- --
-- elins [a, b, c, ...] ---- -- is the same as -- --
-- lins [a, 1, b, 1, c, ...] --elins :: [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 -- --
-- polys xl xr [h0, h1, h2, ..] ---- -- where -- --
-- bessels xint ---- -- the function is defined within the interval [0, xint]. bessels :: Double -> Tab -- | Creates a table of doubles (It's f-table in Csound). Arguments are: -- --
-- 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 -- | Reads table several times during the note length. several :: Tab -> Sig -> Sig -- | Table for pure sine wave. sine :: Tab -- | 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 arity :: Arg a => a -> Int -- | 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 toSig :: ToSig a => a -> Sig -- | Sets rate to audio rate. ar :: Sig -> Sig -- | Sets rate to control rate. kr :: Sig -> Sig -- | Converts signal to double. ir :: Sig -> D -- | Converts numbers to signals. It creates constant signal. sig :: D -> Sig -- | 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 CsdTuple (NoSE a) => Out a type Sig2 = (Sig, Sig) type Sig3 = (Sig, Sig, Sig) type Sig4 = (Sig, Sig, Sig, Sig) -- | An alias for control rate signals (it's used only to clarify that -- kr was applied to the signal). type Ksig = Sig -- | An alias for amplitude. type Amp = Sig -- | An alias for cycles per second. type Cps = Sig -- | An alias for amplitude as number. type Iamp = D -- | An alias for cycles per second as number. type Icps = D -- | 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 already defined one. makeArgMethods :: Arg a => (a -> b) -> (b -> a) -> ArgMethods b data Mix a -- | Play a bunch of notes with the given instrument. -- --
-- res = sco instrument scores ---- --
-- res = mix effect sco ---- --
-- playCsd program file sco ---- -- Produces files file.csd (with renderCsd) and -- file.wav (with csound) and then invokes: -- --
-- program file.wav --playCsd :: (Out a, CsdSco sco) => String -> String -> sco (Mix a) -> IO () -- | Renders to tmp.csd and tmp.wav and plays with mplayer. mplayer :: (Out a, CsdSco sco) => sco (Mix a) -> IO () -- | Renders to tmp.csd and tmp.wav and plays with totem player. totem :: (Out a, CsdSco sco) => sco (Mix a) -> IO () type Channel = Int type CtrlId = Int -- | Csound options. The default value is -- --
-- instance Default CsdOptions where
-- def = CsdOptions
-- { flags = "-d" -- suppress ftable printing
-- , sampleRate = 44100
-- , blockSize = 64
-- , seed = Nothing
-- , initc7 = []
-- , tabFi = fineFi 13 [(idSegs, 10), (idExps, 10), (idConsts, 8)] } -- all tables have 8192 points but tables for linear, exponential and constant segments.
--
data CsdOptions
CsdOptions :: String -> Int -> Int -> Maybe Int -> [(Channel, CtrlId, Double)] -> TabFi -> CsdOptions
flags :: CsdOptions -> String
sampleRate :: CsdOptions -> Int
blockSize :: CsdOptions -> Int
seed :: CsdOptions -> Maybe Int
initc7 :: CsdOptions -> [(Channel, CtrlId, Double)]
tabFi :: CsdOptions -> TabFi
-- | Renders Csound file with options.
renderCsdBy :: (Out a, CsdSco sco) => CsdOptions -> sco (Mix a) -> IO String
-- | Render Csound file with options and save it to the give file.
writeCsdBy :: (Out a, CsdSco sco) => CsdOptions -> String -> sco (Mix a) -> IO ()
-- | Works just like playCsd but you can supply csound options.
playCsdBy :: (Out a, CsdSco sco) => CsdOptions -> String -> String -> sco (Mix a) -> IO ()
-- | Renders to tmp.csd and tmp.wav and plays with mplayer.
mplayerBy :: (Out a, CsdSco sco) => CsdOptions -> sco (Mix a) -> IO ()
-- | Renders to tmp.csd and tmp.wav and plays with totem player.
totemBy :: (Out a, CsdSco sco) => CsdOptions -> sco (Mix a) -> IO ()