Wohlstand / libADLMIDI

A Software MIDI Synthesizer library with OPL3 (YMF262) emulator
GNU Lesser General Public License v3.0
178 stars 17 forks source link
audio-codec fm-synthesizer midi-player opl3-emulator real-time-midi ymf262

libADLMIDI

libADLMIDI is a free Software MIDI synthesizer library with OPL3 emulation

Original ADLMIDI code: Copyright (c) 2010-2014 Joel Yliluoma bisqwit@iki.fi

ADLMIDI Library API: Copyright (c) 2015-2024 Vitaly Novichkov admin@wohlnet.ru

Library is based on the ADLMIDI, a MIDI player for Linux and Windows with OPL3 emulation:

https://bisqwit.iki.fi/source/adlmidi.html

Differences with original tool

Tested on platforms

Key features

How to build

To build libADLMIDI you need to use CMake:

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
sudo make install

Notes

License

The library is licensed under in it's parts LGPL 2.1+, GPL v2+, GPL v3+, and MIT.

Available CMake options

Library options

Utils and extras

You also can build library manually:

You need to make in the any IDE a library project and put into it next files (or include those files into subfolder of your exist project instead if you want to use it statically):

Useful macros

Public header (include)

Internal code (src)

MIDI Sequencer

To remove MIDI Sequencer, define ADLMIDI_DISABLE_MIDI_SEQUENCER macro and remove all those files

Important: Please use DosBox emulator on mobile devices because it requires small CPU power. Nuked OPL synthesizer is very accurate (compared to real OPL3 chip), but it requires much more power device and is high probability your device will lag and playback will be choppy.

Tip 1: If you want to work with custom WOPL banks without using of embedded banks, you can create them by using OPL3 Bank Editor where also included some WOPL examples, or you are able to save any other bank as WOPL.

Tip 2: To compile libADLMIDI without embedded banks, define the DISABLE_EMBEDDED_BANKS macro and remove building of the adldata.cpp file in your project.

Example

In the utils/midiplay you will found an example project which uses this library. That example is a simple audio player based on SDL Audio usage.

To build that example you will need to have installed SDL2 library.

Working demos

Todo

Changelog

dev

1.5.1 2022-10-31

1.5.0.1 2020-10-11

1.5.0 2020-09-28

1.4.0 2018-10-01

1.3.3 2018-06-19

1.3.2 2018-04-24

1.3.1 2017-12-16

1.3.0 2017-10-17

1.2.1 2017-07-30

1.2.0 2017-02-15

1.1.1 2016-12-09

1.1.0 2016-12-06

1.0.3 2016-08-06

1.0.2 2016-03-16

1.0.0 2015-10-10