[.uhm] FM Synthesis in Hive

Official support for: u-he.com
Hanz Meyzer
KVRian
1145 posts since 20 Oct, 2014

Post Thu Mar 14, 2019 1:22 am

Would be also nice, if all the WT synth vendors could agree upon a general wavetable file standard and agree to support it?

User avatar
Urs
u-he
23864 posts since 8 Aug, 2002 from Berlin

Re: [.uhm] FM Synthesis in Hive

Post Thu Mar 14, 2019 1:38 am

I think we all agreed upon Serum's format - at least those who support cycles of 2048 samples. Now that Steve told us what Serum gets out of his embedded data, I think we'll save our wavetables with the exact same data.

User avatar
Urs
u-he
23864 posts since 8 Aug, 2002 from Berlin

Re: [.uhm] FM Synthesis in Hive

Post Thu Mar 14, 2019 1:47 am

nilhartman wrote:
Thu Mar 14, 2019 1:08 am
Do you plan to gather all these .uhm resources in a dedicated manual ?
I always wanted to set up a sticky thread with links to all important scripts/posts. I also wanted to start more tutorials, but reality has beta me to it, the community knows more than I do.
Anyway, these .uhm WT sound absolutely fantastic, congrats!
Thank you :)

cytospur
KVRian
1326 posts since 26 Jun, 2002 from London, UK

Re: [.uhm] FM Synthesis in Hive

Post Thu Apr 11, 2019 3:10 am

Just cutting my teeth on uhm scripts and, whilst working out ways of making the alternative FM waveforms, e.g., for OPL3, HX1 and TX81z, came up with this:

Code: Select all

Info "FM with random modulator\nBy Mark Holt\n"

//Simple 2-op Yamaha style FM using semi random modulator.
//Use the envelopes to make semi-random phase ramps to define piecewise simusoids.
//You can changte the curve type for the envelop for subtle variations.
//Choose random real numbers for env levels. These can be outside the range +/-1.
//For symmetrical modulators make sure that L1/L4 and L2/L3 are equal, but opposite, e.g., L1=0.45, L4=-0.45.
//The carrier here is a sine, but can also be semi-random like the modulator.
//In each wave target chnage the integer to the required coarse frequency.
//In the Wave sections there is a power variable at the end (^1 and ^3).
//This value can be any odd number >0. 1 would be the usual value.
//You can see the effect of the ^3 on a sine in the first frame of the wavetable.

NumFrames=256

Envelope curve=linear L0=0 T1=0.2 L1=0.95 T2=0.2 L2=-0.86 T3=0.2 L3=0.86 T4=0.2 L4=-0.95 T5=0.2 L5=0		
Wave target=aux1 "2*phase"																	
Wave "sin(2*pi*env(aux1%1)+1*table^2*x)^1"															
Normalize Metric="Peak" Base=each
Wave target=aux1 "1*phase"	
Wave "sin(2*pi*aux1+1*table*x)^3"
Normalize Metric="Peak" Base=each
It basically allows you to define your own piecewise modulator using an envelope to define piecewise phase ramps.

Any feedback welcome, since I'm still learning here!

Lots to experiment with, e.g. easily extendable to 3-op and further, so hopefully have fun!

Cheers,

Mark
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

cytospur
KVRian
1326 posts since 26 Jun, 2002 from London, UK

Re: [.uhm] FM Synthesis in Hive

Post Thu Apr 11, 2019 5:16 am

Experimenting a bit more, I see that raising the power of the modulator to an even number does nice things, so not just odd numbers can be used here. Even values for the carrier will create a fully rectified waveform. This value must be a whole integer though. Real values will not work.

Also applying a power to phase in the wave targets will phase distort (naturally) the resultant waveforms! This doesn't have to be an integer. Values greater than 1 will shift the waveform to the right, whilst those less than 1 will shift to the left.
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

cytospur
KVRian
1326 posts since 26 Jun, 2002 from London, UK

Re: [.uhm] FM Synthesis in Hive

Post Thu Apr 11, 2019 6:02 am

And here's another one. An alternative way of doing something akin to feedback FM that can be easily manipulated to do some quite drastic things:

Code: Select all

Info "Feedback FM\nBy Mark Holt\n"

NumFrames=256

//Equal values for the integer multipliers of aux1 in the sin and cos terms will tend towards a sawtooth.
//If the cos integer is twice that of the sin integer then there will be a tendency to a square wave.
//Other integer ratios are available :)
//Feedback amount in aux2 is in the range 0-to-1.
//Experiment by adding other sin/cos terms to the numerator (sin(1*aux1)) and or denominator (1-aux2*cos(1*aux1)).
//Increase the multiplier for table for harsher sounds.
//Change the power applied to phase in aux1 for added phase distortion (with feedback).

