Skip to content

Releases: csound/csound

6.12.0

18 Nov 18:41
Compare
Choose a tag to compare
typo in trim_i

6.11.0

15 May 10:26
Compare
Choose a tag to compare

CSOUND VERSION 6.11 RELEASE NOTES

There has been a great amount of internal reorganisation, which should
not affect most users. Some components are now independently managed
and will eventually be installable via a new package manager. The
realtime option is now considered stable and has the "experimental"
tag removed. Special support for the Bela platform has been introduced.

There have been more steps towards completing the
arithmetic operations involving a-arrays.

Note that changes to GEN01 and diskin2 may not be backward compatible
if a non zero value is given for the format.

-- The Developers

USER-LEVEL CHANGES

New opcodes

  • loscilphs, loscil3phs are like loscil but return the phase in
    addition to the audio.

  • More arithmetic between a-rate arrays and a-rate values; this
    completes the arithmetic where one or more argument is an audio
    array.

  • balance2 is like balance but scales the output at a-rate, rather than
    k-rate.

New Gen and Macros

Orchestra

Score

  • Characters following a \ in a score string are treated as escaped, so
    \n is a newline rather than two characters. It handles escaped a,
    b, f, n, r, t and v. Other characters following a \ ignore the backslash.

Options

Modified Opcodes and Gens

  • print, printk2 now take an additional optional argument which if
    non-zero causes the k-variable name to be printed as well as the value.

  • getrow, setrow, getcol, and setcol can now act on i-rate arrays.

  • diskin2 was incorrectly described in the manual with respect to the
    iformat parameter. Now if iformat is zero the file is expected to
    have an audio header; if in the range 1-10 (rather than 0-9 as
    before) then it is opened as raw with the specified sample format.
    THIS MAY BE INCOMPATIBLE. For most users the value of zero will
    be correct.

  • GEN01 now uses format 0 to get the file type from the header; any
    other value indicates a raw file. THIS MAY BE INCOMPATIBLE. For
    most users the value of zero will be correct.

  • GEN01 was incorrectly documented with respect to the format
    argment. There are 9 raw formats whereas the earlier manual stated 6.

  • Small change in slicearray should allow it to be used in functional
    form in most cases.

  • The family of opcodes tb0 to tb15 and their initialisation opcodes
    tb0_init to tb15_init are deprecated as multi-argument functions are
    allowed.

  • The mode filter now does not allow a frequency in the unstable region.

  • In scanu and xscanu the value of kpos is supposed to be in the range
    [0,1]. This is now inforced by treating all negative values as 0 and all
    values bigger than 1 as 1.

Utilities

  • src_conv is now available on Windows and MacOS

Frontends

  • Belacsound: a new frontend specific for the Bela platform is introduced
    in this version. A binary package is provided.

  • CsoundQt:

General Usage

Bugs Fixed

  • linen was reworked to allow for long durations and overlaps.

  • Resetting csound caused a crash if Lua opcodes were used; fixed.

  • The poscil family of opcodes could give incorrect results if used in
    multi-core orchestras AND another instrument changed the f-table.
    This is now corrected.

  • Use of out with an audio array did not check that the array
    dimension was not greater than the number of channels, which caused
    a crash. It is now checked and truncated if too large with a
    warning.

  • Bug in stereo versions of loscil introduced distortion; now fixed.

  • Fencepost error in phs fixed.

  • gen49 read deleted memory if the file was not found; fixed

  • Loading of LADSPA plugins when relying on search paths was wrong and
    mangled the name; now fixed.

SYSTEM LEVEL CHANGES

  • OPCODE6DIR{64} now can contain a colon-separated list of directories.

System Changes

  • The somewhat curious distinction between k-rate and a-rate perf-time
    has been removed throughput, so only threads 1, 2 and 3 are used,
    the s-type output is not used, and some x-type inputs have
    been changed for direct polymorphism. This only matters for opcode
    writers as the s, and x codes and threads 4, 5, 6 and 7 will be
    removed in a while.

Translations

  • As ever the French translations are complete.

API

  • No changes to the API

