Csound patches and binaries

Source code

The current source distribution is
Csound-4.24.1.tar.bz2.
(1116589 bytes, md5sum: 81fc398bc3d9b1fabbdc58b609be4a09)
To compile the sources, first edit the file Makefile.defs
to set compiler, compiler flags, etc., then type:

make allmake install-strip

Documentation (including release notes) is available
in the doc/ directory.WARNING: if Csound is compiled with ALSA support, the pthread
library (-lpthread or /usr/lib/libpthread.a) should not be linked explicitly,
otherwise Csound may hang when FLTK orchestras are compiled.

Binaries

Version 4.24 with all patches, compiled with gcc 3.2.2 on Linux 2.4.18, glibc version
2.2.4.[+] Notes:[+] After installing the package, you should run
ldconfig to make sure the system can find
the Csound shared library (libcsound32.so, or
libcsound64.so), or add the directory that contains the
library files to LD_LIBRARY_PATH.[+] The environment variable
OPCDIR should point to the directory containing
stdopcod.so, to have plugin opcodes and the real-time
audio module (see below) automatically loaded at startup.[+] Of the files rtalsa.so
(ALSA audio plugin) and rtlinux.so (OSS audio plugin),
only one should be kept, and the other should be deleted or moved to a different
directory.[+] csound is the same as
csound32.

Win32 version, cross-compiled with gcc-3.2.2 and MinGW 2.4 under Linux.[+] Notes:[+] This build was tested under Windows 95, Windows 2000,
and recent versions of WINE. Other systems may work, but are not tested.[+] The binaries are optimized for the Pentium III, however,
a Pentium II or higher, or AMD Athlon CPU should also work.[+] The environment variable
OPCDIR should point to the directory containing
stdopcod.dll, to have plugin opcodes and the real-time
audio module automatically loaded at startup.[+] If you get error messages like
"cannot open /tmp/cs610612ec.0 for writing", creating the
directory \TMP, or setting the environment variable
TEMP to a valid directory name should fix the problem.[+] On Win9x systems it may be necessary to increase the
environment space by adding a line like

Experimental binaries that use the Intel SSE instruction set for improved performance.
These require a Pentium III or higher, or an Athlon 4, Athlon XP, or Athlon MP CPU.
The packages contain shared libraries (DLLs in the case of the Win32 version) that replace
the csound32 and stdopcod
library, however, executable files are not included (these can be found in the standard
binary distributions above, that you should also download).Warning: the SSE libraries are experimental, and may
possibly break some orchestras.

String database files US English and French languages, converted from
all_strings and
french-strings from canonical Csound.
These are unfortunately by no means complete, many messages are not translated.
The language files can be installed by unzipping the package in any directory, and
setting the environment variable CSSTRNGS to this directory.
The CS_LANG environment variable should be set to the
selected language (for example, us or
fr).

Documentation

VIM syntax files

[+] New, improved version with the following features:[+] Opcode help (requires the Alternative Csound Reference Manual by Kevin Conder).[+] Abbreviations added for CSD tags, etc. to save typing.[+] New installation script.[+] For more details, see the README included with the package.

Patches

