diff options
author | JP Cimalando <jpcima@users.noreply.github.com> | 2018-07-23 10:37:13 +0200 |
---|---|---|
committer | JP Cimalando <jpcima@users.noreply.github.com> | 2018-07-23 10:44:54 +0200 |
commit | 9544965f28ce42b69f97e6aaeb881c9a20bfbad4 (patch) | |
tree | e41c18b4e49110e25e2ef2f4de8c69ccb8da4910 /src/adlmidi_midiplay.cpp | |
parent | 32183e3d285fc3de2778da1b3c678d96894e9b38 (diff) | |
download | libADLMIDI-9544965f28ce42b69f97e6aaeb881c9a20bfbad4.tar.gz libADLMIDI-9544965f28ce42b69f97e6aaeb881c9a20bfbad4.tar.bz2 libADLMIDI-9544965f28ce42b69f97e6aaeb881c9a20bfbad4.zip |
preserve the data of operator 3-4 in internal storage, regardless of being 2op/4op
Diffstat (limited to 'src/adlmidi_midiplay.cpp')
-rw-r--r-- | src/adlmidi_midiplay.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/adlmidi_midiplay.cpp b/src/adlmidi_midiplay.cpp index b226ce1..191021e 100644 --- a/src/adlmidi_midiplay.cpp +++ b/src/adlmidi_midiplay.cpp @@ -395,6 +395,7 @@ bool MIDIplay::realTime_NoteOn(uint8_t channel, uint8_t note, uint8_t velocity) } //uint16_t i[2] = { ains->adlno1, ains->adlno2 }; + bool is_2op = !(ains->flags & (adlinsdata::Flag_Pseudo4op|adlinsdata::Flag_Real4op)); bool pseudo_4op = ains->flags & adlinsdata::Flag_Pseudo4op; #ifndef __WATCOMC__ MIDIchannel::NoteInfo::Phys voices[MIDIchannel::NoteInfo::MaxNumPhysChans] = @@ -457,7 +458,7 @@ bool MIDIplay::realTime_NoteOn(uint8_t channel, uint8_t note, uint8_t velocity) if(ccount == 1 && static_cast<int32_t>(a) == adlchannel[0]) continue; // ^ Don't use the same channel for primary&secondary - if(voices[0].ains == voices[1].ains || pseudo_4op/*i[0] == i[1] || pseudo_4op*/) + if(is_2op || pseudo_4op) { // Only use regular channels uint32_t expected_mode = 0; @@ -1878,7 +1879,7 @@ ADLMIDI_EXPORT void AdlInstrumentTester::DoNote(int note) } double hertz = 172.00093 * std::exp(0.057762265 * (tone + 0.0)); int32_t adlchannel[2] = { 0, 3 }; - if(ains.adl[0] == ains.adl[1]) + if((ains.flags & (adlinsdata::Flag_Pseudo4op|adlinsdata::Flag_Real4op)) == 0) { adlchannel[1] = -1; adlchannel[0] = 6; // single-op @@ -1960,7 +1961,7 @@ ADLMIDI_EXPORT void AdlInstrumentTester::NextAdl(int offset) } std::printf("%s%s%s%u\t", ToneIndication, - ains.adl[0] != ains.adl[1] ? "[2]" : " ", + (ains.flags & (adlinsdata::Flag_Pseudo4op|adlinsdata::Flag_Real4op)) ? "[2]" : " ", (P->ins_idx == a) ? "->" : "\t", i ); |