Platform Specific

  • WebAudio: from this release onwards, the Csound port for the web platforms has been
    merged into a single package henceforth called 'WebAudio Csound'. There are many internal
    changes to this, the AudioWorklet interface is employed wherever supported, with a fallback to
    ScriptProcessorNode elsewhere. Csound is also available in the form of independent Nodes,
    in addition to the original CsoundObj API. The csound.js frontend, originally designed for
    PNaCl Csound, is also ported to WebAudio Csound, following the deprecation of that
    port of Csound.

  • iOS: now ships with a new libsndfile supporting FLAC and ogg vorbis (thanks to Nikhil Singh for providing this).

  • Android: now ships with a new libsndfile supporting FLAC and ogg vorbis

  • Windows

  • MacOS

  • GNU/Linux

6.10.0

22 Dec 16:58
Compare
Choose a tag to compare

CSOUND VERSION 6.10 RELEASE NOTES

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

USER-LEVEL CHANGES

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.

Orchestra

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

Score

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

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

Options

  • 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
    address:port.

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

Utilities

Frontends

  • 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 LEVEL CHANGES

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
    [https://github.com/steinbergmedia/vst3sdk]. For more information, see
    [https://github.com/csound/csound/blob/develop/Opcodes/vst4cs/licensing_considerations_for_csoundvst_and_vst4cs.md].

  • 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 (:%
    ).

Translations

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

API

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

Csound 6.09.2 beta2

25 Aug 18:48
Compare
Choose a tag to compare
Csound 6.09.2 beta2 Pre-release
Pre-release

This is the head of the develop branch. The Windows installer now contains a version of CsoundQt that supports, in addition to regular CSD files, CSD files with an HTML element embedded in them, and HTML files that can run a csound object in the JavaScript context.

Please note, this release has been updated with an installer that now contains the missing Qt5Positioning.dll, and updated again with the missing QWebEngineProcess.exe.

See previous releases for more details about enhancements and bug fixes.

csound 6.09.1

12 Jul 12:58
Compare
Choose a tag to compare

CSOUND VERSION 6.09.1 RELEASE NOTES

This is mostly a bugfix release of version 6.09 addressing a number of issues, including a bug in multicore performance. The Web Assembly platform is introduced in this release, as well as support for
Swift development on iOS. Some DLLs that were missing from the Windows installer also have been added to it. Following Google's deprecation of PNaCl, this platform has been dropped from the release and
will not be further developed.

These notes include the changes in 6.09 (for completeness) and 6.09.1

-- The Developers

USER-LEVEL CHANGES

New opcodes

  • select -- sample-by-sample comparison of audio selecting the output.

  • midiarp opcode -- generates arpeggios based on currently held MIDI notes.

  • hilbert2 -- a DFT-based implementation of a Hilbert transformer.

  • Ableton Link opcodes -- for synchronizing tempo and beat across
    local area networks.

  • pvstrace -- retain only the N loudest bins.

  • several new unary functions/opcodes for k-rate and i-time numeric
    arrays: ceil, floor, round, int, frac, powoftwo, abs, log2, log10,
    log, exp, sqrt, cos, sin, tan, acos, asin, atan, sinh, cosh, tanh,
    cbrt, limit1.

  • several new binary functions/opcodes for k-rate and i-time numeric
    arrays: atan2, pow, hypot, fmod, fmax, fmin.

  • limit -- numeric limiting within a given range (for arrays).

  • tvconv -- a time-varying convolution (FIR filter) opcode.

  • liveconv -- partitioned convolution with dynamically reloadable impulse response

  • bpf, xyscale, ntom, mton -- (from SuperCollider?).

  • OSCsendA -- asynchronous version of OSCsend,

  • OSCsend -- now implemented directly using system sockets. Old version
    using liblo has been kept as OSCsend_lo.

  • OSCraw -- to listen for all OSC messages at a given port.

  • New implementation of OSCsend not using liblo, with previous version
    now called OSCsend_lo,

  • sorta and sortd -- sort elements of an array.

  • dot -- calculates the dot product of two arrays.

  • zero delay filters -- zdf_1pole_mode, zdf_2pole_mode, zdf_ladder,
    zdf_1pole and zdf_2pole.xml, diode_ladder, z35_hpf and K35_lpf.

  • product -- takes a numeric array (k or i-rate) and calculates its product.

  • supercollider ugens -- sc_phasor, sc_lag, sc_lagud, sc_trig

New Gen and Macros

Orchestra

  • Including a directory of UDO files no longer fails if more than about 20 entries.

  • It was possible for kr, sr, and ksmps to be inconsistent in one case, no more.

  • Macro names better policed and bracket matching.

  • Octal values as \000 can be in strings

  • (from 6.09.1) In a UDO the out* opcodes now work, where before it was
    working only sometimes.

Score

  • Improved line number reporting in r opcode and case with no macro implemented.

  • m and n opcodes fixed.

  • Expansion of [...] corrected and improved.

  • Strings in scores improved

  • The ) character can be in a macro argument if it is escaped with .

  • Use of the characters e or s could lead to errors; now fixed.

  • Macro names better policed, and bracket matching.

  • p2 and p3 are now at higher precision, no longer truncated to 6 decimal places.

  • new opcode d to switch off infinite notes (denote); same as i with negative p1.

  • named instruments can be turned off with i if a - follows the ".

  • (from 6.09.1) if an r-opcode section eded in e-opcode it used to sop early.

Options

  • jack midi module now can report available devices under --midi-devices.

  • (from 6.09.1) defining smacros and omacros on command line only happens once.

  • (from 6.09.1) defining smacros from command line now works.

Modified Opcodes and Gens

  • ftgentmp improved string arguments.

  • hdf5read opcode now reads entire data sets when dataset name string
    is suffixed with an asterisk.

  • use of non power-of-two lengths in gens now acceptable where before
    it was inconsistent.

  • ampmidid optionally can be aware of 0dbfs.

  • dust and dust2 at k-rate now conform to the manual (NOTE: this is an
    incompatible change).

  • In prints the format %% now prints one %.

  • OSClisten can be used with no data outputs.

  • GEN18 corrected to write to requested range.

  • sockrev now can read strings.

  • vbap system can in some cases allow arbitrary number of speakers via
    arrays (work in progress).

  • Websocket server can only accept one protocol output, so limiting
    intype to just a single argument.

  • sum opcode will also sum elements of an array.

  • Overloaded pvs2tab and tab2pvs now can create and use split
    magnitude and phase arrays.

Utilities

  • dnoise fixed.

Frontends

  • icsound:

  • csound~:

  • csdebugger:

  • HTML5

  • Removed HTML5 Csound editor which has quit working.

  • Emscripten: Emscripten Csound (asm.js) now requires sourcing in CsoundObj.js and
    FileList.js separately from libcsound.js. This is to accommodate using the
    same JS API with either asm.js or wasm backends.

  • CsoundQT: CsoundQt 0.9.4 is announced:
    https://github.com/CsoundQt/CsoundQt/blob/develop/release_notes/Release%20notes%200.9.4.md.

  • (from 6.09.1) Windows installer with CsoundQt does not include PythonQt.

General Usage

Bugs Fixed

  • pwd works on OSX.

  • Fencepost error in sensLine fixed.

  • OSCsend corrected for caching of host name.

  • Bug in push/pop opcodes fixed (this opcode is now a plugin and deprecated).

  • Bug in sprintf removed.

  • Bug in soundin removed.

  • losci/losci3 fixed in case of long tables.

  • inrg was broken for a while.

  • Partikkel channelmask panning laws had an indexing error, now fixed.

  • jack audio module now allows for independent numbers of in and out channels.

  • Bug in string copying fixed.

  • Bug in hdf5read where if two hdf5read opcodes were placed in series
    in an instrument, the argument names of the second opcode instance
    would be incorrect due to directly changing the last string
    character of the first when reading an entire dataset.

  • Memory leaks fixed in some plugin opcodes.

SYSTEM LEVEL CHANGES

System Changes

  • soundin now uses the diskin2 code.

  • out family of opcodes reworked to reduce interleaving costs and to
    take proper regard if nchnls value.

  • (from 6.09.1) a crash on Linux i386 removed relating to server mode.

API

  • New csound_threaded.hpp' header-only facility, obviating need for csPerfThread.cpp' object in some projects.

  • Added GetA4 function.

  • New framework for plugin opcode development in C++ using Csound's allocator.

  • Added StrDup function.

  • Boost dependencies removed from Csound interfaces, CsoundAC, and CsoundVST.

  • (from 6.09.1) Two new API functions, csoundSetSpinSample and csoundClearSpin.

Platform Specific

  • Web Assembly platform introduced (from 6.09.1)

  • iOS

  • iPad portrait SplitView fix+animation, info popover resizing, stop
    button fix in Soundfile Pitch Shifter.

  • Csound-iOS API updates; Examples cleaned up, enhanced/expanded, and reordered.
    Manual revised, expanded, updated. Updates to API and examples
    support iOS 10 and Xcode 8. Swift support and examples added (from 6.09.1)

  • Android

  • Multichannel input and output allowed.

  • Windows

  • csound64.lib import library added to Windows installer.

  • OSX

  • GNU/Linux

Csound 6.09.0

24 May 20:43
Compare
Choose a tag to compare

CSOUND VERSION 6.09 RELEASE NOTES

A mixed bag of new opcodes and many fixes and improvements.

Also as usual there are a number of internal changes, including many
memory leaks fixed and more robust code.

-- The Developers

USER-LEVEL CHANGES

New opcodes

  • select -- sample-by-sample comparison of audio selecting the output.

  • midiarp opcode -- generates arpeggios based on currently held MIDI notes.

  • hilbert2 -- a DFT-based implementation of a Hilbert transformer.

  • Ableton Link opcodes -- for synchronizing tempo and beat across local area networks.

  • pvstrace -- retain only the N loudest bins.

  • several new unary functions/opcodes for k-rate and i-time numeric
    arrays: ceil, floor, round, int, frac, powoftwo, abs, log2, log10,
    log, exp, sqrt, cos, sin, tan, acos, asin, atan, sinh, cosh, tanh,
    cbrt, limit1.

  • several new binary functions/opcodes for k-rate and i-time numeric
    arrays: atan2, pow,hypot, fmod, fmax, fmin.

  • limit -- numeric limiting within a given range (for arrays).

  • tvconv -- a time-varying convolution (FIR filter) opcode.

  • liveconv -- partitioned convolution with dynamically reloadable impulse response

  • bpf, xyscale, ntom, mton -- (from SuperCollider?).

  • OSCsendA -- asynchronous version of OSCsend,

  • OSCsend -- now implemented directly using system sockets. Old version
    using liblo has been kept as OSCsend_lo.

  • OSCraw -- to listen for all OSC messages at a given port.

  • New implementation of OSCsend not using liblo, with previous version
    now called OSCsend_lo,

  • sorta and sortd -- sort elements of an array.

  • dot -- calculates the dot product of two arrays.

  • zero delay filters -- zdf_1pole_mode, zdf_2pole_mode, zdf_ladder,
    zdf_1pole and zdf_2pole.xml, diode_ladder, z35_hpf and K35_lpf.

  • product -- takes a numeric array (k or i-rate) and calculates its product.

  • supercollider ugens -- sc_phasor, sc_lag, sc_lagud, sc_trig added.

New Gen and Macros

Orchestra

  • Including a directory of UDO files no longer fails if more than about 20 entries.

  • It was possible for kr, sr, and ksmps to be inconsistent in one case, no more.

  • Macro names better policed and bracket matching.

  • Octal values as \000 can be in strings

Score

  • Improved line number reporting in r opcode and case with no macro implemented.

  • m and n opcodes fixed.

  • Expansion of [...] corrected and improved.

  • Strings in scores improved

  • The ) character can be in a macro argument if it is escaped with .

  • Use of the characters e or s could lead to errors; now fixed.

  • Macro names better policed, and bracket matching.

  • p2 and p3 are now at higher precision, no longer truncated to 6 decimal places.

  • new opcode d to switch off infinite notes (denote); same as i with negative p1.

  • named instruments can be turned off with i if a - follows the "

