Traditionally, the general recipe for FM bell spectrums is to choose C:M ratios that are highly irrational. This will produce an inharmonic spectrum that we associate with clangorous bells. A good starter C:M ratio is 1:phi, or ~1:1.61803. That’s a nice one because the numbers are close together, it’ll produce relatively close partials in the spectrum which will create a fuller sound. Big, beefy, bells. You’ll want to modulate decay of the bell with a exponential envelope and not a linear one, as that more accurately reflects the decay rate of a real bell.
From there, it’s a matter of tuning and adding variations (various FM configurations, C:M ratios, etc).
I quickly whipped up a basic starter FM bell using a classic FM pair and some exponential envelopes controlling modulation index and volume:
I’ll also attached the code I used to make this, which is read via my monolith system. Hopefully, this patch is readable enough to port to other systems. The modulation index ranges and frequency were found via trial and error.
patchwerk nodes
3 dmetro bhold 0 cabset # clock signal
150 # frequency (hz)
1 1.61803 # C:M ratio
0 cabget 1.5 3 0.1 expon # modulation index control
0 # feedback amount
8192 ftnew gen_sine fmpair -5 ampdb mul # fm oscillator
0 cabget 0.001 0.1 0.6 tenvx mul # amp envelope
0 cabget bunhold # free signal from cable
"bell.wav" wavout # write to wav
20 sr * _compute rep # compute 20 seconds of audio
Admittedly, it’s not the greatest bell, but hopefully that gets you in the right direction.