[.uhm] FM Synthesis in Hive

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

Post

cytospur wrote: Fri Sep 13, 2019 1:06 pm TX81z waveforms:

Code: Select all

Info "Yamaha TX81z waveforms\nBy Mark Holt\n"

NumFrames=8

Wave target=aux1 "1*phase" //Replace Integer with desired frequency

//OPL3_W1
Wave start=0 end=0 "sin(2*pi*aux1)"	
//OPL3_W2																	
Wave start=1 end=1 "(2*asin(sin(2*pi*aux1))/pi)^3"
//W3
Envelope L0=0 T1=0 L1=1 T2=0.5 L2=0 T3=1 L3=0
Wave start=2 end=2 "sin(pi*env(aux1%1))"																
//W4
Envelope L0=0 T1=0 L1=1 T2=0.5 L2=0 T3=1 L3=0
Wave start=3 end=3 "(2*asin(sin(pi*env((aux1)%1)))/pi)^3"												
//W5
Envelope L0=0 T1=0 L1=2 T2=0.5 L2=0 T3=1 L3=0
Wave start=4 end=4 "sin(-pi*env(aux1%1))"																
//W6
Envelope L0=0 T1=0 L1=2 T2=0.5 L2=0 T3=1 L3=0
Wave start=5 end=5 "(2*asin(sin(-pi*env(aux1%1)))/pi)^3"
//W7
Envelope L0=0 T1=0 L1=0 T2=0.25 L2=1 T3=0 L3=0 T4=0.25 L4=1 T5=0 L5=0 T6=0.5 L6=0
Wave start=6 end=6 "(sin(pi*env(aux1%1)))"
//W8
Envelope L0=0 T1=0 L1=0 T2=0.25 L2=1 T3=0 L3=0 T4=0.25 L4=1 T5=0 L5=0 T6=0.5 L6=0
Wave start=7 end=7 "(2*asin(sin(pi*env(aux1%1)))/pi)^3"

Normalize Metric="Peak" Base=each

Thank you very much, sir!

Post

EvilDragon wrote: Fri Sep 13, 2019 3:32 pm
cytospur wrote: Fri Sep 13, 2019 1:06 pm TX81z waveforms:

Code: Select all

Info "Yamaha TX81z waveforms\nBy Mark Holt\n"

NumFrames=8

Wave target=aux1 "1*phase" //Replace Integer with desired frequency

//OPL3_W1
Wave start=0 end=0 "sin(2*pi*aux1)"	
//OPL3_W2																	
Wave start=1 end=1 "(2*asin(sin(2*pi*aux1))/pi)^3"
//W3
Envelope L0=0 T1=0 L1=1 T2=0.5 L2=0 T3=1 L3=0
Wave start=2 end=2 "sin(pi*env(aux1%1))"																
//W4
Envelope L0=0 T1=0 L1=1 T2=0.5 L2=0 T3=1 L3=0
Wave start=3 end=3 "(2*asin(sin(pi*env((aux1)%1)))/pi)^3"												
//W5
Envelope L0=0 T1=0 L1=2 T2=0.5 L2=0 T3=1 L3=0
Wave start=4 end=4 "sin(-pi*env(aux1%1))"																
//W6
Envelope L0=0 T1=0 L1=2 T2=0.5 L2=0 T3=1 L3=0
Wave start=5 end=5 "(2*asin(sin(-pi*env(aux1%1)))/pi)^3"
//W7
Envelope L0=0 T1=0 L1=0 T2=0.25 L2=1 T3=0 L3=0 T4=0.25 L4=1 T5=0 L5=0 T6=0.5 L6=0
Wave start=6 end=6 "(sin(pi*env(aux1%1)))"
//W8
Envelope L0=0 T1=0 L1=0 T2=0.25 L2=1 T3=0 L3=0 T4=0.25 L4=1 T5=0 L5=0 T6=0.5 L6=0
Wave start=7 end=7 "(2*asin(sin(pi*env(aux1%1)))/pi)^3"

Normalize Metric="Peak" Base=each

Thank you very much, sir!
Mark Holt: wavetable master! Thanks! :tu:

Post

Any tips on how to script for sub-harmonic (to borrow terminology from Bazille) FM i.e. the mod oscillator is 1/2/3 octaves below the carrier? With this in mind, would it be possible to expand upon this and express a saw wave as a series of sin oscillators with their phases modulated by a subharmonic sin?
Always Read the Manual!

Post

Sorry, been a bit quiet recently.

