LibADLMIDI

From ZDoom Wiki
Jump to navigation Jump to search

libADLMIDI - is a software MIDI synthesizer based on MiniWikipediaLogoIcon.pngOPL2 or MiniWikipediaLogoIcon.pngOPL3 chips emulation. It is the one of software synthesizers offered by ZDoom which does not use sound fonts. It's similar to OPL synth emulation synthesizer, however, it has a different base and workflow algorithm. Up to GZDoom 4.14.2 it doesn't support using of OP2 lumps from WAD files as OPL synth emulation does, but later, this support is now included as an option to use OP2 lumps as a custom bank. It has own set of embedded GM banks are taken from various games and musical software or was built by various people. Together with embedded banks, it has a support of custom banks in WOPL format which gives ability to build a complete GS or XG compatible bank that has more than 128 melodic and 80 percussion instruments. In GZDoom, OPL-specific options can be edited from the advanced sound options menu.

Features

  • OPL3 emulation with four-operator mode support
  • FM patches from a number of known PC games, copied from files typical to AIL = Miles Sound System / DMX / HMI = Human Machine Interfaces / Creative IBK.
  • Pitch-bender with adjustable range
  • Vibrato that responds to RPN/NRPN parameters
  • Sustain (a.k.a. Pedal hold) and Sostenuto enable/disable
  • Use automatic arpeggio with chords to relieve channel pressure
  • Support for multiple concurrent MIDI synthesizers (per-track device/port select FF 09 message), can be used to overcome 16 channel limit
  • Support for custom banks of WOPL format
  • Partial support for GS and XG standards (having more instruments than in one 128:128 GM set and ability to use multiple channels for percussion purposes, and a support for some GS/XG exclusive controllers)
  • CC74 "Brightness" affects a modulator scale (to simulate frequency cut-off on WT synths)
  • Portamento support (CC5, CC37, and CC65)
  • SysEx support that supports some generic, GS, and XG features
  • Full-panning stereo option

OPL cores

The OPL core emulates a number of OPL chips. ZDoom extends them with features that did not exist on the emulated hardware, notably full MIDI stereo panning (OPL2 is normally mono, and OPL3 limited to 3 panning positions), though such enhancements can be turned off from the advanced sound options menu. There are three different cores available:

DOSBox OPL3
This OPL3 core comes from the MiniWikipediaLogoIcon.pngDOSBox project. This is the only emulator affected by the "Run at PCM rate" feature which allows running the emulation with fewer cycles to reduce CPU usage on slow machines.
Nuked OPL3
This OPL3 core was contributed by Alexey Khokholov.
Nuked OPL3 v1.7
The older version of Nuked OPL3, but slightly optimized and works a bit faster than Nuked OPL3 1.8.
Opal OPL3
This OPL3 core comes from the Reality AdLib Tracker project. It's an incomplete OPL3-only emulator that lacks some features like OPL2 and rhythm mode. It is in the Public Domain.
Java OPL3
This OPL3 core is a MiniWikipediaLogoIcon.pngC++ port of "That Vintage Tone", Robson Cozendey's OPL emulator written in MiniWikipediaLogoIcon.pngJava.
ESFMu ESFM
This is an emulator of ESS "ESFM" enhanced OPL3 clone based on Nuke.YKT's Nuked OPL3 and reverse engineering efforts from the community. In the scope of libADLMIDI right now it is used as one another OPL3 chip only since libADLMIDI doesn't utilizes ESFM features right now to open full potential of the ESFMu emulator.
MAME OPL2
This OPL2 core comes from the MiniWikipediaLogoIcon.pngMAME project. It is available under the MiniWikipediaLogoIcon.pngGNU GPL. This core is the oldest present in ZDoom and the default choice.
YMFM OPL2
This is an OPL2 emulator from the YMFM collection of BSD-licensed Yamaha FM sound cores written by Aaron Giles. In the scope of libADLMIDI gets used once compiler supports C++14 standard, otherwise this emulator gets disabled.
YMFM OPL3
This is an OPL3 emulator from the YMFM collection of BSD-licensed Yamaha FM sound cores written by Aaron Giles. In the scope of libADLMIDI gets used once compiler supports C++14 standard, otherwise this emulator gets disabled.
OPL2-LLE
This is an extra heavy (requires a really powerful processor for the stable real-time work even on single chip) replica of hardware OPL2's logic made by Nuke.YKT, author of the Nuked OPL3 emulator. This emulator has the goal to replicate the hardware chip's behaviour as close as possible.
OPL3-LLE
This is an extra heavy (requires a really powerful processor for the stable real-time work even on single chip) replica of hardware OPL3's logic made by Nuke.YKT, author of the Nuked OPL3 emulator. This emulator has the goal to replicate the hardware chip's behaviour as close as possible.

See also

External links

  • OPL3 Bank Editor - a utility that allows the creation of custom WOPL banks are can be used with this synthesizer.
  • libADLMIDI - GitHub page that contains latest source code of this synthesizer and related documentation.
  • WOPL format specification - A complete specification of WOPL bank format used by this synthesizer.
  • DOSBox project