Csound

OPCODE GUIDE: MATH, PYTHON/ SYSTEM, PLUGINS

MATH

  • MATHEMATICAL CALCULATIONS

    • Arithmetic Operations

      +, -, *, /, ^, % are the usual signs for addition, subtraction, multiplication, division, raising to a power and modulo. The precedence is like that used in common mathematics (* binds stronger than + etc.), but you can change this behaviour with parentheses: 2^(1/12) returns 2 raised by 1/12 (= the 12st root of 2), while 2^1/12 returns 2 raised by 1, and the result divided by 12.

      exp(x), log(x), log10(x) and sqrt(x) return e raised to the xth power, the natural log of x, the base 10 log of x, and the square root of x.

      abs(x) returns the absolute value of a number.

      int(x) and frac(x) return the integer respective the fractional part of a number.

      round(x), ceil(x), floor(x) round a number to the nearest, the next higher or the next lower integer.
    • Trigonometric Functions

      sin(x), cos(x), tan(x) perform a sine, cosine or tangent function.

      sinh(x), cosh(x), tanh(x) perform a hyperbolic sine, cosine or tangent function.

      sininv(x), cosinv(x), taninv(x) and taninv2(x) perform the arcsine, arccosine and arctangent functions.
    • Logic Operators

      && and ||  are the symbols for a logical "and" and "or". Note that you can use here parentheses for defining the precedence, too, for instance: if (ival1 < 10 && ival2 > 5) || (ival1 > 20 && ival2 < 0) then ...

  • CONVERTERS

    • MIDI To Frequency 

      cpsmidi converts a MIDI note number from a triggered instrument to the frequency in Hertz.

      cpsmidinn does the same for any input values (i- or k-rate).

      Other opcodes convert to Csound's pitch- or octave-class system. They can be found here.

    • Frequency To MIDI

      Csound has no own opcode for the conversion of a frequency to a midi note number, because this is a rather simple calculation. You can find a User Defined Opcode for rounding to the next possible midi note number or for the exact translation to a midi note number and a cent value as fractional part.

    • Cent Values To Frequency 

      cent converts a cent value to a multiplier. For instance, cent(1200) returns 2, cent(100) returns 1.059403. If you multiply this with the frequency you reference to, you get frequency of the note which corresponds to the cent interval.

    • Amplitude Converters

      ampdb returns the amplitude equivalent of the dB value. ampdb(0) returns 1, ampdb(-6) returns 0.501187, and so on.

      ampdbfs returns the amplitude equivalent of the dB value, according to what has been set as 0dbfs (1 is recommended, the default is 15bit = 32768). So ampdbfs(-6) returns 0.501187 for 0dbfs=1, but 16422.904297 for 0dbfs=32768.

      dbamp returns the decibel equivalent of the amplitude value, where an amplitude of 1 is the maximum. So dbamp(1) -> 0 and dbamp(0.5) -> -6.020600.

      dbfsamp returns the decibel equivalent of the amplitude value set by the 0dbfs statement. So dbfsamp(10) is 20.000002 for 0dbfs=0 but -70.308998 for 0dbfs=32768.

    • Scaling 

      Scaling of signals from an input range to an output range, like the "scale" object in Max/MSP, is not implemented in Csound, because it is a rather simple calculation. It is available as User Defined Opcode: Scali (i-rate), Scalk (k-rate) or Scala (a-rate).

PYTHON AND SYSTEM

  • PYTHON OPCODES

    pyinit initializes the Python interpreter.

    pyrun runs a Python statement or block of statements.

    pyexec executes a script from a file at k-time, i-time or if a trigger has been received.

    pycall invokes the specified Python callable at k-time or i-time.

    pyeval evaluates a generic Python expression and stores the result in a Csound k- or i-variable, with optional trigger.

    pyassign assigns the value of the given Csound variable to a Python variable possibly destroying its previous content.

  • SYSTEM OPCODES

    getcfg returns various Csound configuration settings as a string at init time.

    system / system_i call an external program via the system call.

PLUGINS

  • PLUGIN HOSTING

    • LADSPA

      dssiinit loads a plugin.

      dssiactivate activates or deactivates a plugin if it has this facility.

      dssilist lists all available plugins found in the LADSPA_PATH and DSSI_PATH global variables.

      dssiaudio processes audio using a plugin.

      dssictls sends control information to a plugin's control port.

    • VST

      vstinit loads a plugin.

      vstaudio / vstaudiog return a plugin's output.

      vstmidiout sends midi data to a plugin.

      vstparamset / vstparamget sends and receives automation data to and from the plugin.

      vstnote sends a midi note with a definite duration.

      vstinfo outputs the parameter and program names for a plugin.

      vstbankload loads an .fxb bank.

      vstprogset sets the program in a .fxb bank.

      vstedit opens the GUI editor for the plugin, when available.