Tech Preview: Hive Wavetables
-
- KVRian
- 996 posts since 11 Dec, 2003
- KVRian
- 1353 posts since 31 Mar, 2014
Just a short question: I just asked myself how the whole 'spectral fade' and 'zero phase' works mathematically. (?) Or is this a top industry secret?
I don't think that a FFT of the wavetable has to be done, does it?
Actually do the Reason guys do it in a similar way with their Europa synth? Because there they also have this filter. Couldn't get my head around that yet.
Actually do the Reason guys do it in a similar way with their Europa synth? Because there they also have this filter. Couldn't get my head around that yet.
- u-he
- Topic Starter
- 30180 posts since 8 Aug, 2002 from Berlin
It's no big secret. It might even be explained in the Serum manual, since Serum has similar options when interpolating frames. Only, Hive does it in realtime (a couple of hundred times a second) and also when transitioning between single frames.u-u-u wrote:Just a short question: I just asked myself how the whole 'spectral fade' and 'zero phase' works mathematically. (?) Or is this a top industry secret?I don't think that a FFT of the wavetable has to be done, does it?
Actually do the Reason guys do it in a similar way with their Europa synth? Because there they also have this filter. Couldn't get my head around that yet.
There is indeed FFT involved.
For Zero Phase, all imaginary and real parts are "pythagorassed" into magnitudes. These magnitudes become the new imaginary part (magnitudes become sines, all cosines are set to zero). When the wavetable position is between two frames, a simple crossfade of magnitudes is used. As a result, there are not phase cancellations when crossfading two frames. Discarding phase information however makes some waveforms sound and look differently.
For Spectral Fade, all Magnitudes are crossfaded as well between two frames. But also all Phases are shifted the shortest way (clockwise or counter clockwise, if you will). Afterwards it's all some expensive atan2() to recreate the imaginary and real parts, and iFFT back to a wavetable. Spectral fade thus preserves phase information while minimising the amount of phase cancellation to a minimum. It is about twice as CPU intensive than the other methods though, which might be a consideration.
In general however, a simple crossfade should be sufficient in most cases.
To illustrate things, try this script:
Code: Select all
NumFrames=2
Wave "sin(2*pi*phase)"
Wave start=1 "-sin(2*pi*phase)"I have not looked at Europa yet, so can't say and even if, probably wouldn't know.
- KVRian
- 1353 posts since 31 Mar, 2014
Urs wrote:It's no big secret. (............)u-u-u wrote:Just a short question: (...)
I think I don't even need to try out the script because I already can imagine after your good description.
I don't own it but as far as I understand it, Europa has also algorithmic wavetables with some sort of interpolation but then they also have a so-called spectral filter.Urs wrote:I have not looked at Europa yet, so can't say and even if, probably wouldn't know.
So I guess if stuff like this is done using FFT, I can image a bit more what they do:
The oscillator has a 'shape' knob and two modifiers -> so these three define the wavetable that is somehow calculated on the fly.
Then the 'spectral filter' is a applied in the frequency domain after the FFT. It has keytracking so needs some clever mapping of the frequencies to the harmonics of the wavetable spectrum. The harmonics can be manipulated by some algorithms.
Then the whole thing is transformed back using iFFT as you described. This is my guess.
if you want to have a look, it can be tested in the webbrowser (https://www.propellerheads.se/europa).
EDIT: I know it's slightly off-topic but maybe not and gives some good inspiration?
- KVRAF
- 11162 posts since 16 Mar, 2003 from Porto - Portugal
It was the 32-bit version of Hive checked in REAPER x32 this time, as I usually don't use 32-bit versions in 64-bit hosts when there are 64-bit versions. The only exception is VSTHost, which I use mainly to test instruments and to create sounds.Urs wrote:Thanks, we'll check this out. Would that be the 32 bit version of Hive used in a 64-bit host, or is that the 64-bit version of Hive in a 32-bit host?fmr wrote:Checked again the reported problem with the Spectral Fade, and I got the crash again, this time in REAPER. It seems to happen only in the 32-bit version. The 64-bit version works OK.
Previous crashes I had were in VSTHost. I was loading Hive 32-bit inadvertently, thinking I was using the 64-bit version.
Hive x64 works OK.
Fernando (FMR)
- KVRian
- 1353 posts since 31 Mar, 2014
Ah, but let me guess: you're actually crossfading between more than two frames because of the tables ans the waveform Pos + table Pos knobs. So it's rather 4 frames. At least from what i understand.Urs wrote:(...) between two frames (...)
- u-he
- Topic Starter
- 30180 posts since 8 Aug, 2002 from Berlin
Yes, 4 frames if the Multi Table feature is activated. Interpolation in the Multi Table direction it's always only crossfade though (first both tables are interpolated according to wavetable position, then they're crossfade according to Multi Frame position). The Spectral fade /w phase would be too expensive in 2D and if Zero Phase is selected, crossfading two Zero Phase interpolated wavetables is still also Zero Phaseu-u-u wrote:Ah, but let me guess: you're actually crossfading between more than two frames because of the tables ans the waveform Pos + table Pos knobs. So it's rather 4 frames. At least from what i understand.Urs wrote:(...) between two frames (...)
- KVRian
- 1353 posts since 31 Mar, 2014
Ah nice, yes makes sense to rather save the CPU here.Urs wrote:Yes, 4 frames if the Multi Table feature is activated. Interpolation in the Multi Table direction it's always only crossfade though (first both tables are interpolated according to wavetable position, then they're crossfade according to Multi Frame position). The Spectral fade /w phase would be too expensive in 2D and if Zero Phase is selected, crossfading two Zero Phase interpolated wavetables is still also Zero Phaseu-u-u wrote:Ah, but let me guess: you're actually crossfading between more than two frames because of the tables ans the waveform Pos + table Pos knobs. So it's rather 4 frames. At least from what i understand.Urs wrote:(...) between two frames (...)
- KVRist
- 430 posts since 4 Jun, 2018 from The UK
I discovered a little bug where if you have a Wavetable window open, and you open the preset browser, then you can't click on the preset browser where the wavetable window is. The wavetable window is obscured by the presets browser, but it seems to be blocking the input for the preset browser.
Not sure if it was already mentioned or not. Probably an easy fix, and your team may already be aware of it
Not sure if it was already mentioned or not. Probably an easy fix, and your team may already be aware of it
- u-he
- Topic Starter
- 30180 posts since 8 Aug, 2002 from Berlin
Yep, we know. It's a bug in the way the UI is structured. The preset browser is an overlay just like the wavetable windows. And somehow the WT windows get the clicks when they're open behind the browser. It'll be fixed in a few weeks.Ranoka wrote:I discovered a little bug where if you have a Wavetable window open, and you open the preset browser, then you can't click on the preset browser where the wavetable window is. The wavetable window is obscured by the presets browser, but it seems to be blocking the input for the preset browser.
Not sure if it was already mentioned or not. Probably an easy fix, and your team may already be aware of it
- KVRAF
- 4141 posts since 11 Aug, 2006 from Texas
As I try these posts online one thing I'm wishing for is the ability to cut and paste .uhm text into the waveform window. I love that I can do so with Valhalla presets and for something as sharable, and text-editable, as these gems are I would love the same.
Feel free to call me Brian.
- KVRian
- 1067 posts since 28 Dec, 2004
+1 Brian. It would be nice, but then how you'll save the Wt? We need a name for that also.
I was thinking about the 2 Wavetable buttons the big one and the other in the
waveform list. Maybe it would be enough one of them? I prefer the separate button if it is turning on the wavetable funcion already.
Another thing is the floating window. I constanly moving it away from either
the filter or from the modmapper. Maybe it would better fit in the octagon?
Even if it will cover up the Fx page? The best would be to get outside the border of hive?
I was thinking about the 2 Wavetable buttons the big one and the other in the
waveform list. Maybe it would be enough one of them? I prefer the separate button if it is turning on the wavetable funcion already.
Another thing is the floating window. I constanly moving it away from either
the filter or from the modmapper. Maybe it would better fit in the octagon?
Even if it will cover up the Fx page? The best would be to get outside the border of hive?
- KVRian
- 642 posts since 22 Jun, 2018
One thing I'd like to see is being able to import waves from subfolders.
Like this:
Currently I have all my waves and .uhm scripts in the same folder, which basically leads to a bunch of duplicates. Ideally I'd like to only have my .uhm scripts in the root folder.
Like this:
Code: Select all
Import "My Waves/Awesome Wavetable.wav"- KVRian
- 642 posts since 22 Jun, 2018
Another stupid little script that isn't even worth posting, but I think it's a quite useful utility script, so to speak.
Yes, that's just noise 
Use the fastest auto scan speed to get a white noise approximation at low pitches. This can be quite useful for drum sounds and such, when you want to have a consistent noise that sounds exactly the same every note.
It can also be quite useful to disable pitch key tracking for this. That can be done in Hive by setting up 3 modulation slots in the mod matrix which modulate the pitch of the oscillator down by KeyFollow, two of which set to -100% and one to ~-66%.
Like this:

Now I'm finally going to check out the scripts posted here and try to find the preset I promised to dig up
Code: Select all
NumFrames = 256
Wave "rand*2-1"Use the fastest auto scan speed to get a white noise approximation at low pitches. This can be quite useful for drum sounds and such, when you want to have a consistent noise that sounds exactly the same every note.
It can also be quite useful to disable pitch key tracking for this. That can be done in Hive by setting up 3 modulation slots in the mod matrix which modulate the pitch of the oscillator down by KeyFollow, two of which set to -100% and one to ~-66%.
Like this:

Now I'm finally going to check out the scripts posted here and try to find the preset I promised to dig up
- KVRAF
- 24407 posts since 7 Jan, 2009 from Croatia
.uhm files are relatively short, they could be embedded into .h2p... Or even packed in that binary part at the end of .h2p...hollo wrote:+1 Brian. It would be nice, but then how you'll save the Wt? We need a name for that also.
