Rss

Archives for : waldorf quantum

Working for Waldorf – project Quantum 2.0 – part II

waldorf-waldorf-quantum

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 Prophet VS ROM into Quantum wavetables
I wrote my previous post late at night, it was a bit cryptic, so decided to go with full info instead, because the former idea wasn’t too useful. Ok… so where do we begin. I guess with the first waveforms i downloaded from the web. Actually i downloaded just two and they were enough to figure out we’re on the wrong path. I love when folks who are not familiar with the subject get the idea they should do a job about that same subject and as a result we got a set of Prophet VS waveforms available for download here. Seems great at the first sight, but for anyone working with the Prophet VS waveforms and building a set will tell you there is a problem in here. A single Prophet VS waveform is 128 samples long, and definitely not 336 samples as the previous link suggested. At that point you realize you need to do the whole job yourself. To cut the long story short, eventually i got Prophet’s internal waveforms in their original 128 samples long size. But they still had one little problem. And this dates back to the days of when they were designed. Most of them were not named or marked or given any description. So this is where the new work started. I took time and analyzed each individual waveform then what i would do is to write tags that would describe it. I used a limited set of words. And working in Linux i used tags directly in its file name, because that will later help me a lot in that same Linux system. More on that in a moment.

Looking on the above image we can see directories built. Sharp eyes will also notice a directory called 1-47 and the one called 48-96. These are essentially half wavetable. The reason is, Prophet VS contains 96 waveforms and having a such large wavetable can be overwhelming and confusing at times. Hence why i also included the first half and the second half of this huge wavetable. The folder titled ‘all’ is self explanatory, it contains all waveforms. And this brings us to another interesting situation, waveform sequential order. I included original order but also created several random orders, because you might find some of these random wavetables even better sounding than original.

Looking back at the previous image, in the top terminal we can see how i built individual wavetables. Remember when i made each waveform contain tags? Well now it was too easy to sort them. You just invoke the copy command, use your tag and place asterisks around, point it to the destination folder, and it will contain just certain types of waveforms, ie. those who sound bell like. Wavetables were then “baked” using sox and that was about it. Yeah as you can see on the lower terminal, first image, some of the wavetables didn’t turned out too big ie. a sine wave has only 5 waveforms, vocal contains only 7 wavefroms, but hey, they are genuine and you can always layer a couple more. I created two random variations of the ‘1-47′ wavetable, three random variations of the ’48-96’ wavetable and four random variations of the ‘all’ wavetable. The ’48-96′ and its random derivations can be seen on the image below.

Next task: Roland JD-800 and JD-990 ROM waveforms synthesis and building a wavetable out of it. What i did was to synthesize them from scratch, so technically they are not a copy from the ROM itself. Hence there is not much a Roland can do, as these are completely different byte by byte. However, since they are sonically near identical i decided to ask Eric Persing first.

In the meantime i would like to share one interesting story i found out from John Bowen. Someone on the Gearslutz forum asked a question about Prophet VS and how originally did they made ROM waveforms. “Do you know what tools they used back-in-the-day to make them? Was it waveterm? It just feels like we should have moved on to having amazing wavetable tools in 2019, but those old wavetables still have some real magic to them.”, so i contacted John and got the following information from the man:

“I’m going to say it was an IBM PC and it was definitely a custom program that Josh Jeffe created. It had 2 modes – I could use the mouse to draw a wave shape and hear it in real time, (then just generate the VS file from that) or a screen that had 24-28? vertical bars whose height represented amplitudes of each sine (so additive synthesis). For 3 or 4 of the waves, I just visually estimated the amplitudes from the little graphic printed on the front panel of a Korg product we had there. Then Josh wanted some of himself in the VS, so he recorded his voice and captured 2 waves from that. I’m trying to remember the Korg keyboard we had – Jack Hotop knows. I was just surprised how close the visual approximation sounded…pretty cool!

But for most of the waveforms, I just moved the mouse around, and stored them when I thought they were interesting. I also made a few with specific intent, like putting the harmonics up for the root and an octave+fifth above, or 2 octaves above, etc.. Those I did name as correctly as I could. I didn’t put names for a lot of them, because they were just all made up empirically, but later on, another Sequential employee (Will Loutensock, I think), decided to make up some names for them. Funny that you are asking about this now – yesterday I got an email forwarded from Dan at Korg R&D by a Sean Luke, who developed the Gizmo toolbox and the patch editor Edisyn, asking about all of ther VS waves, and what were the extra ones that we put in the Wavestation (ones numbered higher than 127).”

And to continue from here. Speaking of waveforms. I too regret they didn’t label VS waveforms, it made this VS project take a little more time than usual. I had to analyze each waveform, then build several text tags around each, then store it. Now with the tags finally finished, it will be easier to create VS based wavetables because now i know which waves will go easily with others. It will be very easy to group them now, rather than just building a random all waves wavetable which would be not too useful. There will be at least 10 Prophet VS wavetables for Waldorf Quantum, just like there are from the Ensoniq ESQ-1 and SQ-80 series.

Part 3 – The JD-990 Story
I know i bother you with technical details all the time but this episode, i promise you no numbers or lines of command lines. In the previous episode i’ve mentioned the possibility about doing one wavetable out of a few waveforms from the JD-990 synthesizer. Obviously didn’t want to be lazy scumbag who would just take the existing waveforms directly off the ROM. Instead i decided to synthesize them myself from the white noise, for three reasons:

