Skip to content

Csound 6.13.0

Choose a tag to compare
@vlazzarini vlazzarini released this 12 Jul 21:58
· 2113 commits to master since this release


Not many new opcodes but there are a significant number of opcodes being
extended to use arrays in a variety of ways, widening the options for
users. There have been many fixes to the core code as well as opcodes.
-- The Developers


New opcodes

  • string2array is a variant of fillarray with the data coming from a
    string of space separated values.

  • nstrstr returns the name string of an instrument number or an empty
    string if the number does not refer to a named instrument.

  • ntof converts notename to frequency at i- and k-time.

  • ampmidicurve is a new opcode that maps an input MIDI velocity number to an
    output gain factor with a maximum value of 1, modifying the output gain by
    a dynamic range and a shaping exponent.

New Gen and Macros


  • The consistency of kr, sr and ksmps reworked especially when there
    is overriding.

  • corrected default 0bdfs usage.

  • Resolving the path for #include files reworked to be more liberal.

  • reading and writing to multidimensional arrays was very wrong. This
    is now correct.

  • Better checking for unknown array types (issue #1124)

  • In all array operations the size of an array is determined at init time and no
    allocation happens at perf time.

  • array arithmetic now respects --sample-accurate.


  • The characters n and m could erroneously get ignored in scores.

  • Resolving the path for #include files reworked to be more liberal.

  • After an error the backtrace of files and macros incorrectly read
    the information for orchestra rather than scores; fixed.

  • The end of an r (repeated) section was not always correct.

  • Nested {} parts of a score could lead to errors.

  • After an s statement a newline was required; no longer needed.

  • The {} score loops have been reworked to allow macros and expressions
    in the loop count.


  • The new option --use-system-sr set the sample rate to the hardware/system value.

Modified Opcodes and Gens

  • Sending failure in OSC is now a warning rather than an error.

  • passign can now have an array as the target.

  • version of bpf/bpfcos added to allow points defined via arrays.

  • grain can now use tables of any size, which was only a power of 2.

  • Changing colours in FL widgets now works (it previously did not redraw
    the colour).

  • fillarray can read from a file of values overcoming the argument

  • sumarray now works for audio arrays as well as for scalar values.

  • assignment of an audio value to an audio array now works.

  • monitor was broken in the array form.

  • gendyc now respects sample-accurate mode.

  • mtof and ftom now have array versions.

  • sc_lag and sc_lagud now use the first k- or a-rate input when no
    initial value is given.

  • printarray now works for string arrays.

  • changed2 now works for strings.

  • diskgrain, syncgrain and syncloop now can do sample rate scaling.

  • GEN01 correctly reads raw audio files when requested.

  • ftaudio can now take two additional optional argument`s for the start
    and end of the table data being written to file.

  • sensekey recoded in the 'key down' mode.

  • loscilx can return an audio array.

  • schedule opcode reports undefined instruments in all cases.

  • event_i now accepts tagged instrument numbers.

  • printarray treats %d correctly.

  • beadsynt now works with i arrays as well as k arrays as in the manual.


  • hetro had a number of fixes and improvements.


  • Belacsound:

  • CsoundQt:

General Usage

  • There have been a number of improvements in the semantics for multicore;
    most of these are corrections with a few efficiency gains.

  • There is a maximum number of arguments for an opcode which was
    neither explicit nor policed. Attempts to use too many arguments
    now gives a syntax error.

Bugs Fixed

  • FLgetsnap fixed.

  • directory fixed regarding file extensions.

  • FLsetText reused a string incorrectly which led to incorrect values.

  • fmb3 failed to initialise the lfo rate in some cases.

  • ftaudio at i-rate was totally broken.

  • following a reinit printks could be skipped; fixed

  • printks fixed so it prints at correct times.

  • tabrowlin and getrowlin would calculate wrong size under certain conditions.


  • Hash Table implementation modified to expand on load for better performance
    when map contains large number of entries

System Changes

  • plugin GEN functions can have a zero length, but the code must check
    for this and act accordingly. This allows for deferred allocations.

  • schedule reports undefined instr numbers/names and continues, rather than
    causing an error.

  • allow multiple calls to midi out controls.



  • find_opcode_new and find_opcode_exact now exposed in API.

  • After a reset a default message string callback handle is configured.

  • New function csoundSystemSr added to the API to read hardware-imposed sample rate.

Platform Specific

  • WebAudio: libsndfile now compiled with FLAC and OGG support.

  • iOS

  • Android

  • Windows

  • In both orchestra and score the path tracking of #include expects a \ separator.

  • MacOS

  • GNU/Linux

  • Haiku port now available.

  • Bela

  • allow analog in and out with different channel numbers.

  • update to use new facilities from scope API