oscils is a very simple sine oscillator which can be used for quick tests. It needs no function table, but provides just i-rate arguments.
ftgen generates a function table, which is needed by any oscillator except oscils. The GEN Routines fill the function table with any desired waveform, either a sine wave or any other curve. Compare the function table chapter of this manual for more information.
poscil can be recommended as standard oscillator because it is very precise also for long tables and low frequencies. It provides linear interpolation, any rate for the input arguments, and works also for non-power-of-two tables. poscil3 provides cubic interpolation, but has just k-rate input. Other common oscillators are oscili and oscil3. They are less precise than poscil/poscili, but you can skip the initialization which can be useful in certain situations. The oscil opcode does not provide any interpolation, so it should usually be avoided. More Csound oscillators can be found here.
buzz and gbuzz generate a set of harmonically related sine resp. cosine partials.
mpulse generates a set of impulses.
vco and vco2 implement band-limited, analog modeled oscillators with different standard waveforms.
phasor produces the typical moving phase values between 0 and 1. The more complex syncphasor lets you synchronize more than one phasor precisely.
seed sets the seed value for the majority of the Csound random generators (seed 0 generates each time another random output, while any other seed value generates the same random chain on each new run).
rand is the usual opcodes for bipolar random values. If you give 1 as input argument (called "amp"), you will get values between -1 and +1. randi interpolates between values which are generated in a (variable) frequency. randh holds the value until the next one is generated. You can control the seed value by an input argument (a value greater than 1 seeds from current time), you can decide whether to use a 16bit or a 31bit random number, and you can add an offset.
rnd31 can be used for alle rates of variables (i-rate variables are not supported by rand). It gives the user also control over the random distribution, but has no offset parameter.
random is often very convenient to use, because you have a minimum and a maximum value as input argument, instead of a range like rand and rnd31. It can also be used for all rates, but you have no direct seed input, and the randomi/randomh variants always start from the lower border, instead anywhere between the borders.
pinkish produces pink noise at audio-rate (white noise is produced by rand).
There are much more random opcodes. Here is an overview. It is also possible to use some GEN Routines for generating random distributions. They can be found in the GEN Routines overview.
linen applies a linear rise (fade in) and decay (fade out) to a signal. It is very easy to use, as you put the raw audio signal in and get the enveloped signal out.
linenr does the same for any note which's duration is not fixed at the beginning, like MIDI notes or any real time events. linenr begins to fade out exactly when the instrument is turned off, adding an extra time after this turnoff.
adsr calculates the classical attack-decay-sustain-release envelope. The result is to be multiplied with the audio signal to get the enveloped signal.
madsr does the same for a realtime note (like explained above for linenr).
Other standard envelope generators can be found in the Envelope Generators overview of the Canonical Csound Manual.
linseg creates one or more segments of lines between specified points.
expseg does the same with exponential segments. Note that zero values are illegal.
transeg is very flexible to use, because you can specify the shape of the curve for each segment (continuous transitions from convex to linear to concave).
All these opcodes have a -r variant (linsegr, expsegr, transegr) for MIDI or other live events.
More opcodes can be found in this overview.
Any curve, or parts of it, of any function table, can be used as envelope. Just create a function table by ftgen resp. by a GEN Routine. Then read the function table, or a part of it, by an oscillator, and multiply the result with the audio signal you want to envelope.
The vdelay familiy of opcodes is easy to use and implement all necessary features to work with delays:
vdelay implements a variable delay at audio rate with linear interpolation.
vdelay3 offers cubic interpolation.
vdelayx has an even higher quality interpolation (and is by this reason slower). vdelayxs lets you input and output two channels, and vdelayxq four.
vdelayw changes the position of the write tap in the delay line instead of the read tap. vdelayws is for stereo, and vdelaywq for quadro.
The delayr/delayw opcodes establishes a delay line in a more complicated way. The advantage is that you can have as many taps in one delay line as you need.
delayr establishes a delay line and reads from it.
delayw writes an audio signal to the delay line.
deltap, deltapi, deltap3, deltapx and deltapxw are working similar to the relevant opcodes of the vdelay family (see above).
deltapn offers a tap delay measured in samples, not seconds.delk and vdel_k let you delay any k-signal by some time interval (usable for instance as a kind of wait mode).
Csound has an extremely rich collection of filters and they are good available on the Csound Manual pages for Standard Filters and Specialized Filters. So here some most frequently used filters are mentioned, and some tips are given. Note that filters usually change the signal level, so you will need the balance opcode.
tone is a first order recursive low pass filter. tonex implements a series of tone filters.
butlp is a seond order low pass Butterworth filter.
clfilt lets you choose between different types and poles numbers.
atone is a first order recursive high pass filter. atonex implements a series of atone filters.
buthp is a second order high pass Butterworth filter.
clfilt lets you choose between different types and poles numbers.
reson is a second order resonant filter. resonx implements a series of reson filters, while resony emulates a bank of second order bandpass filters in parallel. resonr and resonz are variants of reson with variable frequency response.
Note that you can work easily in Csound with convolution reverbs based on impulse response files, for instance with pconvolve.
freeverb is the implementation of Jezar's well-known free (stereo) reverb.
reverbsc is a stereo FDN reverb, based on work of Sean Costello.
reverb and nreverb are the traditional Csound reverb units.
babo is a physical model reverberator ("ball within the box").rms determines the root-mean-square amplitude of an audio signal.
balance adjusts the amplitudes of an audio signal according to the rms amplitudes of another audio signal.
follow / follow2 are envelope followers which report the average amplitude in a certain time span (follow) or according to an attack/decay rate (follow2).
peak reports the highest absolute amplitude value received.
ptrack, pitch and pitchamdf track the pitch of an incoming audio signal, using different methods.
tempest estimates the tempo of beat patterns in a control signal.
compress compresses, limits, expands, ducks or gates an audio signal.
dam is a dynamic compressor/expander.
limit sets the lower and upper limits of an incoming value (all rates).
samphold performs a sample-and-hold operation on its a- or k-input.
pan2 distributes a mono audio signal across two channels, with different envelope options.
vbaplsinit configures VBAP output according to loudspeaker parameters for a 2- or 3-dimensional space.
bformenc1 encodes an audio signal to the Ambisonics B format.
hrtfstat, hrtfmove and hrtfmove2 are opcodes for creating 3d binaural audio for headphones. hrtfer is an older implementation, using an external file.