— Out of respect for their authors
— To learn something along the way
— To avoid stepping on Roland’s toe

So i fired up Audacity and started analyzing a dozen waveforms from JD-990 and JV-1080. These are in fact my favorite waveforms from the JD/JV era. For those who don’t know i grew up with JV-1080 and i came with idea to put a DNA of dozen of those waveforms into ONE wavetable for Waldorf Quantum. The idea will actually fail and i will shortly tell you why – it has to do with periodic and aperiodic wave shapes. If anyone is familiar with JV series he will immediately recognize names such as: Anklungs, Feedbakwave, Metal Wind, Pitch Wind, Windago, etc. To transform all of them into one single wavetable which will be only 1.1 seconds long, the synthesizing process isn’t that complicated as much as how tedious it is.


Step1: Analyse spectra of source waveform


Step2: Recreate waveform using white noise and filters


Step3: Take 4096 bytes short snippet from it and place it in your wavetable as an entry No1. Repeat the process for 11 other waveforms. Save the final product as a wavetable.

You work with white noise and a set of filters which you stack until you get the desired result. Sounds easy on paper, but once you start tweaking and adjusting, an hour can pass yet you made barely 2-3 waves. Anyway i’ve created a dozen waveforms this way and before even converting them into a wavetable, decided to ask Eric Persing about them – can i use a short snippet of each (4096 bytes to be exact which translates to 92ms) Because if i recall correctly he designed those waveforms. I wasn’t too considered with Roland as these are completely different byte by byte as i’ve said earlier. But out of the respect for the man, decided to contact him.

I send him a PM via facebook, mentioning i generated a couple of waveforms, initially got a response but unfortunately never got a reply could i use 92 milisecond long snippet of each or not. I do remember i mentioned it would be “92 milisecond short snippet from each waveform”. However i forgot to mention that i will be using a cloned copy of his waveforms which i synthesized using white noise. As i’ve mentioned earlier, I didn’t want to blatantly rip them from the ROM so i cloned them using white noise and series of steep filters. I also mentioned Quantum OS 2.0 offers 4096 bytes long frame, which means some sonic texture can be heard thru. Anyway I’ve sent 13 files, each 10 seconds long which i synthesized in Logic X using white noise and filters… but unfortunately i never got the response.

I wonder did i communicate improperly? Now when i look at the text i’ve sent him, it says “here is the final wavetable”. While in fact, that information is in serious error. Those 13 files that i have sent are NOT the final wavetable. From those 13 files i would only take 92 milliseconds from each. So mathematically speaking the final wavetable would only be 1.1 second long. Not 130 seconds as it appears if one places all those files in linear fashion. I also didn’t mention the waveforms i’ve created from white noise are clones based on his original waveforms. So there was definitely an error in communication from my side. And therefore i would sincerely like to apologize to Mr. Persing.

Non periodic wavetable won’t pass thru
Ok truth be said things didn’t turn that bad. Being curious i’ve tried building that wavetable that i so desperately wanted. Aaaaand … honestly, it kinda sucked. Differences in amplitude and phase of each 92 ms snippet are too great for them to be connected together into one. And the reason is – i made a lame mistake. I wanted to create a periodic waveform from non periodic source. Waveforms like Anklungs, Feedbakwave, Metal Wind etc are noisy / airy types of waves – we can see that in the fact i generated their clones using the white noise. They can’t become a good or useful wavetable. Even with a window as large as 4096 it’s not enough. You can’t smuggle it as a Transwave neither – the method which i’ve discussed earlier in this thread with extreme transposition down and using Quantum practically as an (Ensoniq style) Transwave synth.

Positive side is, i can work in Audio Term as easy as eating a cookie now. Because at one point i sat down and decided to learn that software start to end. Now after 2 months I can generate any type of wavetable i desire to. The wavetable converter in Quantum is very good and will cover most of your needs. But if you want to dig down the rabbit hole, Audio Term all the way! So yeah, now i pretty much build wavetables. There are some very cool ROM wavetables in Quantum, but there will be more even cooler ones, since they are being made, as we speak. I know most of the sound designers who worked on Quantum and i am grateful to to them that they didn’t generate those that i wanted to generate. Those are some that i think are kinda essential yet for some reason do not exist in the stock “ROM”. Audio Term is a great software that at first appears to have an archaic UI. But it isn’t. Just set it all to green, click full screen, make yourself some nice tea, and have fun.

Next task
I plan generating some waveforms in Wolfram Mathematica. Converting mathematical equations into sound is a long hobby of mine i like to play from time to time. I will start with simple things then move to extreme and bizarre. There was an excellent program for Win95 which did just that and in which i had a tonne of equations that i’ve found by trial and error, but as they say you need to move with the times, or the times will move without you. So Wolfram it is! Inside Quantum “ROM” there will be a folder called Math in which you will find bizarre waveforms sounds of which some might damage your speakers, so a disclaimer is given – just in case! One caveat though: they will be all 8 bits. Rolf was very specific on giving available “ROM”, so i have to follow it and not break the quota or else i might get into trouble. Rolf is very strict!

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 I 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.