Csound

OPCODE GUIDE: ADVANCED SIGNAL PROCESSING

 

  • MODULATION AND DISTORTION

    • Frequency Modulation

      foscil and foscili implement composite units for FM in the Chowning setup.

      crossfm, crossfmi, crosspm, crosspmi, crossfmpm and crossfmpmi are different units for cross-frequency and cross-phase modulation.

    • Distortion And Wave Shaping

      distort and distort1 perform waveshaping using a function table (distort) or by modified hyperbolic tangent distortion (distort1).

      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.

      phaser1 and phaser2 implement first- or second-order allpass filters arranged in a series.

      pdclip, pdhalf and pdhalfy are useful for phase distortion synthesis.

    • Doppler Shift

      doppler lets you calculate the doppler shift depending on the position of the sound source and the microphone.

  • GRANULAR SYNTHESIS

    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.

  • CONVOLUTION

    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.

      pvanal actually does the same as Csound Utility (a seperate program which can be called in QuteCsound or via the Terminal). In this case, the input is an audio file.

      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.

    • FFT Info 

      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.

      pvsbandp and pvsbandr applies a band pass and band reject filter to the frequency components of a f-signal.

      pvsmix, pvscross, pvsfilter, pvsvoc and pvsmorph perform different methods of cross synthesis between two f-signals.

      pvsfreeze freezes the amplitude and/or frequency of an f-signal according to a k-rate trigger.

      pvsmaska, pvsblur, pvstencil, pvsarp, pvsmooth perform a variety of other manipulations on a stream of FFT data.

  • PHYSICAL MODELS AND FM INSTRUMENTS

    • Waveguide Physical Modelling

      see here  and here 

    • FM Instrument Models

      see here