@kunstmusik kunstmusik released this May 19, 2016 · 32630 commits to develop since this release

Assets 20

A large number of bug fixes, some quite major, some internal are
included, as well as some new facilities and extensions. As ever there
are coding improvements as well.

-- The Developers


New opcodes:

  • compress2: like compress but using a more normal use of dB
    (0.0 for full scale).
  • (Experimental, source code-only) New cuda opcodes cudasynth2
    and cudanal2
  • directory opcode: Reads a directory and outputs to a string
    array a list of file names.
  • ftsamplebank:to load a sample library from a directory.
  • mvclpf1, mvclpf2, mvclpf3, mvclpf4, mvchpf: Moog
    voltage-controlled filter emulations from Fons Andriaensen.
  • S() converter from k-rate and i-time number to a string.
  • cepsinv opcode to calculate the inverse cepstrum of an array.
  • moogladder2 is a faster, less accurate implementation of moogladder.
  • paulstretch opcode is a lightweight implementation of the
    PaulStretch time-stretching algorithm by Nasca Octavian Paul.
    It is ideal for timestretching a signal by very large amounts.
  • mp3scal implements phase-locked vocoder processing from
    mp3-format disk files, resampling if necessary.
  • filescal implements phase-locked vocoder processing from disk
    files, resampling if necessary.

New Gen and Macros:


  • The boolean ?..:.. construction can now have string results,
    while previously it only allowed numbers.
  • The line number reported when an error is detected at the end
    of a line is now correct. Also more improvements in line numbers
    for complex syntax
  • While loop improved/fixed.
  • Better and consistent reading of comments.
  • Continuation lines handled better, especially respecting line
  • opcode:S(.) syntax now allowed.


  • The list of tempo points in score opcode t is now arbitrarily
  • A stupidity in r and { opcodes fixed.


  • The -z option now suppresses deprecated opcodes, unless given
    a 2 or 3 argument.
  • The new option --fftlib controls which real fft library to
    use internally (FFTLIB = 0, PFFFT = 1, vDSP = 2)

Modified Opcodes and Gens:

  • In OSC opcodes it is now possible to send and receive arrays,
    tables and audio.
  • Better diagnostic if diskin2 fails.
  • Rezzy now checks for unstable filter and modifies to close
    stable version.
  • adsr rewritten so it gives an error if the segments are
    longer than p3.
  • Use of diskin to an array ow resizes the output array if
  • chnget now checks for a change in chanel name as well as data.
  • interp can take an optional extra argument to give an initial
  • oscilikts uses a more liberal table lookup.
  • opcode in can read mono or stereo, obviating the in/ins
  • sensekey rewritten to provide better diagnostics and fixes a
    minor bug.
  • Fix to a case of defining a macro with arguments.
  • sockrecv now works at a and k rate.
  • GEN49 now works from ftgen calls.
  • GEN34 liberalised in tables it accepts.
  • chnget now allows channel names to be changed at perf time.
  • iceps has been renamed cepsinv to avoid name clashes.
  • mp3 support improved in a number of minor ways.
  • a minor fix to allow a ladspa plugin to be re-loaded by the host.








  • Some memory issues fixed.


CsoundQT has its own notes at

General usage:

  • The multicore options somewhat improved.
  • When replacing instruments the new version inherits maxalloc
    and active flags.
  • Multicore code now works with midi instruments.
  • MIDI operations now available via a new rtmidi jack module (-+rtmidi=jack)

Bugs fixed:

  • Fix to trigseq.
  • Major error in rezzy fixed.
  • p() fixed for high numbers of p-arguments.
  • p() now works from MIDI events.
  • The 31-bit random number generator could give a very short
    loop if seeded with zero; fixed.
  • Macros in .orc files now work.
  • A long-standing bug in display of graphs fixed.
  • Fixes to the envelope opcodes linen, expsegr, linsegr,
    cossegr, transegr, envlpx, including new warnings.
  • Many fixes in string opcodes (strsub, strcpy and others).
  • Fixed bugs in print formats (sprintf printf prints).
  • pvsmooth had a missing initialisation.
  • Array initialisation now robust.
  • Bug in copya2ftab fixed.
  • Fix in cudapvsanal (EXPERIMENTAL).
  • partikkel fix to subsample grain placement.
  • Opcodes that require an odd number of arguments are now properly checked.
  • pvswrite now takes proper notice of 0dbfs.
  • GEN34 now allowing non-power-of-two source tables.
  • vst4cs will now work on 64bit architecture.
  • strcat mended.
  • nstance mended.
  • fixed small issues in rtauhal module.
  • Windows installer for 64 bit CPU architecture now sets
    environment variables on system level as it should.
  • transeg at k-rate with itype non-zero had an initial delay if one cycle
  • log function on arrays fixed
  • Rescaling of named GENs fixed
  • A fencepost error in reading ATS files believed fixed; it
    generated spurious errors about file finishing early.
  • Initialisation error in pvbandp fixed.
  • readfi string allocation fixed


System changes:

  • Extensive use made of in-memory files. Orc and sco are always
    thus, as are .csound6rc. This simplifies much internally.
  • Nested longjmps fixed which affected some API use.
  • If a non-existent .csd file is presented Csound no longer
  • The kcounter value is now consistently an unsigned 64bit
    value, allowing for long performances.


  • csoundCompileCsdText: New function to compile a CSD from a string of text.
  • The function call csound->GetKcounter(csound) now returns an
    unsigned 64 bit integer. Previously it returned a long which is
  • ctcsound.py is a new wrapper file to the Csound API for the
    Python language. It is a pure Python file using the FFI (Foreign
    Function Interface) module ctypes. It does not depends on
    Swig, and it works with Python2 and Python3 as well. It uses
    numpy for its data structures, numpy being the fundamental
    package for scientific computing with Python.

Platform Specific


  • Structure alignment issue in code affecting 64bit platforms fixed.



  • The Windows installer for Csound now contains all executables
    built for 64 bit CPU architecture.
  • The Windows installer for 64 bit CPU architecture now provides NW.js
    "out of the box." It runs all features of
    Csound, as well as all features of HTML5, in a browser-like runtime
    with JavaScript scripting, and includes a Csound editor implemented
    in HTML. The editor will run pieces either as .csd files with embedded or as .html files calling the csound object, and includes JavaScript debugging.
  • A new simplified build system has been implemented in the csound/mingw64
    directory for building Csound using the MSYS2/mingw64 toolchain.
  • Linking to pthreads and other libraries now static.


  • Installer fixed for link names for _csnd6 and _CsoundAC.


  • date opcode more accurate.