[+] Language changes:[+] Internal indexes to local and global pools of variables
have been changed to use 32 bit variables (previously, 16 bit indexes were used).
This allows much larger and more complex instruments to be written, and fixes error
messages like "Case2: indx=... (...); (short)indx = ... (...)"
which have been usually followed by a crash.[+] New opcodes (documented in
NEWS-4.24.1):[+] soundout,
soundouts, and soundoutc.[+] Simple loop opcodes have been added.[+] Vector opcodes from CsoundAV.[+] Bug fixes:[+] Fixed bugs in reading of score files with very long
lines (bug reported by Davis Pyon).[+] MIDI opcodes should no longer crash when used with a
channel that has not been initialized with massign (bug
reported by Davis Pyon).[+] Included score files with multiple sections have been
fixed (bug reported by David Gladstein).[+] Fixed timing problems in long score files with very
short time intervals (bug reported by David Gladstein). It is possible to revert to the
old timing method by using the "--old-score-timing" command
line option.[+] soundout bug that made the
output files shorter than the actual length of the note with
soundout was fixed.[+] turnoff now skips the rest
of the instrument if there is no release time (xtratim = 0).[+] Fixed compile errors reported by Steven Yi.[+] Minor bug fixes in named instrument name lookup (the
bugs did not affect normal functionality, only the recognition of errors in some cases).
[+] Misc. changes:[+] Csound is now built as a shared library, and the Csound
API has been extensively revised and new functions and structures have been added.
For more details, and documentation of the new API functions, see the header files in the
include/Csound/ directory, and
ChangeLog.4.24.1.[+] Real-time audio modules and some opcodes are now built
as dynamically loaded libraries (DLLs). Libraries are automatically loaded from the
directory specified by the OPCDIR environment variable (this
directory should contain the file stdopcod.so or
stdopcod.dll, depending on platform, and exactly one
real-time audio module). For developers of opcode or audio I/O plugins, the following
files of the source distribution might be of interest: all headers in the
include/Csound/ directory, plugin opcodes in
plugins/ directory, and the audio modules
(rtalsa.c, rtlinux.c,
and rtwin32.c) in plugins/rtaudio/.
Reading ChangeLog.4.24.1 is also recommended.[+] The localization system of Csound (which used the file
csound.xmg or csound.txt)
was replaced. From the usage point of view this means that language is now selected by the
environment variable CS_LANG (which can be set to e.g.
en, us,
fr, it, or others), and string
database files (there can be multiple files which allows, for example, distributing
translated messages with plugins) for the selected language are automatically loaded from
the directory specified by CSSTRNGS environment variable.
Developers of Csound or plugin code should use the
char* csoundLocalizeString(const char*) function for
translating messages (the Str() macro is provided for use as
Str("...") - note the absence of an index number).
The string database file format is documented in n_getstr.c.[+] Csound for Win32 is now built using the MinGW headers
and libraries instead of Cygwin (the Cygwin license is incompatible with that of Csound).
This means that cygwin1.dll is no longer needed to run
Csound.[+] Two new rates (d- and s-rate) have been added for
destructor routines of opcodes. Both call OENTRY.dopadr(),
the difference is that d-rate (thread type 16) is performed at deactivation of an
instrument instance, while s-rate (thread type 32) is at the cleanup done on end of score
sections. Opcodes that require MIDI are now marked by setting thread type 64 (this used
to be 32 or 64).[+] There are many other changes that can be of interest
to developers - it is recommended to read
ChangeLog.4.24.1, include files in
include/ and
include/Csound/,
csound.c, n_getstr.c,
soundio.c, and plugins in
plugins/ and
plugins/rtaudio/ (these are all in the source package,
Csound-4.24.1.tar.bz2).

[+] Bug fixes:[+] Fixed 'square knobs' FLknob
bug reported by Oeyvind Brandtsegg.[+] Usage message under Win32 is now really printed to
stdout.[+] Attempts to fix bugs that resulted in an error return
after listing opcodes, printing help message, or calling utilities even though there was
no error in fact.[+] rtclock bug that made it
impossible to use the opcode has been fixed.[+] clockon /
clockoff / readclock fixed.[+] -t<tempo> flag fixed
so that it now actually has effect.[+] Fixed bug in beat mode that could result in hangs in
case of very short time intervals.[+] Fixes in sensekey - now
seems to work under Win32 and Linux. (note: it reads characters from
stdin, so it is not possible to use
stdin for other purposes - such as audio input - at the
same time. Also, to receive keyboard input, the console window in which Csound is being
run must be the active window.)[+] printk2 now prints the
first value if it is zero.[+] Modified opcodes:[+] readclock can be used at
both init and control rate, depending on output argument type. There is also a new
optional input parameter, which requests a CPU time value if set to zero (this is the
default), and real time if non-zero. The returned value is always in millisecond units,
but the resolution may vary depending on the selected mode, and system.[+] Misc. changes:[+] The Winsound GUI and all related code was removed from
the sources.[+] The handling of audio output and MIDI options by
cs utility was improved - see updated manual in
NEWS-4.24.0.[+] There is a new command line option
(--write-sco=FNAME) that requests writing the sorted score to
the specified file instead of score.srt or a temporary
file. This file is not deleted on exit.[+] Improved measurement of real time (higher resolution),
particularly under Win32 and Linux (see readclock changes in
NEWS-4.24.0 for details) on x86 machines. This affects
many opcodes (time related ones and random generators when seeding from current time).[+] 'ftable <number>:'
messages are not printed if message level is set to zero - this is useful when there are
many function tables, and the printing of large number of messages is not desired.[+] 'util UTILNAME:' messages
are now printed to stderr instead of
stdout.[+] Maximum number of buffers for Win32 real-time audio has
been increased to 64.[+] a-rate rnd31 with uniform
distribution was made faster.[+] Many stand-alone utilities have been replaced by a
simple wrapper utility that calls
'csound -U utilname args ...'.
See NEWS-4.24.0 for details.[+] A major internal reorganization of sources, with many
changes that are mostly of interest only to developers (details can be found in
ChangeLog.4.24.0).

