The Cosyne Synthesis Engine
Cosyne is an acronym for the Cosyne Synthesis Engine.
What is it?
Cosyne is a lightweight software synthesis engine able to produce a wide range of different sounds, from virtual analog and FM instruments, to traditional 8-bit synths, to drum-like sounds and special effects. The original motivation for developing it, besides a general interest in audio DSP and synthesis, was for realtime music and sound effect synthesis in games and other multimedia software. Its main design goals are ease of use, painless integration into any project, no matter the programming language used, and striking a good balance between sound quality and CPU usage.
How do I use it?
Cosyne is provided as a black-box DLL which users can easily integrate into their software projects. At the moment, it comes with bindings to C/C++ and Python. Bindings for other languages are quick and simple to develop; if you need one, just ask.
A brief API reference for the Cosyne functions is now online. It is written against the C/C++ interface, but the Python interface is very similar.
Instruments are programmed using a synth description language.
It also comes with CosPlay, a simple virtual keyboard application which allows you to test instruments using your computer keyboard. MIDI is not supported so far, but should be an easy addition.
How does it sound?
Give these audio samples a listen. At the moment these barely scratch the surface of what is possible with Cosyne, and I hope to provide more impressive ones at some point.
What is it written in?
Cosyne is written in the D programming language, currently using D1/Tango. It may be ported to D2 when the language has stabilized.
March 23 2010 A first version, Cosyne 0.1, has been released. It includes a virtual keyboard app to play with the synthesizer in realtime, as well as bindings to C and Python and sample apps using those. Get it at the Downloads section.
April 7 2010 Cosyne 0.2 has been released. The major new feature is the support for user modulation parameters. Check the changelog in readme.txt for other changes.