Wow thanks for the tips… all good stuff :raised_hands:

Taking a more additive approach using the operators as multiple carriers sounds like a good starting point

As an FM synthesis noob, this is all I got:

I personally like starting out with 1:1 FM pairs. Layering them with together with slightly off ratios (1:1.001, 1:0.999) adds a neat chorusing sound. Modulation index (especially at lower values) sounds/behaves like a subtractive saw if you squint your ears.

Choral sounds would be an interesting challenge to do in FM. There has certainly been some work on individual singing voices in FM though.

4 Likes

anyone have experience with through-zero analog oscs ?

I’ve been messing around with linear FM in the analog world and haven’t been clicking w/ it it nearly as much as the FM I’m used to getting out of max or Operator. like, the root is changing there when I increase the FM amount, right ? not just the overtones ??

Is through-zero the missing ingredient there or is there something else going on in digital FM compared to a typical set of analog sine oscillators ?

1 Like

I don’t have any through-zero oscillators, but I use Happy Nerding’s FM Aid a lot which is through-zero and it does indeed keep the root more stable than just straight up linear or exponential FM.

I might be wrong, but the oscillator’s core wave shape seems to have an effect on root-note stability as well. Direct FM on my Pittsburgh VCO (saw core) is noticeably less pitch-stable than direct FM on my Dixie II (triangle core).

i’ve experimented with tzfm via doepfer a-110-4 - super fun!
it’s all very fiddly, but with some patience and tweaking the results can be satisfying.

using earthsea to store different fm ratios

and then this one:


it’s the second voice that comes in

it never gets as juicy as the multi-operator goodness of a dx7 (or volca fm) but certainly has a character of it’s own.

2 Likes

nice !! yea I was rlly hoping to pair an a-110-4 with three sisters to do like almost 3-operator FM.

I always use like kind of a simple algorithm of like osc1 + osc3 > osc2, which seems almost better executed on modular than software. definitely didn’t get the same results with like 3sis and an STO so that’s way good news - those old vids are so good.

1 Like

realizing i could elaborate more on the process… it’s key to have a couple sharp envelope generators and vcas (one pair for the complete voice, another pair between the modulation and carrier oscs) a clean sine to modulate the a-110-4, and both oscs should be mult’d to the same melodic sequence. you adjust the tuning of the modulation oscillator to get different ratios. also sometimes you’ll need to filter out the dc offset of the modulation osc to get less bending of the carrier freq when it comes in.

2 Likes

maybe it’s worth stating clearly in this thread (sorry if this is super obvious):

AFAIK, “through-zero” just describes the behavior of an oscillator when a negative frequency is specified. it doesn’t have anything specifically to do with modulation.

a lot of analog oscillators just stop moving when you set freq <= 0. “through-zero” ones will “go backward” with freq <0.

many (/ most?) digital implementations of FM actually use phase modulation. this “automatically” gives you a sort of through-zero behavior, regardless of the oscillator implementation. (though, now i kind of want to model this and take a better look.)

PM also has the effect of high-passing the modulator. which might be part of the difference you’re experiencing. (center pitch stays stable regardless of DC offset in the modulator.) another part might be just the stability of digital FM - if the relative car/mod phases are noisy or drifting, that drift gets “magnified” as timbral shifts in the final spectrum. there’s always some of this outside a computer. i think for analog stuff to come close there have to be some kind of sync between car/mod.

finally, depending on the specific digital implementation, you may be experiencing aliasing of sidebands above nyquist. “classic” digital FM has a lot of this and it’s part of the sound. a homebrew max/msp implementation will likely have some too; you need very extreme oversampling to avoid it.

so analog FM will tend to be spectrally “cleaner” (less harsh/metallic/sub-enharmonic stuff from aliasing,) but also “less stable” (car/mod will drift a little and cause timbral shifts) and definitely won’t be as consistent across root pitches since analog pitch tracking is never perfect.

OTOH the “weird stuff” you get from complex/feedback modulation paths in analog is really different and a lot more interesting “out of the box.” (IMO of course.)

