From 731c65d92a769920dccdca89e991746dbba07a9d Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Sat, 2 Dec 2017 00:40:24 +0300 Subject: Added debug print to illustrate invalid data inside of std::set --- src/adlmidi_midiplay.cpp | 49 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 47 insertions(+), 2 deletions(-) (limited to 'src/adlmidi_midiplay.cpp') diff --git a/src/adlmidi_midiplay.cpp b/src/adlmidi_midiplay.cpp index 2c10331..c55e9cd 100644 --- a/src/adlmidi_midiplay.cpp +++ b/src/adlmidi_midiplay.cpp @@ -158,6 +158,38 @@ void MIDIplay::MidiTrackRow::reset() events.clear(); } +void TEMP_DEBUG_printSet(std::set &container, const char *messsage = "") +{ + if(container.empty()) + return; + std::printf("===============%s===============\n", messsage); + std::printf("Count: %u\n", container.size()); + for(std::set::iterator j = container.begin(); j != container.end(); j++) + { + size_t field = *j; + std::printf("SET ITEM: [%d]\n", (unsigned int)(field)); + std::fflush(stdout); + } + std::printf("---------------%s-END-----------\n", messsage); + std::fflush(stdout); +} + +void TEMP_DEBUG_printVector(std::vector &container, const char *messsage = "") +{ + if(container.empty()) + return; + std::printf("===============%s===============\n", messsage); + std::printf("Count: %u\n", container.size()); + for(std::vector::iterator j = container.begin(); j != container.end(); j++) + { + MIDIplay::MidiEvent &e = *j; + std::printf("VECTOR ITEM: Ch %d, Valid %d, Type %d\n", j->channel, (int)j->isValid, j->type); + std::fflush(stdout); + } + std::printf("---------------%s-END-----------\n", messsage); + std::fflush(stdout); +} + void MIDIplay::MidiTrackRow::sortEvents(bool *noteStates) { typedef std::vector EvtArr; @@ -188,6 +220,8 @@ void MIDIplay::MidiTrackRow::sortEvents(bool *noteStates) anyOther.push_back(events[i]); } + TEMP_DEBUG_printVector(noteOffs, "Filled"); + /* * If Note-Off and it's Note-On is on the same row - move this damned note off down! */ @@ -202,7 +236,7 @@ void MIDIplay::MidiTrackRow::sortEvents(bool *noteStates) const size_t note_i = (e.channel * 255) + (e.data[0] & 0x7F); //Check, was previously note is on or off bool wasOn = noteStates[note_i]; - markAsOn.insert(note_i); + markAsOn.insert(note_i); TEMP_DEBUG_printSet(markAsOn, "Inserted"); // Detect zero-length notes are following previously pressed note int noteOffsOnSameNote = 0; for(EvtArr::iterator j = noteOffs.begin(); j != noteOffs.end();) @@ -218,7 +252,7 @@ void MIDIplay::MidiTrackRow::sortEvents(bool *noteStates) { anyOther.push_back(*j); j = noteOffs.erase(j); - markAsOn.erase(note_i); + markAsOn.erase(note_i); TEMP_DEBUG_printSet(markAsOn, "Erased"); continue; } else { //When same row has many note-offs on same row @@ -228,9 +262,16 @@ void MIDIplay::MidiTrackRow::sortEvents(bool *noteStates) } } j++; + TEMP_DEBUG_printVector(noteOffs, "Iterated"); } + TEMP_DEBUG_printVector(noteOffs, "Quit from noteOffs loop"); + TEMP_DEBUG_printSet(markAsOn, "Quit from noteOffs loop"); } + TEMP_DEBUG_printVector(noteOffs, "Quit from if NOTEON"); + TEMP_DEBUG_printSet(markAsOn, "Quit from if NOTEON"); } + TEMP_DEBUG_printVector(noteOffs, "Quit from anyOther loop"); + TEMP_DEBUG_printSet(markAsOn, "Quit from anyOther loop"); //Mark other notes as released for(EvtArr::iterator j = noteOffs.begin(); j != noteOffs.end(); j++) @@ -238,10 +279,14 @@ void MIDIplay::MidiTrackRow::sortEvents(bool *noteStates) size_t note_i = (j->channel * 255) + (j->data[0] & 0x7F); noteStates[note_i] = false; } + TEMP_DEBUG_printVector(noteOffs, "Post-process noteOffs"); + TEMP_DEBUG_printSet(markAsOn, "Post-process noteOffs"); for(std::set::iterator j = markAsOn.begin(); j != markAsOn.end(); j++) noteStates[*j] = true; + TEMP_DEBUG_printVector(noteOffs, "Post-process markAsOn"); + TEMP_DEBUG_printSet(markAsOn, "Post-process markAsOn"); } /***********************************************************************************/ -- cgit v1.2.3 From ab57d660908f36e6604fa537807090fd2c7798cb Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Sat, 2 Dec 2017 00:56:40 +0300 Subject: More debug info for OpenWattcom --- src/adlmidi_midiplay.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src/adlmidi_midiplay.cpp') diff --git a/src/adlmidi_midiplay.cpp b/src/adlmidi_midiplay.cpp index c55e9cd..27d09d4 100644 --- a/src/adlmidi_midiplay.cpp +++ b/src/adlmidi_midiplay.cpp @@ -160,10 +160,11 @@ void MIDIplay::MidiTrackRow::reset() void TEMP_DEBUG_printSet(std::set &container, const char *messsage = "") { + std::printf("===============%s===============\n", messsage); + std::printf("Set Count: %u\n", container.size()); + std::fflush(stdout); if(container.empty()) return; - std::printf("===============%s===============\n", messsage); - std::printf("Count: %u\n", container.size()); for(std::set::iterator j = container.begin(); j != container.end(); j++) { size_t field = *j; @@ -176,10 +177,11 @@ void TEMP_DEBUG_printSet(std::set &container, const char *messsage = "") void TEMP_DEBUG_printVector(std::vector &container, const char *messsage = "") { + std::printf("===============%s===============\n", messsage); + std::printf("Vector Count: %u\n", container.size()); + std::fflush(stdout); if(container.empty()) return; - std::printf("===============%s===============\n", messsage); - std::printf("Count: %u\n", container.size()); for(std::vector::iterator j = container.begin(); j != container.end(); j++) { MIDIplay::MidiEvent &e = *j; @@ -228,6 +230,7 @@ void MIDIplay::MidiTrackRow::sortEvents(bool *noteStates) if(noteStates) { std::set markAsOn; + TEMP_DEBUG_printSet(markAsOn, "Initialized"); for(size_t i = 0; i < anyOther.size(); i++) { const MidiEvent e = anyOther[i]; -- cgit v1.2.3 From 03ae1603df780d1f66862b7ea96c66a277452eb8 Mon Sep 17 00:00:00 2001 From: Vitaly Novichkov Date: Fri, 8 Dec 2017 03:11:56 +0300 Subject: Return back the "const" attribute to CalculateAdlChannelGoodness --- src/adlmidi_midiplay.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/adlmidi_midiplay.cpp') diff --git a/src/adlmidi_midiplay.cpp b/src/adlmidi_midiplay.cpp index 27d09d4..76641a6 100644 --- a/src/adlmidi_midiplay.cpp +++ b/src/adlmidi_midiplay.cpp @@ -2105,7 +2105,7 @@ void MIDIplay::HandleEvent(size_t tk, const MIDIplay::MidiEvent &evt, int &statu } } -long MIDIplay::CalculateAdlChannelGoodness(unsigned c, const MIDIchannel::NoteInfo::Phys &ins, uint16_t) +long MIDIplay::CalculateAdlChannelGoodness(unsigned c, const MIDIchannel::NoteInfo::Phys &ins, uint16_t) const { long s = -ch[c].koff_time_until_neglible; -- cgit v1.2.3 From 48708549ff5f8bc7388c0cb9121583932e932439 Mon Sep 17 00:00:00 2001 From: Vitaly Novichkov Date: Sat, 9 Dec 2017 23:49:02 +0300 Subject: Remove temporary debug prints to merge some of changes into Master branch --- src/adlmidi_midiplay.cpp | 53 ++---------------------------------------------- 1 file changed, 2 insertions(+), 51 deletions(-) (limited to 'src/adlmidi_midiplay.cpp') diff --git a/src/adlmidi_midiplay.cpp b/src/adlmidi_midiplay.cpp index 76641a6..c88a796 100644 --- a/src/adlmidi_midiplay.cpp +++ b/src/adlmidi_midiplay.cpp @@ -158,40 +158,6 @@ void MIDIplay::MidiTrackRow::reset() events.clear(); } -void TEMP_DEBUG_printSet(std::set &container, const char *messsage = "") -{ - std::printf("===============%s===============\n", messsage); - std::printf("Set Count: %u\n", container.size()); - std::fflush(stdout); - if(container.empty()) - return; - for(std::set::iterator j = container.begin(); j != container.end(); j++) - { - size_t field = *j; - std::printf("SET ITEM: [%d]\n", (unsigned int)(field)); - std::fflush(stdout); - } - std::printf("---------------%s-END-----------\n", messsage); - std::fflush(stdout); -} - -void TEMP_DEBUG_printVector(std::vector &container, const char *messsage = "") -{ - std::printf("===============%s===============\n", messsage); - std::printf("Vector Count: %u\n", container.size()); - std::fflush(stdout); - if(container.empty()) - return; - for(std::vector::iterator j = container.begin(); j != container.end(); j++) - { - MIDIplay::MidiEvent &e = *j; - std::printf("VECTOR ITEM: Ch %d, Valid %d, Type %d\n", j->channel, (int)j->isValid, j->type); - std::fflush(stdout); - } - std::printf("---------------%s-END-----------\n", messsage); - std::fflush(stdout); -} - void MIDIplay::MidiTrackRow::sortEvents(bool *noteStates) { typedef std::vector EvtArr; @@ -222,15 +188,12 @@ void MIDIplay::MidiTrackRow::sortEvents(bool *noteStates) anyOther.push_back(events[i]); } - TEMP_DEBUG_printVector(noteOffs, "Filled"); - /* * If Note-Off and it's Note-On is on the same row - move this damned note off down! */ if(noteStates) { std::set markAsOn; - TEMP_DEBUG_printSet(markAsOn, "Initialized"); for(size_t i = 0; i < anyOther.size(); i++) { const MidiEvent e = anyOther[i]; @@ -239,7 +202,7 @@ void MIDIplay::MidiTrackRow::sortEvents(bool *noteStates) const size_t note_i = (e.channel * 255) + (e.data[0] & 0x7F); //Check, was previously note is on or off bool wasOn = noteStates[note_i]; - markAsOn.insert(note_i); TEMP_DEBUG_printSet(markAsOn, "Inserted"); + markAsOn.insert(note_i); // Detect zero-length notes are following previously pressed note int noteOffsOnSameNote = 0; for(EvtArr::iterator j = noteOffs.begin(); j != noteOffs.end();) @@ -255,7 +218,7 @@ void MIDIplay::MidiTrackRow::sortEvents(bool *noteStates) { anyOther.push_back(*j); j = noteOffs.erase(j); - markAsOn.erase(note_i); TEMP_DEBUG_printSet(markAsOn, "Erased"); + markAsOn.erase(note_i); continue; } else { //When same row has many note-offs on same row @@ -265,16 +228,9 @@ void MIDIplay::MidiTrackRow::sortEvents(bool *noteStates) } } j++; - TEMP_DEBUG_printVector(noteOffs, "Iterated"); } - TEMP_DEBUG_printVector(noteOffs, "Quit from noteOffs loop"); - TEMP_DEBUG_printSet(markAsOn, "Quit from noteOffs loop"); } - TEMP_DEBUG_printVector(noteOffs, "Quit from if NOTEON"); - TEMP_DEBUG_printSet(markAsOn, "Quit from if NOTEON"); } - TEMP_DEBUG_printVector(noteOffs, "Quit from anyOther loop"); - TEMP_DEBUG_printSet(markAsOn, "Quit from anyOther loop"); //Mark other notes as released for(EvtArr::iterator j = noteOffs.begin(); j != noteOffs.end(); j++) @@ -282,14 +238,9 @@ void MIDIplay::MidiTrackRow::sortEvents(bool *noteStates) size_t note_i = (j->channel * 255) + (j->data[0] & 0x7F); noteStates[note_i] = false; } - TEMP_DEBUG_printVector(noteOffs, "Post-process noteOffs"); - TEMP_DEBUG_printSet(markAsOn, "Post-process noteOffs"); for(std::set::iterator j = markAsOn.begin(); j != markAsOn.end(); j++) noteStates[*j] = true; - - TEMP_DEBUG_printVector(noteOffs, "Post-process markAsOn"); - TEMP_DEBUG_printSet(markAsOn, "Post-process markAsOn"); } /***********************************************************************************/ -- cgit v1.2.3