ANDUrs wrote:Hi all,
just a short interruption of the silence, letting y'all know what's going on before I go back to work (after having a beer and some sleep, of course).
You know, weird things happen from time to time. About 10 days ago the scripting engine was finished and thus I think everything was finished. Just a small tidy up, some lines for VST2.4 support and a few tests and Z2 would've gone Release Candidate.
But then, so many great ideas came up while working on scripting. Although I never saw any big sense in scripting other than intelligent randomizers, the work and the discussions brought up some nice topics. What if one could script Midi filters, or even simple dsp modules? In short: I got obsessed by the idea to switch from *interpreting* a script to actually *compiling* it. Well, not necessarily compiling it into native code, but into some sort of "bytecode" that would be executed close to native speed (let's say, faster than JAVA in any case). So, that's where we are now...
Well, one could argue that I could've speed it up *after* releasing Z2 and leave it at interpretation for now. I was pretty sure that this would cause a lot of trouble. Maybe the language has to be changed in some ways for fast bytecode execution. This would've meant that there would either be two slightly different languages, or, the scripts made with the first incarnation wouldn't work in future versions. Both alternatives wouldn't have been an option. Instead, I voted for some extra delay and for a final implementation that is future proof.
Today I think I've brought it to the point where the interpreted language was, with a few object bindings left to code. And with the ability to benchmark the result. So much for now: The speed of the bytecode interpretation outpaces my wildest expectations![]()
While creating a set of random wavetables for all four Z2 oscillators took a quarter second in the interpreted language, it takes, uhm, roughly 3350 microseconds in bytecode. That's 3.5 ms vs. 250 ms or a factor of 1:75 for bytecode vs. interpretation![]()
This even is fast enough for small dsp algorithms, i.e. an ordinary 12dB lowpass filter would cost 3-5% cpu on my ancient G5 machine.
However, I had to indeed change the language a bit to get these speed results, which are necessary to implement real time features later. Best of all, in another step the bytecode could be translated into native code without too much hassle, for maybe another speed gain of factor 10 or so. But that's a project for autumn, maybe.
So, these maybe 2-3 extra weeks have opened up some great possibilities. I can think of scriptable oscillator effects and waveform generators. Script based modulators. Script based articulations and midi-controlled behaviours.
And of course, many feature requests could be delivered by writing a scripted preset, rather than shelling out an update.
That's something!
Cheers,
Urs
the short:
kinda Urs wrote:Zebra2 is wicked hot. It will consume your very being, morphing you into a shell of the person you were. You will spend the rest of eternity drooling over the 30 kabillion presets that come with Z2 and the sonic power at your disposal.

