Synthesizer plugin for ADLMIDI and OPNMIDI (VST/LV2)
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
resources updated the set of banks with new measurements Oct 3, 2018


Synthesizer plugin for ADLMIDI and OPNMIDI (VST/LV2)



This software package provides FM synthesizer plugins, based on OPL3 and OPN2 sound chip emulations.
The emulations and the drivers are provided by libADLMIDI and libOPNMIDI.

  • control of multiple YMF262/YM2612 emulated chips
  • high fidelity emulation, with choice of compromise level (good fidelity/fast, excellent fidelity/slow)
  • synthesis of melodic and percussive instruments
  • extensible polyphony
  • bundled collection of instruments
  • support for dynamic parameterization and automation
  • rigorous implementation of the MIDI standard
  • multi-channel operation with General MIDI compatibility
  • ability to synthesize entire MIDI files out of the box

Author: Jean Pierre Cimalando
Contributors: Olivier Humbert, Christopher Arndt

Development builds

Build Status

Find automatic builds of the development branch here.

Useful links

Build instructions

Install required dependencies:

  • the CMake build system
  • a C++11 compiler
  • development packages for Linux: Jack, ALSA, Freetype, X11


git clone --recursive
mkdir ADLplug/build
cd ADLplug/build
cmake -DCMAKE_BUILD_TYPE=Release ..  #<more build options...>
cmake --build .

This package is able to build several plugins from a single source:

  • to build the OPL3 variant, define the option ADLplug_CHIP to OPL3;
  • to build the OPN2 variant, define the option ADLplug_CHIP to OPN2.
Build option Description
-DADLplug_VST2=ON/OFF Build a VST2 plugin
-DADLplug_VST3=ON/OFF Build a VST3 plugin
-DADLplug_LV2=ON/OFF Build a LV2 plugin
-DADLplug_Standalone=ON/OFF Build a standalone program
-DADLplug_Jack=ON/OFF Build a standalone program for Jack with better features
-DADLplug_CHIP=OPL3/OPN2 Build a variant for the given chip type (default: OPL3)
-DADLplug_PCH=ON/OFF Use precompiled headers, on a compiler which supports it
-DADLplug_ASSERTIONS=ON/OFF Force building with assertions regardless of build type


sudo cmake --build . --target install

Change Log

1.0.0.beta.4 (dev)

  • fixed a case when the state loading fallback would fail because of a bad initialization sequence


  • added the ability to add, delete and rename banks and programs
  • support extended key maps with unicode characters
  • fixed a crash at startup when the state is restored before setting up the synthesizer
  • added soft panning support for OPN2
  • fixed a case where parameters would not be synchronized after receiving MIDI program change


  • added the CLI flag -a for auto-connection to system outputs in the JACK-only standalone
  • added the freedesktop shortcuts and icons
  • support for keyboard mappings other than QWERTY
  • support setting the keyboard's octave
  • highlighted the keys played via MIDI input
  • made the program selection follow MIDI program change events
  • allowed to install into the GNU standard installation directories
  • we have been selected for the Open Source Music FM Synthesizer Challenge! 🎉


  • support of OPN2 synthesis in a distinct plugin
  • fixed the plugin state which would be saved incomplete
  • fixed the extension of OPN2 bank files in the file chooser


  • compensation of MIDI latency at high buffer sizes
  • fixed a mismanagement of the 4-op channel map
  • fixed cases of bad channel allocations following a long idle period
  • improved internal timing precision
  • gained an ability to save and restore the current state
  • added a large collection of embedded banks
  • enhanced the UI in various ways


ADLplug consists of various parts distributed under different free software licenses. The parts developed exclusively for this project are Boost licensed. The other parts and respective licenses are indicated here below.

Files License
thirdparty/fmt 3-Clause BSD
thirdparty/JUCE GNU GPL v3
thirdparty/libADLMIDI GNU LGPL v3, GNU LGPL v2.1, GNU GPL v3
thirdparty/libOPNMIDI GNU LGPL v3, GNU LGPL v2.1, GNU GPL v3
thirdparty/simpleini MIT
thirdparty/vst3sdk GNU GPL v3
thirdparty/wopl GNU LGPL v3
thirdparty/wopn GNU LGPL v3
sources/opl3/adl/measurer GNU GPL v3
sources/opl3/adl/measurer/chips/dosbox GNU GPL v2+
sources/opn2/adl/measurer GNU GPL v3
sources/opn2/adl/measurer/chips/mame GNU GPL v2+
sources/opl3/ui/components/ GNU LGPL v2.1