MCPcopy Create free account
hub / github.com/DamRsn/NeuralNote / mergeOverlappingNotesWithSamePitch

Method mergeOverlappingNotesWithSamePitch

Lib/Model/Notes.h:108–129  ·  view source on GitHub ↗

* mergeOverlappingNotes merges note events of same pitch that are overlapping in time. * inOutEvents is expected to be sorted. * @param inOutEvents */

Source from the content-addressed store, hash-verified

106 * @param inOutEvents
107 */
108 static void mergeOverlappingNotesWithSamePitch(std::vector<Notes::Event>& inOutEvents)
109 {
110 sortEvents(inOutEvents);
111 for (int i = 0; i < int(inOutEvents.size()) - 1; i++) {
112 auto& event = inOutEvents[i];
113 for (auto j = i + 1; j < inOutEvents.size(); j++) {
114 auto& event2 = inOutEvents[j];
115
116 // If notes don't overlap, break
117 if (event2.startFrame >= event.endFrame) {
118 break;
119 }
120
121 // If notes overlap and have the same pitch: merge them
122 if (event.pitch == event2.pitch) {
123 event.endTime = event2.endTime;
124 event.endFrame = event2.endFrame;
125 inOutEvents.erase(inOutEvents.begin() + j);
126 }
127 }
128 }
129 }
130
131private:
132 /**

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected