[music-dsp] First Release of CsoundVST
gogins at pipeline.com
Sun Sep 2 09:28:52 EDT 2001
The first release of CsoundVST is now available at:
This is a beta release of CsoundVST (version 0.5.0) for Windows only.
There are plenty of problems. In its current state, it may not be very
useful except for writing Csound pieces in music notation. Perhaps other
people can help resolve some of the problems.
There is currently no Macintosh, Linux, or Unix support. I have a 1 GHz
Pentium III Dell notebook with lots of RAM and disk, so I do not know
how well it will work on a slower machine.
- Runs as a VST Synthesizer in Cubase 32 5.0 and Orion PRO.
- Renders MIDI events synchronized (sort of) with VST.
- Loads and saves Csound (csd) files, VST bank (fxb) files, and VST
preset (fxp) files.
- Can be stopped and restarted in Cubase.
- Displays Csound messages in a console window, which is minimized by
- Can be used as a shared library synthesizer component in other
(non-Cubase) programs, e.g. algorithmic composition programs.
What does not (yet?) work:
- Does not work as a VST effect, that is, no processing of audio input.
- Plays regular Csound scores into VST outputs, but doesn't synchronize
- Since only MIDI events are synchronized, only MIDI orchestras are
- MIDI events are enqueued only on VST output buffer boundaries - no
"sample accurate timing," so latency and synchronization are not very
- Cannot run more than 1 instance of the plugin at a time, due to those
pesky Csound globals.
- A Cubase bug prevents easy editing of Csound scores and orchestras in
How it works:
- Csound runs in a separate thread, which writes to new vstSpoutran and
- Csound has a write lock, and the VST host has a read lock, for thread
- The host waits on the read lock until Csound releases it, then reads
the VST output buffer and releases the write lock.
- Csound waits on the write lock until the host releases it, then writes
to the VST output buffer and releases the read lock.
- Csound only tries the write lock when it knows the audio sample frame
index has advanced to the end of the VST output buffer; this is more
efficient than my previous approach of trying the lock at every sample
frame, and is why this version succeeds; ksmps can be any value.
- The VST host enqueues MIDI events in the regular Csound sensMidi
- Banks and presets are saved as csd files prefixed by lengths.
Both the compiled plugin and the source code are included in the zip
file, except for the VST2 SDK, which can be downloaded from Steinberg
merely by filling in an online form.
This is a very preliminary release that needs a lot more work. Please
email me with bug reports or suggestions. Unfortunately, or fortunately
as the case mey be, I will be on vacation in Italy from September 3rd
through September 24th. I will take a laptop and will check email
occasionally, but who knows how much I will be able to do on this
project while I am on vacation with my wife?
I will try to upgrade CsoundVST and to maintain it. I have also
developed a pure C++ general-purpose software synthesizer, which I will
release, but I plan to focus on CsoundVST for much of my own music.
Future plans include:
- Java Native Interface for Silence and other Java hosts.
- Sample-accurate MIDI event timing, regular Csound score
- Plugin opcodes and GEN routines with C++ base classes to facilitate
E-Z opcode programming.
- Enable functioning as an effects processor (VST effect).
- Real-time MIDI support on Windows.
- A Linux version (I know there is no Linux version of Cubase, but there
probably will be, and anyway the Java interface should be useful).
I will be glad to cooperate with any and all other Csound developers, to
help them implement the VST technology in their own version, or to
modernize Csound in other ways.
dupswapdrop -- the music-dsp mailing list and website: subscription info,
FAQ, source code archive, list archive, book reviews, dsp links
More information about the music-dsp