aboutsummaryrefslogtreecommitdiff
path: root/src/adlmidi_opl3.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/adlmidi_opl3.cpp')
-rw-r--r--src/adlmidi_opl3.cpp17
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),