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