FM Synthesis

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
ADLMIDI Flags:
 * 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.

Links

 * A collection of emulated OPL-Synth MIDI drivers for Windows - allows playing all MIDI-files as there are played on original FM sound card. (Originally found on VOGONS discussion)
 * OPL Bank Editor - a tool which allows making own banks for FM synthesizer, has built-in emulator to test configured instruments
 * More detail description about FM Synthesis at Wikipedia
 * Yamaha YMF262 (OPL3) - most popular FM Chip on PC Audio cards like Sound Blaster
 * Yamaha YM2612 (OPN2) - a chip used in the Sega Genesis game console