Wave target=aux1 "2*pi*(phase^1)"
Wave target=aux2 "0.9"

Wave "sin(aux1+1*table*sin(1*aux1)/(1-aux2*cos(1*aux1)))

Spectrum lowest=0 highest=0 "0"																		
Normalize Metric="Peak" Base=each
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

cytospur
KVRian
1326 posts since 26 Jun, 2002 from London, UK

Re: [.uhm] FM Synthesis in Hive

Post Fri Apr 12, 2019 4:03 am

An alternative attempt at a TX81z Lately Bass (tweaked somewhat from the actual TX preset):

Code: Select all

Info "What Have You Done?\nBy Mark Holt\n"

NumFrames=256

//Attempt at a TX81z Lately Bass wavetable
//12-bit phase ramp
Wave target=aux1 "round((2^12)*phase)/(2^12)"

//Op3
Envelope L0=0 T1=0 L1=2 T2=0.5 L2=0 T3=1 L3=0
Wave "0.71*sin(-2*pi*env(2*aux1%1))"
Envelope curve=logarithmic L0=0 T1=0 L1=1 T2=0.3 L2=0.2 T3=0.7 L3=0
Wave "x*env(table)"
//Op4
Envelope curve=logarithmic L0=0 T1=0 L1=1 T2=0.4 L2=0.4 T3=0.6 L3=0
Wave "0.79*env(table)*sin(2*2*pi*aux1)/(1-0.925*cos(2*2*pi*aux1))+x"
//Op2
Envelope curve=logarithmic L0=0 T1=0 L1=1 T2=0.4 L2=0.2 T3=0.6 L3=0
Wave "0.74*env(table)*sin(2*pi*aux1+x)"
//Op1
Wave "sin(2*pi*aux1+x)"

Spectrum lowest=0 highest=0 "0"
Normalize Metric=peak Base=each
Last edited by cytospur on Fri Apr 12, 2019 6:18 am, edited 2 times in total.
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

AnX
KVRAF
5250 posts since 17 Nov, 2015

Re: [.uhm] FM Synthesis in Hive

Post Fri Apr 12, 2019 4:12 am

maths jockey :hihi:

cytospur
KVRian
1326 posts since 26 Jun, 2002 from London, UK

Re: [.uhm] FM Synthesis in Hive

Post Fri Apr 12, 2019 4:28 am

AnX wrote:
Fri Apr 12, 2019 4:12 am
maths jockey :hihi:
Potentiometer jockey :roll: :hihi:
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

AnX
KVRAF
5250 posts since 17 Nov, 2015

Re: [.uhm] FM Synthesis in Hive

Post Sat Apr 13, 2019 11:02 pm

:o

User avatar
EvilDragon
KVRAF
18595 posts since 7 Jan, 2009 from Croatia

Re: [.uhm] FM Synthesis in Hive

Post Wed Sep 11, 2019 12:58 pm

I wonder if there's a way to represent each of 8 TX-81Z waveforms mathematically in a single frame?

cytospur
KVRian
1326 posts since 26 Jun, 2002 from London, UK

Re: [.uhm] FM Synthesis in Hive

Post Thu Sep 12, 2019 10:58 pm

I've done the HX1 waveforms for uhm script and have made the TX and SY as waves using Mathematica. I'll try to work out a script for those soon.

The way I did it for the HX1 was to use envelopes to define phase ramps. I'll post it up later.
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

cytospur
KVRian
1326 posts since 26 Jun, 2002 from London, UK

Re: [.uhm] FM Synthesis in Hive

Post Fri Sep 13, 2019 5:06 am

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
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

cytospur
KVRian
1326 posts since 26 Jun, 2002 from London, UK

Re: [.uhm] FM Synthesis in Hive

Post Fri Sep 13, 2019 5:19 am

And a 2-op example using W1 and W2:

Code: Select all

Info "Yamaha TX81z example patch\nBy Mark Holt\n"

NumFrames=32

Wave "sin(2*pi*phase+6*table*(2*asin(sin(2*pi*phase))/pi)^3)"

Normalize Metric="Peak" Base=each
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

surreal
KVRian
1284 posts since 3 Dec, 2006

Re: [.uhm] FM Synthesis in Hive

Post Fri Sep 13, 2019 6:59 am

Any practical patches for us mere mortals?

Return to “u-he”