Csound instruments use five different types of signals, which opcodes can establish, write to, read from, and output. These signals are i-rate (initialization), k-rate (control), a-rate (audio), wsig (spectral or frequency-domain), and fsig (streaming frequency-domain or pvoc). Each signal operates at a specific rate. In some cases, one type of signal may be translated into another, through the use of various opcodes. See, for example, init, follow.
Initialization rate, referred to as i-rate signals, run at instrument initialization. Their values are established when the instrument is initialized, and remain so, unless reinitialized. See reinit.
Control rate, referred to as k-rate signals, run at the control rate established by the kr statement in the orchestra header. This signal type is used primarily for control (non-audio) signals. Since k-rate is often lower than a-rate, valuable processor power can be preserved.
Audio rate, referred to as a-rate signals, run at the audio sample rate established by the sr statement in the orchestra header. This signal type is used to carry audio signals produced and modified by the Csound instruments.
The wsig type is a frequency-domain signal used exclusively by the spectral family of opcodes (spectrum, specaddm, etc.) They can run at k- or a-rate, depending on usage.
The fsig type is a frequency-domain signal used for streaming phase vocoder analysis and resynthesis. It is used by a family of streaming pvoc opcodes (pvsanal, pvsynth, etc.) introduced in Csound version 4.14. This signal type runs at an analysis rate which is independent of the control rate, but must be lower than or equal to the k-rate.
The fsig enables the separation between the analysis and resynthesis stages of the phase vocoder to be exposed to the Csound programmer. Thus, alternatives be employed for either or both of these stages, such as oscillator-bank resynthesis or generation of synthetic fsig streams. In addition, opcodes operating on the fsig stream, can themselves become more elemental. In this way, the fsig enables the creation of a true streaming plug-in framework for frequency domain signals. With the old pvoc opcodes, each opcode is required to act as a resynthesizer, so that facilities such as pitch scaling are duplicated in each opcode. The separation of analysis and synthesis stages by means of the fsig encourages the development of a wide range of simple building-block opcodes implementing one or two functions, with which more elaborate processes can be constructed.