Options

  • jack midi module now can report available devices under --midi-devices.

Modified Opcodes and Gens

  • ftgentmp improved string arguments.

  • hdf5read opcode now reads entire data sets when dataset name string
    is suffixed with an asterisk.

  • use of non power-of-two lengths now acceptable where before it was inconsistent.

  • ampmidid optionally can be aware of 0dbfs.

  • dust and dust2 at k-rate now conform to the manual (NOTE: this is an
    incompatible change).

  • In prints the format %% now prints one %.

  • OSClisten can be used with no data outputs.

  • GEN18 corrected to write to requested range.

  • sockrev now can read strings.

  • vbap system can in some cases allow arbitrary number of speakers via
    arrays (work in progress).

  • Websocket server can only accept one protocol output, so limiting
    intype to just a single argument.

  • sum opcode will also sum elements of an array.

  • Overloaded pvs2tab and tab2pvs now can create and use split
    magnitude and phase arrays.

Utilities

  • dnoise fixed.

Frontends

  • icsound:

  • csound~:

  • csdebugger:

  • HTML5

  • Removed HTML5 Csound editor which has quit working.

  • Emscripten: Emscripten Csound (asm.js) now requires sourcing in CsoundObj.js and
    FileList.js separately from libcsound.js. This is to accommodate using the
    same JS API with either asm.js or wasm backends.

  • CsoundQT: CsoundQt 0.9.4 is announced:
    https://github.com/CsoundQt/CsoundQt/blob/develop/release_notes/Release%20notes%200.9.4.md.

  • Windows installer with CsoundQt includes PythonQt.