anyways, “through zero” should have no effect if you aren’t pushing the modulation far enough to create negative frequencies.

17 Likes

An example:

A VCO is running at 200Hz. You want to apply a strong modulation to it, at a nice clean integer ratio, and let’s assume a perfect sine with no DC offset.

Let’s say the modulation is enough to raise and lower the base frequency by 300Hz.

With thru-zero, the VCO reverses its phase direction as the frequency goes negative, so you get a swing between -100Hz and +500Hz, which averages out to 200Hz. It affects the timbre but not the pitch, just like you wanted.

Without thru-zero, the VCO core “stalls” at 0Hz. So you get a swing between 0 and 500Hz, which averages out to 250Hz. You have to back down on the modulation amount in order to prevent a pitch shift.

TZFM is relatively simple with digital oscillators (when it even is FM rather than PM). With analog oscillators it requires a bit more design.

What designers often do instead is severely restrict the modulation depth for linear FM – so you can use it dynamically, but it’s not a satisfying amount of modulation if you’re used to digital FM. Meanwhile, the expo FM can run freely without being thru-zero, since you always have to balance the ratio and depth anyway.

Not all analog thru-zero oscillators are created equal… I keep hearing that the Doepfer is fiddly to work with, but it looks to me like the upcoming Joranalogue Generate 3 “just works.”

(As an aside, FM and PM are pretty close cousins, but I learned that there’s a practical difference if you combine exponential and linear modulation. If you’ve got expo FM ratio and depth set up in a nice harmonic way with no beating, any linear FM you add to that (even from the same source) will throw it way off – but phase modulation from that source works just fine and will track dynamically.)

(As another aside, Happy Nerding FM Aid works via a sort of phase modulation. Anything that converts a triangle or saw to a sine can do this – mix two triangles at just the right levels, and one will act as a “carrier” to drive the sine’s phase, and the other as a “modulator” of the sine’s phase. I believe I read somewhere that’s how Yamaha phase modulation works internally: a modulator is a triangle VCO with a VCA after it, and a carrier is a triangle VCO, mixer, sine lookup table, and a VCA after that. I wrote a thing about it.)

8 Likes

to be more illustrative this is the kind of arrangement I’d want to reproduce. It’s proper FM & I’m assuming there isn’t any sync in the phases there. now that I’m looking at it again the modulation amount is pretty high though, I’m curious how that would compare to modular voltage ranges. I actually never even looked into how cycle~ reacts to negative frequencies.

the goal of course wouldn’t be to recreate a max patch, just to have an “analog version” as an alteration. the main thing I’m looking for is that stable carrier freq really.

this makes a lot of sense with the patches I was making today ! understanding things is fun

to clarify: i mean that since this is a computer program, and the car/mod frequency ratio is an integer, they are in perfect sync in the sense i meant above. that is, every time the carrier phase is zero, the modulator phase will also be zero. this will never happen in an analog circuit without some specific design choices to ensure that it happens - if you’re just taking two arbitrary analog sines there is gonna be some amount of beating between them.

e.g. ye olde buchla 259 has hard and soft primary->secondary sync options for exactly this reason. i’m sure lots of modern dual osc modules have a similar feature.

it’s pretty high, but not outrageous.

recap: sideband spacing is determined by mod frequency, there are always a (theoretically) infinite number of symmetrical sidebands, and the amplitude of each sideband in that infinite series is a (bessel) function of the mod index.

mod index = mod amp / mod freq. (in most digital FM synth scenarios, you want to parameterize mod index instead of specifying mod amplitude directly - the “meaning” of the mod amp in your patch will change completely if you change the mod frequency. ofc in analog these might be decoupled by necessity, unless the car/mod oscs coexist in a dedicated FM module.)

bessel functions are hard to get an intuitive grasp of. so we tend to fall back on rules of thumb, like: the number of (audible) sidebands is about equal to mod index + 1.

