diff options
author | Wohlstand <admin@wohlnet.ru> | 2017-11-18 03:03:51 +0300 |
---|---|---|
committer | Wohlstand <admin@wohlnet.ru> | 2017-11-18 03:03:51 +0300 |
commit | 018ca3b55d5a521c9fef72afaa401822a4beca97 (patch) | |
tree | 9e8dcbd911cc712f5465b58cde292db761f40325 /src/adlmidi_midiplay.cpp | |
parent | edb236778c2d424e8d66a86f4d3ab69917550044 (diff) | |
download | libADLMIDI-018ca3b55d5a521c9fef72afaa401822a4beca97.tar.gz libADLMIDI-018ca3b55d5a521c9fef72afaa401822a4beca97.tar.bz2 libADLMIDI-018ca3b55d5a521c9fef72afaa401822a4beca97.zip |
Automatically add "reset all" into begin of every track
This will avoid damaged sound caused by controllers state came from end of song
Diffstat (limited to 'src/adlmidi_midiplay.cpp')
-rw-r--r-- | src/adlmidi_midiplay.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/adlmidi_midiplay.cpp b/src/adlmidi_midiplay.cpp index 0348b31..7e484f8 100644 --- a/src/adlmidi_midiplay.cpp +++ b/src/adlmidi_midiplay.cpp @@ -330,6 +330,18 @@ bool MIDIplay::buildTrackData() errorString += std::string(error, (size_t)len); return false; } + + //HACK: Begin every track with "Reset all controllers" event to avoid controllers state break came from end of song + for(uint8_t chan = 0; chan < 16; chan++) + { + MidiEvent event; + event.type = MidiEvent::T_CTRLCHANGE; + event.channel = chan; + event.data.push_back(121); + event.data.push_back(0); + evtPos.events.push_back(event); + } + evtPos.absPos = abs_position; abs_position += evtPos.delay; trackDataNew[tk].push_back(evtPos); |