General Usage

Bugs Fixed

  • pwd works on OSX.

  • Fencepost error in sensLine fixed.

  • OSCsend corrected for caching of host name.

  • Bug in push/pop opcodes fixed (this opcode is now a plugin and deprecated).

  • Bug in sprintf removed.

  • Bug in soundin removed.

  • losci/losci3 fixed in case of long tables.

  • inrg was broke for a while.

  • Partikkel channelmask panning laws had an indexing error, now fixed.

  • jack audio module now allows for independent numbers of in and out channels.

  • Bug in string copying fixed.

  • Bug in hdf5read where if two hdf5read opcodes were placed in series
    in an instrument, the argument names of the second opcode instance
    would be incorrect due to directly changing the last string
    character of the first when reading an entire dataset.

SYSTEM LEVEL CHANGES

System Changes

  • soundin now uses the diskin2 code.

  • out family of opcodes reworked to reduce interleaving costs and to
    take proper regard if nchnls value.

API

  • New csound_threaded.hpp header-only facility, obviating need for
    csPerfThread.cpp object in some projects.

  • Added GetA4 function.

  • New framework for plugin opcode development in C++ using Csound's allocator.

  • Added StrDup function.

  • Boost dependencies removed from Csound interfaces, CsoundAC, and CsoundVST.

