OPCODE GUIDE: ADVANCED SIGNAL PROCESSING
MODULATION AND DISTORTION
Distortion And Wave Shaping
powershape waveshapes a signal by raising it to a variable exponent.
polynomial efficiently evaluates a polynomial of arbitrary order.
chebyshevpoly efficiently evaluates the sum of Chebyshev polynomials of arbitrary order.GEN03, GEN13, GEN14 and GEN15 are also used for waveshaping.
Flanging, Phasing, Phase Shaping
flanger implements a user controllable flanger.
harmon analyzes an audio input and generates harmonizing voices in synchrony.pdclip, pdhalf and pdhalfy are useful for phase distortion synthesis.
doppler lets you calculate the doppler shift depending on the position of the sound source and the microphone.
partikkel is the most flexible opcode for granular synthesis. You should be able to do everything you like in this field. The only drawback is the large number of input arguments, so you may want to use other opcodes for certain purposes.
You can find a list of other relevant opcodes here.
sndwarp focusses granular synthesis on time stretching and/or pitch modifications. Compare waveset and the pvs-opcodes pvsfread, pvsdiskin, pvscale, pvshift for other implementations of time and/or pitch modifications.
pconvolve performs convolution based on a uniformly partitioned overlap-save algorithm.
ftconv is similar to pconvolve, but you can also use parts of the impulse response file, instead of reading the whole file. It also permits the use of multichannel impulse files (up to 8-channels) to create multichannel outputs.dconv performs direct convolution.
FFT AND SPECTRAL PROCESSING
Realtime Analysis And Resynthesis
pvsanal performs a Fast Fourier Transformation of an audio stream (a-signal) and stores the result in an f-variable.
pvstanal creates an f-signal directly from a sound file which is stored in a function table (usually via GEN01).
pvsynth performs an Inverse FFT (takes a f-signal and returns an audio-signal).
pvsadsyn is similar to pvsynth, but resynthesizes with a bank of oscillators, instead of direct IFFT.
Writing FFT Data To a File and Reading From it
pvsfwrite writes an f-signal (= the FFT data) from inside Csound to a file. This file has the PVOCEX format and uses the file extension .pvx.
pvsfread reads the FFT data from an existing .pvx file. This file can be generated by the Csound Utility pvanal. Reading of the file is carried out using a time pointer.
pvsdiskin is similar to pvsfread, but reading is done by a speed argument.
Writing FFT Data To a Buffer and Reading From it
pvsbuffer writes an f-signal into a circular buffer that it also creates.
pvsbufread reads an f-signal from a buffer which was created by pvsbuffer.
pvsftw writes amplitude and/or frequency data from a f-signal to a function table.
pvsftr transforms amplitude and/or frequency data from a function table to a f-signal.
pvsinfo gets information, either from a realtime f-signal or from a .pvx file.
pvsbin gets the amplitude and frequency values from a single bin of an f-signal.
pvscent calculates the spectral centroid of a signal.
Manipulating FFT Signals
pvscale transposes the frequency components of a f-stream by simple multiplication.
pvshift changes the frequency components of a f-stream by adding a shift value, starting at a certain bin.
pvsfreeze freezes the amplitude and/or frequency of an f-signal according to a k-rate trigger.