I finally created a VST for my Crumar DS2. I was using a very
ancient DS2 simulation (allthough very nice) but wanted to try
to create it myself. I always wanted to create a reproduction
of the DS2 so when I got some spare time the last weeks I
decided to go for it.
I knew JUCE was the way to go nowadays, but I really have a soft spot for the Delphi & ASIO packages from Christian Budde and TobyBear.
So, I created both (in fact, I created four: a 64 bit version for JUCE, a 32- and 64 bit version for Delphi and a non-tested version for an Arduino Due)
A short description.
The VST implements an almost functional exact copy from a Crumar DS2, omitting the Poly Ensemble (instead just being polyphonic). It sounds pretty well, allthough I did not try to do anything Crumar specific. Well, the Crumar already has digital oscillators, so that explains why it sounds quite alike.
It has two VCO's, two LFO's, an VCA, VCF, Noise generator and
a great modulation matrix, for the day.
Suffices to say, that using these packages, it almost comes down to creating a UI and do the Audio processing (I never did that). There are a few other things to handle with, like
- Patchhandling in JUCE
- Better algorithm for voice selection and last note priority
- Parameter handling so that it is nice to see all parameter correctly in e.g. Reaper.
- LookAndFeel implementation in JUCE.
You can find all code on my github account.
The Audio processing went very well and it is fun to see how easy it can be to create a great sounding VST. On every sample you update the LFO positions, apply the correct pitch, wave and foot to the Oscillators, read their positions, apply the lfo's for pitch modulation and proceed to the filter step. In that step you do almost the same, apply the lfo's and Envelope Generator to the VCF frequency and apply the filter (I use a 24 db filter, found on dspaudio.org). Then finally, go through the amplification stage (doing the same things again). You can view the code in XSynthVoice::process().
Of course, there are more things to implement, like Midi Controller, Program Changes, Pitch wheel data changes, voice selection but as stated before, the framework helps a lot. One last remark: The fact that you can use the debugger with Visual Studio and Reaper, and it really works fantastic, makes this development a lot of fun.
For now, there reamains one problem. I have not decided which one I will use in my setup and further development. Well that's a luxury decission.Techniques Used
- Delphi, DelphiASIO, VST programming
- JUCE, C++, Visual Studio