From 7394b15b9547c444999503fae5f42e340854c9eb Mon Sep 17 00:00:00 2001 From: Vitaly Novichkov Date: Tue, 26 Jun 2018 18:15:36 +0300 Subject: Changed logic to identify percussion instrument in the goodness calculator --- src/adlmidi_midiplay.cpp | 3 ++- src/adlmidi_private.hpp | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) (limited to 'src') 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 -- cgit v1.2.3