[.uhm] FM Synthesis in Hive

Official support for: u-he.com
Post Reply New Topic
RELATED
PRODUCTS

Post

ZaBong69 wrote: Tue Feb 19, 2019 7:49 pmUrs, you are basically handing a bunch of 4-year olds the synth equivalent of a box of handgranades to play with. I am very grateful for this ;)
I couldn't agree more! It's nice to be a 4-year old again, BTW.

Post

4-year olds
Handgrenades


Sounds like a game of Worms is in order! :)

Post

This one produces great basis for bass sounds:

>>
Info "Wait for the hidden square waves to appear"
NumFrames = 4

Spectrum Start=0 End=1 "(1/index)*((index % 11)==1)+(1/index)*table"
Spectrum Start=0 End=1 "(1/index)*((index % 4)==2)"

Spectrum Start=2 End=3 "(1/index)*((index % 9)==2)"
Spectrum Start=2 End=3 "(1/index)*((index % 7)==3)+(1/index)*table"


Spectrum lowest=0 highest=0 "0" // DC-removal trick
Normalize start=0 end=4
>>

I recommend spectral morphing...

Post

Here's a better bell, with more metallic sound:

Code: Select all

NumFrames = 1

Seed = 573984569283
//       |
//     Change me, completely!

Spectrum lowest=2 highest=100 "((index % round(rand * 7))==1) * rand/(index)^2"
//                ___________                        ___        ______________
//                     |                              |              |
//                If set too high, it can             |         Random magnitude
//                add a lot of ultra high             |         with slope
//                frequencies, ecpecially            Harmonic
//                when working in higher             gap
//                samplerates like 96k.

Normalize base=all db=-12 // Reducing loudness of all overtones
Spectrum lowest=1 highest=1 "1" // Adding fundamental

Post

drzhnn wrote: Tue Feb 19, 2019 8:37 pm Here's a better bell, with more metallic sound:

Code: Select all

NumFrames = 1

Seed = 573984569283
//       |
//     Change me, completely!

Spectrum lowest=2 highest=100 "((index % round(rand * 7))==1) * rand/(index)^2"
//                ___________                        ___        ______________
//                     |                              |              |
//                If set too high, it can             |         Random magnitude
//                add a lot of ultra high             |         with slope
//                frequencies, ecpecially            Harmonic
//                when working in higher             gap
//                samplerates like 96k.

Normalize base=all db=-12 // Reducing loudness of all overtones
Spectrum lowest=1 highest=1 "1" // Adding fundamental
Some of these scripts from today have really fantastic results. Question: would it be possible to stitch like three or more of these together (with different seed values) to make a multi-frame wavetable with multiple bell shapes in a single script? I figure it is, but I'd have no idea how.

Post

You can actually just increase the number of frames in the script you quoted. Like NumFrames = 100. Since the script uses rand function to generate harmonics and their magnitudes, it will generate random values at each operation across any number of frames. Using same Seed though. Also you can change the first rand to randf or rands to get different characters. The difference between various random functions is briefly explained in the UHM manual, but as I see it:

rand - generates new value every time you call it. Totally random.
randf - generate a random value once per frame.
rands - generates a random value at each index, but doesn't change across frames. So random value for say index 5 in frames 1 and 10 will be the same.

^^^ This explanation needs confirmation though :oops:

If you really want to try different Seeds, then this should work:

Code: Select all

NumFrames = 20

Seed = 1
Spectrum lowest=2 highest=100 start=0 end=9 "((index % round(rand * 7))==1) * rand/(index)^2"

Seed = 2
Spectrum lowest=2 highest=100 start=10 end=19 "((index % round(rand * 7))==1) * rand/(index)^2"

Normalize base=all db=-12
Spectrum lowest=1 highest=1 "1"
^ Just use start= and end= to specify frames you want to apply the formulas to.

Post

Thanks for the detailed reply. Will check it out! I don't think I'll ever really get scripting, and that's ok, but I hope to be able to find cool things in scripts and figure out enough to combine and modify those a bit to create some interesting variations.

Post

Funkybot's Evil Twin wrote: Wed Feb 20, 2019 5:08 am Thanks for the detailed reply. Will check it out! I don't think I'll ever really get scripting, and that's ok, but I hope to be able to find cool things in scripts and figure out enough to combine and modify those a bit to create some interesting variations.
Same here. Not knowing enough about the inner workings of UHM, "combine and modify" is precisely what I resorted to for most of the factory scripts. Since then I've lost what little insight I had, so I reckon I'll have to re-learn it all (when I find the time)... should be fun!

Post

