In the time since Barry Vercoe wrote the original Preface to
this manual, printed above, many further contributions have been made
to Csound. CsoundAC is an extended version of Csound 5.
Csound 5 begins a new major version of Csound that includes the
following new features:
- Now licensed under the GNU Lesser General Public License, an
open source license.
- A new, easier to manage build system using
SCons.
-
The use of widely--accepted open source libraries:
- libsndfile for soundfile input and output.
- PortAudio with ASIO drivers for low-latency, real-time audio input and output.
- FLTK for graphical widgets that can be programmed in orchestra code.
- PortMidi for real-time MIDI input and output.
In addition, Istvan Varga has contributed native MIDI and audio drivers for Windows and Linux.
- Simplified audio buffering system.
- Status returns from all internal functions, including opcode functions.
- MIDI interop opcodes, that enable the same instrument
definitions to be used interchangeably for either live MIDI
performance or off-line, score-driven performance.
-
Plugin opcodes are working and becoming more widely
accepted. Many opcodes have been moved to plugins. Most new opcodes
are plugins, including:
- The FluidSynth-based SoundFont opcodes.
- Python opcodes allowing Python code to execute in the
orchestra header or in instrument code, at
i
-rate or k
-rate.
- Loris opcodes for time/frequency analysis and resynthesis.
- Control bus opcodes.
- Audio mixer opcodes.
- String conversion opcodes.
- Improved Open Sound Control (OSC) opcodes.
- Vectorial opcodes.
- The pvs opcodes
for real-time spectral processing, a port of Mark Dolson's
phase vocoder code.
- The ATS opcodes
for spectral Analysis, Transformation, and Synthesis of sound
based on a sinusoidal plus critical-band noise model. A sound
in ATS is a symbolic object representing a spectral model that
can be sculpted using a variety of transformation
functions. These opcodes can read, transform and resynthesize
ATS analysis files. Please note that you need the ATS
application to produce analysis files.
- The STK opcodes, consisting of Perry Cook's
original Synthesis Toolkit in C++ instruments, in C++, adapted
as opcodes.
- DSSI
and LADSPA adapter opcodes for
hosting DSSI
and LADSPA plugins in
Csound.
- vst4cs VST
adapter opcodes for hosting VST plugins in
Csound. (Distributed in source form only due to the VST SDK
licence restrictions.)
- The
OpcodeBase.hpp
header file for
writing plugin opcodes in C++. This is based on the technique of
static polymorphism via template inheritance.
- Istvan Varga's csound5gui frontend for Csound, simplifying
the editing of Csound, the use of Csound especially for live performance,
and the monitoring of performances.
- Victor Lazzarini's Tcl/Tk frontends for
Csound, cstclsh
and cswish.
-
The Csound API is becoming more standardized
and more widely used. There are interfaces or wrappers
to the API in the following languages:
- C
(include
csound.h
).
- C++
(include
csound.hpp)
). This API includes
Csound score and orchestra file container
functions.
- Python (
import
csnd
).
- Java (
import
csnd.*;
).
- Lua (
require
"csnd";
).
- Lisp (use the CFFI
file
csound5.lisp
).
- Csound is now truly re-entrant, meaning that
multiple instances of Csound can run at the same time, in the same
process.
John ffitch plans to replace the handwritten parser with one
written using a parser generator, which should make it more
bug-free and perhaps more efficient.