--- /dev/null
+# Soundpipe
+
+compiler generated documentation
+
+```gwion
+#!+ Soundpipe
+const late UGen @soundpipe;
+class ftbl extends Object {
+ var @internal @ftbl;
+ #!- a string of space-separated parameters, in groups of four:
+ #!-
+ #!- arg 1 is the partial number. must be positive, but it doesn't need to be a whole number.
+ #!-
+ #!- arg 2 is the strength.
+ #!-
+ #!- arg 3 is the initial phase (expressed in degrees)
+ #!-
+ #!- arg 4 is the dc offset. A dc offset of 2 will put a 2-strength sinusoid in the range
+ #!- from (-2,2) to (0, 4)
+ fun void _gen_composite(int Sizestring _argstring);
+ #!- filename
+ fun void _gen_file(int Sizestring _filename);
+ #!- The scale of the distribution, in the range of -/+scale
+ #!- Random seed.
+ fun void _gen_gauss(int Sizefloat _scaleint _seed);
+ #!- A list of ordered xy pairs. X expects whole number integers, as they correlate to index positions in the ftable.
+ fun void _gen_line(int Sizestring _argstring);
+ #!- ftable of amplitudes to use
+ #!- Base frequency.
+ #!- Bandwidth.
+ fun void _gen_padsynth(int Sizeftbl _ampsfloat _ffloat _bw);
+ #!- A string of value pairs. The first value is the value, then the probability.
+ fun void _gen_rand(int Sizestring _argstring);
+ #!- destination ftable
+ fun void _gen_scrambler(int Sizeftbl _dest);
+ fun void _gen_sine(int Size);
+ #!- A list of amplitudes, in the range 0-1, separated by spaces.Each position coordinates to their partial number. Position 1 is the fundamental amplitude (1 * freq). Position 2 is the first overtone (2 * freq), 3 is the second (3 * freq), etc...
+ fun void _gen_sinesum(int Sizestring _argstring);
+ fun void _gen_triangle(int Size);
+ #!- A list of ordered xy pairs. X expects whole number integers, as they correlate to index positions in the ftable.
+ fun void _gen_xline(int Sizestring _argstring);
+}
+#!- ADSR generator
+#!- This is an ADSR generator whose curves are created using a one-pole low pass filter.
+class Adsr extends UGen {
+ fun float atk();
+ #!- Attack time (in seconds)
+ fun float atk(float _atk);
+ fun float dec();
+ #!- Decay time (in seconds)
+ fun float dec(float _dec);
+ fun float sus();
+ #!- Sustain (in range 0-1)
+ fun float sus(float _sus);
+ fun float rel();
+ #!- Release time (in seconds)
+ fun float rel(float _rel);
+}
+#!- Allpass filter
+#!-
+#!- Often used for the creation of reverb modules.
+class Allpass extends UGen {
+ #!- The loop time of the filter, in seconds. This can also be thought of as the delay time.
+ fun void init(float _looptime);
+ fun float revtime();
+ #!- The reverberation time, in seconds (RT-60).
+ fun float revtime(float _revtime);
+}
+#!- First-order recursive highpass filter
+#!-
+#!- This is the complement to the tone module.
+class Atone extends UGen {
+ fun float hp();
+ #!- The response curve's half power point (cutoff frequency).
+ fun float hp(float _hp);
+}
+#!- Automatic wah pedal
+#!- An automatic wah effect, ported from Guitarix via Faust.
+class Autowah extends UGen {
+ fun float level();
+ #!- Overall level (between 0 and 1)
+ fun float level(float _level);
+ fun float wah();
+ #!- wah amount
+ fun float wah(float _wah);
+ fun float mix();
+ #!- Wet/dry amount (100 = wet, 0 = dry)
+ fun float mix(float _mix);
+}
+#!- Balance the gain of one signal based on another signal
+#!-
+#!- This is often used to restore gain lost in the output of a filter.
+#!-
+#!- In the source code, the value `ihp` is set to a static 10hz. This is the default value in Csound, and should not often need to be changed.
+class Bal extends UGen {
+}
+#!- Physical model approximating the sound of a struck metal bar
+class Bar extends UGen {
+ #!- Dimensionless stiffness parameter
+ #!- High-frequency loss parameter. Keep this small
+ fun void init(float _iKfloat _ib);
+ fun float bcL();
+ #!- Boundary condition at left end of bar. 1 = clamped, 2 = pivoting, 3 = free
+ fun float bcL(float _bcL);
+ fun float bcR();
+ #!- Boundary condition at right end of bar. 1 = clamped, 2 = pivoting, 3 = free
+ fun float bcR(float _bcR);
+ fun float T30();
+ #!- 30db decay time (in seconds).
+ fun float T30(float _T30);
+ fun float scan();
+ #!- Speed of scanning the output location.
+ fun float scan(float _scan);
+ fun float pos();
+ #!- Position along bar that strike occurs.
+ fun float pos(float _pos);
+ fun float vel();
+ #!- Normalized strike velocity
+ fun float vel(float _vel);
+ fun float wid();
+ #!- Spatial width of strike.
+ fun float wid(float _wid);
+}
+#!- A sweepable biquadratic general purpose filter
+#!-
+#!-
+class Biquad extends UGen {
+ fun float b0();
+ #!- biquad coefficient.
+ fun float b0(float _b0);
+ fun float b1();
+ #!- biquad coefficient.
+ fun float b1(float _b1);
+ fun float b2();
+ #!- biquad coefficient.
+ fun float b2(float _b2);
+ fun float a0();
+ #!- biquad coefficient.
+ fun float a0(float _a0);
+ fun float a1();
+ #!- biquad coefficient.
+ fun float a1(float _a1);
+ fun float a2();
+ #!- biquad coefficient.
+ fun float a2(float _a2);
+}
+#!- Bipolar Scale
+#!-
+#!- This module scales from bipolar [-1, 1] to another range defined by min and max.
+class Biscale extends UGen {
+ fun float min();
+ #!- Minimum value to scale to.
+ fun float min(float _min);
+ fun float max();
+ #!- Maximum value to scale to.
+ fun float max(float _max);
+}
+#!- Digital signal degradation
+#!-
+#!- Bitcrusher will digitally degrade a signal by altering the bitdepth and sampling-rate.
+class Bitcrush extends UGen {
+ fun float bitdepth();
+ #!- Bit depth. Expects an integer in the range of 1-16. Fractional values will be truncated.
+ fun float bitdepth(float _bitdepth);
+ fun float srate();
+ #!- Sampling rate.
+ fun float srate(float _srate);
+}
+#!- Bandlimited sawtooth oscillator
+#!- This is a bandlimited sawtooth oscillator ported from the `sawtooth` function from the Faust
+#!- programming language.
+class Blsaw extends UGen {
+ fun float freq();
+ #!- Frequency, (range 0-20000)
+ fun float freq(float _freq);
+ fun float amp();
+ #!- Amplitude (range 0-1).
+ fun float amp(float _amp);
+}
+#!- Bandlimited square oscillator
+#!- This is a bandlimited square oscillator ported from the `squaretooth` function from the Faust
+#!- programming language.
+class Blsquare extends UGen {
+ fun float freq();
+ #!- Frequency, (range 0-20000)
+ fun float freq(float _freq);
+ fun float amp();
+ #!- Amplitude (range 0-1).
+ fun float amp(float _amp);
+ fun float width();
+ #!- Duty cycle width (range 0-1).
+ fun float width(float _width);
+}
+#!- Bandlimited triangle oscillator
+#!- This is a bandlimited triangle oscillator ported from the `triangletooth` function from the Faust
+#!- programming language.
+class Bltriangle extends UGen {
+ fun float freq();
+ #!- Frequency, (range 0-20000)
+ fun float freq(float _freq);
+ fun float amp();
+ #!- Amplitude (range 0-1).
+ fun float amp(float _amp);
+}
+#!- Brownian noise generator.
+class Brown extends UGen {
+}
+#!- Bandpass Butterworth filter
+class Butbp extends UGen {
+ fun float freq();
+ #!- Center Frequency. (in Hertz)
+ fun float freq(float _freq);
+ fun float bw();
+ #!- Bandwidth. (in Hertz)
+ fun float bw(float _bw);
+}
+#!- Band-reject Butterworth filter
+class Butbr extends UGen {
+ fun float freq();
+ #!- Center Frequency. (in Hertz)
+ fun float freq(float _freq);
+ fun float bw();
+ #!- Bandwidth. (in Hertz)
+ fun float bw(float _bw);
+}
+#!- Highpass Butterworth filter
+class Buthp extends UGen {
+ fun float freq();
+ #!- Cutoff Frequency.
+ fun float freq(float _freq);
+}
+#!- Lowpass Butterworth filter
+class Butlp extends UGen {
+ fun float freq();
+ #!- Cutoff Frequency.
+ fun float freq(float _freq);
+}
+#!- Applies clip-limiting to a signal
+class Clip extends UGen {
+ fun float lim();
+ #!- threshold / limiting value.
+ fun float lim(float _lim);
+}
+#!- Resettable clock with subdivisions
+class Clock extends UGen {
+ fun float bpm();
+ #!- Clock tempo, in beats per minute.
+ fun float bpm(float _bpm);
+ fun float subdiv();
+ #!- Clock subdivision. 2 = eighths, 4 = 16ths, etc.
+ fun float subdiv(float _subdiv);
+}
+#!- Comb filter
+class Comb extends UGen {
+ #!- The loop time of the filter, in seconds. This can also be thought of as the delay time.
+ fun void init(float _looptime);
+ fun float revtime();
+ #!- Reverberation time, in seconds (RT-60).
+ fun float revtime(float _revtime);
+}
+#!- Compressor
+class Compressor extends UGen {
+ fun float ratio();
+ #!- Ratio to compress with, a value > 1 will compress
+ fun float ratio(float _ratio);
+ fun float thresh();
+ #!- Threshold (in dB) 0 = max
+ fun float thresh(float _thresh);
+ fun float atk();
+ #!- Compressor attack
+ fun float atk(float _atk);
+ fun float rel();
+ #!- Compressor release
+ fun float rel(float _rel);
+}
+#!- Partioned convolution.
+#!- This module will perform partitioned convolution on an input signal using
+#!- an ftable as an impulse response.
+class Conv extends UGen {
+ #!- Ftable used as the impulse response.
+ #!- Partition length (in samples).
+ #!- Must be a power of 2. Lower values will add less latency, at the cost
+ #!- of requiring more CPU power.
+ fun void init(ftbl _ftfloat _iPartLen);
+}
+#!- Trigger-based fixed counter
+#!-
+#!- The signal output will count from 0 to [N-1], and then
+#!- repeat itself. Count will start when it has been triggered, otherwise it will be -1.
+class Count extends UGen {
+ fun float count();
+ #!- Number to count up to (count - 1). Decimal points will be truncated.
+ fun float count(float _count);
+ fun float mode();
+ #!- Counting mode. 0 = wrap-around, 1 = count up to N -1, then stop and spit out -1
+ fun float mode(float _mode);
+}
+#!- Crossfade two signals.
+#!- This module will perform a linear crossfade between two input signals.
+class Crossfade extends UGen {
+ fun float pos();
+ #!- Crossfade position. 0 = all signal 1, 1 = all signal 2
+ fun float pos(float _pos);
+}
+#!- A simple DC block filter
+class Dcblock extends UGen {
+}
+#!- Adds a delay to an incoming signal with optional feedback.
+class Delay extends UGen {
+ #!- Delay time, in seconds.
+ fun void init(float _time);
+ fun float feedback();
+ #!- Feedback amount. Should be a value between 0-1.
+ fun float feedback(float _feedback);
+}
+#!- Diode-ladder virtual analogue low-pass filter
+#!- This is a diode-ladder filter designed by Will Pirkle.
+#!- More information can be found in this paper here:
+#!- http://www.willpirkle.com/Downloads/AN-6DiodeLadderFilter.pdf
+class Diode extends UGen {
+ fun float freq();
+ #!-
+ fun float freq(float _freq);
+ fun float res();
+ #!-
+ fun float res(float _res);
+}
+#!- Read from an audio file
+#!-
+#!- Expects a 1-channel file matching the project samplerate. Diskin should be able to read any file format that libsndfile supports.
+class Diskin extends UGen {
+ #!- Filename of the audio file.
+ fun void init(string _filename);
+}
+#!- Distortion using a modified hyperbolic tangent function
+class Dist extends UGen {
+ fun float pregain();
+ #!- Gain applied before waveshaping.
+ fun float pregain(float _pregain);
+ fun float postgain();
+ #!- Gain applied after waveshaping
+ fun float postgain(float _postgain);
+ fun float shape1();
+ #!- Shape of the positive part of the signal. A value of 0 gets a flat clip.
+ fun float shape1(float _shape1);
+ fun float shape2();
+ #!- Like shape1, only for the negative part of the signal.
+ fun float shape2(float _shape2);
+}
+#!- Delta Metro
+#!-
+#!- Produce a set of triggers spaced apart by time.
+class Dmetro extends UGen {
+ fun float time();
+ #!- Time between triggers (in seconds). This will update at the start of each trigger.
+ fun float time(float _time);
+}
+#!- Water drop physical model
+#!-
+#!- Physical model of the sound of dripping water. When triggered, it will produce a droplet of water.
+class Drip extends UGen {
+ #!- Period of time over which all sound is stopped.
+ fun void init(float _dettack);
+ fun float num_tubes();
+ #!- Number of units.
+ fun float num_tubes(float _num_tubes);
+ fun float amp();
+ #!- Amplitude.
+ fun float amp(float _amp);
+ fun float damp();
+ #!- The damping factor. Maximum value is 2.0.
+ fun float damp(float _damp);
+ fun float shake_max();
+ #!- The amount of energy to add back into the system.
+ fun float shake_max(float _shake_max);
+ fun float freq();
+ #!- Main resonant frequency.
+ fun float freq(float _freq);
+ fun float freq1();
+ #!- The first resonant frequency.
+ fun float freq1(float _freq1);
+ fun float freq2();
+ #!- The second resonant frequency.
+ fun float freq2(float _freq2);
+}
+#!- Delta trigger
+#!-
+#!- This is able to create spaced out triggers. It is set off by a single trigger.
+class Dtrig extends UGen {
+ #!- An ftable containing times in seconds.
+ fun void init(ftbl _ft);
+ fun int loop();
+ #!- When set to 1, dtrig will wrap around and loop again.
+ fun int loop(int _loop);
+ fun float delay();
+ #!- This sets a delay (in seconds) on the triggered output when it is initially triggered. This is useful for rhythmic sequences with rests in the beginnings.
+ fun float delay(float _delay);
+ fun float scale();
+ #!- Scales the timing signal. A scale of 1 is normal, a scale of 2 will double the duration, and a scale of 0.5 will halve it.
+ fun float scale(float _scale);
+}
+#!- A series of random impulses
+class Dust extends UGen {
+ fun float amp();
+ #!-
+ fun float amp(float _amp);
+ fun float density();
+ #!-
+ fun float density(float _density);
+ fun int bipolar();
+ #!- Bipolar flag. A non-zero makes the signal bipolar as opposed to unipolar.
+ fun int bipolar(int _bipolar);
+}
+#!- 2nd order tunable equalization filter
+#!-
+#!- This provides a peak/notch filter for building parametric/graphic equalizers. With gain above 1, there will be a peak at the center frequency with a width dependent on bw. If gain is less than 1, a notch is formed around the center frequency (freq).
+#!-
+class Eqfil extends UGen {
+ fun float freq();
+ #!- The center frequency of the filter
+ fun float freq(float _freq);
+ fun float bw();
+ #!- The peak/notch bandwidth in Hertz
+ fun float bw(float _bw);
+ fun float gain();
+ #!- The peak/notch gain
+ fun float gain(float _gain);
+}
+#!- Produce a line segment with exponential slope
+#!- This will generate a line from value A to value B in given amount of time.
+#!- When it reaches it's target, it will stay at that value.
+class Expon extends UGen {
+ fun float a();
+ #!- Inital point.
+ fun float a(float _a);
+ fun float dur();
+ #!- Duration (in seconds)
+ fun float dur(float _dur);
+ fun float b();
+ #!- End point
+ fun float b(float _b);
+}
+#!- Produces sinusoid bursts for granular and formant synthesis
+#!-
+class Fof extends UGen {
+ #!- ftable for sine wave.
+ #!- Ftable for envelope function (use either gen_line or gen_sinecomp)
+ #!- Maximum number of foflet overlaps.
+ #!- Phase
+ fun void init(ftbl _sineftbl _winint _iolapsfloat _iphs);
+ fun float amp();
+ #!- Overall amplitude
+ fun float amp(float _amp);
+ fun float fund();
+ #!- Fundamental frequency
+ fun float fund(float _fund);
+ fun float form();
+ #!- Formant frequency.
+ fun float form(float _form);
+ fun float oct();
+ #!- Octaviation index, if greater than zero, lowers the effective fund frequency by attenuating odd-numbered sine bursts. whole numbers are full octaves. fractions transpositional.
+ fun float oct(float _oct);
+ fun float band();
+ #!- Bandwidth (in -6db) expressed in Hz. The bandwidth determines the rate of exponential decay throughout the sineburst, before the enveloping is applied.
+ fun float band(float _band);
+ fun float ris();
+ #!- Rise of sinusoid burst (in seconds)
+ fun float ris(float _ris);
+ fun float dec();
+ #!- Decay of the sinusoid burst (in seconds).
+ fun float dec(float _dec);
+ fun float dur();
+ #!- OVerall duration of sinusoid burst (in seconds).
+ fun float dur(float _dur);
+}
+#!- Formant filter
+#!- When fed with a pulse train, it will generate a series of overlapping grains. Overlapping will occur when 1/freq < dec, but there is no upper limit on the number of overlaps. (cited from www.csounds.com/manual/html/fofilter.html)
+class Fofilt extends UGen {
+ fun float freq();
+ #!- Center frequency.
+ fun float freq(float _freq);
+ fun float atk();
+ #!- Impulse response attack time (in seconds).
+ fun float atk(float _atk);
+ fun float dec();
+ #!- Impulse reponse decay time (in seconds)
+ fun float dec(float _dec);
+}
+#!- Sucession of grains from data in a stored function table
+class Fog extends UGen {
+ #!- ftable for sample.
+ #!- Ftable for envelope function (use either gen_line or gen_sinecomp)
+ #!- Maximum number of foglet overlaps.
+ #!- Phase
+ fun void init(ftbl _wavftbl _winint _iolapsfloat _iphs);
+ fun float amp();
+ #!- Overall amplitude
+ fun float amp(float _amp);
+ fun float dens();
+ #!- Density. The frequency of grains/second.
+ fun float dens(float _dens);
+ fun float trans();
+ #!- Transposition, in terms of playback speed
+ fun float trans(float _trans);
+ fun float spd();
+ #!- Starting sample index, normalized 0-1.
+ fun float spd(float _spd);
+ fun float oct();
+ #!- Octaviation index, if greater than zero, lowers the effective fund frequency by attenuating odd-numbered sine bursts. whole numbers are full octaves. fractions transpositional.
+ fun float oct(float _oct);
+ fun float band();
+ #!- Bandwidth (in -6db) expressed in Hz. The bandwidth determines the rate of exponential decay throughout the sineburst, before the enveloping is applied.
+ fun float band(float _band);
+ fun float ris();
+ #!- Rise of sinusoid burst (in seconds)
+ fun float ris(float _ris);
+ fun float dec();
+ #!- Decay of the sinusoid burst (in seconds).
+ fun float dec(float _dec);
+ fun float dur();
+ #!- OVerall duration of sinusoid burst (in seconds).
+ fun float dur(float _dur);
+}
+#!- Adds artificial foldover to an audio signal
+#!-
+#!- Primarily created for use with Decimator.
+class Fold extends UGen {
+ fun float incr();
+ #!- Increment
+ fun float incr(float _incr);
+}
+#!- A short title describing the module
+#!-
+#!- This is a description of the entire module. This is not a real module. This description should be a comprehensive sumary of what this function does.
+#!-
+#!- Inside the Lua table, this is expressed as a multiline string, however it does not adhere to the tradtional 80 column rule found in programming.
+#!-
+#!- Write as much text as needed here...
+#!- FM oscilator pair with linear interpolation
+class Fosc extends UGen {
+ #!- Wavetable to read from. Note: the size of this table must be a power of 2.
+ fun void init(ftbl _tbl);
+ fun float freq();
+ #!- Frequency (in Hz)
+ fun float freq(float _freq);
+ fun float amp();
+ #!- Amplitude (typically a value between 0 and 1).
+ fun float amp(float _amp);
+ fun float car();
+ #!- Carrier frequency, expressed as a ratio number in C:M ratio. Typically an integer.
+ fun float car(float _car);
+ fun float mod();
+ #!- Modulator frequency, expressed as a ratio number in C:M ratio. Typically an integer.
+ fun float mod(float _mod);
+ fun float indx();
+ #!- Modulation index. Most commercial synthesizers have a range from 0-8, but there's nothing stopping you from going beyond that.
+ fun float indx(float _indx);
+}
+#!- Series of partials from the harmonic series
+#!-
+#!- GBuzz comes from the `buzz` family of Csound opcodes, and is capable of producing a rich spectrum of harmonic content, useful for subtractive synthesis implementation.
+class Gbuzz extends UGen {
+ #!- Soundpipe function table used internally. This should be a sine wave.
+ #!- Phase to start on (in the range 0-1)
+ fun void init(ftbl _ftfloat _iphs);
+ fun float freq();
+ #!- Frequency, in Hertz.
+ fun float freq(float _freq);
+ fun float amp();
+ #!- Amplitude (Typically a value between 0 and 1).
+ fun float amp(float _amp);
+ fun float nharm();
+ #!- Number of harmonics.
+ fun float nharm(float _nharm);
+ fun float lharm();
+ #!- Lowest harmonic present. This should be a whole number integer.
+ fun float lharm(float _lharm);
+ fun float mul();
+ #!- Multiplier. This determines the relative strength of each harmonic.
+ fun float mul(float _mul);
+}
+#!- Generate a composite waveform of sinusoids
+#!- Reads from a wav file
+#!-
+#!- This will only load as many samples as the length of the ftable.
+#!- Gaussian distribution
+#!- A series of line segments
+#!- An implementation of the Padsynth Algorithm by Paul Nasca.
+#!-
+#!- This is a basic implemenation of the padsynth algorithm. More information can be found here:
+#!-
+#!- http://zynaddsubfx.sourceforge.net/doc/PADsynth/PADsynth.htm
+#!-
+#!- This gen routine requires libfftw, and is not compiled by default. See config.mk for more info.
+#!-
+#!-
+#!- Generates a user defined random number distribution.
+#!- Scrambles phase of ftable.
+#!- This gen routine will copy the ftable, apply an FFT, apply
+#!- a random phase, and then do an inverse FFT. This effect
+#!- is ideal for creating pad-like sounds.
+#!- generates a sampled sinusoid
+#!- Waveform as a sum of harmonically related sine waves
+#!- generates a sampled triangle wave
+#!- A series of exponential segments
+#!- Hilbert transform
+#!-
+class Hilbert extends UGen {
+}
+#!- Reads from standard input.
+#!-
+#!- Expects type of SPFLOAT, which by default is a float. If the input data is larger than the number of samples, you will get a complaint about a broken pipe (but it will still work). If there is no input data from STDIN, it will hang.
+#!-
+#!-
+#!-
+#!-
+#!- The expected use case of sp_in is to utilize pipes from the commandline, like so:
+#!-
+#!-
+#!-
+#!-
+#!- cat /dev/urandom | ./my_program
+#!-
+#!-
+#!-
+#!-
+#!- Assuming my_program is using sp_in, this will write /dev/urandom (essentially white noise) to an audio file.
+class In extends UGen {
+}
+#!- Trigger-based Incrementor
+#!- When triggered, this module will increment and decrement a value bounded between a min
+#!- and max. Initially, this was designed for the specific use case of interfacing with the
+#!- griffin knob.
+class Incr extends UGen {
+ #!- Initial value
+ fun void init(float _val);
+ fun float step();
+ #!- Step value to increment by.
+ fun float step(float _step);
+ fun float min();
+ #!- Minimum value
+ fun float min(float _min);
+ fun float max();
+ #!- Maximum value
+ fun float max(float _max);
+}
+#!- John Chowning reverberator
+#!-
+#!- This is was built using the JC reverb implentation found in FAUST. According to the source code, the specifications for
+#!- this implementation were found on an old SAIL DART backup tape.
+#!-
+#!- This class is derived from the CLM JCRev function, which is based on the use of
+#!- networks of simple allpass and comb delay filters. This class implements three series
+#!- allpass units, followed by four parallel comb filters, and two decorrelation delay lines in
+#!- parallel at the output.
+class Jcrev extends UGen {
+}
+#!- A signal with random fluctuations
+#!-
+#!- This is useful for emulating jitter found in analogue equipment.
+class Jitter extends UGen {
+ fun float amp();
+ #!- The amplitude of the line. Will produce values in the range of (+/-)amp.
+ fun float amp(float _amp);
+ fun float cpsMin();
+ #!- The minimum frequency of change in Hz.
+ fun float cpsMin(float _cpsMin);
+ fun float cpsMax();
+ #!- The maximum frequency of change in Hz.
+ fun float cpsMax(float _cpsMax);
+}
+#!- Produce a line segment with linear slope
+#!- This will generate a line from value A to value B in given amount of time.
+#!- When it reaches it's target, it will stay at that value.
+class Line extends UGen {
+ fun float a();
+ #!- Inital point.
+ fun float a(float _a);
+ fun float dur();
+ #!- Duration (in seconds)
+ fun float dur(float _dur);
+ fun float b();
+ #!- End point
+ fun float b(float _b);
+}
+#!- A linear predictive coding filter.
+#!- This module is a wrapper for the open source library openlpc, which implements
+#!- the LPC10 audio codec optimized for speech signals. This module takes in an
+#!- input signal, downsamples it, and produces a decoded LPC10 audio signal, which
+#!- has a similar sound to that of a speak and spell. In this context, the LPC
+#!- signal is meant to be more of a audio effect rather than a utility for
+#!- communication.
+#!-
+#!- Because the LPC10 encoder
+#!- relies on frames for encoding, the output signal has a few milliseconds of
+#!- delay. The delay can be calculated in seconds as (framesize * 4) / samplerate.
+#!-
+#!- In addition to using the LPC as a decoder/encoder, this module can also be
+#!- set to synth mode. Instead of reading from an input signal, the LPC can
+#!- instead read from parameters set directly in a scaled ftable.
+#!-
+class Lpc extends UGen {
+ #!- Sets the frame size for the encoder.
+ fun void init(int _framesize);
+}
+#!- 3-pole (18 db/oct slope) Low-Pass filter with resonance and tanh distortion
+class Lpf18 extends UGen {
+ fun float cutoff();
+ #!- Filter cutoff frequency, in Hertz
+ fun float cutoff(float _cutoff);
+ fun float res();
+ #!- Resonance. Expects a value in the range 0-1. A value of 1.0 will self oscillate at the cutoff frequency.
+ fun float res(float _res);
+ fun float dist();
+ #!- Distortion amount.
+ fun float dist(float _dist);
+}
+#!- A randomly open or closed `maybe gate`
+#!-
+#!- It takes in a trigger, and then it will randomly decide to turn the gate on or not. One particular application for maygate is to arbitrarily turn on/off sends to effects. One specific example of this could be a randomized reverb throw on a snare.
+class Maygate extends UGen {
+ fun float prob();
+ #!- Probability of maygate. This is a value between 0-1. The closer to 1, the more likely the maygate will let a signal through.
+ fun float prob(float _prob);
+ fun int mode();
+ #!- If mode is nonzero, maygate will output one sample triggers instead of a gate signal.
+ fun int mode(int _mode);
+}
+#!- Metronome
+#!-
+#!- Metro produces a series of 1-sample ticks at a regular rate. Typically, this is used alongside trigger-driven modules.
+class Metro extends UGen {
+ fun float freq();
+ #!- The frequency to repeat.
+ fun float freq(float _freq);
+}
+#!- Phase-locked vocoder.
+#!-
+#!- Mincer is a phase-locked vocoder. It has the ability to play back an audio
+#!- file loaded into an ftable like a sampler would. Unlike a typical sampler, mincer allows
+#!- time and pitch to be controlled separately.
+class Mincer extends UGen {
+ #!- ftable containing an audio file.
+ #!- FFT window size. Should be a power of 2.
+ fun void init(ftbl _ftint _winsize);
+ fun float time();
+ #!- Position in time. When non-changing it will do a spectral freeze of a the current point in time.
+ fun float time(float _time);
+ fun float amp();
+ #!- Amplitude.
+ fun float amp(float _amp);
+ fun float pitch();
+ #!- Pitch ratio. A value of. 1 normal, 2 is double speed, 0.5 is halfspeed, etc.
+ fun float pitch(float _pitch);
+}
+#!- Resonance filter used for modal synthesis
+#!-
+#!- Plucked and bell sounds can be created by passing an impulse through a combination of modal filters.
+class Mode extends UGen {
+ fun float freq();
+ #!- Resonant frequency of the filter.
+ fun float freq(float _freq);
+ fun float q();
+ #!- Quality factor of the filter. Roughly equal to q/freq.
+ fun float q(float _q);
+}
+#!- Low pass resonant filter based on the Moogladder filter
+class Moogladder extends UGen {
+ fun float freq();
+ #!- Filter cutoff frequency.
+ fun float freq(float _freq);
+ fun float res();
+ #!- Filter resonance
+ fun float res(float _res);
+}
+#!- White noise generator
+class Noise extends UGen {
+ fun float amp();
+ #!- Amplitude. (Value between 0-1).
+ fun float amp(float _amp);
+}
+#!- Nanosamp: a tiny sampler built for Soundpipe
+#!-
+#!- A nanosamp file is comprised of a mono audio file and an ini file. Nanosamp is geared towards percussive and found sound sample players, and is intended to be combined with soundpipe modules.
+#!-
+#!- The ini file contains mappings that correspond to the audio file. Such an entry would look like this:
+#!-
+#!-
+#!-
+#!- [keyword]
+#!-
+#!- pos = 2.3
+#!-
+#!- size = 3
+#!-
+#!-
+#!- </pre>
+#!- In this instance, an entry called `keyword` has been made, starting at 2.3 seconds in the
+#!- audio file, with a length of 3 seconds. An example file oneart.ini has been created in the
+#!- examples folder.
+#!-
+#!- The SoundPipe implementation of nanosamp will automatically index the entries
+#!- in the order they appear in the INI file and must be selected this way by changing the index
+#!- parameter. Soundpipe will only select the new entry when the trigger input is a non-zero value.
+#!-
+class Nsmp extends UGen {
+ #!- ftbl of the audio file. It should be mono.
+ #!- samplerate.
+ #!- ini file.
+ fun void init(ftbl _ftint _srstring _init);
+ fun int index();
+ #!- This is an optional parameter. These values are always set to a value by default, and can be set after the init function has been called.
+ fun int index(int _index);
+}
+#!- Table-lookup oscilator with linear interpolation
+class Osc extends UGen {
+ #!- Wavetable to read from. Note: the size of this table must be a power of 2.
+ #!- Initial phase of waveform, expects a value 0-1
+ fun void init(ftbl _tblfloat _phase);
+ fun float freq();
+ #!- Frequency (in Hz)
+ fun float freq(float _freq);
+ fun float amp();
+ #!- Amplitude (typically a value between 0 and 1).
+ fun float amp(float _amp);
+}
+#!- Wavetable morphing oscillator
+#!-
+#!- This is an oscillator with linear interpolation that is capable of morphing
+#!- between an arbitrary number of wavetables.
+class Oscmorph extends UGen {
+ #!- An array of ftables to read from. Note: the size of these tables must be a power of 2 (and the same size as well).
+ #!- Number of ftbls
+ #!- Initial phase of waveform, expects a value 0-1
+ fun void init(ftbl[] _tblint _nftfloat _phase);
+ fun float freq();
+ #!- Frequency (in Hz)
+ fun float freq(float _freq);
+ fun float amp();
+ #!- Amplitude (typically a value between 0 and 1).
+ fun float amp(float _amp);
+ fun float wtpos();
+ #!- Wavetable position. (scaled 0-1)
+ fun float wtpos(float _wtpos);
+}
+#!- Panner
+class Pan2 extends UGen {
+ fun int type();
+ #!- Panning type. 0 = equal power, 1 = square root, 2 = linear,
+ #!- 3 = alternative equal power. Values outside this range will wrap.
+ fun int type(int _type);
+ fun float pan();
+ #!- Panning. A value of -1 is hard left, and a value of 1 is hard right, and 0 is center.
+ fun float pan(float _pan);
+}
+#!- Stereo Panner
+class Panst extends UGen {
+ fun int type();
+ #!- Panning type. 0 = equal power, 1 = square root, 2 = linear,
+ #!- 3 = alternative equal power. Values outside this range will wrap.
+ fun int type(int _type);
+ fun float pan();
+ #!- Panning. A value of -1 is hard left, and a value of 1 is hard right.
+ fun float pan(float _pan);
+}
+#!- Parametric Equalizer
+#!- This is an implementation of Zoelzer's parametric equalizer filter.
+class Pareq extends UGen {
+ fun float fc();
+ #!- Center frequency in peak mode, corner frequency in shelving mode.
+ fun float fc(float _fc);
+ fun float v();
+ #!- Amount at which the center frequency value shall be increased or decreased. A value of 1 is a flat response.
+ fun float v(float _v);
+ fun float q();
+ #!- Q of the filter. sqrt(0.5) is no resonance.
+ fun float q(float _q);
+ fun float mode();
+ #!- EQ mode. 0 = peak, 1 = low shelving, 2 = high shelving
+ fun float mode(float _mode);
+}
+#!- An extreme time-stretching algorithm by Paul Nasca Octavian
+#!- This is an implementation of the popular paulstretch algorithm used for time
+#!- stretching an audio signal to create ambient textures. Ideally, this algorithm
+#!- is best used for stretching signals by very very long amounts.
+#!-
+#!- This version of paulstretch will take an ftable and loop through it, make
+#!- it an ideal means for creating sustained pads.
+class Paulstretch extends UGen {
+ #!- ftable containing audio data
+ #!- Window size, in seconds.
+ #!- Stretch factor, 1.0 is no stretch.
+ fun void init(ftbl _ftfloat _windowsizefloat _stretch);
+}
+#!- Casio-style phase distortion with `pivot point` on the X axis
+#!- This module is designed to emulate the classic phase distortion synthesis technique.
+#!- From the mid 90's. The technique reads the first and second halves of the ftbl
+#!- at different rates in order to warp the waveform. For example, pdhalf can
+#!- smoothly transition a sinewave into something approximating a sawtooth wave.
+class Pdhalf extends UGen {
+ fun float amount();
+ #!- Amount of distortion, within the range [-1, 1]. 0 is no distortion.
+ fun float amount(float _amount);
+}
+#!- Peak limiter
+#!- This is a simple peak limiting algorithm, based off code from the Stanford
+#!- Music-424 class.
+class Peaklim extends UGen {
+ fun float atk();
+ #!- Attack time, in seconds
+ fun float atk(float _atk);
+ fun float rel();
+ #!- Release time, in seconds
+ fun float rel(float _rel);
+ fun float thresh();
+ #!- Threshold, in dB
+ fun float thresh(float _thresh);
+}
+#!- A stereo phaser
+#!-
+#!- This is a stereo phaser, generated from Faust code taken from the
+#!- Guitarix project.
+class Phaser extends UGen {
+ fun float MaxNotch1Freq();
+ #!- Between 20 and 10000
+ fun float MaxNotch1Freq(float _MaxNotch1Freq);
+ fun float MinNotch1Freq();
+ #!- Between 20 and 5000
+ fun float MinNotch1Freq(float _MinNotch1Freq);
+ fun float Notch_width();
+ #!- Between 10 and 5000
+ fun float Notch_width(float _Notch_width);
+ fun float NotchFreq();
+ #!- Between 1.1 and 4
+ fun float NotchFreq(float _NotchFreq);
+ fun float VibratoMode();
+ #!- 1 or 0
+ fun float VibratoMode(float _VibratoMode);
+ fun float depth();
+ #!- Between 0 and 1
+ fun float depth(float _depth);
+ fun float feedback_gain();
+ #!- Between 0 and 1
+ fun float feedback_gain(float _feedback_gain);
+ fun float invert();
+ #!- 1 or 0
+ fun float invert(float _invert);
+ fun float level();
+ #!- -60 to 10 dB
+ fun float level(float _level);
+ fun float lfobpm();
+ #!- Between 24 and 360
+ fun float lfobpm(float _lfobpm);
+}
+#!- Normalized sawtooth wave from 0 to 1
+#!-
+#!- Phasors are often used when building table-lookup oscillators.
+class Phasor extends UGen {
+ #!- initial phase
+ fun void init(float _iphs);
+ fun float freq();
+ #!- Frequency.
+ fun float freq(float _freq);
+}
+#!- Pink pinknoise generator
+class Pinknoise extends UGen {
+ fun float amp();
+ #!- Amplitude. (Value between 0-1).
+ fun float amp(float _amp);
+}
+#!- Pitch detection using AMDF method.
+#!- Pitchamdf tracks the pitch of signal using the AMDF (Average Magnitude Difference Function) method of
+#!- Pitch following.
+class Pitchamdf extends UGen {
+ #!- Minimum expected frequency to detect
+ #!- Maximum expected frequency to detect
+ fun void init(float _minfloat _max);
+}
+#!- Karplus-Strong plucked string instrument.
+class Pluck extends UGen {
+ #!- Sets the initial frequency. This frequency is used to allocate all the buffers needed for the delay. This should be the lowest frequency you plan on using.
+ fun void init(float _ifreq);
+ fun float freq();
+ #!- Variable frequency. Values less than the initial
+ #!- frequency (ifreq) will be doubled until it is greater than or equal to ifreq.
+ fun float freq(float _freq);
+ fun float amp();
+ #!- Amplitude
+ fun float amp(float _amp);
+}
+#!- Portamento-style control signal smoothing
+#!-
+#!- Useful for smoothing out low-resolution signals and applying glissando to filters.
+class Port extends UGen {
+ #!-
+ fun void init(float _htime);
+ fun float htime();
+ #!-
+ fun float htime(float _htime);
+}
+#!- High-precision table-lookup posc3ilator with cubic interpolation
+class Posc3 extends UGen {
+ #!- Wavetable to read from. Note: the size of this table must be a power of 2.
+ fun void init(ftbl _tbl);
+ fun float freq();
+ #!- Frequency (in Hz)
+ fun float freq(float _freq);
+ fun float amp();
+ #!- Amplitude (typically a value between 0 and 1).
+ fun float amp(float _amp);
+}
+#!- A simple progress bar for the commandline
+#!-
+#!- Mostly ideal for offline renderings and programs with finite length. Escape characters are used to show/hide the cursor. Interruption before finishing may cause the cursor to disappear.
+class Progress extends UGen {
+ fun int nbars();
+ #!-
+ fun int nbars(int _nbars);
+ fun int skip();
+ #!- How many samples to skip before checking
+ fun int skip(int _skip);
+}
+#!- Simple rhythmic notation gate generator
+#!-
+#!- Creates a gate using a simple rhythmic notation system called prop. When it reaches the end of the prop string, it will loop back to the beginning.
+#!-
+#!- Prop has a few basic rules:
+#!-
+#!- 1. A '+' denotes a on. A '-' denotes an off (rest). They each have an equal duration of a quarter note.
+#!-
+#!- 2. On and off values can be strung together to create equally spaced gates: +-+--
+#!-
+#!- 3. When notes are enclosed in parantheses '()' following a positive integer N, their duration is reduced N times: ++2(+-)
+#!-
+#!- 4. When notes are enclosed in brackets '[]' following a positive integer N, their duration is scaled by a factor of N: ++2[++]
+#!-
+#!- 5. Parenthesis and brackets can be nested: +- 2[3(+2(++)+)]2(++)
+#!-
+class Prop extends UGen {
+ #!- Prop string to be parsed.
+ fun void init(string _str);
+ fun float bpm();
+ #!- Beats per minute of the prop string.
+ fun float bpm(float _bpm);
+}
+#!- Time-domain pitch shifter.
+class Pshift extends UGen {
+ fun float shift();
+ #!- Pitch shift (in semitones), range -24/24.
+ fun float shift(float _shift);
+ fun float window();
+ #!- Window size (in samples), max 10000
+ fun float window(float _window);
+ fun float xfade();
+ #!- Crossfade (in samples), max 10000
+ fun float xfade(float _xfade);
+}
+#!- Track pitch of a signal.
+#!- Ptrack is a pitch tracker, based on an algorithm originally created by
+#!- Miller Puckette.
+class Ptrack extends UGen {
+ #!- hop size.
+ #!- Number of peaks.
+ fun void init(int _ihopsizeint _ipeaks);
+}
+#!- Random number generator with hold time.
+#!- Randh is loosely based off of the Csound opcode randomh. The design is equivalent
+#!- to scaled noise sent through a classic sample and hold module.
+class Randh extends UGen {
+ fun float min();
+ #!- Minimum value to use.
+ fun float min(float _min);
+ fun float max();
+ #!- Maximum value to use.
+ fun float max(float _max);
+ fun float freq();
+ #!- Frequency of randomization (in Hz)
+ fun float freq(float _freq);
+}
+#!- Line segments between random values within a range
+class Randi extends UGen {
+ fun float min();
+ #!- Minimum value
+ fun float min(float _min);
+ fun float max();
+ #!- Maximum value
+ fun float max(float _max);
+ fun float cps();
+ #!- Frequency to change values.
+ fun float cps(float _cps);
+ fun float mode();
+ #!- Randi mode (not yet implemented yet.)
+ fun float mode(float _mode);
+}
+#!- Random values within a range
+class Random extends UGen {
+ fun float min();
+ #!- Minimum value.
+ fun float min(float _min);
+ fun float max();
+ #!- Maximum value.
+ fun float max(float _max);
+}
+#!- A second-order resonant filter. NOTE: The output for reson appears to be very hot, so take caution when using this module.
+class Reson extends UGen {
+ fun float freq();
+ #!- Center frequency of the filter, or frequency position of the peak response.
+ fun float freq(float _freq);
+ fun float bw();
+ #!- Bandwidth of the filter.
+ fun float bw(float _bw);
+}
+#!- Signal reverser
+#!-
+#!- Reverse will store a signal inside a buffer and play it back reversed.
+class Reverse extends UGen {
+ #!- Delay time in seconds.
+ fun void init(float _delay);
+}
+#!- 8 FDN stereo reverb
+class Revsc extends UGen {
+ fun float feedback();
+ #!- Value between 0-1 that sets feedback value. The larger the value, the longer the decay.
+ fun float feedback(float _feedback);
+ fun float lpfreq();
+ #!- low pass cutoff frequency.
+ fun float lpfreq(float _lpfreq);
+}
+#!- RMS-averaged signal amplitude
+#!-
+#!- Perform `root-mean-square` on a signal to get overall amplitude of a signal. The output signal looks similar to that of a classic VU meter.
+class Rms extends UGen {
+ fun float ihp();
+ #!- Half-power point (in Hz) of internal lowpass filter. This parameter is fixed at 10Hz and is not yet mutable.
+ fun float ihp(float _ihp);
+}
+#!- Trigger based beat-repeat stuttering effect
+#!-
+#!- When the input is a non-zero value, rpt will load up the buffer and loop a certain number of times. Speed and repeat amounts can be set with the sp_rpt_set function.
+class Rpt extends UGen {
+ #!- Maximum delay duration in seconds. This will set the buffer size.
+ fun void init(float _maxdur);
+}
+#!- Random spline curve generator
+#!- This is a function that generates random spline curves. This signal generator
+#!- is ideal for control signals. Curves are quite smooth when cps_min is not
+#!- too different from cps_max. When the range of these two is big,
+#!- some discontinuity may occur. Due to the interpolation, the output
+#!- may be greater than the range values.
+class Rspline extends UGen {
+ fun float min();
+ #!- Minimum range.
+ fun float min(float _min);
+ fun float max();
+ #!- Maximum range
+ fun float max(float _max);
+ fun float cps_min();
+ #!-
+ fun float cps_min(float _cps_min);
+ fun float cps_max();
+ #!-
+ fun float cps_max(float _cps_max);
+}
+#!- Classic sample and hold
+class Samphold extends UGen {
+}
+#!- Soft clip saturating distortion, based on examples from Abel/Berners' Music 424 course at Stanford.
+class Saturator extends UGen {
+ fun float drive();
+ #!- Input gain into the distortion section, in decibels. Controls overall amount of distortion.
+ fun float drive(float _drive);
+ fun float dcoffset();
+ #!- Constant linear offset applied to the signal. A small offset will introduce odd harmonics into the distoration spectrum, whereas a zero offset will have only even harmonics.
+ fun float dcoffset(float _dcoffset);
+}
+#!- Bipolar Scale
+#!-
+#!- This module scales from unipolar [0, 1] to another range defined by min and max.
+class Scale extends UGen {
+ fun float min();
+ #!- Minimum value to scale to.
+ fun float min(float _min);
+ fun float max();
+ #!- Maximum value to scale to.
+ fun float max(float _max);
+}
+#!- Delays a signal by a number of samples.
+class Sdelay extends UGen {
+ #!- Size of delay (in samples)
+ fun void init(float _size);
+}
+#!- Yet another slice-based sample player.
+#!- This module takes in an audio buffer and a table with slice points.
+class Slice extends UGen {
+ #!- A table containing slice points, in samples
+ #!- The buffer containing the audio samples.
+ fun void init(ftbl _valsftbl _buf);
+ fun float id();
+ #!- Value position.
+ fun float id(float _id);
+}
+#!- Smooth variable delay line without varispeed pitch.
+#!- Smooth delay is based off the sdelay module in Faust. The smooth delay
+#!- algorithm involves a double delay line. Any time the delay time changes,
+#!- the delay time of buffer not heard changes, then is crossfaded to
+#!- that buffer.
+class Smoothdelay extends UGen {
+ #!- Maximum delay time (in seconds)
+ #!- interpolation time (in samples)
+ fun void init(float _maxdelint _interp);
+ fun float feedback();
+ #!-
+ fun float feedback(float _feedback);
+ fun float del();
+ #!-
+ fun float del(float _del);
+}
+#!- Stream a Soundpipe Audio File
+#!- Similar to sp_diskin, sp_spa will stream a file in the internal soundpipe
+#!- audio format. Such a format is useful for instances where you need to read
+#!- audio files, but can't use libsndfile.
+class Spa extends UGen {
+ #!- Filename of SPA file
+ fun void init(string _filename);
+}
+#!- Writes signal to spa file.
+class Sparec extends UGen {
+ #!- Filename to write to
+ fun void init(string _filename);
+}
+#!- String resonator filter
+class Streson extends UGen {
+ fun float freq();
+ #!- Fundamental frequency of string.
+ fun float freq(float _freq);
+ fun float fdbgain();
+ #!- Feedback amount (value between 0-1)
+ fun float fdbgain(float _fdbgain);
+}
+#!- Switch between two signals
+#!-
+#!- By default, the incoming first signal is selected. When triggered, the output signal will switch to the other signal.
+class Switch extends UGen {
+}
+#!- Table
+#!- Read through an sp_ftbl with linear interpolation.
+#!-
+class Tabread extends UGen {
+ #!- A properly allocated table (using a function like sp_gen_file).
+ #!- 1 = scaled index, 0 = unscaled index
+ fun void init(ftbl _ftfloat _mode);
+ fun float index();
+ #!- index position, either scaled or unscaled with mode parameter
+ fun float index(float _index);
+ fun float offset();
+ #!- Offset from beginning of ftable. If the mode is scaled, then it is in range 0-1, other wise it is the index position.
+ fun float offset(float _offset);
+ fun float wrap();
+ #!- Enable wraparound. 1 = on; 0 = 0ff.
+ fun float wrap(float _wrap);
+}
+#!- Triggerable classic ADSR envelope
+class Tadsr extends UGen {
+ fun float atk();
+ #!- Attack time
+ fun float atk(float _atk);
+ fun float dec();
+ #!- Decay time
+ fun float dec(float _dec);
+ fun float sus();
+ #!- Sustain Level
+ fun float sus(float _sus);
+ fun float rel();
+ #!- release
+ fun float rel(float _rel);
+}
+#!- A high talkbox emulation, simular to a vocoder.
+#!- This is the talkbox plugin ported from the MDA plugin suite. In many ways,
+#!- this Talkbox functions like a vocoder: it takes in a source signal (usually
+#!- speech), which then excites an excitation signal
+#!- (usually a harmonically rich signal like a saw wave). This particular algorithm
+#!- uses linear-predictive coding (LPC), making speech intelligibility better
+#!- than most vocoder implementations.
+class Talkbox extends UGen {
+ fun float quality();
+ #!- Quality of the talkbox sound. 0=lowest fidelity. 1=highest fidelity
+ fun float quality(float _quality);
+}
+#!- Record a signal to an ftable.
+#!- This module will write audio-rate signals to a preallocated soundpipe ftable.
+#!- Every time record is enabled, it will got back to index 0 overwrite any
+#!- previous information that was on it.
+class Tblrec extends UGen {
+ #!-
+ fun void init(ftbl _bar);
+}
+#!- Emulation of the Roland TB-303 filter
+class Tbvcf extends UGen {
+ fun float fco();
+ #!- Filter cutoff frequency
+ fun float fco(float _fco);
+ fun float res();
+ #!- Resonance
+ fun float res(float _res);
+ fun float dist();
+ #!- Distortion. Value is typically 2.0; deviation from this can cause stability issues.
+ fun float dist(float _dist);
+ fun float asym();
+ #!- Asymmetry of resonance. Value is between 0-1
+ fun float asym(float _asym);
+}
+#!- Trigger divider.
+#!- This module will take in a trigger signal, and output a trigger signal
+#!- every N times.
+#!-
+#!- For instance, when N = 3:
+#!-
+#!- in: * * * * * * * * *
+#!-
+#!- out * * *
+#!-
+class Tdiv extends UGen {
+ fun float num();
+ #!- Triggers every N times.
+ fun float num(float _num);
+ fun float offset();
+ #!- Offset amoutn.
+ fun float offset(float _offset);
+}
+#!- Trigger based linear AHD envelope generator
+class Tenv extends UGen {
+ fun float atk();
+ #!- Attack time, in seconds.
+ fun float atk(float _atk);
+ fun float hold();
+ #!- Hold time, in seconds.
+ fun float hold(float _hold);
+ fun float rel();
+ #!- Release time, in seconds.
+ fun float rel(float _rel);
+}
+#!- Linear 2-stage Attack/Release envelope generator
+#!-
+#!- This envelope takes 2 triggers. When triggered once,
+#!- the envelope will rise to 1 according to the attack time. When triggered again, it will decay to 0 according to
+#!- the decay time.
+class Tenv2 extends UGen {
+ fun float atk();
+ #!- Attack time (in seconds).
+ fun float atk(float _atk);
+ fun float rel();
+ #!- Release time (in seconds).
+ fun float rel(float _rel);
+}
+#!- Trigger based exponential AHD envelope generator.
+#!- This envelope generator emulates the exponential behavior of analogue
+#!- envelope generators by passing a gate signal (whose duration is specified via
+#!- the hold parameter) through a one-pole filter, whose filter coefficeints are
+#!- calculated in terms of tau.
+#!-
+class Tenvx extends UGen {
+ fun float atk();
+ #!- Tau attack time, in seconds. Must be non-zero.
+ fun float atk(float _atk);
+ fun float hold();
+ #!- Hold time, in seconds. The duration of the gate signal.
+ fun float hold(float _hold);
+ fun float rel();
+ #!- Tau release time, in seconds. Must be non-zero.
+ fun float rel(float _rel);
+}
+#!- A triggerable gate.
+class Tgate extends UGen {
+ fun float time();
+ #!- Duration of the gate (in seconds)
+ fun float time(float _time);
+}
+#!- Trigger generator for signals that cross a given threshold.
+class Thresh extends UGen {
+ fun float thresh();
+ #!- Threshold level
+ fun float thresh(float _thresh);
+ fun int mode();
+ #!- Sets when to detect theshold crossings. 0 = from below. 1 = from above. 2 = from above/below
+ fun int mode(int _mode);
+}
+#!- Tap-tempo like timer
+#!-
+#!- When triggered, timer will begin an internal stopwatch until it is triggered again.
+#!- The output of the timer will be the time elapsed in seconds.
+class Timer extends UGen {
+}
+#!- Similar to in, tin reads SPFLOATs (by default, this is a 4 byte binary float) from standard input every time it is triggered. behaves like a sample and hold, retaining the previous value (initial set to 0) until triggered.
+class Tin extends UGen {
+}
+#!- First-order recursive lowpass filter
+class Tone extends UGen {
+ fun float hp();
+ #!- The response curve's half power point (aka cutoff frequency).
+ fun float hp(float _hp);
+}
+#!- Triggered random number generator.
+class Trand extends UGen {
+ fun float min();
+ #!- Minimum value to use.
+ fun float min(float _min);
+ fun float max();
+ #!- Maximum value to use.
+ fun float max(float _max);
+}
+#!- This module creates a series of line segments.
+class Tseg extends UGen {
+ #!- Beginning value.
+ fun void init(float _ibeg);
+ fun float end();
+ #!- End parameter to go to.
+ fun float end(float _end);
+ fun float dur();
+ #!- duration to rise to (in seconds).
+ fun float dur(float _dur);
+ fun float type();
+ #!- The type of line, which determines slope of line
+ fun float type(float _type);
+}
+#!- Function table looper
+#!-
+#!- TSeq runs through values in an ftable. It will change values when the trigger input is a non-zero value, and wrap around when it reaches the end.
+class Tseq extends UGen {
+ #!- An ftable of values
+ fun void init(ftbl _ft);
+ fun int shuf();
+ #!- When shuf is non-zero, randomly pick a value rather than cycle through sequentially.
+ fun int shuf(int _shuf);
+}
+#!- Delay line with cubic interpolation
+class Vdelay extends UGen {
+ #!- The maximum delay time, in seconds.
+ fun void init(float _maxdel);
+ fun float del();
+ #!- Delay time (in seconds) that can be changed during performance. This value must not exceed the maximum delay time.
+ fun float del(float _del);
+ fun float feedback();
+ #!- Amount of feedback in delay line. Should be in range 0-1.
+ fun float feedback(float _feedback);
+}
+#!- A vocal tract physical model.
+#!-
+#!- Based on the Pink Trombone algorithm by Neil Thapen, Voc implements a physical
+#!- model of the vocal tract glottal pulse wave. The tract model is based on the
+#!- classic Kelly-Lochbaum
+#!- segmented cylindrical 1d waveguide model, and the glottal pulse wave is a
+#!- LF glottal pulse model.
+#!-
+#!- The soundpipe source code for Voc is generated via ctangle, one half of the
+#!- literate documentation system known CWEB. The CWEB are maintained in a
+#!- separate repository. They are hosted on github here:
+#!- http://www.github.com/paulbatchelor/voc
+#!-
+#!- This documentation is a stub. For a full overview on proper usage, consult
+#!- the `Top-level functions` section of the documented code, a copy of which
+#!- can be found at the Voc project page pbat.ch/proj/voc, or generate the PDF
+#!- from the github page described above.
+class Voc extends UGen {
+}
+#!- 16-band channel vocoder
+class Vocoder extends UGen {
+ fun float atk();
+ #!- Attack time . (Range 0.001 and 0.5 seconds)
+ fun float atk(float _atk);
+ fun float rel();
+ #!- Release time
+ fun float rel(float _rel);
+ fun float bwratio();
+ #!- Coeffecient to adjust the bandwidth of each band (0.1 - 2)
+ fun float bwratio(float _bwratio);
+}
+#!- Simple Time-stretching from repeating wavecyles
+#!- This module looks for zero-crossings and repeats them by a integer factor.
+#!- While a crude means for time stretching, it is a very aesthetically pleasing
+#!- effect to use on sounds and often produces a `wet` sound.
+#!-
+#!- The waveset algorithm was originally created by Trevor Wishart for the Composer
+#!- Desktop Project (CDP), and was then ported to Csound.
+class Waveset extends UGen {
+ #!- Length of buffer (in seconds).
+ fun void init(float _ilen);
+ fun float rep();
+ #!- Number of repeats.
+ fun float rep(float _rep);
+}
+#!- Reads a mono WAV file.
+#!-
+#!- This module reads a mono WAV file from disk. It uses the public-domain
+#!- dr_wav library for decoding, so it can be a good substitute for libsndfile.
+class Wavin extends UGen {
+ #!- Filename
+ fun void init(string _filename);
+}
+#!- Writes a mono signal to a WAV file.
+#!- This module uses the public-domain dr_wav library to write WAV files
+#!- to disk. This module is ideal for instances where GPL-licensed libsndfile
+#!- cannot be used for legal reasons.
+class Wavout extends UGen {
+ #!- The filename of the output file.
+ fun void init(string _filename);
+}
+#!- Analogue model of the Korg 35 Lowpass Filter
+#!-
+#!- Original port done by Will Pirkle:
+#!- http://www.willpirkle.com/Downloads/AN-5Korg35_V3.pdf
+#!-
+class Wpkorg35 extends UGen {
+ fun float cutoff();
+ #!- Filter cutoff
+ fun float cutoff(float _cutoff);
+ fun float res();
+ #!- Filter resonance (should be between 0-2)
+ fun float res(float _res);
+ fun float saturation();
+ #!- Filter saturation.
+ fun float saturation(float _saturation);
+}
+#!- 8 FDN stereo zitareverb algorithm, imported from Faust.
+class Zitarev extends UGen {
+ fun float in_delay();
+ #!- Delay in ms before reverberation begins.
+ fun float in_delay(float _in_delay);
+ fun float lf_x();
+ #!- Crossover frequency separating low and middle frequencies (Hz).
+ fun float lf_x(float _lf_x);
+ fun float rt60_low();
+ #!- Time (in seconds) to decay 60db in low-frequency band.
+ fun float rt60_low(float _rt60_low);
+ fun float rt60_mid();
+ #!- Time (in seconds) to decay 60db in mid-frequency band.
+ fun float rt60_mid(float _rt60_mid);
+ fun float hf_damping();
+ #!- Frequency (Hz) at which the high-frequency T60 is half the middle-band's T60.
+ fun float hf_damping(float _hf_damping);
+ fun float eq1_freq();
+ #!- Center frequency of second-order Regalia Mitra peaking equalizer section 1.
+ fun float eq1_freq(float _eq1_freq);
+ fun float eq1_level();
+ #!- Peak level in dB of second-order Regalia-Mitra peaking equalizer section 1
+ fun float eq1_level(float _eq1_level);
+ fun float eq2_freq();
+ #!- Center frequency of second-order Regalia Mitra peaking equalizer section 2.
+ fun float eq2_freq(float _eq2_freq);
+ fun float eq2_level();
+ #!- Peak level in dB of second-order Regalia-Mitra peaking equalizer section 2
+ fun float eq2_level(float _eq2_level);
+ fun float mix();
+ #!- 0 = all dry, 1 = all wet
+ fun float mix(float _mix);
+ fun float level();
+ #!- Output scale factor (in dB).
+ fun float level(float _level);
+}
+```