aboutsummaryrefslogtreecommitdiff
path: root/src/adlmidi_midiplay.cpp
diff options
context:
space:
mode:
authorWohlstand <admin@wohlnet.ru>2020-09-06 00:56:41 +0300
committerWohlstand <admin@wohlnet.ru>2020-09-06 00:56:41 +0300
commitf3dd9a6e69ba4ddc1359287754029f588db249df (patch)
tree3a87c86dfedf4a23bffc5a8fa017eae903b73ca8 /src/adlmidi_midiplay.cpp
parente81db845bf4c8b78310fd8c8807f490cb094a0ec (diff)
downloadlibADLMIDI-f3dd9a6e69ba4ddc1359287754029f588db249df.tar.gz
libADLMIDI-f3dd9a6e69ba4ddc1359287754029f588db249df.tar.bz2
libADLMIDI-f3dd9a6e69ba4ddc1359287754029f588db249df.zip
Added an aproximated HMI volume model
Diffstat (limited to 'src/adlmidi_midiplay.cpp')
-rw-r--r--src/adlmidi_midiplay.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/adlmidi_midiplay.cpp b/src/adlmidi_midiplay.cpp
index a7fb4ed..843bdb2 100644
--- a/src/adlmidi_midiplay.cpp
+++ b/src/adlmidi_midiplay.cpp
@@ -1365,7 +1365,12 @@ int64_t MIDIplay::calculateChipChannelGoodness(size_t c, const MIDIchannel::Note
s -= 40000;
// If it's same instrument, better chance to get it when no free channels
if(chan.recent_ins == ins)
- s = (synth.m_musicMode == Synth::MODE_CMF) ? 0 : -koff_ms;
+ {
+ if(synth.m_musicMode == Synth::MODE_CMF || synth.m_volumeScale == Synth::VOLUME_HMI)
+ s = 0; // Re-use channel immediately
+ else
+ s = -koff_ms; // Wait until releasing sound will complete
+ }
return s;
}