aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/adlmidi_midiplay.cpp3
-rw-r--r--src/adlmidi_private.hpp2
2 files changed, 4 insertions, 1 deletions
diff --git a/src/adlmidi_midiplay.cpp b/src/adlmidi_midiplay.cpp
index b300270..4f57374 100644
--- a/src/adlmidi_midiplay.cpp
+++ b/src/adlmidi_midiplay.cpp
@@ -499,6 +499,7 @@ bool MIDIplay::realTime_NoteOn(uint8_t channel, uint8_t note, uint8_t velocity)
ir.first->currentTone = tone;
ir.first->glideRate = HUGE_VAL;
ir.first->midiins = midiins;
+ ir.first->isPercussion = isPercussion;
ir.first->ains = ains;
ir.first->chip_channels_count = 0;
@@ -1295,7 +1296,7 @@ int64_t MIDIplay::calculateChipChannelGoodness(size_t c, const MIDIchannel::Note
}
// Percussion is inferior to melody
- s += 50 * (int64_t)(k->midiins / 128);
+ s += k->isPercussion ? 50 : 0;
/*
if(k->second.midiins >= 25
&& k->second.midiins < 40
diff --git a/src/adlmidi_private.hpp b/src/adlmidi_private.hpp
index ffec1b2..8e08077 100644
--- a/src/adlmidi_private.hpp
+++ b/src/adlmidi_private.hpp
@@ -582,6 +582,8 @@ public:
double glideRate;
//! Patch selected on noteon; index to bank.ins[]
size_t midiins;
+ //! Is note the percussion instrument
+ bool isPercussion;
//! Patch selected
const adlinsdata2 *ains;
enum