u-he Hive 1.2 - free update - adds wavetables and more
- u-he
- Topic Starter
- 30175 posts since 8 Aug, 2002 from Berlin
Don't forget that Hive also has the 2D-option. Thus it needs to be able to interpolate seamlessly with fewer frames.
-
Funkybot's Evil Twin Funkybot's Evil Twin https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=116627
- KVRAF
- 12438 posts since 16 Aug, 2006
Am I reading that right? If I have a bunch of single cycle .wavs I can use an uhm script to create a wavetable and Hive will do all the interpolation? That would totally warrants a tutorial if so.Urs wrote: Fri Dec 21, 2018 4:07 pmBut also: Hive also has the capability of loading several single cycle waveforms and creating additional interpolated frames in-beteen. It can also store that as .wav. But you have to use a uhm script for it. Once you got the script, you can copy/paste and do hundreds of such wavetables in a few minutes, in much less time than any UI-driven editor.
- u-he
- Topic Starter
- 30175 posts since 8 Aug, 2002 from Berlin
Yeah, we need to do a tut...Funkybot's Evil Twin wrote: Fri Dec 21, 2018 4:18 pmAm I reading that right? If I have a bunch of single cycle .wavs I can use an uhm script to create a wavetable and Hive will do all the interpolation? That would totally warrants a tutorial if so.Urs wrote: Fri Dec 21, 2018 4:07 pmBut also: Hive also has the capability of loading several single cycle waveforms and creating additional interpolated frames in-beteen. It can also store that as .wav. But you have to use a uhm script for it. Once you got the script, you can copy/paste and do hundreds of such wavetables in a few minutes, in much less time than any UI-driven editor.
Hive can even "morph" two cycles with a formant extraction algorithm. Sometimes this sounds crap, but it often sounds rad.
Unfortunately I've been distracted with too many things to follow up on uhm tutorials.
Anyhow, it's basically, you throw your single cycles in a folder along with your "MorphThem.uhm". In the uhm, you load the single cycle waveforms (hint: target=aux1) and copy them to the frame positions you want in your main buffer. Then you use "Interpolate" with the mode you want to create the additional frames. Then use "Export" to write them into a .wav file.
Lemme see if I find the time to try it...
- KVRAF
- 26930 posts since 3 Feb, 2005 from in the wilds
I highlighted the difference you named yourself. It's not realtime. But that is not the only difference.fmr wrote: Fri Dec 21, 2018 4:00 pmIt creates the interpolation in the wavetable, non-real-time. What's the difference?pdxindy wrote: Fri Dec 21, 2018 3:59 pm You are talking about a different function. Serum can generate new frames from a smaller set of existing ones. But it does not interpolate between frames in realtime while playing.
Okay, suppose you have a 256 frame wavetable resynthesized from audio. Import that into Serum, and Serum can only play that as distinct steps. It has no interpolation at all.
The only option is to manually reduce the number of frames in the editor so there is room to run the algos you speak of. However, it is no longer the original wavetable at that point.
-
Funkybot's Evil Twin Funkybot's Evil Twin https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=116627
- KVRAF
- 12438 posts since 16 Aug, 2006
Sweet!Urs wrote: Fri Dec 21, 2018 4:24 pmYeah, we need to do a tut...Funkybot's Evil Twin wrote: Fri Dec 21, 2018 4:18 pmAm I reading that right? If I have a bunch of single cycle .wavs I can use an uhm script to create a wavetable and Hive will do all the interpolation? That would totally warrants a tutorial if so.Urs wrote: Fri Dec 21, 2018 4:07 pmBut also: Hive also has the capability of loading several single cycle waveforms and creating additional interpolated frames in-beteen. It can also store that as .wav. But you have to use a uhm script for it. Once you got the script, you can copy/paste and do hundreds of such wavetables in a few minutes, in much less time than any UI-driven editor.
Hive can even "morph" two cycles with a formant extraction algorithm. Sometimes this sounds crap, but it often sounds rad.
Unfortunately I've been distracted with too many things to follow up on uhm tutorials.
Anyhow, it's basically, you throw your single cycles in a folder along with your "MorphThem.uhm". In the uhm, you load the single cycle waveforms (hint: target=aux1) and copy them to the frame positions you want in your main buffer. Then you use "Interpolate" with the mode you want to create the additional frames. Then use "Export" to write them into a .wav file.
Lemme see if I find the time to try it...
- u-he
- Topic Starter
- 30175 posts since 8 Aug, 2002 from Berlin
Actually, I did a video once:
Here is the same .wav file (with 2 single cycles) and an updated (and well documented) script that does the same:
https://uhedownloads-heckmannaudiogmb.n ... _small.zip
You can easily load multiple .wav files and extract the frames wherever you want, experiment with crossfade, spectral and morph interpolation and (as shown in the script) export these as .wav
It's very powerful, and IMHO is worth getting in touch with.
Addendum: Oops, I initially uploaded the .zip with the resulting .wav inside as well... re-upped smaller version with just the files needed.
Addendum2: Oi, the script in the video already used the import function... all is well...
Here is the same .wav file (with 2 single cycles) and an updated (and well documented) script that does the same:
https://uhedownloads-heckmannaudiogmb.n ... _small.zip
You can easily load multiple .wav files and extract the frames wherever you want, experiment with crossfade, spectral and morph interpolation and (as shown in the script) export these as .wav
It's very powerful, and IMHO is worth getting in touch with.
Addendum: Oops, I initially uploaded the .zip with the resulting .wav inside as well... re-upped smaller version with just the files needed.
Addendum2: Oi, the script in the video already used the import function... all is well...
Last edited by Urs on Fri Dec 21, 2018 4:48 pm, edited 1 time in total.
-
- KVRist
- 331 posts since 11 Apr, 2004 from Brazil
Thanks, Urs. Now you have a point, lots of them.Urs wrote: Fri Dec 21, 2018 3:45 pmAs with all such topics: It depends on what you want/need. Serum is very well established and it's advantages and disadvantages are very well known. Hive in our opinion is very underrated.PlasticSoul wrote: Fri Dec 21, 2018 12:06 pmurs said hive is a sylenth1 alternative, can it be a serum (maybe a massive) alternative now too?
Someone on Facebook wrote the other day, paraphrasing: "Serum eats them all for breakfast", meaning Hive and other synths. I answered "not in terms of wavetable interpolation quality, CPU usage, workflow, preset management, formula parsing, modulation routing".
They are different synths. Hive doesn't do this, Serum doesn't do that.
Music for the soul...
https://soundcloud.com/anthonyaquino
https://soundcloud.com/anthonyaquino
-
Funkybot's Evil Twin Funkybot's Evil Twin https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=116627
- KVRAF
- 12438 posts since 16 Aug, 2006
So forgive the total newb question, but how are the frames counted? For instance...Urs wrote: Fri Dec 21, 2018 4:41 pm Actually, I did a video once:
Here is the same .wav file (with 2 single cycles) and an updated (and well documented) script that does the same:
https://uhedownloads-heckmannaudiogmb.n ... _small.zip
You can easily load multiple .wav files and extract the frames wherever you want, experiment with crossfade, spectral and morph interpolation and (as shown in the script) export these as .wav
It's very powerful, and IMHO is worth getting in touch with.
Addendum: Oops, I initially uploaded the .zip with the resulting .wav inside as well... re-upped smaller version with just the files needed.
Addendum2: Oi, the script in the video already used the import function... all is well...
//---------------------------------------------
//
// copy the 2nd frame (#1) to position 100
//
//---------------------------------------------
Move start=1 end=1 to=100
That's very easy to deal with if morphing between two single-cycle waveforms but what if the .wav file had 3 or more single-cycle waveforms. So just for simplicity, let's say it had 3 single-cycle waveforms in them, each 2048 samples; and I want to do the same thing and copy the 3rd frame to position 100 in Hive. With the 2nd frame being at position 50. Would that portion of the script simply look like this:
Move start=2 end=2 to=100
I guess my question is: is Hive counting every 2048th sample (unless we tell it otherwise) as a new frame (begining at zero), and at that point, the frame count just increases sequentially? Or is 0 the begining and 1 the end regardless of the number of frames in the wavetable?
I could try to experiment with this later on, but figured I'd ask in the meantime. This is all entirely new to me.
- KVRAF
- 11162 posts since 16 Mar, 2003 from Porto - Portugal
This is another new feature I wasn't aware yet. Will definitely try that, since I was using Serum and AudioTerm for exactly those tasks.Urs wrote: Fri Dec 21, 2018 4:41 pm Actually, I did a video once:
Here is the same .wav file (with 2 single cycles) and an updated (and well documented) script that does the same:
https://uhedownloads-heckmannaudiogmb.n ... _small.zip
You can easily load multiple .wav files and extract the frames wherever you want, experiment with crossfade, spectral and morph interpolation and (as shown in the script) export these as .wav
It's very powerful, and IMHO is worth getting in touch with.
Addendum: Oops, I initially uploaded the .zip with the resulting .wav inside as well... re-upped smaller version with just the files needed.
Addendum2: Oi, the script in the video already used the import function... all is well...
Fernando (FMR)
- KVRAF
- 11162 posts since 16 Mar, 2003 from Porto - Portugal
Fair enough. That's an advantage I didn't think at first, when comparing Serum and Hive interpolations, maybe because I was used to 64 waves wavetables, and interpolating 64 waves into 256 waves is enough to soften the transitions considerably.pdxindy wrote: Fri Dec 21, 2018 4:28 pmI highlighted the difference you named yourself. It's not realtime. But that is not the only difference.fmr wrote: Fri Dec 21, 2018 4:00 pmIt creates the interpolation in the wavetable, non-real-time. What's the difference?pdxindy wrote: Fri Dec 21, 2018 3:59 pm You are talking about a different function. Serum can generate new frames from a smaller set of existing ones. But it does not interpolate between frames in realtime while playing.
Okay, suppose you have a 256 frame wavetable resynthesized from audio. Import that into Serum, and Serum can only play that as distinct steps. It has no interpolation at all.
The only option is to manually reduce the number of frames in the editor so there is room to run the algos you speak of. However, it is no longer the original wavetable at that point.
Fernando (FMR)
- u-he
- Topic Starter
- 30175 posts since 8 Aug, 2002 from Berlin
It takes some time getting used to. First off, when you load a .wav file normally into Hive, the info field shows you how many frames (cycles of 2048 samples each) it has. That's (hopefully) very convenient to quickly check out what you got.Funkybot's Evil Twin wrote: Fri Dec 21, 2018 5:41 pm So forgive the total newb question, but how are the frames counted? For instance...
//---------------------------------------------
//
// copy the 2nd frame (#1) to position 100
//
//---------------------------------------------
Move start=1 end=1 to=100
That's very easy to deal with if morphing between two single-cycle waveforms but what if the .wav file had 3 or more single-cycle waveforms. So just for simplicity, let's say it had 3 single-cycle waveforms in them, each 2048 samples; and I want to do the same thing and copy the 3rd frame to position 100 in Hive. With the 2nd frame being at position 50. Would that portion of the script simply look like this:
Move start=2 end=2 to=100
I guess my question is: is Hive counting every 2048th sample (unless we tell it otherwise) as a new frame (begining at zero), and at that point, the frame count just increases sequentially? Or is 0 the begining and 1 the end regardless of the number of frames in the wavetable?
I could try to experiment with this later on, but figured I'd ask in the meantime. This is all entirely new to me.
In the script, frames are counted from 0. Such that a wavetable with 14 frames starts at frame 0 and ends at frame 13. If you want to copy the last 3 frames (11, 12, 13) to position 98, 99 and 100, you'd write
Move start=11 end=13 to=98
Whenever you copy only a single frame, start and end are the same.
As I said, we need to to gazillions more tutorials. I just didn't get to set them up yet.
- u-he
- Topic Starter
- 30175 posts since 8 Aug, 2002 from Berlin
An addendum to the interpolation issue:
Many synths used to have steppy parameters. These were particularly audible when turning the filter cutoff knob with resonance turned up. Like, if cutoff wasn't smoothed, turning the knob would audibly be steppy. This happens quite prominently with a knob resolution of 100 steps. While a knob resolution of 256 steps would probably sound much smoother, it'll still be audible.
Now, the main purpose of wavetable scanning is to offer sonic movement similar to what a cutoff sweep does. The more dramatic, the better, typically. Which also means that chances are good that things get audibly steppy without further interpolation.
Many synths used to have steppy parameters. These were particularly audible when turning the filter cutoff knob with resonance turned up. Like, if cutoff wasn't smoothed, turning the knob would audibly be steppy. This happens quite prominently with a knob resolution of 100 steps. While a knob resolution of 256 steps would probably sound much smoother, it'll still be audible.
Now, the main purpose of wavetable scanning is to offer sonic movement similar to what a cutoff sweep does. The more dramatic, the better, typically. Which also means that chances are good that things get audibly steppy without further interpolation.
-
- Banned
- 3889 posts since 3 Feb, 2010
I was reading this and its a bit off topic, but i could not ignore the fact that KVRers are making alot of topics about alternatives. Whats up with thatPlasticSoul wrote: Fri Dec 21, 2018 4:48 pmThanks, Urs. Now you have a point, lots of them.Urs wrote: Fri Dec 21, 2018 3:45 pmAs with all such topics: It depends on what you want/need. Serum is very well established and it's advantages and disadvantages are very well known. Hive in our opinion is very underrated.PlasticSoul wrote: Fri Dec 21, 2018 12:06 pmurs said hive is a sylenth1 alternative, can it be a serum (maybe a massive) alternative now too?
Someone on Facebook wrote the other day, paraphrasing: "Serum eats them all for breakfast", meaning Hive and other synths. I answered "not in terms of wavetable interpolation quality, CPU usage, workflow, preset management, formula parsing, modulation routing".
They are different synths. Hive doesn't do this, Serum doesn't do that.![]()
- KVRAF
- 11162 posts since 16 Mar, 2003 from Porto - Portugal
OK, I just tried to morph a wavetable with 14 frames using the UHM example script, but the results were NOT what I expected. Maybe I did something wrong when adapting the script. Loading the WAV wavetable in Hive and using the built-in interpolation works as expected.
I would love if someone helps me with this. I'm completely newb in what concerns scripts, so most certainly I'm doing something wrong.
Original WAV wavetable is here:
https://1drv.ms/u/s!AlYyQJYLETH8iiC277ItJoKdNe9G
Here is the script adapted. Maybe the problem resides in the "Move" instructions (???):
»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
//---------------------------------------------
//
// set number of frames to 256 (0-255)
//
//---------------------------------------------
NumFrames = 256
//---------------------------------------------
//
// load file Korg EX-8000 Wavetable 14.wav
//
// This wavetable has fourteen frames. Each frame corresponds to a waveform
// drawn by hand in Turbosynth from the graphic representation of the EX-8000
// waves manual. I left out the saw wave and sine wave.
//
//---------------------------------------------
Import "Korg EX-8000 Wavetable 14.wav"
//---------------------------------------------
//
// Normalize frames to 0dB RMS
//
//---------------------------------------------
// Normalize dB=0.0 start=0 end=14
//---------------------------------------------
//
// copy frames (#0x) to their reference position
//
//---------------------------------------------
Move start=2 end=2 to=21
Move start=3 end=3 to=40
Move start=4 end=4 to=60
Move start=5 end=5 to=79
Move start=6 end=6 to=99
Move start=7 end=7 to=119
Move start=8 end=8 to=138
Move start=9 end=9 to=158
Move start=10 end=10 to=178
Move start=11 end=11 to=197
Move start=12 end=12 to=217
Move start=13 end=13 to=236
Move start=14 end=14 to=255
//---------------------------------------------
//
// Interpolate using the "Drama" type
//
//---------------------------------------------
Interpolate start=0 end=255 Type=Morph1
Info "Korg EX-8000 Wavetable here!"
Export "Korg EX-8000 Wavetable Morphed.wav"
I would love if someone helps me with this. I'm completely newb in what concerns scripts, so most certainly I'm doing something wrong.
Original WAV wavetable is here:
https://1drv.ms/u/s!AlYyQJYLETH8iiC277ItJoKdNe9G
Here is the script adapted. Maybe the problem resides in the "Move" instructions (???):
»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
//---------------------------------------------
//
// set number of frames to 256 (0-255)
//
//---------------------------------------------
NumFrames = 256
//---------------------------------------------
//
// load file Korg EX-8000 Wavetable 14.wav
//
// This wavetable has fourteen frames. Each frame corresponds to a waveform
// drawn by hand in Turbosynth from the graphic representation of the EX-8000
// waves manual. I left out the saw wave and sine wave.
//
//---------------------------------------------
Import "Korg EX-8000 Wavetable 14.wav"
//---------------------------------------------
//
// Normalize frames to 0dB RMS
//
//---------------------------------------------
// Normalize dB=0.0 start=0 end=14
//---------------------------------------------
//
// copy frames (#0x) to their reference position
//
//---------------------------------------------
Move start=2 end=2 to=21
Move start=3 end=3 to=40
Move start=4 end=4 to=60
Move start=5 end=5 to=79
Move start=6 end=6 to=99
Move start=7 end=7 to=119
Move start=8 end=8 to=138
Move start=9 end=9 to=158
Move start=10 end=10 to=178
Move start=11 end=11 to=197
Move start=12 end=12 to=217
Move start=13 end=13 to=236
Move start=14 end=14 to=255
//---------------------------------------------
//
// Interpolate using the "Drama" type
//
//---------------------------------------------
Interpolate start=0 end=255 Type=Morph1
Info "Korg EX-8000 Wavetable here!"
Export "Korg EX-8000 Wavetable Morphed.wav"
Fernando (FMR)
-
- KVRian
- 986 posts since 29 May, 2011 from Germany
Now I´m curious - which would be an area where you´d call Serum either "currently better than Hive, we need to improve on this" or "well done in Serum, but not a feature we want to add/expand upon"?Urs wrote: Fri Dec 21, 2018 3:45 pm Someone on Facebook wrote the other day, paraphrasing: "Serum eats them all for breakfast", meaning Hive and other synths. I answered "not in terms of wavetable interpolation quality, CPU usage, workflow, preset management, formula parsing, modulation routing".They are different synths. Hive doesn't do this, Serum doesn't do that.
