aboutsummaryrefslogtreecommitdiff
path: root/src/adlmidi_midiplay.cpp
diff options
context:
space:
mode:
authorJP Cimalando <jpcima@users.noreply.github.com>2019-01-25 08:16:31 +0100
committerJP Cimalando <jpcima@users.noreply.github.com>2019-01-25 10:51:30 +0100
commit3bdda83b7d5417785f5df0120d4f2d73af4253d4 (patch)
treefb1ce7d24f72ac4ea98977b3009fe4e7586be342 /src/adlmidi_midiplay.cpp
parent60bc095f2f431b4e6421307fc7ab62c6cc9ce0c2 (diff)
downloadlibADLMIDI-3bdda83b7d5417785f5df0120d4f2d73af4253d4.tar.gz
libADLMIDI-3bdda83b7d5417785f5df0120d4f2d73af4253d4.tar.bz2
libADLMIDI-3bdda83b7d5417785f5df0120d4f2d73af4253d4.zip
force note-on to do immediate note killing
Diffstat (limited to 'src/adlmidi_midiplay.cpp')
-rw-r--r--src/adlmidi_midiplay.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/adlmidi_midiplay.cpp b/src/adlmidi_midiplay.cpp
index f8bd0a2..011f74a 100644
--- a/src/adlmidi_midiplay.cpp
+++ b/src/adlmidi_midiplay.cpp
@@ -345,7 +345,7 @@ bool MIDIplay::realTime_NoteOn(uint8_t channel, uint8_t note, uint8_t velocity)
if(static_cast<size_t>(channel) > m_midiChannels.size())
channel = channel % 16;
- noteOff(channel, note);
+ noteOff(channel, note, velocity != 0);
// On Note on, Keyoff the note first, just in case keyoff
// was omitted; this fixes Dance of sugar-plum fairy
// by Microsoft. Now that we've done a Keyoff,
@@ -1733,7 +1733,7 @@ void MIDIplay::updatePortamento(size_t midCh)
}
-void MIDIplay::noteOff(size_t midCh, uint8_t note)
+void MIDIplay::noteOff(size_t midCh, uint8_t note, bool forceNow)
{
MIDIchannel &ch = m_midiChannels[midCh];
MIDIchannel::notes_iterator i = ch.find_activenote(note);
@@ -1741,7 +1741,7 @@ void MIDIplay::noteOff(size_t midCh, uint8_t note)
if(!i.is_end())
{
MIDIchannel::NoteInfo &ni = i->value;
- if(ni.ttl <= 0)
+ if(forceNow || ni.ttl <= 0)
noteUpdate(midCh, i, Upd_Off);
else
ni.isOnExtendedLifeTime = true;