Page 1 of 3

FM Synth with a twist

PostPosted: Fri Nov 01, 2019 9:15 pm
by k brown
In my never-ending quest for an FM synth that's actually easy and pleasant to use, I got inspired by Yamaha's very first FM instrument, the GS1 (actually Yamaha first introduced FM in one of their Electone home organs). This beautiful instrument was housed in a furniture-quality wood cabinet that looked like 1/3 of a baby grand piano, complete with three foot pedals.
Product shot copy.png
Product shot copy.png (332.85 KiB) Viewed 16643 times

It's sound engine was eight-operator FM, but in a single fixed algorithm of four Modulator/Carrier pairs, like DX7's algo 5, but with an additional M/C pair. To quote Howard Massey in his 'Complete DX7', "...algorithms 5 and 6, with three modulator-carrier systems, seems to provide the most scope for creating rich sounds, and it's not surprising that they are the most popular algorithms amongst the ROM presets", and the GS1 had an additional pair of these.

So without the overwhelming array of algorithms (or, in the case of several FM plugins, an inscrutable box-of-knobs mod matrix), I figured this FM structure would very be interesting to build an synth around. The GS1 was a presets-only synth, and I could find almost no info on-line about the particulars of the programming computer that was used to create it's presets. I don't know if it had all the params of what was eventually put into the DX7, or was more complex (or simpler). I did find mention that the envelopes had many edit-points, rather than DX7's modified ADSR type, so the programmer's params may have been even more complex than DX7. But to keep this clean and simple, I included only basic FM operator functions and the controls provided on the GS1's panel - Vibrato, Tremolo, 4-way Detune and 3-band EQ. GS1 also had an 'Ensemble' effect, but given that so little details are available on what it actually was (probably some sort of bucket-brigade thing), and the plethora of very good 'ensemble-like' effects available (including Martin's recent efforts), I opted to leave it out.
I did the GUI up in a style meant to suggest an electronics schematic drawn on aged, yellowed paper, so I call it SkematicGS, with operators arranged they way they were always shown on Yamaha's FM synths.

SkematicGS copy.jpg
SkematicGS copy.jpg (210.68 KiB) Viewed 16557 times

SkematicGS.fsm
(4.85 MiB) Downloaded 1049 times

One interesting aspect of the GS1's FM architecture that wasn't practical on the DX7 because of it's multiple algorithms, was cross-modulator feedback, where in each M/C pair, the modulators could self-feedback and/or feedback to the opposite modulator - this goes quite a ways toward compensating for the lack of stacked modulators, and indeed makes possible the DX7's algos 3, 28 and 29; with ops leftover, which may or may not make positive contributions to the sound depending on the patch. Algo 3 (two 3-op stacks) is an interesting case, because in the DX7, feedback was only available to the top modulator in the second stack; with the GS1, all four modulators could have feedback at once!

Since the GS1 had no wheels, I've pressed MIDI wheels into service to replicate the GS1's foot pedals. The left pedal activated vibrato, so I've made it triggered by raising the mod wheel above it's bottom position. The center pedal activated tremolo, so I've made it triggered by raising the pitch wheel above center. The right pedal activated the Sustain function, which imitated a piano's note decay with it's damper pedal down (all EG Release times set to appropriate settings); I've made this triggered by moving the pitch wheel down from center. Any of these can alternately be triggered by MIDI footswitch, if desired.

Twenty-some presets provided; they mostly demonstrate some of the range of timbres that can be made with 2-op FM, rather than being ready-to-play-music-with sounds.

The GS1 had both velocity and aftertouch; velo was on all the time, with sensitivity for each operator determined in the presets. Same with aftertouch, but AT had a panel button to toggle it OnOff.
The GS1's presets were contained on two mag-strip cards, each of which contained two M/C pairs connected together (the GS1's cheaper, simpler little brother, the GS2 had just one of these). So I've set this up as two M/C pairs, each connected through a panpot.

To see what Yamaha thought were the most useful operator ratios, the list from the DX100 can be displayed by pressing a button.

Re: FM Synth with a twist

PostPosted: Sat Nov 02, 2019 7:05 am
by tulamide
I'm already in love with the GUI, just from reading your post! The mixing of old paperwork and presumably paper-less modern digital media always fascinates me. I played around with it as well quite often. For example, in this fan-art I made a decade ago for an mmorpg I really liked a lot, I took a screenshot of my char, masked it, combined it with a parchment background and filtered and tweaked it, to finally look like this:
https://www.dropbox.com/s/492q51kaxsnbuhf/dwarf.jpg?dl=0

