1. IMPORTANT:
    We launched a new online community and this space is now closed. This community will be available as a read-only resources until further notice.
    JOIN US HERE

Using custom wavetables in Microwave block?

Discussion in 'Building With Reaktor' started by Robert Kramer, Nov 1, 2017.

  1. Robert Kramer

    Robert Kramer New Member

    Messages:
    3
    Hey gang,

    I'm looking to tweak the Microwave block with my own wavetables saved in the core table. Can anyone explain in simple steps how I'd do this? Thanks!
     
  2. sellotape

    sellotape NI Product Owner

    Messages:
    345
    I don't know this block but i will try to answer anyway. I think there are two possibilities of how this oscillator works. The real Microwave does not use any samples. It is more like a kind of resynthesis with an additive oscillator so instead of a waveform you need the data for every partial. I dont know how many partials the microwave has but this can be achived easily with the sine bank oscillator. For ech partial you need to set the frequency ratio, the amplitude (level) and its starting phase. The advantage of this technique is that you don't have any aliasing. So if it was done this way it is not easy to change the waves by simply load other single cycle waves. You will need something to extract the spectral data to feed every partial. I tried to achive this with the fft tools from the user library some years ago but did not get it to work correctly. If there is someone out there who can tell me please do so =)
    If it is sample based there must be a table module that is connected to a readout, just like a sampler. So keep looking for this table module and load your waveset into it. You just have to heed for the lenght of each single cycle wave and the number of total waves used to get work correctly. Either you change your samples to the size that is already used or you have to change some values to get the calculation going right. I think i can help you there if you just post a screenshot of the structure.
     
    • Informative Informative x 1
  3. Paule

    Paule NI Product Owner

    Messages:
    7,555
    Is it the same like WaveWeave from Reaktor Library 4 works?
     
  4. Big Gnome

    Big Gnome NI Product Owner

    Messages:
    574
    It is sample based, just like the various Microwave-derived synths (can't speak to the original, and I find the above comment about resynthesis very surprising).

    There's a table storing all the concatenated wavetables, and the rest of it is made to accommodate Waldorf's spec of [128 samples/wave] x [64 waves/table] x [64 tables]. If you stick to that, you can make a drop-in replacement; otherwise this can be changed as shown, although the size of each individual table ought to be kept consistent.

    uwave.png

    So you'd replace the data in the table with an audio file of your concatenated wavetables and change the identified values as necessary per the parameters of your wavetable.
     
    • Like Like x 1
  5. sellotape

    sellotape NI Product Owner

    Messages:
    345
    If you think a moment about it you will realize the big advantage with this method. Aliasing is a big problem with wavetables but if you 'recreate' the waveform with sine based additive synthesis you will always have a clean tone on every frequency and gives you nice sounding pitchshifts. The term waldorf used therefor was dynamic spectral wavetable synthesis and i'm pretty sure it works the way i tried to describe above. I also think that massive uses something similar.
     
    • Informative Informative x 1
  6. Big Gnome

    Big Gnome NI Product Owner

    Messages:
    574
    I agree with you for the most part, and I don't necessarily think you're wrong--I just said I find that surprising if it's so, given that the MW2 was released in the 90's (with the state of technology that implies), and was preceded and followed by stuff that's definitely PCM-based (i.e., PPG Wave, Blofeld, etc.) I'm really curious where you heard about this?
    By the way, Massive is definitely PCM-based, to an unusual extent in fact. That's what that 4MB tables.dat file is--try importing it in Audacity as signed 16-bit PCM. There's even a python script floating around github that'll spit out the sample data minus header information &c. as individual WAV files. Lots of neat stuff in there.
     
    • Informative Informative x 1
  7. mosaic_

    mosaic_ Guest

    Check the UL... looks like your prayers are answered by Jonathan Tremblay's Wave-Table block :)
     
    • Like Like x 1
  8. sellotape

    sellotape NI Product Owner

    Messages:
    345
  9. sellotape

    sellotape NI Product Owner

    Messages:
    345
    I remember this white blue synth but can't tell you after all these years^^ I don't think so cause the sinebank was introduced with reaktor 5 and playing at least 64 sine oscillators in a polyphonic synth would have probably stressed the cpus of that time.
     
  10. EvilDragon

    EvilDragon Well-Known Member

    Messages:
    19,938
    Both Microwaves use PCM wavetables as far as I know. MW1 could synthesize individual waves, but they were stored as PCM, then crossfaded between them. Only the big brother of Microwave 1, Wave, could do spectral resynthesis, but it still generated PCM single cycle waveforms as a result, at least AFAIK.
     
  11. sellotape

    sellotape NI Product Owner

    Messages:
    345
    So was it just the editor that worked this way? unfortunately it doesn't want to work on todays machines :(
    But on the other hand how did this guy get the partial data by midi dump? And why is there an option on the xt to add aliasing to get the mw1 like sound?
     
    Last edited: Nov 2, 2017
  12. EvilDragon

    EvilDragon Well-Known Member

    Messages:
    19,938
    Yes, just the editor worked that way. It calculated the waveforms from partials then sent each waveform's samples via sysex (there are 256 points in a single cycle waveform on Microwaves, IIRC).
     
    • Informative Informative x 1
  13. sellotape

    sellotape NI Product Owner

    Messages:
    345
    Damn now i would like to know how to get this clean sound in reaktor. Really need more spare time.
     
  14. Paule

    Paule NI Product Owner

    Messages:
    7,555
  15. sellotape

    sellotape NI Product Owner

    Messages:
    345
    I've awaken the dusty beauty from sleep and i got to say you guys are right. The calculation for the user waves is working this way but they are written as singel cycle waveform.
    Paule, tanks for the advise but I'm looking for some core based stuff that goes beyond basic 2 or 4 point interpolation. May be it's just my ears that got fastidiously over the years but i'm not that happy with the most solutions. Octavated Wavesets like in the Carbon is a nice thing but it's still the same when it comes to pitch shifts. Does anyone know if crossfading thru the octaved waves would make sense?
    The oki computer is very intersting too btw. Think i've got to tech myself some more dsp skills but i'm on a very beginner state there and just starting to understand how basic bandlimited oscillators work. The bad thing is that i'm working 50-60 hours a week at time so my learing curve is getting endless and i don't think i ever will reach the level to get a bandlimited wavetable but if anyone knows a good paper please let me know.
    Anyway, for now a sinebank based wavetable gives the best result and it would be awesome to see a improved version with fm. I think todays machines could handle that.
    Well that's it for now, time is running. Thanks for opening my eyes and the nice conversation guys.
     
  16. mosaic_

    mosaic_ Guest

    If you're willing to integrate the table when you load it, you can basically do DPW antialiasing on any wavetable.
     
    • Informative Informative x 1
  17. sellotape

    sellotape NI Product Owner

    Messages:
    345
    Last edited: Nov 3, 2017
    • Like Like x 1
  18. Jonathan Tremblay

    Jonathan Tremblay NI Product Owner

    Messages:
    402
    Fascinating..
     
    • Funny Funny x 1
  19. Jonathan Tremblay

    Jonathan Tremblay NI Product Owner

    Messages:
    402
    I originally made Wave-Table for structured WT as that was the purpose, however this is just raw playback of the data stored in the Audio Table, if you look in the block you will find some ingenious stuff ;);). The incoming dropped file is scanned based upon the sample-rate and sample size, then sliced up the Y axis, which is how I got the interpolation to work upon playback. Sounds decent enough for what I wanted. As for the live-sample it does the same, but the length of time you can record is directly correlated to the sample size, sample-rate, and length of the audio table. Larger sample size will always correlate to more recording time, however you will have larger single-cycle waveforms, and there is only vertical scanning of the Y axis, so when you record at a large sample size and scale it down, you can't scrub across the X axis, as it would create discontinuities across the Y plane.

    As always here's my shameless plug of WaveEdit, which I recommend for WT creation as well as Single-Cycle creation: http://synthtech.com/waveedit/
    (I'm not affiliated with them)
     
  20. Thala

    Thala NI Product Owner

    Messages:
    577
    i have seen a tool made by alke if i remember correctly.
    this tool is analysing the audio and generate a bandlimited wave(table).
    as long as you use bandlimited samples a lot alias can be avoided. serum works this way too.
    but i cant search on my phone. search for riccardo ferri aka alke creator in the uploads.