your mod. amp. goes to 15k, so index maxes out around 17, num sidebands = 18, sideband spacing is 880hz, so you have sidebands out to +16khz or so, and likewise way down to ~ -15khz. if i did that right, i think you’re ok for aliasing, but yea, understanding cycle~'s behavior with negative freqs is pretty important. (update: it appears to just work.)

i’d consider converting this to phase modulation to see the difference (or rather, total lack thereof.) though it is annoying that cycle~'s phase input is bounded to [0,1].

anyways, making a comparable analog patch doesn’t seem too hard (given that mod and car freqs are fixed), but: 1) the scaling of the mod depth will be arbitrary, 2), analog sines are never quite sines, 3) analog phase sync will not be perfect, 4) the modulation must be linear. also if carrier is not TZ this amount of modulation will not work.

5 Likes

This is super interesting! I had no idea you could use a triangle>sine shaper the way you describe in your blog post. I’ll have to try that with the Disting sine shaper.

1 Like

Does anyone know of a table of DX7 LFO rates to Hz or milliseconds or BPM? I remember seeing such a thing but haven’t been able to find it again.

1 Like

for anyone following the analog/digital debacle above, I ended up testing out an a-110-4 tzvco (@dan_derks has everything I swear) with a second modulator oscillator - I found that the carrier root stayed pretty stable, but the resulting timbres were pretty inharmonic, I assume due to the above bit.

so aaaanyway a cool experiment but ultimately not my taste - will be exploring some other routes to open up by synth voices to CV, which was ultimately the goal. thought I’d share my findings tho !

2 Likes

In case anyone else needs it. I made this based on a table in the Hexter source code…

DX7 LFO Speed Hz 1/4 BPM 1/16 BPM
1 0.062506 3.75036 0.93759
2 0.124815 7.4889 1.872225
3 0.311474 18.68844 4.67211
4 0.435381 26.12286 6.530715
5 0.619784 37.18704 9.29676
6 0.744396 44.66376 11.16594
7 0.930495 55.8297 13.957425
8 1.11639 66.9834 16.74585
9 1.28422 77.0532 19.2633
10 1.49688 89.8128 22.4532
11 1.56783 94.0698 23.51745
12 1.738994 104.33964 26.08491
13 1.910158 114.60948 28.65237
14 2.081322 124.87932 31.21983
15 0.252486 15.14916 3.78729
16 2.42365 145.419 36.35475
17 2.580668 154.84008 38.71002
18 2.737686 164.26116 41.06529
19 2.894704 173.68224 43.42056
20 3.051722 183.10332 45.77583
21 3.20874 192.5244 48.1311
22 3.36682 202.0092 50.5023
23 3.5249 211.494 52.8735
24 3.68298 220.9788 55.2447
25 3.84106 230.4636 57.6159
26 3.99914 239.9484 59.9871
27 4.15942 249.5652 62.3913
28 4.3197 259.182 64.7955
29 4.47998 268.7988 67.1997
30 4.64026 278.4156 69.6039
31 4.80054 288.0324 72.0081
32 4.953584 297.21504 74.30376
33 5.106628 306.39768 76.59942
34 5.259672 315.58032 78.89508
35 5.412716 324.76296 81.19074
36 5.56576 333.9456 83.4864
37 5.724918 343.49508 85.87377
38 5.884076 353.04456 88.26114
39 6.043234 362.59404 90.64851
40 6.202392 372.14352 93.03588
41 6.36155 381.693 95.42325
42 6.520044 391.20264 97.80066
43 6.678538 400.71228 100.17807
44 6.837032 410.22192 102.55548
45 6.995526 419.73156 104.93289
46 7.15402 429.2412 107.3103
47 7.3005 438.03 109.5075
48 7.44698 446.8188 111.7047
49 7.59346 455.6076 113.9019
50 7.73994 464.3964 116.0991
51 7.88642 473.1852 118.2963
52 8.020588 481.23528 120.30882
53 8.154756 489.28536 122.32134
54 8.288924 497.33544 124.33386
55 8.423092 505.38552 126.34638
56 8.55726 513.4356 128.3589
57 8.712624 522.75744 130.68936
58 8.867988 532.07928 133.01982
59 9.023352 541.40112 135.35028
60 9.178716 550.72296 137.68074
61 9.33408 560.0448 140.0112
62 9.669644 580.17864 145.04466
63 10.005208 600.31248 150.07812
64 10.340772 620.44632 155.11158
65 10.676336 640.58016 160.14504
66 11.0119 660.714 165.1785
67 11.96368 717.8208 179.4552
68 12.91546 774.9276 193.7319
69 13.86724 832.0344 208.0086
70 14.81902 889.1412 222.2853
71 15.7708 946.248 236.562
72 16.64024 998.4144 249.6036
73 17.50968 1050.5808 262.6452
74 18.37912 1102.7472 275.6868
75 19.24856 1154.9136 288.7284
76 20.118 1207.08 301.77
77 21.0407 1262.442 315.6105
78 21.9634 1317.804 329.451
79 22.8861 1373.166 343.2915
80 23.8088 1428.528 357.132
81 24.7315 1483.89 370.9725
82 25.75974 1545.5844 386.3961
83 26.78798 1607.2788 401.8197
84 27.81622 1668.9732 417.2433
85 8.84446 530.6676 132.6669
86 29.8727 1792.362 448.0905
87 31.2282 1873.692 468.423
88 32.5837 1955.022 488.7555
89 33.9392 2036.352 509.088
90 35.2947 2117.682 529.4205
91 36.6502 2199.012 549.753
92 37.81248 2268.7488 567.1872
93 38.97476 2338.4856 584.6214
94 40.13704 2408.2224 602.0556
95 41.29932 2477.9592 619.4898
96 42.4616 2547.696 636.924
97 43.6398 2618.388 654.597
98 44.818 2689.08 672.27
99 45.9962 2759.772 689.943
100 47.1744 2830.464 707.616
9 Likes

