03 May 2014

Csound 6.03.0 Released!

Csound 6.03.0 is now available! Downloads are available at:

This release includes a mix of bug fixes, new features and some experimental code. We also believe that there are some improved efficiencies.



This new version has a large number of bug fixes (including clearing many tickets on SourceForge and GitHub) as well internal changes to improve performance.


New opcodes:

  • printks2: Prints a new value every time a control variable changes using a printf() style syntax.
  • mp3sr mp3bitrate and mp3nchnls to get information on mp3 files
  • EXPERIMENTAL: CUDA opcodes for partitioned convolution direct convolution and sliding phase vocoding; OpenCL opcode for additive synthesis
  • compilecsd to compile instruments from a standard CSD file

New Gen and Macros:


  • The argument for i() is supposed to be a variable not an expression. This is now enforced. (bug #90)


  • New score opcode y sets the random seed (for ~) at read time


  • This was a bug in CsOptions; the last argument was missed being read (issue #296)
  • As command-line options expression-opt and no-expression-opt do nothing in Csound6 a warning is printed.

Modified Opcodes and Gens:

  • For ogg output it is possible to specify a VBR (variable bit rate) quality.
  • dssi4cs code has been extensively reworked to avoid potential memory faults.
  • Many array operations now available for i-arrays as well as k-arrays.
  • fillarray will work for string arrays
  • Displays of FFT (via dispfft) improved with scaling/zooming options
  • Signal flow graph opcodes are now working with a-rate array signals.
  • In alsa rt code the sample rate is taken from the device
  • Faust opcode system updated to latest Faust API.


  • fixed bug in lpanal


  • csound~
    • OSX - fix for running with 32-bit cpu architecture
    • Windows - csound~ now available for Windows


  • This is now generally merged in to the code-base

General usage:

  • –displays now switches graphs on, as expected

  • New command-line option –get-system-sr added to obtain the machine’s sample rate.

  • New command-line option –devices[=in|out] gives a list of available audio devices and then exit

Bugs fixed:

  • fixed the bug when tables were replaced but the size did not change
  • A number of bugs in –sample-accurate have been detected and fixed. This includes opcodes out, outn, and line.
  • A number of bugs in grain3 were fixed
  • Bug in str_chanel could cause a crash; fixed
  • Small bug in rtjack fixed
  • Error in resize opcode corrected
  • Fixed an unlikely bug in atsa
  • Fixed rtauhal pause issue
  • Fixed bug in rtjack
  • A number of bugs/untidiness fixed in GEN23
  • Array bound checks fixed
  • strings channels were not correctly set for dynamic-size strings, now fixed
  • memory allocation for string formatting in printfsk was fixed, stopping string truncation.
  • strcat safe against overflow
  • ror in compilation of arrays fixed (issue #293)
  • GetPvsChannel fixed against a crash


System changes:

  • turnoff opcode now checks that the instrument being affected is active
  • lenarray can accept any array type
  • the way of rounding a table number to an integer was changed and is now more as expected.
  • there is a new possible section in a csd file called which is like csFileB but with unencoded text.
  • UDO compilation now uses the type system. This means that UDOs now allow any array type to be used.
  • Improved orchestra parsing speeds with better algorithms

Internal changes:

  • The whole system has been checked by the Coverity static checker which identified a number of (mainly minor) problems. These have been reviewed and checked. In particular better use of printing and string copying should prevent overflows.
  • The type and variable system has been extensively rewritten; this allows better array and UDO support.
  • Alignment of variables got right in all cases
  • array copying is now using the type system to copy values; fixes issues with copying string arrays, f-sigs, etc.
  • Always reset Csound when stopping to ensure state is clean; was not being reset when there was a compile error, so that next successful run would start with an invalid Csound engine (issue #305)


  • All opcodes etc now use the API memory allocation operations, so it is possible to replace the whole memory allocator.
  • Added csoundCompileCsd to API and associated new compilecsd opcode
  • Protected csoundGetStringChannel against null and short strings and added a check for string size
  • A number of API functions have had char* changed to const char* which reflect the usage
  • The performance engine now includes debugging capabilities to allow interrupting rendering and providing introspection into the engine’s state and instrument variables. The following new functions are available by including the csdebug.h header:
void csoundDebuggerInit (CSOUND *csound)
void csoundDebuggerClean (CSOUND *csound)
void csoundSetInstrumentBreakpoint (CSOUND *csound, MYFLT instr, int skip)
void csoundRemoveInstrumentBreakpoint (CSOUND *csound, MYFLT instr)
void csoundClearBreakpoints (CSOUND *csound)
void csoundSetBreakpointCallback (CSOUND *csound, breakpoint_cb_t bkpt_cb, void *userdata)
void csoundDebugContinue (CSOUND *csound)
void csoundDebugStop (CSOUND *csound)
INSDS * csoundDebugGetInstrument (CSOUND *csound)

Platform Specific



  • Soundfonts in Windows had an internal alignment problem which is fixed.