Rss

Working for Waldorf – project Quantum 2.0 – part I

waldorf-quantum-rear@1400x1050

Intro
This is a series of articles that will detail the process i went through when designing the new factory patches, wavetables and samples for the Waldorf company for their high-end synthesizer called Quantum. The process took several months but fortunately from time to time i would post the progress on the Gearslutz forum. The bad thing about this is that eventually all those posts will be lost in time like tears in the rain. So I’ve decided to compile these posts into proper articles and place them on my webpages. This is the part II of the series.

Converting Ensoniq ESQ-1 ROM into Quantum wavetables
I always liked the waveforms of Ensoniq ESQ-1 and thought it would be cool if that synthesizer could do wavetable synthesis. Unfortunetly it can not, but luckily Waldorf Quantum can. Now since i know Rainer Buchty and since he was able to extract the waveform rom of the ESQ-1 into binary format – that means we are on a good path. I should point out i did found a couple online, but turned out they all originate from the same guy who sampled them. And that’s not what i want. I really don’t like all the D/A, A/D staging in between and who knows what quality soundcard. I want them in their original pristine form!!

Hence started the work directly with the ROM files in their original 8-bit form. Extract each waveform with a single byte precision, then stack them into a wavetable. This will require a lot of work because the SQ-80 ROM is non linear. But eventually i will build it. The result will be a very exotic Ensoniq SQ-80 emulation on Quantum. Three oscillators with Sync and AM, in 8 bit audio, into analogue low pass filter. Just like the real thing. Except this time, the “Ensoniq” will be able to sweep through the waveforms realtime.


Image 1 – click for full size

This turned out way better than i thought! Just three days ago i was looking around to find a SQ-80 wavetable. And now here is the SQ-80 ROM dismantled into individual pieces. We need to give kudos to Google for giving us free spreadsheet calculator (Google Sheets), which saved me hours of hard work. Using Linux i was able to do the rest.

Each individual waveform is being extracted in its original 8 bit form. Tomorrow i will “align” the files and eventually build the wavetable. I am a bit nervous. The ESQ-1 waves will work perfectly, but SQ-80 ones have pitch offsets and i totally dislike the idea of resampling & repitching things (26 out of 56 SQ-80 waves require pitch adjustment). I am still trying to figure out the best method in here. Perhaps SoX should be used as a last resort.

There will definitely be more than 1 wavetable. Most likely one wavetable with pristine waveforms yet without pitched SQ-80 waves, second one with pitch corrected aka “all waves”, third one will be first one but without drum sounds (the one i’m most excited about), and last one will be original ROM dump which will most likely sound horrible without interpolation, but very exotic with interpolation. The benefit of the last one is that every frame size can be used since total size is 262144 samples. That number is divisible with every preset frame size, which means 7 totally different sounding variations from the same wavetable. Of course you can abuse first three waveforms by changing the frame size but i don’t think they will sound as interesting, since their frames will be full cyclic.


Image 2- final step before merge


Image 3 – successfully merged in original 8 bit raw form and then converted to 16 bit .wav file. And here is how Ensoniq SQ-80 Wavetable looks like

104 waves, all perfectly cyclic, merged into one. I have set them all to 1024 samples long per frame. It was all manual screwdriver work but it was worth it. I don’t like resampling, repitching etc, i want them in their original 8 bit form and shape. And here they are! Essentially, source waves that were 256 samples long i quadrupled in size, 512 were doubled to achieve 1024. This is the first revision. I will also include a half and quarter versions, because 104 waves at time can be overwhelming, especially when interpolation is used and long crossfade times. I will also include a couple more from the ROM2 and ROM3 ic’s. These were skipped because they contain waves of different length often more than 1024, and i decided to stay with 1024 since most of the stock ones are that length.

Next task – Prophet VS wavetable(s)
I’ve added “s”. There will be at least two wavetables. One from the stock ROM, and one from custom RAM waveforms that i’ve made 6 years ago when building a soundset for Prophet VS. I’ve spent a lot of hours synthesizing waveforms from scratch (i wanted a good choir on VS among other things) and even sampling some of my analogs to put all that into VS RAM. Technically, the soundset is IMO a flop since there were only 1500 units built. If i had known that in advance, i would never bother. But hey, at least the waves are here, let’s turn them into a wavetable and do something useful. As opposed to 8 bit Ensoniq, these are 12 bit, so a little bit cleaner, but much shorter since each wave is 128 samples long.

Facepalm area: Of course i’ve first looked on the web for the ROM waveforms and found them on Muff forum. Except they are 336 samples long. This is just fascinating! Are people one some drugs or just gone crazy? Why touching original waveforms? Why trying to correct Anything on them? Just leave them as they are. And i will decide whether i want to re-sample them, re-tune them etc. Don’t change their stock properties, because that makes them no longer authentic.

Don’t celebrate too early
Turned out the situation was a bit more complex than i thought and i seriously underestimated the task. I deleted that first SQ-80 wavetable that i’ve built and started the whole process again this time in more depth. I will shortly explain why. Looking back at Acreil’s post i’ve learned that ESQ-1 and SQ-80 are in fact multi sample devices. I had no idea about that. However as i’ve started doing some waveform analysis i noticed something weird is happening and realized i need to re-do the whole thing again.


Image 4 – click for full size