[+] Bug fixes:[+] Win32 MIDI in devices can be selected by number, in
addition to name, making it easier to use devices with a name that contains spaces.
(bug reported by Oeyvind Brandtsegg)[+] Setting cursor size in
FLknob now works. (bug reported by Josep M Comajuncosas)[+] FLbutBank widget size bug
has been fixed. (bug reported by Oeyvind Brandtsegg)[+] Fixed reading of Base64 encoded files.[+] Fixed bugs in
<CsFileB> and
<CsSampleB> CSD tags.[+] Incorporated bqrez changes
from Matt Gerassimoff.[+] New utilities:[+] csb64enc:
converts a set of files to <CsFileB> tags.[+] makecsd:
creates a CSD file from a set of input files.[+] cs:
Csound launcher utility (saves typing).

[+] Bug fixes:[+] i() with expression
argument is now a syntax error if --expression-opt is turned
on, and a warning is printed otherwise.[+] Bug in --expression-opt
with multiple expressions on the same line is fixed.[+] delayr /
delayw and Win32 real-time audio input are reset correctly
in case of re-entrant operation (does not affect current binary distributions).[+] Bug in delayr with 64 bit
floats has been fixed.[+] Fixed bug that caused any label name that begins with
"else" or "endif" to be
rejected.[+] Misc. changes:[+] delayr has a new optional
i-time output, and all deltap opcodes have a new optional
i-time input argument that defaults to zero.
These optional parameters can be used to select a particular delay line to be used by
deltap / deltapx / etc.
in case of nested delays.[+] deltapx /
deltapxw with sinc interpolation revised for speed.

[+] Language changes:[+] 32767 k-periods limit on release time
(xtratim) removed; now it can be more than two billion
k-periods (i.e. more than 3 hours even with kr = 192000).[+] New command line option
(--expression-opt) that turns on some optimizations in
expressions: redundant assignment operations are eliminated whenever possible, and the
number of a- and k-rate temporary variables is significantly reduced (see
NEWS-4.23.4 for more details).[+] Beat mode (-t n command
line option) is closer to fully working, but still not perfect.[+] Turnoff / release / MIDI note off code extensively
revised (partly due to removed xtratim limit).[+] Bug fixes:[+] max_k in average mode has
been fixed (output was multiplied by ksmps).[+] Syntax errors in lines that have a ';' comment are
now printed correctly.[+] Minor bug in setksmps has
been fixed.[+] --hardwarebufsamps=N
option now sets the hardware buffer size correctly.[+] Audio device selection under Win32 should be fixed (bug
reported by Josep M Comajuncosas).[+] Fixes in various opcodes related to use with local
ksmps.[+] Compile errors in
widgets.cpp reported by Steven Yi have been fixed.[+] Misc. changes:[+] New Win32 real-time audio code, with some new options:
--sched, --sched=N,
--rt-sleep=N, --rt-hdr, and
--no-rt-hdr, as well as variable number of buffers. More
details in NEWS-4.23.4.[+] Usage message under Win32 is now printed to
stdout instead of stderr,
so it can be redirected, or read with 'more'.[+] New opcodes:[+] FLsetVal implemented
(ported from CsoundAV 0.04).[+] Some opcode aliases added for CsoundAV compatibility:
ftlen2(), tab_i, and
tabw_i.