Here's a new uhm script that uses the import function to extract two waves from the Fractal DX.uhm script, morphs them and then used as modulator in a simple FM scheme. This opens up a way of doing SY77/SY99 style FM :)

Code: Select all

Info "Wave Import\nBy Mark Holt\n"

NumFrames=32

Import Start=0 End=0 From=0 Target=aux1 "Fractal DX.uhm"
Import Start=31 End=31 From=16 Target=aux1 "Fractal DX.uhm"

Interpolate Start=0 End=31 Target=aux1

Wave "sin(2*pi*phase+sin(4*pi*phase+2*table*aux1)+(table^0.5)*aux1)"

Normalize Metric="Peak" Base=each
The saved script needs to be in the same folder as the imported source file. The imported file can also be a wave file of your choosing.

More to come soon, hopefully!
Wavetables for DUNE2/3, Blofeld, IL Harmor, Hive and Serum etc: http://charlesdickens.neocities.org/
£10 for lifetime updates including wavetable editor for Windows.

Music: https://soundcloud.com/markholt

Post

Cool stuff. Thanks again!

Post

Here's a script that is also attached in a zip file with some single cycle wave files.

The script is an extension of the one above to include two different modulators, changing the frequency of the modulator, plus filtering of the modulators.

Code: Select all

Info "Wave Import with FM\nBy Mark Holt\n"

NumFrames=8

//Import two waves in to aux1 buffer
Import Start=0 End=0 From=0 Target=aux1 "MH Singles00.wav"
Import Start=7 End=7 From=0 Target=aux1 "MH Singles01.wav"

//Import two waves in to aux2 buffer
Import Start=0 End=0 From=0 Target=aux2 "MH Singles02.wav"
Import Start=7 End=7 From=0 Target=aux2 "MH Singles03.wav"

//Interpolate between waves in each buffer
Interpolate Start=0 End=7 Target=aux1
Interpolate Start=0 End=7 Target=aux2

//Change frequency and filter wavetables
Wave target=aux1 "lowpass(aux1_fi(frame,(5*index)%2047),0.5*table+0.5,0.5)"
Wave target=aux2 "lowpass(aux2_fi(frame,(3*index)%2047),0.3*table+0.7,0.25)"

//Use wavetables as FM modulators
Wave "1*sin(2*pi*phase+4*table*sin(2*pi*phase+2*(table^0.5)*aux1)+3*(table^2)*aux2)+0.5*aux1+0.5*aux2"

//Normalize wavetable amplitude
Normalize Metric="Peak" Base=each

Export Source=main "MH WTFM01.wav"
MH Import Waves.zip
You do not have the required permissions to view the files attached to this post.
Wavetables for DUNE2/3, Blofeld, IL Harmor, Hive and Serum etc: http://charlesdickens.neocities.org/
£10 for lifetime updates including wavetable editor for Windows.

Music: https://soundcloud.com/markholt

Post

In the Change frequency and filter wavetables section in the script above, change 3 and/or 5 to "(frame+1)" or even "2*(frame+1)" etc for a nice sweeping effect!
Wavetables for DUNE2/3, Blofeld, IL Harmor, Hive and Serum etc: http://charlesdickens.neocities.org/
£10 for lifetime updates including wavetable editor for Windows.

Music: https://soundcloud.com/markholt

Post

I am following up 2021

Post

Cool stuff indeed! :D

Question: What is stored in a Hive patch, the script or the generated wavetable?

Post

Chris-S wrote: Fri Dec 23, 2022 10:47 am Cool stuff indeed! :D

Question: What is stored in a Hive patch, the script or the generated wavetable?
Neither. Just a feel reference to the .uhm file

(surprisingly, there were very much fewer issues with this than we expected there to be...)

Post

Urs wrote: Fri Dec 23, 2022 10:55 am (surprisingly, there were very much fewer issues with this than we expected there to be...)
That said, we have now a file picker that we might adopt to let people chose .uhm or .wav when Hive can't find them, and maybe even add custom location for wavetables.

I was also toying with the idea of embedding smaller .uhms in the preset itself, as long as they don't bloat the preset file.

Post

That will be great Urs? When will you be able to implement this file picker thing? And uhms

Post

surreal wrote: Fri Dec 23, 2022 4:14 pm That will be great Urs? When will you be able to implement this file picker thing? And uhms
Not sure yet. The current big topic in the area of user experience is localization and dialog windows. After that we probably have to concentrate on hardware acceleration on Windows.

The list doesn't seem to get shorter.

Post

Of course it's not a complete replacement for real FM synths, for example detuned FM (carr=1.0, mod=1.02) can't be done this way.

Post Reply

Return to “u-he”