I will now have a closer look at it...

Re: FM Synth with a twist

PostPosted: Sat Nov 02, 2019 7:46 am
by k brown
Looks very cool - indeed like charcoal on parchment.

Re-download SkematicGS - I just realized I hadn't connected the feedbacks in the right place. tweaked the presets a bit too.

Re: FM Synth with a twist

PostPosted: Sat Nov 02, 2019 8:28 am
by tulamide
Thanks! Did re-download and am eager to testing it!

Re: FM Synth with a twist

PostPosted: Sat Nov 02, 2019 3:10 pm
by Spogg
OMG Kevin! :o

You’ve made some great synths in your time but I reckon this is easily the best ever. And a lovely range of presets too.

The UI is wonderful looking, and I found it very intuitive and easy to pick up, but the info page helped clear up a few questions. Maybe I should just give up now!

In my view this is worthy of a commercial release, so well done and thanks so much for sharing it.

Cheers

Spogg

Re: FM Synth with a twist

PostPosted: Sat Nov 02, 2019 8:01 pm
by k brown
Whoah - didn't expect this response! - especially after the last couple of things I posted got almost no response at all; I thought maybe there's something fundamentally unappealing or unusable about my builds and no one was willing to tell me (tula' will probably have some tough-love for me ;) ).

I hope it achieves it's goal of making FM synthesis less off-putting - I can think of no term more repellent to 'artistic types' than algorithm. I still may do a version of this with more of the DX intruments' controls, we'll see.

This may be a good point to bow out for awhile; I use Flowstone as the world's most effective distraction/stress-reliever! But now it's back to the studio and get some new paintings done.

Thanks again to you all who helped directly and indirectly with your own efforts and generosity!

P.S. - if I might give a bump to something I asked in a recent post, that got no replies. I'd asked why Martin's oscillators don't have sync inputs, as the toolbox ones do. I seem to recall an old post in which he'd said he didn't want to do them because aliasing made them unusable - some reason his osc would be worse in this regard than the stock ones? I know they alias when sync is used, but I think it's still a usable sound, especially since sync is pretty tearing, aggressive sound anyway. I just lamented having to use so many stock osc in my Pano/Poly for the sync function.

Re: FM Synth with a twist

PostPosted: Sat Nov 02, 2019 8:50 pm
by RJHollins
All the best k brown !!!
8-)

Re: FM Synth with a twist

PostPosted: Sat Nov 02, 2019 9:00 pm
by k brown
Thanks so much; and to you as well.

Re: FM Synth with a twist

PostPosted: Sat Nov 02, 2019 10:18 pm
by martinvicanek
Point taken, Kevin. As I see it, we need a proper sync-enabled set of oscillators. It is not just a matter of adding sync inputs - this would introduceterrible aliasing, though not worse than with the stock oscs. I am thinking of something more sophisticated and consistent with the poly BLEP alias suppression ofmy existing oscs. This will increase cpu load of course, hopefully not as much as the stock oscs.

Re: FM Synth with a twist

PostPosted: Sat Nov 02, 2019 10:34 pm
by k brown
Martin - you alright? - you sort of drifted off there.

A few refinements made - really just a couple things I intended all along and just lost track of. Won't affect presets. Updated in original post.

- OK, I put the Ensemble in there; used Martin's Quad Chorus which has the most '80s chorus swirliness.
- Ability to control aftertouch targets with alternate controllers (footpedal, breath, wheel, bend whl up or bend whl down).
- More taper on operators' aftertouch controls.
- More explanations in the 'Info' pane.
- A couple more presets, including an approximation of Martin's 'DX7 harmonica' that he posted some time ago. I couldn't get it exact because my thingy doesn't have a way to apply a fixed phase offset to an oscillator; then again neither did the DX7 ;) ; the original preset probably appled modulation in the form of AMS to that Modulator, so that's what I did.
- Minor GUI tweaks.

Please let me know if you unearth anything not behaving properly.

If I do a more complex version of this, I'm going to see if I can talk to someone at CCRMA (I'm just a short drive from Stanford) to get more details on the GS1 programming computer; I know they have one and have been working on restoring it and their GS1. I can't imagine they wouldn't have documents on exactly what params that thing could program.

If I strike out there, I'll probably based the more complex version around the functions of the DX100, partly because of the reduced feature set (compared to DX7) and partly because I have one! :D