Those bells are great, but I think they are more useful without the fundamental (simply // comment out the final line of code). Thanks for this!

Post

drzhnn wrote: Tue Feb 19, 2019 10:32 pm rand - generates new value every time you call it. Totally random.
randf - generate a random value once per frame.
rands - generates a random value at each index, but doesn't change across frames. So random value for say index 5 in frames 1 and 10 will be the same.

^^^ This explanation needs confirmation though :oops:
Affirmative!

Post

So, I don't get the why behind any of the math, but I took drzhnn's example and made a 10 frame wavetable with random seed values. Each sounds like a slightly different take on a bell.

Code: Select all

Info "10 random bell waveforms to play with."

NumFrames = 10

Seed = 6503
Spectrum lowest=2 highest=100 start=0 end=0 "((index % round(rand * 7))==1) * rand/(index)^2"

Seed = 1345
Spectrum lowest=2 highest=100 start=1 end=1 "((index % round(rand * 7))==1) * rand/(index)^2"

Seed = 7253
Spectrum lowest=2 highest=100 start=2 end=2 "((index % round(rand * 7))==1) * rand/(index)^2"

Seed = 2230
Spectrum lowest=2 highest=100 start=3 end=3 "((index % round(rand * 7))==1) * rand/(index)^2"

Seed = 1107
Spectrum lowest=2 highest=100 start=4 end=4 "((index % round(rand * 7))==1) * rand/(index)^2"

Seed = 312
Spectrum lowest=2 highest=100 start=5 end=5 "((index % round(rand * 7))==1) * rand/(index)^2"

Seed = 6124
Spectrum lowest=2 highest=100 start=6 end=6 "((index % round(rand * 7))==1) * rand/(index)^2"

Seed = 6927
Spectrum lowest=2 highest=100 start=7 end=7 "((index % round(rand * 7))==1) * rand/(index)^2"

Seed = 7448
Spectrum lowest=2 highest=100 start=8 end=8 "((index % round(rand * 7))==1) * rand/(index)^2"

Seed = 669
Spectrum lowest=2 highest=100 start=9 end=9 "((index % round(rand * 7))==1) * rand/(index)^2"

Normalize base=all db=-12
Spectrum lowest=1 highest=1 "1"

Post

Damn it’s so tempting to dive-in ! Everything .uhm related I’ve heard sounds so lush and pristine, quite stunning really.

I love FM synthesis and Hive is getting more and more impressive (I’m positive I’ll buy it soon) but I have to ask : aside from generating WTs and RT scanning / morphing etc between frames, is anything-else FM related possible with H1.2 (or planned for Hive 2)?

Bazille is my fav synth, I use it almost exclusively, and I’m having incredible fun trying tons of weird FM patches with it... but it can’t go into similarly pristine (can’t find another word really) territories. Don’t get me wrong, I love Bazille’s sonics, but at times I wish I could get the same crystal clear tones I hear with FM based .uhm WTs.

Is the learning curve steep ? I’m knee-deep into understanding / learning TidalCycles and live-coding.. so I’m not that afraid of coding ;)
Computer musician / Ableton Certified Trainer / Mastering engineer
.com
3OP

Post

EvilDragon wrote: Tue Feb 19, 2019 7:57 pm 4-year olds
Handgrenades


Sounds like a game of Worms is in order! :)
I love Worms. Maybe a net game sometime. :lol:
It is no measure of health to be well adjusted to a profoundly sick society. - Jiddu Krishnamurti

Post

nilhartman wrote: Wed Mar 13, 2019 8:27 pmI love FM synthesis and Hive is getting more and more impressive (I’m positive I’ll buy it soon) but I have to ask : aside from generating WTs and RT scanning / morphing etc between frames, is anything-else FM related possible with H1.2 (or planned for Hive 2)?
The main difference between Hive and "real FM" is that Hive creates aliasing free wavetables. So you can go into FM-territory which sounds horrible in a normal FM synth. On the drawback side, wavetables can not have inharmonic content above the fundamental while FM can. So Hive can not reproduce all FM sounds, only the harmonic ones really.

There are tentative ideas for FM in the oscillator section, but I can not yet say if it happens and I am pretty sure it won't be in 2.0.

Post

Thank you Urs! The aliasing-free parts already got my attention, as I said I wish I could also get similar results (when needed / wanted) with Bazile.
Do you plan to gather all these .uhm resources in a dedicated manual ?
Anyway, these .uhm WT sound absolutely fantastic, congrats!
Computer musician / Ableton Certified Trainer / Mastering engineer
.com
3OP

Post Reply

Return to “u-he”