Looking at the image 5 i’ve noticed that each consequent saw wave in the ROM has less and less harmonics, and then it became clear to me this is the same SAW waveform except that each one is mapped to a different key and the higher we go, the less harmonics this saw will carry to prevent aliasing. Long story short i removed all of the “upper keys” and left just the basic “waveform” from the lowest key, the one with most harmonics. The Audacity software helped me a LOT in this. And i was never fan of their UI, but now kinda got used and must admit it ain’t a bad program. It sped up things a lot! I would place all of the individual waves vertically and simply delete unwanted ones from the folder, because by then i would know their names. So it was super easy to remove “doubles”.


Image 5 – click for full size

Looking at the image 4, in the right side x-term we can that the Soxi reported the size of 52224 samples of my merged wavetable which included all “cleaned up” waves. Divided by 1024 per each wave, gave total 51 frames. So, way way below 103 which is something i originally had. In this case the less is more. Wave tables with over 64 frames can be way too chaotic. While Microwave XT had max of around 64 frames.

The merging process is very simple using Sox (shown on the image below). Of course this immediately gave birth to a sinister idea. What if i merge them randomly? Well that didn’t took long to execute a batch of 7 which can be seen on the top image, right bottom side of the purple terminal by using dev/urandom as a source for the waveform sort.


Image 6 – click for full size

Visiting Carbon111’s website (highly recommended resource from James Maier) and observing some wavetables there originating from XT gave me another idea. Let’s now take those waveforms and built custom wavetables out of them. For example let’s only take vocal samples and build a wavetable for just that. Let’s take all the bell samples and build a bell wavetable. Of course each of these cases includes 7 random variations. And before i blinked i’ve noticed i have 40 wavetables to test. And i barely started the process.

I’ve noticed there are some wavetables on XT with just 8 waveforms. So this is the next task that i am currently working on and can also be seen on the first image. The Bell1 is one such wavetable built of just a selection of 9 waves out of the Bells wavetable which has 26 waves. All of these originate from the Ensoniq SQ-80 ROM. Image 7 shows the Bells wavetable and its 7 variations. And image 8 is the spectral signature of the SQ-80 Voice wavetable (can help when selecting best candidate). If ask me why doing variations when the same can be achieved with a random LFO. Well if you are lazy, or just want to “browse” though the wavetables with a mod wheel then definitely a variation or two of the same wavetable but with different order of waves comes handy!


Image 7 – click for full size


Image 8

Testing first Ensoniq ESQ-1 wavetable!! It sounds exactly as i imagined it would!!! Cold menacing ESQ-1 character pushing though (and some 8 bit noise in the background). I wish i had time to record more, the sounds this one wavetable can provide are unlimited i spent at least an hour listening to it and adding various things. Wish i pressed Rec earlier.

As you can see below there are 12 wavetables so far that have been built. However, some of them will have several iterations with different order of the waveforms as was shown earlier. So in total we can expect 20 wavetables for the Ensoniq series. Yeah, Alien waveforms are form SQ-80 i know, but currently they are all named ESQ-1_(name).wav. So pardon me for that!!!!! I hope to fix things a bit and sort SQ and ESQ where they belong to.

Ensoniq Transwaves on Quantum?
Earlier on the Gearslutz forum i’ve mentioned that Transawaves could be possible. And indeed they are, however there is one thing that should be addressed when importing larger window sizes such as 4096. Some slight OS modification in here is needed. It is the pitch that is way way WAY too high when the 4096 window is used. And that was making the confusion. Once you import your waveform with something like 4096 long frame, in order to hear each frame on its original pitch you need to go so low that the existing range of Semitone: -24 isn’t enough. You have to go to the Octave switch on the Quantum and go -1. Only then you will be able to hear the sample in original 1:1 pitch, and that happened to be the F1 key. That means the solution would be, when importing 4096 size window samples, that oscillator should be transposed 3 octaves down, but behind the user’s back, so that he still has an option to touch the Semitones setting and go up or down 2 octaves if he wants to. I assume the 2048 window might need -2 octaves transposition accordingly, but i didn’t tried that.

Comments (5)

  1. Daniel Kalina

    Don, do you have any Waldorf Quantum soundsets for sale? Thanks, Daniel

    • Don Solaris

      Thank you for asking. My sounds come included with Quantum OS 2.0. I was part of the sound design team. Kind regards!

  2. Peter

    Hi Don,

    some of the samples in the Ensoniq ESQ are multisamples. I understand it was not about reporoducing the Ensoniq sound, but how do these samples compare when pitched up/down in the Quantum as a wavetable? Did you compare A/B?

    Cheers,
    Peter

  3. scott

    I was soo excited about the waldorf quantum that I started saving as soon as I heard it was to be released.I have a microwave rev 1 and the blofeld which i think are both great.
    Unfortunately the engineers prioritised granular synthesis, which isn’t a core function traditionally of waldorf or wavetable instead of implementing the math modulation matrix found in the blofeld and xt. this limits modulation routing severely and should have been implemented as well as the extended envelope which is similar to the microwave rev 1 as modulation options.I am sad as I have waited for a real wavetable synth with the analogue filter/vca like the Waldorf Wave for the last 2 decades.
    Waldorf tells me there are no plans to implement the math mod matrix as part of the quantum.
    Did the engineers even ask the ppl who use these machines whether granular synthesis onboard was important to them over basic inheritance of modulation function from earlier WT engines?
    I will still get one eventually, Quantum sounds phenomenal but it is hard to shell out 6k for an engine you know could be much better easily by including well tested mod matrix functions:)

Leave a Reply

Your email address will not be published. Required fields are marked *