Zebra PC blog
-
- KVRAF
- 1529 posts since 12 Jun, 2004 from Portland, OR
I think there will be preset shapes (saw/sine/square, etc...) as well as load/save of OSCs in the final version, so that should make things much easier/faster!
-
- KVRist
- 376 posts since 8 Apr, 2004 from Portland, OR
Hi Urs, is the Vibrato on the FM OSCs working? It doesn't appear to do anything when I use it, and so I have reverted to using LFO1 as a pitch mod on the oscillator instead.
I can get it to work no problem with regular oscillators.
I can get it to work no problem with regular oscillators.
- u-he
- Topic Starter
- 30213 posts since 8 Aug, 2002 from Berlin
Oooops... I havn't seen that in all the months... Call me dumb!gbles wrote:Hi Urs, is the Vibrato on the FM OSCs working? It doesn't appear to do anything when I use it, and so I have reverted to using LFO1 as a pitch mod on the oscillator instead.
I can get it to work no problem with regular oscillators.
Fixed now!
-
- KVRist
- 376 posts since 8 Apr, 2004 from Portland, OR
Cheers! I was going to mention it a while ago, but figured it would be on your list somewhere. I'm not sure about this, but I think it may be the same on the comb filters.
Oh, also, are you still distributing the latest build? If so, I'd love to check it out. I'm creating a fair amount of presets and probably should have requested to be in the beta a while back.
Oh, also, are you still distributing the latest build? If so, I'd love to check it out. I'm creating a fair amount of presets and probably should have requested to be in the beta a while back.
- u-he
- Topic Starter
- 30213 posts since 8 Aug, 2002 from Berlin
Sometimes life is wonderful...
... thousands of waveforms one click away!
Urs
Code: Select all
for ( $wave = 1; $wave <= 16; $wave++ )
{
$crazy = Rand( 0.01, 0.5 );
$a = 0;
for ( $sample = 1; $sample <= 128; $sample ++ )
{
$a = $a + Rand( -$crazy, $crazy);
Oscillator[ 1 ].WaveTable.Wave[ $wave ].Sample[ $sample ] = $a;
}
}
-
- KVRian
- 588 posts since 14 Feb, 2003 from Rural splendour (Up North, England)
You might be a great developer (actually there is no "might be" - you are a great developer) but your song lyrics are worse than mineUrs wrote: for ( $wave = 1; $wave <= 16; $wave++ )
{
$crazy = Rand( 0.01, 0.5 );
$a = 0;
for ( $sample = 1; $sample <= 128; $sample ++ )
{
$a = $a + Rand( -$crazy, $crazy);
Oscillator[ 1 ].WaveTable.Wave[ $wave ].Sample[ $sample ] = $a;
}
}
Regards,
Derek.
Less than 1000 posts and writer's block has set in 
- KVRAF
- 4176 posts since 2 Feb, 2003 from lost in music
so let me hear you singing it
pleaaaassssse

pleaaaassssse
sound is vibration, vibration is life
- u-he
- Topic Starter
- 30213 posts since 8 Aug, 2002 from Berlin
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
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,
-
- KVRAF
- 2935 posts since 14 Dec, 2003 from Edinburgh
-
- KVRer
- 29 posts since 23 Feb, 2005 from Madison, WI, USA
Urs, have you seen vmgen from Anton Ertl at TU Wien? It's pretty sweet.

