I couldn't agree more! It's nice to be a 4-year old again, BTW.
[.uhm] FM Synthesis in Hive
- KVRAF
- 4122 posts since 23 May, 2004 from Bad Vilbel, Germany
- KVRAF
- 23101 posts since 7 Jan, 2009 from Croatia
4-year olds
Handgrenades
Sounds like a game of Worms is in order!
Handgrenades
Sounds like a game of Worms is in order!
-
- KVRist
- 138 posts since 5 Oct, 2015
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...
>>
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...
- KVRian
- 544 posts since 1 Jan, 2013 from Saint-Petersburg, Russia
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
-
Funkybot's Evil Twin Funkybot's Evil Twin https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=116627
- KVRAF
- 11511 posts since 16 Aug, 2006
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.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
- KVRian
- 544 posts since 1 Jan, 2013 from Saint-Petersburg, Russia
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
If you really want to try different Seeds, then this should work:
^ Just use start= and end= to specify frames you want to apply the formulas to.
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
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"
-
Funkybot's Evil Twin Funkybot's Evil Twin https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=116627
- KVRAF
- 11511 posts since 16 Aug, 2006
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.
- KVRAF
- 4122 posts since 23 May, 2004 from Bad Vilbel, Germany
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!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.
- KVRAF
- 4122 posts since 23 May, 2004 from Bad Vilbel, Germany
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!
- u-he
- Topic Starter
- 28062 posts since 8 Aug, 2002 from Berlin
Affirmative!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
-
Funkybot's Evil Twin Funkybot's Evil Twin https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=116627
- KVRAF
- 11511 posts since 16 Aug, 2006
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"
-
- KVRian
- 678 posts since 15 Feb, 2012 from France
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
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
- KVRAF
- 3828 posts since 15 Mar, 2002 from Underworld
I love Worms. Maybe a net game sometime.EvilDragon wrote: ↑Tue Feb 19, 2019 7:57 pm 4-year olds
Handgrenades
Sounds like a game of Worms is in order!
It is no measure of health to be well adjusted to a profoundly sick society. - Jiddu Krishnamurti
- u-he
- Topic Starter
- 28062 posts since 8 Aug, 2002 from Berlin
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.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)?
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.
-
- KVRian
- 678 posts since 15 Feb, 2012 from France
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!
Do you plan to gather all these .uhm resources in a dedicated manual ?
Anyway, these .uhm WT sound absolutely fantastic, congrats!