Platform Specific

  • iOS

  • iPad portrait SplitView fix+animation, info popover resizing, stop
    button fix in Soundfile Pitch Shifter.

  • Csound-iOS API updates; Examples cleaned up, enhanced/expanded, and reordered.
    Manual revised, expanded, updated. Updates to API and examples
    support iOS 10 and Xcode 8.

  • Android

  • Multichannel input and output allowed.

  • Windows

  • csound64.lib import library added to Windows installer.

  • OSX

  • GNU/Linux

Csound 6.08.1

06 Jan 17:05
Compare
Choose a tag to compare

This is a bugfix release of 6.08 for an issue affecting Windows only.

Bugs Fixed

  • sprintf opcode memory bug has been fixed.

Csound 6.08

24 Nov 23:45
Compare
Choose a tag to compare

As usual there are a number of opcode fixes and improvements, but the
major changes are in the language structures. First the score language
has all-new treatment of macros and preprocessing, bringing it in line
with those of the orchestra. The parsing of the orchestra has had a
number of fixes as outlined below.

A major, and not totally compatible change as been made in reading and
writing array elements. The rate of the index now often determines
the time of processing; check the entry below under Orchestra. This
simplifies much code and seems to capture expectations; the earlier ad
hoc code had many anomalies.

Also as usual there are a number of new opcodes and internal fixes
to memory leaks and more robust code.

-- The Developers

USER-LEVEL CHANGES

New opcodes

  • dct -- Discrete Cosine Transform of a sample array (type-II DCT)
  • getftargs -- copy arguments of a gen to an S-variable
  • mfb -- implements a mel-frequency filter-bank for an array of input
    magnitudes

New Gen and Macros

  • quadbezier -- generating Bezier curves in a table

