Csound library Changelog

What's new in Csound library 6.04.0

Dec 9, 2014
  • This new version has many extensions and fixes; many new opcodes and significant numbers of internal reworking. There is a new frontend and iOS and Android version have seen many improvements.
  • As ever we track bugs and requests for enhancements via the github issues system. Already proposals for the next release are being made but the volume of changes require a release now.
  • USER-LEVEL CHANGES:
  • New opcodes:
  • pinker generates high quality pink noise
  • power opcode ^ now works with array arguments
  • exciter opcode, modelled on the calf plugin
  • vactrol opcode simulate an analog envelope follower
  • family of hdf5 opcodes to handle hdf5 format files
  • (experimental undocumented) buchla opcode models the lowgate filter of Buchla
  • New k-rate opcodes acting on arrays:
  • transforms: rfft, rifft, fft, fftinv
  • complex product: complxprod
  • polar - rectangular conversion: rect2pol, pol2rect, mags, phs,
  • real - complex: r2c, c2r
  • windowing: window
  • cepstrum: pvsceps, iceps, ceps
  • column / row access: getrow, getcol, setrow, setcol
  • a-rate data - k-array copy: shiftin, shiftout
  • phase unwraping: unwrap
  • New Gen and Macros:
  • Orchestra:
  • Line numbers corrected in instr statements
  • New control operation, while, for looping
  • A long-standing bug with macros which use the same name for an argument has been corrected
  • Redefinition of an instrument in a single call to compile is flagged as an error
  • ID3 header skip for mp3 files now properly implemented.
  • Errors induced by not defining the location of STK's raw wave files has been removed
  • bug fixed where UDO's could not read strings from pfields
  • bug fixed which hid tb opcodesat i-rate
  • Attempts to use two OSClisteners with the same port is now trapped rather than give a segmenttion fault
  • Score:
  • Options:
  • Modified Opcodes and Gens:
  • stackops opcodes deprecated
  • lenarray extended to handle multi-dimensional arrays
  • ftgenonce accepts string arguments correctly and multiple string arguments
  • max and min now have initialisation-time versions
  • gen23 improved regarding comments and reporting problems
  • in OSCsend the port is now a k-rate value
  • socksend now works at k-rate
  • a number of envelope-generating opcodes are now correct in sample-accurate mode
  • faust compilation is now lock-protected
  • mp3 fixed to allow reinit to be used with it.
  • In remote opcode the name of the network can be set via the environment variable CS_NETWORK. Defaults to en0 (OSX) or eth0.
  • invalue, outvalue are available at i-rate as well as k-rate
  • Utilities:
  • Frontends:
  • icsound:
  • New frontend icsound is now ready for general use. icsound is a python interface for interactive work in the ipython notebook.
  • csound~:
  • Emscripten:
  • csdebugger:
  • A number of changes and improvements have been made, like stepping through active instruments, better line number use
  • General usage:
  • Jack module now does not stop Csound if autoconnect fails
  • Bugs fixed:
  • atsinnoi fixed
  • ftsavek fixed
  • sprintf fixed
  • gen27 fixed, especially with extended arguments, as well as fixed a number of errors in extended score arguments.
  • Physem opcodes (guiro cabasa, sekere) fixed so second call works
  • flooper fixed in mode 2
  • OSCsend multiple fixes
  • UDO fix for case of local ksmps of 1
  • More changes/fixes to dssi code
  • xscanu and scanu fixed
  • temposcal and mincer fixed
  • crash in ftload fixed
  • SYSTEM LEVEL CHANGES:
  • System changes:
  • In server mode exit is now clean
  • Fixes to rtalsa module
  • Pulseaudio rt module fixes
  • Fix to remove fluidEngine entries for csound instance (prevents crash on moduleDestroy)
  • Opcodes called through function calls that returned arrays did not correctly synthesize args as array types due to not converting the arg specifier to the internal format
  • fixed crashing issue during note initialization for tied notes due to goto skipping over code
  • fixed incorrect initialization of pfields when note's pfields length were less than instrument expected (off-by-one)
  • Internal changes:
  • Added Runtime Type Identification for instrument variables; removed use of XINCODE/XOUTCO
  • fix malloc length in negative number parsing, and improved handling of negative numbers
  • writing to circularBuffer is now atomic
  • a number of memory leaks and potential dangerous code have been fixed
  • type-inference has been extensively reworked, as have a few parsing areas
  • API:
  • Added API function for retrieving GEN parameters used for creating a table
  • Platform Specific
  • OS X - CsoundAC now compiles

