FM Synthesis

From Moondust Wiki
Jump to navigation Jump to search

Frequency modulation synthesis (aka FM Synthesis, OPL-Synth) is a form of audio synthesis where the timbre of a simple waveform (such as a square, triangle, or sawtooth) is changed by modulating its frequency with a modulator frequency that is also in the audio range. In simple words, it's a generation of audio stream from scratch by formulas (while Wave-Table based synthesis is based on pre-recorded samples (aka Sound Fonts)). FM-Synthesis chips are widely used in the PC sound cards in 1980~90 years (for example, AdLib, Creative Sound Blaster, ESS, etc.) until sound cards and computers are got ability to play high-quality audio streams without lags, and with progressing of audio-compression formats. Most of games developed for DOS are used OPL2 and OPL3 chips to play their music (some games are used CD-Audio to play background music: for example, GTA 1, Blood and Shadow Warrior, and others). With modern sound cards, those games are not able to play music without using any emulators with a full support of the OPL2/3 emulation (such as DosBOX).

Procs of FM Synthesis in comparison with wave table synthesis

  • Light-weight instrument banks (for OPL3 chip every instrument has approximately 11 bytes size while WaveTable based banks with good quality are has bigger size and may have more than 1 GB size in total)
  • Pure quality of sound with any wave frequency (because it was been generated by formulas from scratch. WaveTable just changes frequency of same sample, and down-sample operation is damages resulted quality)
  • Wave modulation based effects (because wave generating from scratch in real time, it can be changed/modulated/scaled as you want to produce various beautiful sound effects)
  • With 4 operators and more and with combining multiple generated wave streams is possible to produce various beautiful electronic sound effects (many tricks of FM synthesis are impossible with wave-table synthesizer even with using filters and effects (such as more realistic key-off release, modulation vibrato/tremolo) ). The good example is Yamaha DX7 synthesizer which supports 6 operators with 32 combining algorithms.

Cons of FM Synthesis

  • Impossible to produce real-world sounds to be compared with real musical instruments (WaveTable sythesiser uses pre-recorded audio fragments which are can have everything (for some jokes you even can record your voice and play a music with it!))
  • Dry sound on two-operator chip mode without extra effects
  • Incorrect settings, instrument choice or wrong bank choice can produce very bad sound. Therefore suggested to edit your MIDI file to set right instruments for specific bank to take best sound version.
  • Most popular Yamaha OPL3 chip had it's own limits such as 18 two-operator and 6 four-operator polyphonic channels (and it's older model - OPL2 which has only 9 two-operator channels!!!), therefore most of drivers for it are may produce glitches in resulted sound. That resolved in the ADLMIDI which processes multiple chip emulators and unites channels from every emulated chip to excite channel limit.

Examples of musics, synthesized on libADLMIDI


  • DT - Deep Tremolo
  • DV - Deep Vibrato
  • SM - Scalable modulation

Note: Loop points in some MIDI-Files are done as markers named as "loopStart" and "loopEnd" which are was introduced in MIDI files from Final Fantasy VII. There are tells where is a looping music part. Most of MIDI sequencers are has no support of them. ADLMIDI synthesizer has implementation of correct playing support of MIDI files with a loop points.

Example name Track ADLMIDI Bank and description Source MIDI
1 Synth strings test #65, DT=1, DV=1, SM=0 (Remixed bank #58 by Wohlstand) Download MIDI-file
2 Pilot Brothers, Level 9 #62, DT=0, DV=0, SM=0 (bank used in Duke Nukem 3D game) Download MIDI-file
3 Marisa World #59, DT=1, DV=1, SM=0 (4-operator mode, better sound) Download MIDI-file (has loop points!)
4 Song of Storms #59, DT=1, DV=1, SM=0 (4-operator mode, better sound) Download MIDI-file
5 Bowser's Villa 1 (Super Princess Peach) #14, DT=0, DV=0, SM=0 (bank used in the DOOM II game) Download MIDI-file
6 Big Bad baby Bowser (Yoshi's Island) #58, DT=1, DV=1, SM=0 (Familiar on Windows 9x) Download MIDI-file (has loop points!)
7 Barrel Volcano (Super Mario RPG) #62, DT=0, DV=0, SM=1 (bank used in Duke Nukem 3D game) Download MIDI-file
8 Bowser's Battle (Super Mario RGP) #62, DT=0, DV=0, SM=0 (bank used in Duke Nukem 3D game) Download MIDI-file (has loop points!)
9 S. Christian Collins - The Hybrid Collage #59, DT=1, DV=1, SM=0 (4-operator mode, better sound) Download MIDI-file
10 MIDI sample from Wikipedia #62, DT=0, DV=0, SM=0 (bank used in Duke Nukem 3D game) Download MIDI-file
11 Metallica - Hit The Lights #68, DT=0, DV=0, SM=0 Download MIDI-file