Recent Developments
Prev | Part I. Overview | Next

## Recent Developments

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.

## Features 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.

Prev | Up | Next
Introduction | Home | Features of CsoundAC