Have you ever wondered why some Genesis
music sounds so...you know…
...samey?
FM synthesis is complicated and fickle, yet several games appear to share the same sounds.
Why is that?
The answer has a lot to do with how the music was made.
Specifically, a program called GEMS.
Let’s take a look.
It’s the early 90s, and the Genesis has
been doing a pretty nice job doing what Nintendon’t.
However, with the release of the SNES on the horizon, that looks like it may change.
Sega of America decided to shift strategies, doing everything possible to best Nintendo.
Most of Sega of America’s pushes around this time were highly visible:
bundle Sonic with the Genesis, drop the price,
come up with the phrase “blast processing…”
But they were also working behind the scenes.
What good is a console if none of the games could use the hardware to the fullest extent?
Musicians had a particularly terrible end of the stick: the development tools for creating music,
well, they sucked. Unless you really enjoyed writing music with a hex editor and a calculator.
And even then, the hardware was terribly documented.
Under the pull of Chris Grigg, a small team was assembled to build a new tool for musicians:
The Genesis Editor for Music and Sound effects.
GEMS.
And despite what some internet commenters may lead you to believe,
it is actually a pretty good tool!
So what does it look like to use GEMS?
Well, first you need a computer that can run MS-DOS.
Not Windows.
This is the early 90s, so Windows existed, but it ran on top of DOS.
It’s just extra weight for the already RAM-intensive GEMS.
So, DOS.
Next, you need some hardware from Sega.
ROM boards were super common for any developer of a Genesis title.
If you’ve seen a “behind the scenes” picture, you’ve probably seen one of these
jutting out of a Genesis.
It’s just an old fashioned equivalent of a modern day flash cart.
If you’re lucky, you get a special board that has a serial cable connection in the
back, so you can load data on to the board without burning an EPROM.
If you’re less lucky, you have to use a ROM board plus this thing:
the Sega Loader Board.
It connects to the expansion port and serves as an in-between for the Genesis and computer,
but with fewer bells and no whistles.
Finally, you need some sort of MIDI device.
This is what made GEMS so appealing: musicians can stick to what they’re familiar with
instead of having to code anything.
Howard Drossin, perhaps best known for his work on Comix Zone, describes his
setup in this gratuitously 90s interview.
Hi, my name is Howard Drossin, I'm a music director for Sega Technical Institute
and I have all this great equipment here.
which was paid for by Sega, of course.
For Genesis development, I use this computer.
and I'm able to
manipulate the sounds here in the Genesis.
That little crazy-looking thing sticking out of it is a music development card.
Which makes it possible for me to do what I have to do.
and I make the voices (flutes, drums, whatever), and I sequence them on the computer
and then it gets downloaded into the game, and then we have music and sound effects in the game.
So uh, some people think I'm a mad scientist
and well, I am!
A picture might be helpful:
Your MIDI device connects to your DOS machine running GEMS,
which translates the MIDI into data that the
Genesis can understand, which then outputs the sound to your ears.
There’s also some video output from the Genesis, but it’s just debug information
that most musicians ignored.
For reference, when we say “MIDI device” we’re still talking about the early 90s.
Sequencers weren’t as glamorous as the slick and shiny programs of today,
and were often text based.
But the problem, at least for work on the Genesis, is that you don’t know what your
song will sound like until after you’ve written it, compiled it to a ROM, and played
it back on the Genesis.
GEMS solved this by connecting the MIDI editor to the Genesis, essentially treating the YM2612
as a synth.
What you hear is what you get.
Amusingly, this was so exact that GEMS gained a reputation for sounding horrible
thanks to flawed emulation.
You’re probably familiar with a few examples…
Obviously, the game is not supposed to sound like that.
It’s supposed to be a hihat.
Specifically the Thin Closed Hihat.
Listed here as patch 101.
Oh yeah,
GEMS came with a sizable library of preset
synth patches.
They were all contained in an blank project called FMLIB.
The man behind these sounds is Jim Hedges, occasionally seen in credit scrolls for his
sound design.
This library isn’t MIDI-compliant, nor does it contain as many instruments as the MIDI
standard provides, giving only 104 unique sounds.
Musicians often used these presets as starting points for their own instrumentation,
modifying parameters until they sounded close to what they wanted.
Unfortunately, sometimes these presets were also the stopping points for these musicians,
which is what lead to the “samey” sounds that’s so often associated with GEMS.
It’s pretty understandable, though.
FM synthesis is complicated.
To combat this, we have a pretty nicely laid out patch editor.
It’s quite serviceable, though you’ll need your manual handy if you want to see
the routing for each algorithm.
What you see is actually pretty close to the metal:
each parameter lines up with a register on the YM2612.
It even includes the ability to use “channel 3 mode,” where each operator is set to an
arbitrary frequency, which usually creates some crazy atonal sounds.
It’s good for “certain sounds such as drums”,
according to the manual.
Of course, there are other types of sounds you can make on the Genesis.
For example, Programmable Sound Generators.
(PSG for short.)
These are super simple to the extent of not
being particularly interesting.
Just 50% square waves.
In contrast, we have something that was pretty popular on the Genesis: sample playback.
Usually this is just a convenient way to add sound effects to your game, or maybe a few
drum samples to your song.
but there are some composers…
The intro to Earthworm Jim 2 goes on for a good 15 seconds before you get any tonal
FM accompaniment.
So how does that work?
You can load in raw, 8-bit PCM data, though GEMS only gives a selection of six pitches
for playing this data.
This complicates things, but the main issue is memory: The lower the sample rate, the
less space the sample takes...but the worse it sounds.
You can halve the size of the sample by converting it to 4-bits, but that also doubles the crappiness.
The entire sampling process is a balancing act between memory and quality.
With that, we’ve covered half of the options in this menu.
Before moving on to the sequencer, let’s talk about the Modulation Bank.
If you want to use any pitch bends in your song,
this is the most compact method available to you.
You could use regular MIDI pitch bend opcodes, but that takes a lot of space and can’t
be reused.
(Good luck fighting the graphics team for pitch bend space on the game cartridge.)
In contrast, a modulation envelope only takes a few bytes.
You can trigger a modulation envelope anywhere in a sequence and whatever instruments are
playing in that channel will bend.
It’s weirdly convoluted, especially if you just want some vibrato, but it succeeds in
being compact.
One byte for slope, one for duration, rinse and repeat until you’re happy with your
bend.
Interestingly,
Jon Miller was planning on adding vibrato support, but never got around to it.
So, the Sequence Editor.
Remember earlier when I said that you could route a MIDI device straight into your Genesis?
It’s slightly more complicated than that, or at least it can be.
Each MIDI instrument from your sequencer lines up with your patch bank.
That part’s straightforward.
But remember that pitch bends have to be triggered through the modulation bank.
To handle this, as well as a ton of more technical functions (like looping), we look to another
feature of MIDI: Continuous Controllers.
The MIDI standard is full of these things, sending information like breath control and
sustain pedal level.
Most of these are useless to the Genesis, so GEMS will convert these CCs into one of
many possible functions.
This will fill a MIDI file will somewhat random data for anyone trying to read it outside
of the context of GEMS, but it greatly simplifies the process of writing game music.
What you hear is what you get.
When you’re done composing, you can just press record in GEMS and play back the MIDI
from your editor.
If you really need to, you can view the resulting sequence data and adjust things
like loop points, or add some conditional statements.
Or you could compose your entire song by manually entering the note and timing data from here,
but that’s just buying yourself a hotrod only to push it down the street.
About that last bit: conditionals.
GEMS was touted for this feature: the soundtrack could communicate with the game and react
dynamically.
Common examples included stuff like a tempo increase when more enemies were on screen,
or a change in instrumentation depending on what character you’re playing.
The communication was done by what the GEMS manual calls Mailboxes.
You have 30 of them available, and you can set them to anything between 0 and 127.
One of the debug screens gave a quick summary of each mailbox value, seen here on the left.
You could use the MIDI Simulator in GEMS to change any of these values for testing purposes.
When writing your sequences, you can add conditionals based on the mailbox values, allowing you
to change sequences or instrumentation to your hearts content.
Finally, the last feature of GEMS that we’re going to cover today is
the priority system.
GEMS offers 16 channels, and each channel can have several notes playing at the same time.
In contrast, the Genesis has 10 available channels, with caveats on even that number.
Think of it as a machine with a limited number of slots for sounds.
If you want an FM sound ,you only have 6 slots available.
If your sequence has 7 sounds, one of them has got to go.
The problem is, which one should go?
GEMS handles this by using a priority system: Every channel has its own priority,
which you can change at any time.
If every voice on the Genesis is in use, any new sounds will be ignored unless they have
a higher priority than one of the sounds currently playing.
Generally, this comes in handy when you’re triggering a sound effect.
The sound effect can play and the music will automatically adjust and resume like nothing happened.
However, this also opens the door for a somewhat brash style of writing:
It’s possible to write more channels than the system can play
and then let the priority system fight over what actually gets heard.
An interesting case study is “Dance Ravetune” from Cool Spot, by Tommy Tallarico.
The song at one point reaches 9 channel polyphony --three beyond what the Genesis can handle.
This is (at least mostly) intended, partially because Tommy was writing the same song for
use on both the Genesis and the SNES, but also because it’s easier to just let GEMS handle
the dirty work of deciding what channels to keep at any given point.
Echo channel?
Lowest priority, it goes first.
Layered synth?
Second layer isn’t important, out it goes.
The most noticable victim of this priority fighting is a drum pattern, which is completely
overshadowed by a staccato bassline.
For comparison, here’s the same song but modified to play on 2 Genesises.
With six extra FM channels, the drums reappear, and the song matches its SNES counterpart.
There’s plenty of additional details that we could cover, but this video isn’t
intended to be a complete tutorial on how to use early 90s vintage software.
It’s intended to shine some light on what GEMS really is: the most user friendly piece
of Sega Genesis music developing software from Sega of America since 1991.
👍
With that, I’d like to leave you with a freshly crafted song made using GEMS.