Bot releases are hidden (Show)
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:
Published by vlazzarini almost 2 years ago
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
scanmap reads internal state of scanu
elapsedcycles, elapsedtime, eventcycles, and eventtime. See under
"bugs fied" for detials.
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
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).
Bela:
Many changes to Bela csound. See bela web site for details
MacOS:
WASM:
Published by vlazzarini over 2 years ago
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
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
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).
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.
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.
CreateThread2 is a new API function that allows threads to be given a
user-defined stack size.
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.
Published by vlazzarini over 3 years ago
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.
Published by vlazzarini over 3 years ago
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.
Published by vlazzarini over 3 years ago
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
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
The operations += and -= now work for i and k arrays.
k-rate array operators are now only processed at k-rate.
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).
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.
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.
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.
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
Published by vlazzarini about 4 years ago
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
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
#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
New score opcode B is like b but is accumulative.
the end of file case is better handled in the pre-lexer.
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).
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
Belacsound:
CsoundQt:
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.
new API to hard override default plugin dir.
new API function to load plugins.
iOS
Android
Windows
MacOS
GNU/Linux
Haiku port
Bela
Published by kunstmusik over 4 years ago
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
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.
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.
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.
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.
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]
// 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.
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.
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
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
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).
Published by vlazzarini over 5 years ago
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
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.
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.
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.
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.
Belacsound:
CsoundQt:
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.
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.
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.
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.
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
Published by vlazzarini almost 6 years ago
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
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.
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.
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)
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.
Belacsound:
CsoundQt:
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)
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.
WebAudio:
iOS
Android
Windows
MacOS
GNU/Linux
Bela:
Published by vlazzarini over 6 years ago
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
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.
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.
Belacsound: a new frontend specific for the Bela platform is introduced
in this version. A binary package is provided.
CsoundQt:
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.
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
Published by kunstmusik almost 7 years ago
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
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.
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.
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.
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.
loscil/loscil3 accept floating point increment.
OSCraw closes socket after use.
fout can now generate ogg format, as well as accepting -1 to mean the
same format as -o uses.
bitwise and opcode (&) at a-rate corrected for sample-accurate mode.
slicearray has an optional additional argument to give a stride to the slice.
chnset now can have variable channel names.
a-rate arrays may be added, subtracted, multiplied and scaled. This
is a start on a-rate array arithmetic.
dssiinit improved removing some crashes.
partials improved to remove a fencepost issue.
vco2ift fixed when an existing table is used.
The formatted printing opcodes now check for insufficient provided arguments.
FLbox and FLsetText again accept an ivar as first argument to give a
string via strset (as a alternative to a string).
Better checking in prints should stop some crashes.
Bug in opcode 'in' (stereo) fixed.
icsound:
csound~:
csdebugger:
Emscripten: Now compiled as WebAssembly (runs in all major browsers). API now
somewhat more conformed to other HTML5 APIs.
CsoundQt: Now built from master branch for improved stability.
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
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 (:%
).
As ever the French translations are complete.
The Italian translations of messages are greatly improved in scope;
about a half of error and warning messages are now done.
Some progress as been made in German translations.
CompileCsdText now always returns a value indicating success/failure.
Eight new asynchronous versions of API functions now available:
csoundCompileTreeAsync(), csoundCompileOrcAsync(),
csoundReadScoreAsync(), csoundInputMessageAsync(),
csoundScoreEventAsync(), csoundScoreEventAbsoluteAsync(),
csoundTableCopyOutAsync(), and csoundTableCopyInAsync().
For server use, three new API functions: csoundUDPServerStart,
csoundUDPServerStatus and csoundUDPServerClose.
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.
Published by gogins about 7 years ago
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.
Published by vlazzarini over 7 years ago
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
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
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.
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.
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.
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.
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.
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.
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.
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.
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
Published by kunstmusik over 7 years ago
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
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.
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
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 "
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.
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.
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.
soundin now uses the diskin2 code.
out family of opcodes reworked to reduce interleaving costs and to
take proper regard if nchnls value.
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.
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
Published by vlazzarini almost 8 years ago
This is a bugfix release of 6.08 for an issue affecting Windows only.
Published by kunstmusik almost 8 years ago
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
#included
file is not a directoryIn particular, i(k[i]) will continue not to work, as before, but the new operator
i(k[],i) is provided to cover this case.
C 0
)C 1
)#undef
fixedPublished by kunstmusik over 8 years ago
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
pnacl:
icsound:
csound~:
Emscripten:
csdebugger:
HTML5:
CsoundQT has its own notes at
https://github.com/CsoundQt/CsoundQt/blob/develop/release_notes/Release%20Notes%200.9.2.1.md
Published by vlazzarini almost 9 years ago
A number of bug fixes, some quite major, are included, as well as some
new facilities and extensions
The Developers