New in Csound library 6.03.00 (May 6, 2014)

  • New opcodes:
  • printks2: Prints a new value every time a control variable changes using a printf() style syntax.
  • mp3sr mp3bitrate and mp3nchnls to get information on mp3 files
  • EXPERIMENTAL: CUDA opcodes for partitioned convolution direct convolution and sliding phase vocoding; OpenCL opcode for additive synthesis
  • compilecsd to compile instruments from a standard CSD file
  • New Gen and Macros:
  • Orchestra:
  • The argument for i() is supposed to be a variable not an expression. This is now enforced. (bug #90)
  • Score:
  • New score opcode y sets the random seed (for ~) at read time
  • Options:
  • This was a bug in CsOptions; the last argument was missed being read (issue #296)
  • As command-line options expression-opt and no-expression-opt do nothing in Csound6 a warning is printed.
  • Modified Opcodes and Gens:
  • For ogg output it is possible to specify a VBR (variable bit rate) quality.
  • dssi4cs code has been extensively reworked to avoid potential memory faults.
  • Many array operations now available for i-arrays as well as k-arrays.
  • fillarray will work for string arrays
  • Displays of FFT (via dispfft) improved with scaling/zooming options
  • Signal flow graph opcodes are now working with a-rate array signals.
  • In alsa rt code the sample rate is taken from the device
  • Faust opcode system updated to latest Faust API.
  • Utilities:
  • fixed bug in lpanal
  • Frontends:
  • csound~
  • OSX - fix for running with 32-bit cpu architecture
  • Emscripten:
  • This is now generally merged in to the code-base
  • General usage:
  • --displays now switches graphs on, as expected
  • New command-line option --get-system-sr added to obtain the machine's sample rate.
  • New command-line option --devices[=in|out] gives a list of available audio devices and then exit
  • Bugs fixed:
  • fixed the bug when tables were replaced but the size did not change
  • A number of bugs in --sample-accurate have been detected and fixed. This includes opcodes out, outn, and line.
  • A number of bugs in grain3 were fixed
  • Bug in str_chanel could cause a crash; fixed
  • Small bug in rtjack fixed
  • Error in resize opcode corrected
  • Fixed an unlikely bug in atsa
  • Fixed rtauhal pause issue
  • Fixed bug in rtjack
  • A number of bugs/untidiness fixed in GEN23
  • Array bound checks fixed
  • strings channels were not correctly set for dynamic-size strings, now fixed
  • memory allocation for string formatting in printfsk was fixed, stopping string truncation.
  • strcat safe against overflow
  • ror in compilation of arrays fixed (issue #293)
  • GetPvsChannel fixed against a crash
  • SYSTEM LEVEL CHANGES:
  • System changes:
  • turnoff opcode now checks that the instrument being affected is active
  • lenarray can accept any array type
  • the way of rounding a table number to an integer was changed and is now more as expected.
  • there is a new possible section in a csd file called which is like csFileB but with unencoded text.
  • UDO compilation now uses the type system. This means that UDOs now allow any array type to be used.
  • Improved orchestra parsing speeds with better algorithms
  • Internal changes:
  • The whole system has been checked by the Coverity static checker which identified a number of (mainly minor) problems. These have been reviewed and checked. In particular better use of printing and string copying should prevent overflows.
  • The type and variable system has been extensively rewritten; this allows better array and UDO support.
  • Alignment of variables got right in all cases
  • array copying is now using the type system to copy values; fixes issues with copying string arrays, f-sigs, etc.
  • Always reset Csound when stopping to ensure state is clean; was not being reset when there was a compile error, so that next successful run would start with an invalid Csound engine (issue #305)
  • API:
  • All opcodes etc now use the API memory allocation operations, so it is possible to replace the whole memory allocator.
  • Added csoundCompileCsd to API and associated new compilecsd opcode
  • Protected csoundGetStringChannel against null and short strings and added a check for string size
  • A number of API functions have had char* changed to const char* which reflect the usage
  • The performance engine now includes debugging capabilities to allow interrupting rendering and providing introspection into the engine's state and instrument variables.

New in Csound library 6.0 RC 3 (Jun 10, 2013)

  • Remove unnecessary arrays
  • Opcodes/pitch.c (impulse): If next is negative time, make it absolute value
  • Opcodes/socksend.c (send_send, send_sendS): Added optional format message as INT16_LE and remove MTFU check

New in Csound library 3.16.6 (Feb 13, 2012)

  • Opcodes/pitch.c (impulse): If next is negative time, make it absolute value

New in Csound library 3.16.1 (Feb 6, 2012)

  • Added optional format message as INT16_LE and remove MTFU check

New in Csound library 5.14.2 (Oct 17, 2011)

  • Engine/csound_orc_expressions.c (csound_orc_expand_expressions):
  • Generate kgoto rather than goto. Not totally sure this is right yet

New in Csound library 5.12 (Feb 15, 2010)

  • New Opcodes:
  • transegr -- MIDI aware version of transeg
  • passign -- initialise variables from p fields
  • crossfm -- See the Csound Journal
  • loopxseg -- like loopseg but with exponential envelope
  • looptseg -- like loopseg but with flexible envelope like transeg
  • modmatrix -- routing and scaling of k-rate signals using sparse matrix
  • optimization
  • New Gen:
  • Modified Opcodes and Gens:
  • p5glove changed to use a separate thread to avoid timeout problem
  • transeg checks argument counts
  • sfload used to be limited to 10 sound fonts and was not policed.
  • Now open-ended
  • Bugs fixed:
  • pvsshift would overwrite in double mode
  • pan2 case 3 fixed
  • tempoval now works
  • clockon/clockoff now work again
  • cross2 could have divided by zero
  • interpol could have divided by zero
  • System Changes:
  • linecount no longer includes .csoundrc
  • \" allowed as an escape in orchestral strings
  • New parser fixed on optional arguments
  • better checking of f statement with negative number
  • API:
  • new functions AddSpinSample, GetSpoutSample, ChanIKSetValue,
  • ChanOKGetValue, ChanIASetSample and ChanOAGetSample to access
  • individual samples
  • Internal:
  • soundfonts only initialise pitches array once
  • usual collection of gratuitous minor changes, layout and comments
  • and minor speedups

New in Csound library 5.11 RC1 (Jun 6, 2009)

  • Engine/csound_orc_expressions.c (create_goto_token)
  • (get_boolean_arg, create_boolean_expression)
  • (create_synthetic_ident, csound_orc_expand_expressions):
  • Create and use Boolean variables with either k or i type as required

New in Csound library 5.10.1 (Jan 8, 2009)

  • API:
  • The major version is increased to 2; affected csound.so as well
  • Bug Fixes:
  • diskin bug fixed
  • outo was broken regarding channel 6
  • pitchamdf had bugs
  • zfilter_i was broken
  • islider32bit14 never worked
  • Other bugs fixed that have not been reported publically.
  • New Opcodes and Gens:
  • GEN20 type 6 now has option to set variance
  • sone GEN as a plugin to mimic gen13 in Music360 (this may change in detail)
  • ephasor -- new opcode
  • Other:
  • Dither on output implemented; rectangular and triangular dither available in some cases
  • Locale set to C numeric to avoid , versus . problems
  • Using "a" as the MIDI port in PortMIDI listens on all
  • Internals:
  • Time now counted internally in samples, overcoming a longstanding bug with rounding of time to k-rate
  • Many internal changes related to branch prediction. Some opcodes are substantially quicker.

New in Csound library 5.09.0 (Oct 6, 2008)

  • ambisonics now in bformenc1/bformdec1 and correct.
  • bformenc1/bformdec1 are now depreicated and should not be used
  • Chua's Oscillator
  • Csound i-rate and k-rate opcodes for much standard linear algebra over real and complex vectors and matrices: elementwise arithmetic, norms, transpose and conjugate, inner products, matrix inverse, LU decomposition, QR decomposition, and QR-based eigenvalue decomposition. Includes copying vectors to and from a-rate signals, function tables, and f-signals.
  • Vosim opcode
  • dcblock2 opcode
  • setscorepos and rewindscore opcodes
  • New Gen: exp plugin GEN
  • vbap family now take k-rate third and fourth arguments
  • Deprecate soundout in favour of fout
  • Added 'skip normalisation argument' to tanh GEN
  • Fixed space opcodes to accept non-pow-2 (deferred) tables
  • Added optional envelopes for sfont opcode (extra argument) using sfont file parameters
  • printk and printks check that opcode is initialised
  • poscil no longer overwrites frequency if variable is shared
  • Error on /* */ comments in orchestra fixed
  • Fixed pvsmorph bug
  • New parser has #include and argumentless macros
  • Allow scientific notation (as was in csound4!) in Gen23
  • pulseaudio IO plugin module
  • added scheduler priority option on alsa
  • A number od small changes
  • Includes experimental multicore
  • Less casting between floats and doubles in float version
  • buzz rewritten
  • New OS X 10.4 package containing Python module for MacPython2.5