Orchestra

  • The character ¬ is now correctly treated as a variant of ~ for bitwise not
  • Lexing bug which could corrupt strings fixed
  • Ensure no newlines in string-lexing
  • Small improvement in reported line numbers
  • Better checking of macro syntax
  • Improved parsing of setting of labels
  • Added error handling for unmatched brackets for UDO arg specification
  • Check that #included file is not a directory
  • Deeply nested macro calls better policed
  • For years Csound has fixed the pitch of A4 at 440Hz. Now this can be set in the header using the new r-variable A4, and also read with that variable
  • Floating point values can use e or E for exponent
  • Array access semantics have been clarified:
    • i[i] => reading at i-time and perf-time, writing at i-time
      only.
    • i[k] => reading at perf-time, writing yields a runtime error
    • k[i], k[k] => reading at perf-time, writing at perf-time
    • a[i], a[k] => reading at perf-time, writing at perf-time
    • other (S[], f[]) => reading and writing according to index type (i,k).

In particular, i(k[i]) will continue not to work, as before, but the new operator
i(k[],i) is provided to cover this case.

  • xout validation no longer fails when constants are given

Score

  • New code to handle macros and other preprocessor commands. Brings it
    into line with orchestra code
  • New score opcode C introduced as a way of switching automatic carry off (C 0)
    or on (default) (C 1)

Options

  • The tempo setting can now be a floating point value (previously fixed to integer)
  • New option --version prints version information and exits

Modified Opcodes and Gens

  • Problems in centroid fixed.
  • Better treatment of rounding in printks
  • OSC extended to include multicast
  • Faust opcodes brought up to date with faust
  • oscil1 and oscili can take a negative duration
  • fout opcode documentation clarified
  • Release time in mxadsr fixed
  • centroid opcode extended to take array inputs in addition
  • ptable opcodes are now identical to table family
  • ftgen now as array input option
  • subinstr can now have string arguments
  • the i() format is extended to work on k-rate arrays with the first
    argument being an array, followed by the indices
  • monitor opcode can now write to an array

Utilities

  • pvlook now always prints explicit analysis window name

Frontends

  • icsound:
  • csound~:
  • csdebugger:
  • HTML5
    • csound.node: Implemented for Linux, minor API fix.
    • pnacl: Added compileCsdText method to csound object
    • Emscripten:
  • CsoundQT:

General Usage

  • Checking of valid macro names improved
  • #undef fixed

Bugs Fixed

  • Fixes to prints in format use
  • jitter2 reworked to make it more like the manual.
  • oscbank has had multiple fixes and now works as advertised
  • bformdec1 with arrays and type 4 fixed
  • Bug in pvsceps fixed
  • In various formatted print opcodes extra trash characters might appear -- fixed
  • Assigning variables with --sample-accurate could give unexpected results; this is believed fixed now
  • padsynth square profile fix, and opcode prints less depending on warn level
  • gen31 fixed
  • gen41 fixed
  • Bug in sensekey fixed
  • A number of issues in centroid fixed
  • An internal miscalculation of variable sizes that only affected 32bit
    architectures fixed

SYSTEM LEVEL CHANGES

System Changes

  • New score lexing and preprocessor
  • MAC line endings now work again
  • System information messages (system sampling rate, etc) are now directed to stdout
  • rtjack reworked to deal with names and numbers
  • The version printing now includes the commit as so the developers
    know which patches have been applied

API

  • API version now 4.0
  • Now supports named gens
  • fterror now in API
  • API functions SetOutput and GetOutputFormat fixed
  • Many API functions now use const where appropriate
  • Messages can now be directed to stdout from the API by using CSOUNDMSG_STDOUT attribute
  • New Lisp CFFI and FFI interfaces tested with Steel Bank Common Lisp (64 bit CPU architecture), runs in separate thread
  • ctcsound.py, a new FFI interface for Python was introduced in version 6.07. It is now the recommended interface for Python,
    csnd6.py being deprecated.

Platform Specific

  • iOS
  • Android
    • Multichannel input and output allowed
  • Windows
    • csound64.lib import library added to Windows installer
  • OSX
    • Minor issues with installer fixed
  • GNU/Linux

Csound 6.07.0

19 May 07:22
Compare
Choose a tag to compare

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

