Releases: csound/csound
6.12.0
typo in trim_i
6.11.0
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
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
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
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
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
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
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).
- i[i] => reading at i-time and perf-time, writing at i-time
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
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
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