Incudine is useful to design software synthesizers or sound plugins from scratch, exploiting the expressive power of Common Lisp, without the constraint to use pre-built unit generators. It is also a compositional tool that allows to produce high quality sounds controllable at the sample level, defining and redefining the digital signal processors and the musical structures on-the-fly.
Incudine introduces the Virtual UGen (VUG), a new mechanism for defining primitive unit generators by writing concise and reusable code. The definition of a VUG contains lisp code and/or other nested VUGs (or "real" UGens), and it is re-arranged and compiled efficiently during the creation of a DSP.
Short summary of the current features:
- Realtime synthesis sample by sample (currently without a realtime garbage collector but it's simple to define cons-free DSP)
- Sample accurate callbacks
- Non-realtime bounce to disk and bounce to buffer
- The format of the sample is double float
- Optional standalone executable
- Optional score (rego) files with time-tagged lisp functions, lisp statements, lisp tags and arbitrary score statements
- Graph of DSPs
- Collection of useful re-definable VUGs
- Collection of GEN routines
- MIDI interface
- Flexible voicer
- Optional interface to use a LADSPA audio plugin in a Virtual UGen
- Optional interface to use a LV2 audio plugin in a Virtual UGen
- Incudine is released under the GNU General Public License (GPL) version 2 or later
Incudine works with SBCL, an implementation of ANSI Common Lisp with a high-performance native compiler.
Common Lisp packages:
- JACK or PortAudio >= 1.9
- libsndfile >= 1.0.19
- FFTW >= 3.0
- GNU Scientific Library (GSL) >= 1.15
- [Optional] LILV
The latest source code can be obtained via Git:
git clone git://gitorious.org/incudine/incudine
incudine-devel is a mailing list for technical discussion and bug reports.