aboutsummaryrefslogtreecommitdiff
path: root/Readme.txt
blob: 9a8ed7cb14b68f93bd3cc8dfa3c21afa7012b046 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
==================================================================================
    libADLMIDI is a free MIDI to WAV conversion library with OPL3 emulation
==================================================================================

Original ADLMIDI code: Copyright (c) 2010-2014 Joel Yliluoma <bisqwit@iki.fi>
ADLMIDI Library API:   Copyright (c) 2015 Vitaly Novichkov <admin@wohlnet.ru>

Library is based on the ADLMIDI, a MIDI player for Linux and Windows with OPL3 emulation:
=========================================
http://iki.fi/bisqwit/source/adlmidi.html
=========================================

=========================================
      Differences with original tool
=========================================
* Reverb code has been removed.
* Doesn't contains platform specific code. Library can be used with various purposes include making of a custom music decoders for a media players and usage with a games

=========================================
              Key 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.
* Stereo sound
* Number of simulated soundcards can be specified as 1-100 (maximum channels 1800!)
* Pan (binary panning, i.e. left/right side on/off)
* Pitch-bender with adjustable range
* Vibrato that responds to RPN/NRPN parameters
* Sustain enable/disable
* MIDI and RMI file support
* loopStart / loopEnd tag support (Final Fantasy VII)
* 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


=========================================
              How to build
=========================================
You can build shared version and additional tools on the Linux when you will run a "make" command and you will have libadlmidi.so and additional tools in the "bin" directory.

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):

adlmidi.h    - Library API, use it to communicate with library

dbopl.h		 - DOSBOX OPL Emulation header
fraction.h	 - Fraction number handling
adldata.hh   - bank structures definition

dbopl.cpp    - DOSBOX OPL Emulation code
adlmidi.cpp  - code of library
adldata.cpp	 - Automatically generated dump of FM banks from "fm_banks" directory
               via "gen_adldata" tool

=========================================
              Example
=========================================
In the src/midiplay you will found alone CPP file which an example of library usage.
That example is a simple audio player based on SDL Audio usage.

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

=========================================
              Todo
=========================================
* Time based Seek/Tell support
* Support of title and other meta-tags retrieving
* Support of real-time listening of incoming MIDI-commands.
  That will allow to use library as software MIDI Output device
  to play any MIDI via this library.

=========================================
Changelog	
=========================================
1.0.0	2015-10-10
 * First release of library

1.0.1   2015-01-15
 * Fixed freezing on invalid loop points (for cases when loopEnd going before loopStart or both points are at same position)
 * Enabled volume updating while note is playing