Source and binary packages, and documentation can be downloaded from here: http://sourceforge.net/project/showfiles.php?group_id=167991 Change log and release notes are attached. You can subscribe to the new mailing lists created for this project at these pages: http://lists.sourceforge.net/mailman/listinfo/csound5-devel http://lists.sourceforge.net/mailman/listinfo/csound5-user
Release notes for Csound 5.1.00.0 beta1 ======================================= (Note: the list of changes is against version 5.03.0 beta, as of 2006-06-25; some new features that are in 5.03.0, but not documented, are also listed here. Changes that are known to be missing from 5.03.0 are marked with a '+' instead of a '*'.) Language changes ---------------- + User defined opcodes can now take and return string arguments. These are passed at init time only, and are identified by the 'S' character in input/output type lists. Here is a simple example that reverses a string: opcode ReverseString, S, S S1 xin S2 strsub S1, -1, 0 xout S2 endop + Many opcodes that change their input arguments are handled better by the orchestra parser. For such arguments, constants, reserved symbols (sr, kr, etc.), and expressions are now rejected with a syntax error. Also, when input arguments are really only written, and not read at all, the variables need not be previously defined. Examples of changed opcodes include: fin, fini, fink, splitrig, timedseq, trigseq, denorm, vincr, clear, OSClisten, loop_lt, loop_le, loop_gt, and loop_ge. * Implemented #ifndef and #else preprocessing directives for the orchestra, and also nested #ifdef/#ifndef. New opcodes ----------- * pcount, pindex, moogvcf2 (by John ffitch) * flooper2, syncloop (by Victor Lazzarini) * vadd_i, vmult_i, vpow_i, vexp_i, vaddv_i, vsubv_i, vmultv_i, vdivv_i, vpowv_i, vexpv_i (by Andres Cabrera and Istvan Varga) * sndload, loscilx, midipgm (by Istvan Varga) New command line options ------------------------ * --midi-key=N, --midi-key-cps=N, --midi-key-oct=N, --midi-key-pch=N, --midi-velocity=N, --midi-velocity-amp=N: route MIDI key number and velocity to p-fields (by Michael Gogins) Bug fixes --------- + Files #included from a CSD are now found relative to the directory of the CSD file, if the #include file name does not specify a full path. + Fixed bug in sprintf, sprintfk, printf, and printf_i with string argument. + Fixed problems in vector opcodes with overlapping source and destination vectors. + Minor bug fixes in GEN32, logbasetwo, delay, comb, alpass, randi, partials, convolve, s32b14, randomh, randomi, dconv, vcomb, and a number of other opcodes. + Fixed phase interpolation bug in atsa utility. * Fixed incorrect parsing of .csoundrc with trailing whitespace. * Fixed several bugs in the VST host opcodes. * Fixed overwriting of constants by pconvolve in the case of default partition size. Also, the default partition size is now really the value set for the -b command line option, and not -b * nchnls. * Minor bug fixes in nestedap, prepiano, inh, and ino. Misc. changes ------------- + csound5gui can now open files specified on the command line. This allows for associating CSD files with the GUI frontend on Windows. + Optimizations in atssinnoi (can be almost twice as fast with large ksmps values), and a-rate arithmetic and assignment operations. * Assume 0dbfs as the scale parameter in moogvcf if it is set to zero. * Use double precision internally in some filter opcodes (bqrez, moogvcf, pareq, rezzy, and tbvcf). * --sched command line option no longer checks for being used as the root user. * Added new parameters (source and destination offset) to many of the vector opcodes, and some previously existing i-rate parameters have been changed to k-rate. * Minor optimizations in many opcodes. Internal changes ---------------- + The CSOUND structure was converted to a C++ class named 'Csound'. + Header files csound.h, csoundCore.h, and csdl.h are replaced with csound.hpp and csdl.hpp. Also, several other headers (e.g. cwindow.h) are now integrated into csound.hpp. + Use of setjmp() and longjmp() was replaced with C++ exceptions. + Opcode subroutines no longer return an error code to indicate errors, and throw C++ exceptions instead. Also, there are no separate InitError() and PerfError() methods: Csound::ThrowError() can be used to throw an exception with a message using printf-style formatting, at both init and performance time. + Several improvements to the OENTRY structure: + there are no separate a- and k-rate opcode subroutines (avoids some confusion and possibility for errors) + 'threads' bits no longer need to be set: these were redundant and a source of errors + constructor and destructor routines can be set for opcodes. These are called by Csound::instance(), and when freeing memory used by instrument instances, respectively. + 'not initialised' errors can be generated automatically, by setting a flag in OENTRY + variable number of arguments can be taken and returned using MYFLT** pointers to arrays of output/input arguments, rather than allocating a large (VARGMAX) static amount of space + opcode data structures can have a size of up to 2 GB, as opposed to the previous limit of 64 kB + better support for automatic generation of opcode names from argument types (e.g. 'oscil.akk'): a pattern of 28 bits can be used to generate an opcode name using the type of any of the first 6 output and first 8 input arguments + opcodes that modify their input arguments can indicate such behavior with setting flags in OENTRY; it is also possible to allow for the use of previously not defined variables + it is possible to set a 'user data' pointer when allocating new opcode entries: this pointer will be stored in the OPDS structure on instrument instance allocation, and can be used for any purpose + Removed INOCOUNT, OUTOCOUNT, and several other similar macros. Inline methods of OPDS should be used instead. See also ChangeLog, H/csound.hpp, and Engine/entry1.cpp for more details, and changes not listed here. Known incompatibilities with 5.03.0 ----------------------------------- - The API of Csound 5.xx.x and 5.1.xx.x is not compatible. Emulation of old functions like csoundCreate() etc. is planned in the future. - The following changes (both by John ffitch) were not ported from 5.03.0, because they are incompatible with previous versions 5.00.0 to 5.02.1: - exprand and bexprnd output zero with a negative range parameter, rather than inverting output - vstprogset limits program numbers to the range 1 to 16, replacing all other values with 1 - pv_export and pv_import utilities were implemented independently, and use a different (more detailed, but also larger) file format. - The MFDIR environment variable is not supported - use SSDIR instead. - New flags for vector opcodes were developed independently, so it is not guaranteed that the behavior of 5.1.00.0 beta1 and 5.03.0 is consistent in all cases. One area where differences are likely to be present is the default value assumed for out of range indexes in source tables. Also, the flags for printing warning messages are ignored. - Some changes related to making messages more verbose were not ported; these do not affect orchestra compatibility, though. - Support for static Csound library and Mac platforms was removed. - CsoundVST and Mac frontends were removed. To do ----- - clean up and improve the API: - improve interfaces for loading of plugin libraries - better classes for exception handling - create a namespace for the Csound API (should probably have the same name as the modules for Python etc., for consistency) - move interfaces for shared libraries, thread locks, mutexes, timers, random generators, files, etc. from class Csound to separate, smaller classes - create wrapper templates similar to the one in OpcodeBase.hpp, to improve support for opcodes implemented as C++ classes - more consistent style of interfaces: naming of types, functions, etc., error handling (return values vs. exceptions), use of pointers vs. references, use bool type for boolean arguments, and a number of other minor issues - implement new orchestra (maybe score too ?) parser, either independently from the ffitch version, or porting from there if that is a better option - restore language interfaces, csoundapi~, TclCsound, and Cscore to working status - implement C-style API functions like csoundCreate(), csoundCompile(), etc. - write detailed API documentation
2006-08-17 Istvan Varga <ivarga@xxxxxxxxxxx> * Csound 5.1.00.0-beta1 release 2006-08-14 Istvan Varga <ivarga@xxxxxxxxxxx> * frontends/fltk_gui/main.cpp: allow for opening files specified on the command line * Engine/rdorch.cpp, H/csound.hpp, Top/csound.cpp, Top/main.cpp: made searching for #include files in directory of main file work with CSD files 2006-08-12 Istvan Varga <ivarga@xxxxxxxxxxx> * Opcodes/OSC.cpp: OSClisten: use new OENTRY flags for input args used as outputs * Opcodes/gab/vectorial.cpp: deal with the case of overlapping vectors * Opcodes/stk/stkOpcodes.cpp: fixed error (calling Instrmnt::noteoff() instead of Instrmnt::noteOff()) exposed by earlier fixes in OpcodeBase.hpp 2006-08-10 Istvan Varga <ivarga@xxxxxxxxxxx> * Opcodes/ugens9.cpp: pconvset: fixed overwriting of constants when the default partition size is used. Also changed the default partition size to the number of sample frames in the output buffer, rather than the number of samples as it was previously. * Opcodes/gab/vectorial.cpp, Opcodes/gab/vectorial.h: Made offset parameters k-rate. Also added optional flags for printing warnings on out of range index values; for now, no messages are actually printed. 2006-08-09 Istvan Varga <ivarga@xxxxxxxxxxx> * OOps/ugens1.cpp: fixed several incorrect uses of Csound::AuxAlloc() * Opcodes/sockrecv.cpp: initialize SOCKRECV structure before creating thread, to avoid race condition * Opcodes/ugmoss.cpp: dconvset(): always clear aux space to zero vcombset(): do not assume sizeof(MYFLT) == sizeof(long) 2006-08-08 Istvan Varga <ivarga@xxxxxxxxxxx> * Opcodes/gab/vectorial.cpp, Opcodes/gab/vectorial.h: New opcodes: vaddv_i, vsubv_i, vmultv_i, vdivv_i, vpowv_i, and vexpv_i. Added offset parameters to many of the vector opcodes. 2006-08-07 Istvan Varga <ivarga@xxxxxxxxxxx> * Engine/entry1.cpp, Engine/linevent.cpp, H/linevent.h, H/schedule.h, OOps/schedule.cpp, Opcodes/fout.cpp: Use new OENTRY flags for variable number of arguments and inputs used as outputs. Also fixed a bug in trigseq. * Opcodes/sndloop.cpp, Opcodes/sndwarp.cpp: fixed more incorrect uses of Csound::AuxAlloc() 2006-08-06 Istvan Varga <ivarga@xxxxxxxxxxx> * Opcodes/pvsbasic.cpp, Opcodes/pvsdemix.cpp: fixed some incorrect uses of Csound::AuxAlloc() * Opcodes/py/pycall-gen.py, Opcodes/py/pycall.auto.cpp: fixed a possible memory leak 2006-08-05 Istvan Varga <ivarga@xxxxxxxxxxx> * OOps/ugens1.cpp (linseg, expseg, etc.), Opcodes/pitch.cpp (mac, maca, transeg), Opcodes/uggab.cpp (sum, product): use new OENTRY flag for variable number of arguments * Opcodes/uggab.cpp: fixed randomh and randomi with a-rate 'cps' parameter 2006-08-04 Istvan Varga <ivarga@xxxxxxxxxxx> * Opcodes/midiops3.cpp: fixed bug in s32b14 opcode use templates instead of macros * Opcodes/minmax.cpp, Opcodes/oscbnk.cpp (denorm): use new OENTRY flag for variable number of arguments 2006-08-03 Istvan Varga <ivarga@xxxxxxxxxxx> * Opcodes/fout.cpp, Opcodes/metro.cpp: use new OENTRY flags to improve parsing of some opcodes that use input arguments as outputs (fin, fini, fink, splitrig, timedseq) 2006-07-31 Istvan Varga <ivarga@xxxxxxxxxxx> * Reorganized header files: csound.h and csoundCore.h are replaced with csound.hpp, and csdl.h is renamed to csdl.hpp. A number of headers that are no longer needed have been removed. 2006-07-30 Istvan Varga <ivarga@xxxxxxxxxxx> * Engine/rdorch.cpp: - changed format of Csound::TEXT::xincod, xoutcod, xincod_str, and xoutcod_str: - for args 1 to 30, bit N-1 is set if arg N is a-rate (xincod) or S-rate (xincod_str) - bit 30 is set if any of the arguments after the first 30 is a-rate (xincod) or S-rate (xincod_str) - bit 31 is set if all the arguments after the first 30 are a-rate (xincod) or S-rate (xincod_str) - bits 8 to 15 of Csound::OENTRY::flags can be set to indicate that some input arguments are actually used for output (bits 8 to 14 for args 1 to 7; if bit 15 is set, all input args after the first 7 are assumed to be outputs). This means that constants and expressions will be rejected by the orchestra parser. Additionally, if bit 3 is set, none of the input arguments that are flagged as being outputs need to be previously defined. * Engine/entry1.cpp: documented changes to OENTRY structure. * Added new command line options: --midi-key=N, --midi-key-cps=N, --midi-key-oct=N, --midi-key-pch=N, --midi-velocity=N, --midi-velocity-amp=N 2006-07-29 Istvan Varga <ivarga@xxxxxxxxxxx> * Changed version to 5.1.00.0 beta, and API version to 10.00. * Added S (string) type to user defined opcodes; string values are copied at i-time only. * Made argument space allocation dynamic in user defined opcodes, xin, xout, and subinstr. Removed .xin64, .xin256, .xout64, and .xout256. 2006-07-26 Istvan Varga <ivarga@xxxxxxxxxxx> * H/csoundCore.h, H/csdl.h, Opcodes/ftest.cpp, Top/csmodule.cpp: Renamed Csound::NGFENS to Csound::NFGENS (was apparently a typing error). * Opcodes/biquad.cpp: Assume 0dbfs as the scale parameter in moogvcf if it is set to zero. Use double precision internally in filter opcodes (bqrez, moogvcf, pareq, rezzy, tbvcf). Fixed some possible out of range indexing in use of a-rate signals. Added moogvcf2 opcode (same as moogvcf, but scale defaults to 0dbfs). * Opcodes/sndloop.cpp, Opcodes/syncgrain.cpp: Added "skip init" parameter to flooper2 and syncloop opcodes. 2006-07-22 Istvan Varga <ivarga@xxxxxxxxxxx> * Converted struct CSOUND to a C++ class. 2006-07-20 Istvan Varga <ivarga@xxxxxxxxxxx> * Opcodes/ugens9.cpp: cvset(): always call Csound::AuxAlloc() * Opcodes/sndloop.cpp: new opcode: flooper2 (by Victor Lazzarini) * Opcodes/syncgrain.cpp: new opcode: syncloop (by Victor Lazzarini) * frontends/tclcsound/commands.cpp: do not add -d flag 2006-07-19 Istvan Varga <ivarga@xxxxxxxxxxx> * Opcodes/partials.cpp: partials_init(): fixed bugs in aux space allocation 2006-07-18 Istvan Varga <ivarga@xxxxxxxxxxx> * frontends/csound/sched.cpp: removed check for root user * OOps/ugens4.cpp: fixed typing error in riset() * OOps/ugens6.cpp: delset(), cmbset(): do not assume sizeof(MYFLT) == sizeof(long) 2006-07-16 Istvan Varga <ivarga@xxxxxxxxxxx> * OOps/aops.cpp: fixed bug in logbasetwo 2006-07-15 Istvan Varga <ivarga@xxxxxxxxxxx> * Added new opcodes: pcount, pindex (written by John ffitch) * Top/one_file.cpp: fixed error on trailing whitespace in .csoundrc 2006-07-10 Istvan Varga <ivarga@xxxxxxxxxxx> * Started to convert the CSOUND structure to a C++ class. * Engine/fgens.cpp: fixed bug in GEN32 2006-07-09 Istvan Varga <ivarga@xxxxxxxxxxx> * util/atsa.cpp: peak_detection(): fixed phase interpolation 2006-07-07 Istvan Varga <ivarga@xxxxxxxxxxx> * Engine/entry1.cpp: corrected opcode data size for inh and ino * Opcodes/bilbar.cpp: play_pp(): use fabs() instead of abs() * Opcodes/biquad.cpp: nestedapset(): do not assume sizeof(MYFLT) == sizeof(long) 2006-07-05 Istvan Varga <ivarga@xxxxxxxxxxx> * Implemented pv_export and pv_import utilities. 2006-06-28 Istvan Varga <ivarga@xxxxxxxxxxx> * bug fixes in VST host opcodes