diff options
author | Wohlstand <admin@wohlnet.ru> | 2017-11-07 02:40:13 +0300 |
---|---|---|
committer | Wohlstand <admin@wohlnet.ru> | 2017-11-07 02:40:13 +0300 |
commit | 5ebf40cd10d59c5e11ea744cc7b6075ee4c1bc90 (patch) | |
tree | 3a6dfc768c44046afd28f2133a6e964dfad656db /src/adlmidi_opl3.cpp | |
parent | 22350acc1f699f70cbdac6b5facadd0d6ccc8a7f (diff) | |
download | libADLMIDI-5ebf40cd10d59c5e11ea744cc7b6075ee4c1bc90.tar.gz libADLMIDI-5ebf40cd10d59c5e11ea744cc7b6075ee4c1bc90.tar.bz2 libADLMIDI-5ebf40cd10d59c5e11ea744cc7b6075ee4c1bc90.zip |
Custom WOPL now supports multiple banks
Feel free to create something like GS or XG bank :wink:
Diffstat (limited to 'src/adlmidi_opl3.cpp')
-rw-r--r-- | src/adlmidi_opl3.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/adlmidi_opl3.cpp b/src/adlmidi_opl3.cpp index ce26ba6..9db3803 100644 --- a/src/adlmidi_opl3.cpp +++ b/src/adlmidi_opl3.cpp @@ -115,30 +115,39 @@ static const unsigned short Channels[23] = */ -const adlinsdata &OPL3::GetAdlMetaIns(unsigned n) +const adlinsdata &OPL3::GetAdlMetaIns(size_t n) { return (n & DynamicMetaInstrumentTag) ? dynamic_metainstruments[n & ~DynamicMetaInstrumentTag] : adlins[n]; } -unsigned OPL3::GetAdlMetaNumber(unsigned midiins) +size_t OPL3::GetAdlMetaNumber(size_t midiins) { return (AdlBank == ~0u) ? (midiins | DynamicMetaInstrumentTag) : banks[AdlBank][midiins]; } - const adldata &OPL3::GetAdlIns(size_t insno) { return (insno & DynamicInstrumentTag) ? dynamic_instruments[insno & ~DynamicInstrumentTag] - : adl[insno]; + : adl[insno]; +} + +void OPL3::setEmbeddedBank(unsigned int bank) +{ + AdlBank = bank; + //Embedded banks are supports 128:128 GM set only + dynamic_percussion_offset = 128; + dynamic_melodic_banks.clear(); + dynamic_percussion_banks.clear(); } OPL3::OPL3() : + dynamic_percussion_offset(128), DynamicInstrumentTag(0x8000u), DynamicMetaInstrumentTag(0x4000000u), NumCards(1), |