Skip to content

@kunstmusik kunstmusik released this Dec 22, 2017 · 2432 commits to master since this release


This is mostly a bugfix release, including a major bug recently introduced in
loscil. New and improved opcodes and a long orphaned gen
(53) are here, as well as many small internal improvements. Internal
changes have removed a number of memory leaks.

-- The Developers


New opcodes

  • midiout_i which is like midiout, but works at i-rate.

  • chngetks and chnsetks -- versions of chnget and chnset for string
    channels that only run at perf-time.

  • squinewave is a mostly bandlimited shape-shifting
    square-pulse-saw-sinewave oscillator with hardsync.

  • The experimental opcode OSCsendA has been removed; use OSCsend instead.

New Gen and Macros

  • gen53 (which has been in the code but not documented for years) is
    now acknowledged. It creates a linear-phase or minimum-phase
    impulse response table from a source table containing a frequency
    response or an impulse response.


  • Incorrect use of k-rate if..then.. in instrument 0 is now treated as i-rate.

  • Incorrect use of k-rate operations in instrument 0 are no longer
    treated as an error but a warning.

  • In a csd file commented-out tags were acted upon in some cases,
    leading to truncated orchestras. This is now fixed.

  • Arrays can be assigned from i-rate and k-rate to krate and i-rate;
    previously rates had to match.

  • The use of ! as a Boolean operation (meaning negation) is now supported,
    where previously the parser accepted it but did not use it.

  • Constant folding now implemented on a wide range of arithmetic.

  • Attempts to use an undefined macro produce a syntax error now.

  • Missing " (or other terminator) in #include is noticed and the #include is


  • In a csd file commented-out tags were acted upon in some cases,
    leading to truncated scores. This is now fixed.

  • The evaluation form [..] can now be nested.

  • The extract feature (-x from command line) now works.

  • Use of the score opcode x could case spurious error messages which are now

  • After calling a undefined macro the rest of the line is ignored.

  • A couple of bugs in repeated sections (r opcode) have been removed.

  • Missing " (or other terminator) in #include is noticed and the #include is


  • the --tempo (and -t) option now can be fractional; was previously
    limited to an integer.

  • new option: --udp-console=address:port redirects console to a remote

  • new option: --udp-mirror-console=address:port mirrors the console to
    a remote address:port.

  • new option: --udp-echo echoes messages sent to the UDP server

  • new option: --aft-zero sets initial after-touch value to zero rather than 127.

Modified Opcodes and Gens

  • loscil/loscil3 accept floating point increment.

  • OSCraw closes socket after use.

  • fout can now generate ogg format, as well as accepting -1 to mean the
    same format as -o uses.

  • bitwise and opcode (&) at a-rate corrected for sample-accurate mode.

  • slicearray has an optional additional argument to give a stride to the slice.

  • chnset now can have variable channel names.

  • a-rate arrays may be added, subtracted, multiplied and scaled. This
    is a start on a-rate array arithmetic.

  • dssiinit improved removing some crashes.

  • partials improved to remove a fencepost issue.

  • vco2ift fixed when an existing table is used.

  • The formatted printing opcodes now check for insufficient provided arguments.

  • FLbox and FLsetText again accept an ivar as first argument to give a
    string via strset (as a alternative to a string).

  • Better checking in prints should stop some crashes.

  • Bug in opcode 'in' (stereo) fixed.



  • icsound:

  • csound~:

  • csdebugger:

  • Emscripten: Now compiled as WebAssembly (runs in all major browsers). API now
    somewhat more conformed to other HTML5 APIs.

  • CsoundQt: Now built from master branch for improved stability.

General Usage

Bugs Fixed

  • The optionality of the last argument in sc_phasor now works.

  • Freezing in dconv fixed.

  • looptseg no longer crashes if presented with too few arguments.

  • schedule etc now work correctly with double-quoted strings within {{
    }} strings.

  • problem with CLI frontend interrupt handler fixed.

  • outs2 was broken (always wrote to channel 1 like outs1).

  • Various errors in the DSSI/ladspa system fixed.

  • vbap was broken in all cases except 4-speakers, now corrected.

  • Live evaluation of Csound Orchestra code code could result in hard to
    diagnose, odd errors (e.g., crashes, division by zeros, NaNs). This was due
    to a bug in merging of newly found constants into the global constant pool.

  • prevent prints opcode from crashing if number given


System Changes

  • The GNU Lesser General Public License, version 2.1, for CsoundVST
    and the vst4cs opcodes has been modified to grant an exception for
    compiling and linking with the VST2 SDK, which is available from
    []. For more information, see

  • UDP Server now accepts some new commands, which are
    prefixed by an opcode. These include support for
    events (&) and scores ($); setting control channels
    (@ ); setting string channels (% ));
    getting control channel values via UDP (:@
    ) and string channel contents (:%


  • As ever the French translations are complete.

  • The Italian translations of messages are greatly improved in scope;
    about a half of error and warning messages are now done.

  • Some progress as been made in German translations.


  • CompileCsdText now always returns a value indicating success/failure.

  • Eight new asynchronous versions of API functions now available:
    csoundCompileTreeAsync(), csoundCompileOrcAsync(),
    csoundReadScoreAsync(), csoundInputMessageAsync(),
    csoundScoreEventAsync(), csoundScoreEventAbsoluteAsync(),
    csoundTableCopyOutAsync(), and csoundTableCopyInAsync().

  • For server use, three new API functions: csoundUDPServerStart,
    csoundUDPServerStatus and csoundUDPServerClose.

Platform Specific

  • iOS

    iOS now links to Accelerate Framework. This might need to be added to projects.

  • Android

    input is fixed.

  • Windows

    Now compiles with Microsoft Visual Studio 2015 or later.

    Continuous integration for Windows with AppVeyor (Visual Studio 2017).

  • OSX

  • GNU/Linux

    ALSA MIDI backend now ignores some spurious -ENOENT error codes.

Assets 20