
ADLPlug: FM Chip Synthesizer - danbolt
https://github.com/jpcima/ADLplug
======
rwhaling
I recently got obsessed with some music made for the OPN2, one of the chips
modeled here - Yuzo Koshiro's soundtracks for the Sega Genesis:

Streets of Rage 2:
[https://www.youtube.com/watch?v=E5g-QHq925o](https://www.youtube.com/watch?v=E5g-QHq925o)

Streets of Rage 3: [https://www.youtube.com/watch?v=kRrf-
WxRsgs](https://www.youtube.com/watch?v=kRrf-WxRsgs)

The SOR3 soundtrack in particular showcases an avant-garde edge, closer to
Autechre or Aphex Twin than traditional video game music, and generally more
of a "club" aesthetic than anything I've heard in other 90's game music.

~~~
dleslie
SoR1 is positively legendary for its soundtrack. On a good home hifi it
sounded fantastic, and it contributed greatly to hammering-home the not-a-
cartoon aesthetic of the gritty street brawler. Previous brawlers in that
aesthetic were Final Fight and Double Dragon, but they lacked the neon glow,
street punk clothing, and hard-thumping rave/dance sound track.

It's a shame that SoR4 sorta missed the mark on that. It just didn't really
snag the simple clarity of SoR1's basslines.

[https://www.youtube.com/watch?v=5Lp0GJNTRV0](https://www.youtube.com/watch?v=5Lp0GJNTRV0)

------
klodolph
For some background—the Yamaha FM chips were fairly clever. Tie together an
adder, some lookup tables, and a few registers and you’ve got sound. In
particular, no need for a multiplier! The spartan design is the reason why
they could release such inexpensive digital synthesizers in 1983, and then
stick them in PCs and consoles.

People still write songs or develop games to be played on retro hardware, and
having a VST plugin for the Adlib means that you can easily use your favorite
DAW to write the track, and then export the MIDI file for playback on real
hardware or in your demo or whatever.

~~~
danbolt
That's really interesting. Would you have some more information on how the
Yamaham FM chips were implemented. I'm still trying to wrap my brain around
what "modulation" is actually doing and why it sounds the way it does when one
wave operates another.

~~~
klodolph
Your basic core is the numerically-controlled oscillator, which consists of a
phase accumulator and a wave shaper which converts the phase to the desired
wave (basically a sine wave lookup table).

    
    
        phase accumulator -> wave shaper
    

Yamaha FM just lets you add other signals to the wave shaper input:

    
    
        other signal -------\
                             (+)-> wave shaper
        phase accumulator --/
    

For example, instead of getting sin(x), you get something like sin(x +
sin(x)). You start adding parameters like “a sin(b x + c sin(d x))” suddenly
there are millions of possibilities.

“Why it sounds that way” can get really deep if you like, but basically, as
you increase the modulation level you get more harmonics, and if you increase
it too much you start losing the fundamental frequency. This is one of the
reasons why it’s nice to have a 6-operator FM system (like in the DX-7). With
the 4-operator FM, once you turn the modulation “all the way up”, there’s
nowhere to go, but with 6-operator FM you have some extra operators around for
modulating modulators.

------
JKCalhoun
Does anyone know if there is a *nix-based app that supports these synth plug-
ins?

~~~
posterboy
You should rather ask if there's a -nix app that supports these _well_. I've
not worked on audio on the PC for over five years, and had basicly stopped
already once I switched over to Linux ten years ago. At the time, audio on
linux was still literally a joke, though perhaps getting better. I wonder how
far it got. I'm sure there were people with comfortable setups back then (e.g.
Panic from Farbrausch, see _Masagin_ from Farbrausch), so there will be people
with positive experience now.

I think what bothered me the most was that the Ubuntu package for the Berkley
collection of Synths was simply broken. Audacity frequently crashed. The DAWs
weren't to my liking, but I'm biased on that point. I never saw through Jack,
Pulseaudio and what not, which was really the running gag because it was--and
probably still is so messy. Responsiveness in realtime fidelity was a real
problem, too, I believe (similar for web based experiments).

it's a fair guess that server OSes like the BSDs won't have a better story

~~~
arrakeen
the JACK ecosystem is in an excellent place right now. i HIGHLY recommend the
kxstudio applications for a smoother experience:
[https://kx.studio/](https://kx.studio/)

cadence - manages the JACK server and sets up pulse/alsa/midi bridging

catia - JACK patchbay

claudia - tool for setting up persistent JACK patch configurations

i'd also like to take this time to say that falkTX, the maintainer of
kxstudio/jack1/jack2, deserves a medal for all his great work

------
Nuzzerino
Thanks, I'm a big fan of FM Synth music. Hoping to one day do some
experimentation with the chip myself if I can find the time.