USER-LEVEL CHANGES

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:

Orchestra:

  • 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
    numbers.
  • opcode:S(.) syntax now allowed.

Score:

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

Options:

  • 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
    necessary.
  • chnget now checks for a change in chanel name as well as data.
  • interp can take an optional extra argument to give an initial
    value.
  • oscilikts uses a more liberal table lookup.
  • opcode in can read mono or stereo, obviating the in/ins
    distinction.
  • 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.

Utilities:

Frontends:

pnacl:

icsound:

csound~:

Emscripten:

csdebugger:

  • Some memory issues fixed.

HTML5:

CsoundQT has its own notes at
https://github.com/CsoundQt/CsoundQt/blob/develop/release_notes/Release%20Notes%200.9.2.1.md

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 LEVEL CHANGES

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
    crashes.
  • The kcounter value is now consistently an unsigned 64bit
    value, allowing for long performances.

API

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

iOS

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

Android

Windows

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

OSX

  • Installer fixed for link names for _csnd6 and _CsoundAC.

GNU/Linux

  • date opcode more accurate.

Csound 6.06.0

28 Dec 14:58
Compare
Choose a tag to compare

A number of bug fixes, some quite major, are included, as well as some
new facilities and extensions

The Developers

User-level changes

New opcodes

  • getseed - reads the state of the PRN generator; opposite of seed opcode.
  • tabifd - Instantaneous Frequency Distribution, magnitude and phase analysis.
  • websocket - Read and write signals and arrays using a websocket connection.
  • framebuffer - Read audio signals into 1 dimensional k-rate arrays and vice-versa with a specified buffer size.
  • olabuffer - Sum overlapping frames of audio as k-rate arrays and read as an audio signal

Orchestra

  • Labels are allowed in instrument 0

Score

  • Maximum string length in scores increased to 1024

Modified Opcodes and Gens

  • diskin2 array version uses array size to give number of channels in raw file form
  • diskin2 now has the kpitch parameter defaulting to 1 for simple use
  • Vibrato f-table in wgflute and wgcar optional, defaulting to sine wave
  • schedule now accept string arguments
  • urandom now available on OSX platforms
  • GEN18 had fencepost problem; largely rewritten
  • In poscil family of opcodes it is possible to skip initialisation of phase
  • svfilter now can skip initialisation
  • When opening an input file nchncls_i is used rather than nchnls. This is a change that should have followed the existence of nchnls_i
  • rtjack module now reports the sampling rate
  • The opcodes rfft, rifft, fft, fftinv, r2c and c2r now have i-rate array versions
  • New optional threshhold parameter in opcodes tradsyn, sinsyn and resyn
  • New thresholding option for partials

Utilities

  • extract fixed
  • src_conv improved and integrated with -U options
  • fixes in atsa, and heti

Frontends

pnacl
  • Support for 48000 sample rate fixed
csound~
  • Changes to the threading system
  • String channel initialisation fixed
  • A number of other bugs were fixed
Emscripten
  • Csound Javascript object can now receive data from the outvalue opcode.
HTML5
  • Integrate HTML, JavaScript, and other features of HTML5 with
    Csound, either by embedding a Web page as an element in
    the CSD file for CsoundQt or Csound for Android, or by hosting
    Csound in the JavaScript context of a standalone Web browser
    (Emscripten, PNaCl) or embedded Web browser (csound.node).

General usage

  • Ill-formatted macros in the orchestra now trapped

Bugs fixed

  • Use of Windows-style environments for INCDIR etc now works with device numbers.
  • vibrato opcode fixed
  • clicking in real-time sample accurate case fixed
  • Copying of strings now correct; did confuse memory sometimes
  • Bug in pvstanal fixed
  • Rounding error in cpspch fixed
  • Removed crash on recompiling a named instrument
  • Fix interpolation bug in tablexkt
  • Fix to plltrack when ksmps is 1

System-level changes

System changes

  • The "error" message from STK plugin is now a warning

API

  • Redefinition of opcodes and UDOs fixed

Platform Specific

iOS

Android

  • Support for Android Studio was added

Windows

OSX

  • csnd6.jar link installed in the correct location.
  • Java JNI linking issues solved.
  • fixed link name for libpng in libfltk_image

Linux