I was just looking to post about the recent Digitone OS update that allows for more flexibility on the ratios in the way of offsets and got sucked into the discussion on FM/PM/TZFM. I actually made a video on the topic about a year or so ago and think it might fit into the discussion here. I think it’s useful to visualize the effects on the waveforms.

I think if I were to change anything about the video after an additional year of studying FM it would be to emphasize that this example really highlights the instances where the types of FM/PM are significantly different, and in practical terms all of them can have a very wide range of timbres ranging from pleasant plucks to dissonant soundscapes.

Speaking of dissonant soundscapes I’d like to come full circle to the Digitone update OS 1.21! The original sound ending for the Digitone was optomized to facilitate frenetic performative parameter locking (I’m looking at you, Mr Dataline) of melodies without obliterating the fundamental frequency. This meant carefully selecting the algorithms and ratios so that things were fairly fool proofed but had the side effect of frustrating those familiar with the DX-7 school of FM that had grown accustomed to detuning oscillators in opposite directions to create beat frequencies or just to make things sound a little less digitally perfectly in phase. Also it was a lot harder to open the proverbial third eye by sweeping the frequency of a modulator. I am happy to report that the latest Digitone firmware rectifies this. Digitone is now officially too much fun. I might actually record a little Digitone song and report back.

edit: I never made it to recording the song, but spend several hours just mucking about and having fun. @Starthief might be interested to know that you can set the ratio of the carrier on the Digitone to zero and use it as a wavefolder. Keep in mind that you can change the waveform of both modulator and carrier much like the Buchla 259e and you can even use the low pass filter as an LPG. The Digitone is now as close as I will get to owning a music easel. Below is the Digitone with a 0 Hz carrier.

f1f1103dca69243c97310984cde5f411877140b3

I made a little video on this technique as well in case any Digitone users found my above description unclear.

17 Likes

Nice. Those locked “easy to use” ratios were a big turnoff when it was originally released and I’m glad they changed their minds on that. :slight_smile:

1 Like

I sold my Digitone a month ago because I was frustrated by its dumbed down FM, and now this. :smiley:

3 Likes

It’s never too late to scour Reverb.com for a digitone with cosmetic damage you can rebuy at a steal.

1 Like