[+] Bug fixes:[+] FLTK widgets may now compile with FLTK 1.0.x.[+] <sstream> or
<strstream> interface can be selected at compile time
to fix compile errors.[+] Typo in usage message
(score,srt) corrected.[+] Temporary files in Win32 version may now work.
Directories are searched in the following order: %SFDIR%,
%TEMP%,
%WINDIR%\TEMP.[+] Fixes in reading Unix/MS-DOS/Mac format orchestra,
score, and CSD files (the disadvantage is that the new version does not check for
comments continuing in another file or macro).[+] Maximum line length in CSD files extended to more
than 500 characters (was 200).[+] corrected
"Invalid ftable no. %f" error message in MIDI controller
opcodes.[+] Amplitude bug in adsyn has
been fixed (reported by Kevin Conder).[+] if /
else / endif internal labels use
less trivial names to avoid conflicts with user labels
(e.g. "__else_2317" instead of
"else1").[+] Other minor fixes, compiler warnings, etc. (see
ChangeLog.4.23.3).[+] Misc. changes:[+] Use of string database
(csound.xmg) was made optional at compile time, and is
disabled by default.[+] distort1 optimized for
speed.[+] Minor optimizations in orchestra parser; also in
bqrez opcode.[+] Preprocessed orchestra (with include files and macros
expanded) can be written to a file with --write-orc=FNAME
option; useful for debugging large orchestras with many macros and include files.
Unfortunately strips ';' comments (leaves only the ';' character).[+] MacOS X real-time audio synchronized with canonical
version (not tested).[+] New or modified opcodes:[+] vdelayk was renamed to
vdel_k to avoid conflict with similar opcode from
CsoundAV.[+] schedwhen supports named
instruments.[+] New opcodes:
rbjeq, schedwhenname,
schedkwhenname, eventname,
tab, tabw,
metro, and many more; see documentation package for
details.[+] FLpack has three new
optional arguments (see CsoundAV manual).[+] distort1 has a new
optional argument that defaults to zero, and selects amplitude scaling mode.

[+] Bugs in vco PWM and
triangle mode are fixed. Also, amplitude of PWM wave was corrected, and triangle
amplitude depends much less on pulse width.[+] massign can "mute"
MIDI channels by assigning to zero or negative instrument number. Useful when
midiin opcode is used to parse MIDI events.[+] bqrez opcode updated to
new version from Matt Gerassimoff, also fixed some bugs.[+] Named instruments can be invoked as opcodes, as
requested by Matt J. Ingalls, using subinstr-like syntax:

a1[, a2[, ... ]] Name p4[, p5[, p6[, ... ]]]

Note however, that if both a named instrument and an user defined opcode are
defined with the same name, the opcode will have precedence over the instrument
(of course, the latter is still callable with
subinstr).[+] Incorporated new printf opcodes from Matt Ingalls.
The new version of printks is currently named
sprintks in order to avoid breaking the original
printks, until the new code is fully tested.[+] schedule now supports
named instruments.[+] sfont opcodes
synchronized with jpff 4.23 version.[+] Crashes in (some) utilities have been fixed - still
needs to be fully cleaned up.[+] New opcodes:[+] denorm a1[, a2[, a3[, ... ]]][+] kr delayk ksig, idel[, imode][+] kr vdelayk ksig, kdel, imdel[, imode][+] Several new opcodes for arithmetics (can be
more efficient than expressions).
For more details about the new opcodes, see
doc/NEWS-4.23.2 in the source distribution.[+] Internal opcode names like
oscil_kk, peak_k,
oscilikt_aa, etc. have been all renamed to use a
dot instead (thus oscil_kk is now
oscil.kk, for example). This avoids conflicts with
normal opcode names like FLpanel_end.[+] Many internal code changes - see
ChangeLog.4.23.2 for details.