Skip to content

Releases: csound/csound

Version 6.18.1

24 Nov 09:12
Compare
Choose a tag to compare

RELEASE NOTES

This is a patchfix release mainly dealing with issues arisen in Linux package management. This contains the same code as 6.18.0, except for:

  • A long-standing big-endian test failure with score strings has been fixed.
  • The symbol spillage caused by a build misconfiguration has been resolved.
  • Plugin ABI compatibility with earlier versions (affecting the FLTK plugin) has been restored
  • Some left-over tracing in the mod function has been removed.

Version 6.18.0

27 Oct 07:24
Compare
Choose a tag to compare

CSOUND VERSION 6.18 RELEASE NOTES

Mainly a bug-fixing release. Major new facility is MP3 (MPEG) audio
files are supported both for input and output in platforms where this is
supported by libsndfile.

-- The Developers

USER-LEVEL CHANGES

New opcodes

  • scanmap reads internal state of scanu

  • elapsedcycles, elapsedtime, eventcycles, and eventtime. See under
    "bugs fied" for detials.

New gen

Orchestra

Score

Options

Modified Opcodes and Gens

  • fix midi list printing to stdout part of the list.

Utilities

Frontends

Bugs Fixed

  • Fixed bug where fixed-point phase computation (in oscil family) was
    incorrect resulting in slight freq deviations in very low freq cases.

  • Fixed bug where freeing instr 0 caused memory issues in new
    compilations. Instr 0 is not freed until reset now.

  • Fixed a bug where opcode directory search was crashing Csound if HOME
    variable not set.

  • Fixed pol2rect array size setting.

  • OSCsend, OSCsend_lo and OSClisten can now work with OSC messages
    carrying no payload (as per spec and manual).

  • bug in sum fixed

  • 'pitchamd' opcode causes segmentation fault (macOS) (#1599)

  • fixed crash on channel setting with empty channel name

  • bug in ftloadk fixed (#1611)

  • qnan works even when compiled with fast arithmetic

  • Fix the flanger opcode for sample-accurate mode, where the xdel input was
    not being correctly offset.

  • elapsedcycles, elapsedtime, eventcycles, and eventtime introducd as
    fixed versions of timek, times, timeinstk and timeinsts but return
    the correct values instead of being one cycle late. This prserves
    backward compatability

SYSTEM LEVEL CHANGES

System Changes

  • Fix for issue #1613:
    Fixes the rtauhal module for all cases of multichannel output. Previously the
    module would not work correctly with some devices.

  • Csound now supports MP3 files for input and output through libsndfile (version 1.1.0 and higher).

Translations

API

External Plugin Code

Platform Specific

Bela:

Many changes to Bela csound. See bela web site for details

MacOS:

  • Universal build for x86_64 and arm64, backward compatible to MacOS 10.9

WASM:

  • fix sampleRate for single-thread worklet.

Version 6.17.0

02 Feb 09:49
Compare
Choose a tag to compare

CSOUND VERSION 6.17 RELEASE NOTES

Mainly a bug-fixing release but also a major re-organisation of the
libraries to move all opcodes with dependencies into a separate plugins
repository. The only exception to this is the OSC opcodes (which
depend on liblo). This is in part a preparation for Csound7. This is
the last release using the current parser (v.2).

-- The Developers

USER-LEVEL CHANGES

New opcodes

  • scanmap and scansmap are like the xscanmap/xscansmap opcodes but
    work with the mainstream scan opcodes.

  • trigexpseg, triglinseg are aliases for trigExpseg, trigLinseg.

  • xscan opcodes are deprecated as they add nothing to the scan opcodes.

  • bformdec2 provides more ambisonic decoding of bformat audio.

  • metrobpm is like metro but the timing is in beats per minute and the
    signal can be offset by a proportion of the cycle.

  • sequ is a csound version of a hardware sequencer. It has many modes and options.

  • gtadsr implements a gated ADSR envelope

New gen

Orchestra

  • Message printing has been revised so -m16 suppresses all
    messages.

  • add channel count to list_audio_devices (called when the flag
    --devices is used so that it can be parsed by frontends).

Score

Options

Modified Opcodes and Gens

  • event opcode does not bail out if the instrument called does not exist.

  • Added an optional prefix to soundfont instruments printed via sfilist.

  • lpslots reworked with better control.

Utilities

  • cvanal now uses the SADIR environment to look for analysis files.

Frontends

General Usage

Bugs Fixed

  • fareylen called a non-existent function leading to a crash. Removed typo.

  • turnoff could cause clicks in some cases; fixed.

  • turnoff3 improved.

  • cntReset fixed; had a false initialisation code.

  • binary search in bpf fixed.

  • pvscfs frame counting issue fixed.

  • --sample-accurate fixed in a-rate form of tabsum.

  • Problem in atssinnoi fixed; did read outside allocated memory.

  • hrtfmove fixed; it could use the wrong value for sr.

  • Named instruments could use wrong structure in redefinition.

  • fixes in the jack backend relating to --get-system-sr.

  • pvcross frequency warp mode fixed.

  • lpcfilter/lpcanal bug where processing could not be restarted after
    a freeze fixed.

  • the emugens collection of opcode, a large group incorporation mainly
    array operations, were not made available due to a small editing
    error.

  • If using a float build (rather than a double) array access could be
    wrong.

  • In some cases instr0 code could ignore loops after an incorrect
    warning. Now fixed.

  • Bugs in mp3len and similar fixed.

  • Crash in syncgrain issue #1773 fixed

  • UDO output of fsigs fixed.

SYSTEM LEVEL CHANGES

System Changes

  • winsound has been removed.

Translations

API

CreateThread2 is a new API function that allows threads to be given a
user-defined stack size.

External Plugin Code

For a variety of reasons including licences, plugin opcodes that
allow csound to be a host for VST plugins is available from
https://github.com/gogins/csound-vst3-opcodes.git where installation
instructions can be found. It has been shown to work on Linux, MacOS
and Windows.

Platform Specific

Version 6.16.2

17 Jul 09:09
Compare
Choose a tag to compare

This is a hotfix release dealing with an issue that prevented CsoundQT successfully producing a recording using one of the API threading services. Fixes for desktop OS packages affected are provided here. Other files, release notes, and manual are as for 6.16.0 and 6.16.1.

The Developers.

Version 6.16.1

30 Jun 09:11
Compare
Choose a tag to compare

This is a bug fix release of Csound 6.16, where an issue affecting the use of turnoff/turnoff2 was repaired.
The features/changes/manuals/etc are the same as for 6.16.0.

Version 6.16.0

12 Jun 08:10
Compare
Choose a tag to compare

This delayed release was mainly a bug fixing release but there
are significant new opcodes, including support for simpler use of MIDI
controls and a new opcode to connect to an Arduino. Also there is an
optional limiter in the sound output chain.

Also there are a number of new filters including including the final
opcode written by the 'father of computer music' Max Mathews (with
Julius Smith)! ported by Joel Ross.

-- The Developers

USER-LEVEL CHANGES

New opcodes

  • cntDelete deletes a counter object

  • lfsr, a linear feedback shift register opcode for pseudo random
    number generation.

  • ctrlsave stores the current values of MIDI controllers in an array.

  • turnoff3 extends tuning off to remove instrument instances that are
    queued via scheduling but not yet active.

  • ctrlprint prints the result of a ctrlsave call in a form that can be
    used in an orchestra.

  • ctrlprintpresets prints the MIDI controller preset.

  • ctrlselect selects a preset for MIDI controller values.

  • ctrlpreset defines a preset for MIDI controllers.

  • outall writes a signal to all output channels.

  • scale2 is similar to scale but has different argument order and has
    an optional port filter.

  • aduinoReadF extends the arduino family to transfer floating point
    values.

  • triglinseg and trigexpseg are triggered versions of linseg and
    expseg

  • vclpf is a 4-pole resonant lowpass linear filter based on a typical
    analogue filter configuration.

  • spf is a second-order multimode filter based on the Steiner-Parker
    configuration with separate lowpass, highpass, and bandpass inputs
    and a single output.

  • skf is a second-order lowpass or highpass filter based on a
    linear model of the Sallen-Key analogue filter.

  • svn is a non-linear state variable filter with overdrive control
    and optional user-defined non-linear map.

  • autocorr computes the autocorrelation of a sequence stored in an array.

  • turnoff2_i is init-time version of turnoff2.

  • scanu2 is a revision of scanu to make it closer to the original
    concept. Damping now a positive value and plucking initialisation
    totally rewritten, plus various code improvements.

  • st2ms and ms2st are stereo to MS and vice-versa conversion opcodes
    with stereo width control.

  • mvmfilter is a filter with pronounced resonance and controllable decay time.

###New gen

  • gen44 allows the writing of stiffness matrices for scanu/scanu2 in a
    textual format.

Orchestra

  • The operations += and -= now work for i and k arrays.

  • k-rate array operators are now only processed at k-rate.

Score

  • An instance of a named instrument can have a decimal fraction added
    to the name to allow for tied notes and other facilities that were
    only avaliable for numbered instruments.

Options

  • New options --limiter and --limiter=num (where num is in range (0,1]
    inserts a tanh limiter (see clip version2) at the end of each k-cycle.
    This can be used when experimenting or trying some alien inputs to save
    your ears or speakers. The default value in the first form is 0.5

  • A typing error meant that the tag was not recognised,
    although the English spelling (CsSortLicence) was. Corrected.

  • New option --default-ksmps=num changes the default value from the
    internal fixed number.

  • New environment variable CS_USER_PLUGINDIR has been added to
    indicate a user plugin dir path (in addition to the system plugin
    directory). This added search path defaults to standard locations
    on different platforms (documented in the manual).

Modified Opcodes and Gens

  • slicearray_i now works for string arrays.

  • OSCsend always runs on the first call regardless of the value of kwhen.

  • pvadd can access the internal ftable -1.

  • pan2 efficiency improved in many cases.

  • Add version of pow for the case kout[] = kx ^ ivalues[]

  • expcurve and logcurve now incorporate range checks and corrects end
    values.

  • Streaming LPC opcodes have had a major improvement in performance
    (>10x speedup for some cases) due to a new autocorrelation routine.

  • Restriction on size of directory name size in ftsamplebank removed.

  • If a non string is passed to sprintf to be formatted as a %s an error
    is signalled.

  • readk family of opcodes now support comments in the input which is ignored.

  • Added iflag parameter to sflooper.

  • Opcodes beosc, beadsynt, tabrowl, and getrowlin removed from Csound distribution, now
    available from third-party repository.

Utilities

Frontends

General Usage

  • Csound no longer supports Python2 opcodes following end of life for Python 2.

Bugs Fixed

  • The wterrain2 opcode was not correctly compiled on some platforms.

  • fprintks opcode crashed when format contains one %s.

  • Bug in rtjack when number of outputs differed from the number in
    inputs.

  • FLsetVal now works properly with "inverted range" FLsliders.

  • Conditional expressions with a-rate output now work correctly.

  • Bug in --opcode-dir option fixed.

  • sfpassign failed to remember the number of presets causing
    confusion. This also affects sfplay ad sfinstrplay.

  • midiarp opcode fixed (issue 1365).

  • A bug in moogladder where the value of 0dbfs affected the output is
    now fixed.

  • Bugs in several filters where istor was defaulting to 1 instead of 0
    as described in the manual have been fixed.

  • Bug in assigning numbers to named instruments fixed. This
    particularly affected dynamic definitions of instruments.

  • Use of %s format in sprintf crashed if the corresponding item was not a
    string. Thus now gives an error.

  • Fix bug in ftprint where trigger was not working as advertised.

  • Asynchronous use of diskin2 fixed.

  • pvs2tab does not crash in the sliding case but gives a error.

  • In some circumstances turnoff2 could cause the silencing of another
    instrument for one k-cycle. This is now fixed.

  • timeinstk behaved differently in a UDO to normal use. This has been
    corrected.

  • Fixed midiarp init method as it was causing an issue with one of the arp modes.

  • Fixed scaling of attack stage of xadsr.

  • Fix printarray behaviour for string arrays (default is to print at
    every cycle); added a variant without trigger.

  • Bug with named instrument merging in new compilations fixed.

  • ATSA opcode atsinnoi could cause memory problems. The 6.16 release is better but not yet verified.

SYSTEM LEVEL CHANGES

System Changes

  • New autocorrelation routine can compute in the frequency or
    in the time domain. Thanks to Patrick Ropohl for suggesting
    the improvement.

  • Minimum cmake version bumped to 3.5.

  • Image opcodes removed, now in plugin repo.

  • faust opcodes removed, now in plugin repo.

  • Python opcodes are now in plugin repo.

  • Ableton Link opcodes moved to plugins repo.

Translations

API

Platform Specific

  • WebAudio:
    the csound.js frontend is deprecated and no longer distributed. A separate package is not provided here anymore, but new builds will be distributed as NPM modules. A project website repo, https://github.com/csound/webaudio is under development, where we will host the documentation and tutorial sub-site of csound.com for webaudio. This will be the landing page where users go to for information on WebAudio Csound API as well as have examples, links to projects using Csound, etc.

  • iOS

  • Android

  • Windows

  • MacOS:

    Some opcode libs with dependencies have been removed from release. Image
    opcodes, Python opcodes, Faust opcodes, and FLTK Widget opcodes have
    been moved to a separate repository and are not included anymore.

  • GNU/Linux

  • Haiku port

  • Bela

6.15.0

13 Aug 23:37
Compare
Choose a tag to compare

CSOUND VERSION 6.15 RELEASE NOTES

Quite a few new opcodes are in this release as well as extensions of
existing opcodes. In particular there is the introduction of streamed
LPC which has long been requested.

Another feature if this release is a large number of internal fixes to
incorrect data access, as well as the usual tweaks and changes.

Starting from this release, no third-party graphic frontends are shipped
with the installation packages on MacOs and Windows. Users should
install their choice of frontend separately.

-- The Developers

USER-LEVEL CHANGES

New opcodes

  • ftset sets multiple elements of a table to a given value.

  • lufs opcode calculates a momentary, integrated and short-term loudness meter.

  • bob filter is a numerical simulation of the Moog analog resonant filter.

  • sterrain is an enhanced version of wterrain with more possible orbits.

  • wterrain2 is a alternative enhancement of wterrain with less variation that sterrain.

  • count, count_i, cntCreate, cntRead, cntReset, cntCycles and cntState together implement a new counter object that cycles trough a constant range, similar to in PD.

  • new alias for sc_ opcodes: sc_lag -> lag, sc_lagud -> lagud, sc_trig -> trigholf, sc_phasor -> phasortrigo.

  • println is similar to printf but without the trigger.

  • rndseed provides a seed for rnd and birnd functions.

  • arduinoStart, arduinoRead and arduinoStop provide a protocol for
    transferring sensor data from an Arduino to Csound.

  • lpcfilter, lpcanal, allpole, pvslpc, pvscfs, apoleparams, resonbnk:
    new streaming linear prediction opcodes.

  • gauss - new version accepting mean and standard deviation as
    parameters, implementing the Box-Muller algorithm.

  • pvsbandwidth - returns spectral bandwidth.

  • vps - vector phase shaping

New Gen and Macros

Orchestra

  • #include of a url now works again.

  • the end of file case is better handled in the pre-lexer.

  • corrections to reported line number in a few error cases.

  • conditional expressions yielding strings fixed, and other cases.

  • the sequence //* no longer is misinterpreted as starting a comment block.

  • when using sample-accurate mode a new score event that was aligned to the ksmps could stop one cycle early. Now correct.

  • the maximum line length for various inputs has been increased to

  • now legal to set the number of input channels to zero.

Score

  • New score opcode B is like b but is accumulative.

  • the end of file case is better handled in the pre-lexer.

Options

  • keep-sorted-score and simple-sorted-score both can take a filename in which to write the score after a =.

  • print_version option prints the version of Csound used at the end of a rendering.

  • syntax-check-only return an error if syntax failed.

  • opcode-dir: loads all plugin opcodes from a given directory (in
    addition to the plugins loaded from the opcode plugin path).

Modified Opcodes and Gens

  • cent, semitone, dB accuracy improved.

  • taninv2 now has an array version.

  • ftslice has more variations.

  • ptable opcodes are now deprecated as they are identical to table opcodes.

  • GEN20 case 9 (sinc function) now has an optional parameter tao the x range.

  • fprint(k)s now has a %s format specifier.

  • lastcycle corrected and clarified.

  • chn_k can now accept the mode as a string. r=1 (input), w=2 (output), rw=3 (input+output).

  • trim improved.

  • the HDF5 opcodes upgraded to v1.12.0.

  • GEN16 is more careful about lengths of data.

  • scale has additional optional arguments to specify the input range.

  • schedule/schedulek can take arguments from an array.

  • GEN11 improved with respect to rounding errors.

  • partials has an improved method of phase estimation.
    .

  • ctrlinit checks that the values are in the range [0,127].

  • fin as format argument changed, and is now deprecated.

  • fink has the same argument change

Utilities

  • lpanal now contains a new alternative algorithm based on the Durbin
    method, in addition to the original Gauss method.

Frontends

  • Belacsound:

  • CsoundQt:

General Usage

  • if using FLTK the widgets are reset on ending a run, which was not always the case earlier.

Bugs Fixed

  • setcols was very broken; fixed.

  • cps2pch and cpsxpc fixed in the case of a table of frequencies.

  • the 31 bit pseudo random number generator was seeded with zero then it stayed on zero. Than it now fixed.

  • gen 20 was wrong in the case of 8.

  • turning off an instrument from inside a UDO now works.

  • macro expansion in both orchestra and score had a bug related to uninitialised variable.

  • if a UDO set a different value for ksmps any output to a multichannel device was incorrectly calculated.

  • reshape array had a number of problems, now all fixed.

  • ftprint had problems not following the manual regarding trig == -1 and could show the wrong index.

  • part2txt/partials occasionally emitted the same track (including same track ID) multiple times for a given time point. Fixed.

  • expsegr was incorrectly dependent on ksmps when sample-accurate is in force.

  • table opcodes had an error when used with non power-of-two lengths.

SYSTEM LEVEL CHANGES

  • A crash when csound.evalcode was called without csound.start fixed.

System Changes

  • Many fixes to memory problems, mainly invalid reads/writes.

Translations

API

  • new API to hard override default plugin dir.

  • new API function to load plugins.

Platform Specific

  • WebAudio:
  • Built using Emscripten 1.40.1 (LLVM backend)
  • New single-file release of CsoundObj.js with all classes and webassembly files combined using npm and rollup
  • Breaking: CsoundObj.importScripts() was removed and replaced with CsoundObj.initialize()
    • paths for loading other files no longer relevant with single-file
    • initialize takes in optional AudioContext, otherwise CsoundObj will create one for use
  • Breaking: CSOUND_AUDIO_CONTEXT moved from global namespace; instead reference CsoundObj.CSOUND_AUDIO_CONTEXT
  • Compile flags changed to -O3 and without debug information, per recommendations for release builds by Emscripten
  • Link-Time Optimization (LTO) enabled for reduced size
  • iOS

  • Android

  • Windows

  • MacOS

  • coreaudio now checks the number of channels and fails if there are insufficient.
  • GNU/Linux

  • Haiku port

  • Bela

    • updated digiBelaOut and digiIOBela.
    • Added trill opcode

6.14.0

27 Jan 00:33
Compare
Choose a tag to compare

CSOUND VERSION 6.14 RELEASE NOTES

A number of bug fixes and enhancements, but also potentially
significant changes are included.

For live coders the orchestra macros are now remembered between calls
to compilerstr. This should not change the behaviour of current valid
orchestras but could be useful in live coding.

MIDI devices now include mapping multiple devices to higher channels.
The details are in the manual MIDI section.

-- The Developers

USER-LEVEL CHANGES

New opcodes

  • randc is like randi but uses a cubic interpolation.

  • mp3out is an experimental implementation of writing an mp3 file. It
    may be replaced by the current work in libsndfile to deal with MPEG
    files. See appendix.

  • metro2 is like metro but with added controllable swing.

  • ftexists reports whether a numbered ftable exists.

  • schedulek is a k-time opcode just like schedule.

  • new array based channel opcodes: chngeti, chngetk, chngeta, chngets,
    chnseti, chnsetk, chnseta, chnsets.

  • lastcycle ientifies the last k-cycle of an instrument instance.

  • strstrip removeswhitespace from both ends of a string.

New Gen and Macros

Orchestra

  • The conditional expression syntax a?b:c incorrectly always
    calculated b and c before selecting which to return. This could
    give incorrect division by zero errors or cause unexpected multiple
    evaluations of opcodes. It now implements the common C-like semantics.

  • Orchestra macros are now persistent, so they apply in every
    compilation after they are defined until they are undefined. It has
    been changed because of the need of live coding in particular. A
    correct orchestra should not be affected.

  • Following a syntax error there were cases when Csound gave a
    segmentation error. This is now fixed.

Score

Options

  • New option simple-sorted-score creates file score.srt in a more
    user-friendly format

  • Revise treatment of CsOptions wrt double quotes and spaces which need escaping.

  • Setting the 1024 bit in -m suppresses printing of messages about
    using deprecated opcodes. This option is itself deprecated.

Modified Opcodes and Gens

  • squinewave now handles optional a or k rate argument.

  • pindex opcode handles string fields as well as numeric ones.

  • sflooper reworked to avoid a crash and provide warnings.

  • event_i and schedule can take fractional p1.

  • in sound font opcodes better checking. Also no longer will load
    multiple copies of a sound font, but reuses existing load.

  • fluidControl has a new optional argument to control printing
    messages.

  • bpf has an audio version now.

  • stsend/stecv can work with unmatched k-rates.

  • pvstrace has new optional arguments.

  • lpfreson checks number of poles.

  • syncloop had a small typing error that caused crashes.

  • bpfcs has new array versions.

  • zacl can omit second argument, defaults to clearing only the given
    channel.

  • outvalue attempted to use a k-rate value which could be invalid at
    the time. This is mainly a small performance problem, and it is now
    eliminated.

  • Channel names for chnget and chnset opcodes can now be updated at k-rate so
    they can be called within a loop.

  • copya2ftab now has an optional additional argument which is an
    offset into the ftable for where to copy the array.

Utilities

  • lpanal now checks that sufficient poles are requested.

Frontends

  • Belacsound:

  • CsoundQt:
    Released to coincide with Csound 6.14 there is CsoundQt 0.9.7
    See Release notes [https://github.com/CsoundQt/CsoundQt/blob/master/release_notes/Release%20notes%200.9.7.md]

General Usage

  • // comments at the start of a line now accepted in CsOptions
    section of a csd file.

  • Option --orc has been corrected so it runs without a score; that is for ever until an exit condition.

Bugs Fixed

  • shiftin fixed.

  • exitnow delivers the return code as documented.

  • fixed bug in beosc, where gaussian noise generator was not being
    initialised.

  • OSCraw fixed.

  • ftkloadk could select incorrect internal code causing a crash.

  • GEN01 when used to read a single channel of a multi-channel file got
    the length incorrect.

  • ftgenonce had a fencepost problem so it could overwrite a table in
    use.

  • a race condition in Jacko opcodes improved (issue #1182).

  • syncloop had a small typing error that caused crashes.

  • lowresx was incomplete and did not work as intended; rewritten (issue #1199)

  • if outch was incorrectly given an odd number parameters it would give
    a segmentation error. This now gives an error message.

SYSTEM LEVEL CHANGES

System Changes

  • New plugin class for opcodes with no outputs written.
    perform time errors and init errors are also reported in the return code of
    the command line system. The new API function GetErrorCnt is
    available to do something similar in other variants.

Translations

API

  • Function GetErrorCnt gives the number of perf-time errors, and adds
    in the init-time errors at the end of a rendering.

  • Function FTnp2Find no longer prints messages if the table is not
    found, but just returns NULL. Previous behaviour is available as
    FTnp2Finde.

  • csoundGetInstrument() added

Platform Specific

  • WebAudio:

  • added csoundCompile to CsoundObj that adds commandline args so that one can
    override CsOptions values in CSDs

  • added getPlayState(), addPlayStateListener(), and other methods to CsoundObj
    for querying and listening to changes of play state

  • iOS

  • Android

  • Windows

  • stsend reworked for winsock library

  • MacOS

  • GNU/Linux

  • Haiku port

  • Bela

Appendix: Experimental mp3out

Simple example:

<CsoundSynthesizer>

<CsInstruments>
ksmps = 1000

instr 1
  aa diskin "fox.wav", 1
  mp3out  aa,aa,"test.mp3"
  endin
</CsInstruments>

<CsScore>
i1 0 3
e
</CsScore>

</CsoundSynthesizer>

The syntax is mp3out aleft,aright, Sfilename with three optional arguments mode (0=stereo, 1=Jointstereo (default), 3=Mono), bitrate defaulting to 256, and quality (in range 1 to 7) defaulting to 2 (high quality).

Csound 6.13.0

12 Jul 21:58
Compare
Choose a tag to compare

CSOUND VERSION 6.13 RELEASE NOTES

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

USER-LEVEL CHANGES

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

Orchestra

  • 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.

Score

  • 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.

Options

  • 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
    limit.

  • 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.

Utilities

  • hetro had a number of fixes and improvements.

Frontends

  • 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.

SYSTEM LEVEL CHANGES

  • 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.

Translations

API

  • 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

6.12

07 Nov 14:11
Compare
Choose a tag to compare

CSOUND VERSION 6.12 RELEASE NOTES

Many changes including the removal of vst2cs functionality due to a copyright issue.

The changes made in 6.11 to raw format reading have been modified so
gen1 and diskin ignore positive file formats and use the file header,
unless the format is negative when it uses the absolute value in a raw
audio file. This should preserve most compatibility issues.

There are a number of new and improved opcodes, new facilities in
scores and many bug fixes.

-- The Developers

USER-LEVEL CHANGES

New opcodes

  • fluidinfo retrieves program information from a currently loaded soundfont.

  • New opcode ftaudio writes a ftable to an audio file; irate and triggered
    k-rate version exist and k-rate version supports sync or async writing.

  • Version of OSClisten that writes the data to a k-rate array now exists.

  • OSCcount returns the number of OSC incoming messages pending.

  • faustplay and faustdsp are new opcodes splitting the faust DSP
    instantiation and performance.

  • OSCbundle sends a collection of similar OSC messages as a single packet
    for efficiency.

  • beosc and beadsyn are band enhanced oscillator and oscillator bank.
    bpfcos is for breakpoint files with interpolation. Similarly lincos
    adds cosine interpolation to linlin.

  • printarray and reshapearray act on arrays.

  • trim and trim_i adjust the size of a 1 dimensional array, either
    bigger or smaller, preserving data and/or padding with zeros.

  • pvstrace now offers a new version outputting an array in addition
    to an fsig. This holds a list of bin numbers of the retained
    loudest components.

Orchestra

  • New preprocessor option #includestr. This is like #include but has
    macro expansion in the double-quote delimited string.

  • Use of tied notes in subinstr fixed.

  • Nesting macro calls more than about 10 caused a crash; now unlimited nesting works.

  • runtime error message now (usually) include a line number and a file/macro trace.

  • multiple assignments such as ka,kb=1,2 are again supported by the
    parser; it had inadvertently got lost.

  • the problematic use of i() with an array element directly is now
    flagged as an error.

  • If an included file name has a "/" in it then any nested include is
    relative to that directory. (Issue #973)

  • Redefinition of UDOs with zero output arguments fixed.

  • A very obscure bug in running sub-instruments, which has been in the
    code for nearly a year, was fixed.

Score

  • New preprocessor option #includestr. This is like #include but has
    macro expansion in the double-quote delimited string

  • 'd' score opcode for real-time performance. This was issue #966.

  • bug in np operation fixed.

  • Use of [] syntax in a score could lead to a loss of precision for
    numbers over about 1 million; older version restored.

  • Nesting macro calls more than about 10 caused a crash; now unlimited
    nesting works.

  • The forms for delayed ending of sections (e 5 or s 5) now work with
    fractional delays; previously only read the integer part.

  • If an included file name has a "/" in it then any nested include is
    relative to that directory. (Issue #973)

Modified Opcodes and Gens

  • Add optional argument to ftom for rounding answer to integer.

  • flooper2 and syncgrain etc now allow resampling.

  • chnclear can now take a list of channels to clear instead of just one.

  • printf and printf_i now are like the manual: all arguments beyond the
    format and trigger are optional.

  • prints and printks can take string arguments printed with %s.

  • GEN2 can now take a size of zero, which is interpreted as size
    sufficient for the number of values provided.

  • faustcompile now includes a new optional parameter to allow it to be
    run in a blocking mode. Defaults (as before) to non-blocking.

  • fillarray can be run at k-rate if any of the argument/values are k-rate.

  • slicearray for other than i-rate arrays runs at k-rate only.

Utilities

  • A coding error in mixer was fixed. It was very broken.

Frontends

  • Belacsound:

    • changes to conform to new Bela API.
  • CsoundQt:

General Usage

Bugs Fixed

  • A typo in p5glove meant that the command to read the button status
    as a bitmap only returned state of button A.

  • diskin to array fixed and also use with small ksmps.

  • in loscil it sometimes failed to deal with the ibas argument; this
    has now been reworked to be correct.

  • madsr could overflow an internal counter when given a negative p3.

  • Fixed mapping from threads to lua_States (issue #959).

  • the time calculation in flooper2, flooper, and syncgrain was corrected.

  • resampling and pitch fixed in pvstanal.

  • Rare buffer overflow case in faust opcodes fixed.

  • pvsftw had an incorrect check for fft format which led to incorrect
    claim of bad format; fixed.

  • if ksmps was 1 the opcode linenr at arate failed to work; fixed.

  • window opcode fixed.

  • The test for compatible subtypes of f-values in a number of pvs
    opcodes was wrong, causing spurious error messages.

  • cosseg was broken for more than one segment; now OK.

  • monitor opcode did not work correctly when using multiple processes; fixed.

  • in the linenr opcode if the release stage was entered before the end
    of the rise the output value jumped to the end value and then
    decayed, causing a glitch. This is fixed. (#1048)

SYSTEM LEVEL CHANGES

  • the various -zN options now reports the number of opcodes for the request, so
    differs with respect to deprecated and polymorphic opcodes.

System Changes

  • Recompilation of named instruments totally reworked to avoid errors
    and memory leaks.

  • The allocation of instrument names to internal numbers has been
    rewritten and should now be usable with replacements in live coding.

  • Printing the number allocated to a named instrument now behaves the
    manual, not just for debug.

  • if liblo version 0.29 is available csound can be built to use it (with
    a compiler flag LIBLO29) and this fixes some bugs related to
    heavy/complex use of OSClisten. Unfortunately the older 0.28 version
    is being distributed by some Linux distros.

  • The orchestra compiler has a number of new optimisations, avoiding
    unnecessary assignments and doing some more expression optimisations.

Translations

API

  • csound->ReadScore was changed so it behaves the same as a score in a
    csd or sco file. This could incorrectly give an infinite score or not
    in unexpected cases.

Platform Specific

  • WebAudio:

    • Added string channel access.
    • ES6 module loading.
  • iOS

  • Android

  • Windows

  • MacOS

  • GNU/Linux

  • Bela:

    • allows different channel numbers for audio and analog in and out.