diff options
author | Florian Jung <flo@windfisch.org> | 2013-09-18 23:54:35 +0200 |
---|---|---|
committer | Florian Jung <flo@windfisch.org> | 2013-09-18 23:54:35 +0200 |
commit | b3fc353a09496ee0aea7099d72e6963f4c2fc774 (patch) | |
tree | 83ab91e988c59076d81ebddc09e8ff274dee8af5 /muse2/muse/midi.cpp | |
parent | 48a93993cfce160fb7d4cf0b67b4b77e22db19e5 (diff) | |
parent | 85a51421d44f3893a1010f77e0418caf6be70235 (diff) |
Merge branch 'audiomsg_overhaul' (nonshared eventlists and more)
This introduces the following changes:
- Clone Parts no more share their eventlist. Instead, all changes
made to one clone are replicated to the other clones' eventlists
- audio/song->msg{Add,Delete,Change}{Part,Event,Track} have been
replaced by the corresponding UndoOp operations.
- Enforcing of const-correctness: No GUI code may ever gain
writable access to audio/midi/song data structures. Access
must *always* go through applyOperationGroup. This is now
enforced.
- Removed a bunch of DELETETHIS or REMOVE or otherwise commented
out code
- Removed dead code
- Removed unused Audio Messages (that should go through applyOpGroup
anyway.)
Diffstat (limited to 'muse2/muse/midi.cpp')
-rw-r--r-- | muse2/muse/midi.cpp | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/muse2/muse/midi.cpp b/muse2/muse/midi.cpp index 524329b1..d70b132c 100644 --- a/muse2/muse/midi.cpp +++ b/muse2/muse/midi.cpp @@ -198,7 +198,7 @@ QString nameSysex(unsigned int len, const unsigned char* buf) // generally: how to handle incomplete messages //--------------------------------------------------------- -void buildMidiEventList(EventList* del, const MPEventList* el, MidiTrack* track, +void buildMidiEventList(EventList* del, const MPEventList& el, MidiTrack* track, int div, bool addSysexMeta, bool doLoops) { int hbank = 0xff; @@ -211,7 +211,7 @@ void buildMidiEventList(EventList* del, const MPEventList* el, MidiTrack* track, EventList mel; - for (iMPEvent i = el->begin(); i != el->end(); ++i) { + for (iMPEvent i = el.begin(); i != el.end(); ++i) { MidiPlayEvent ev = *i; if (!addSysexMeta && (ev.type() == ME_SYSEX || ev.type() == ME_META)) continue; @@ -305,7 +305,7 @@ void buildMidiEventList(EventList* del, const MPEventList* el, MidiTrack* track, iMPEvent ii = i; ++ii; bool found = false; - for (; ii != el->end(); ++ii) { + for (; ii != el.end(); ++ii) { MidiPlayEvent ev = *ii; if (ev.type() == ME_CONTROLLER) { if (ev.dataA() == CTRL_LDATA) { @@ -471,7 +471,7 @@ void buildMidiEventList(EventList* del, const MPEventList* el, MidiTrack* track, e.setTick(tick); mel.add(e); } - } // i != el->end() + } // i != el.end() //--------------------------------------------------- @@ -625,7 +625,7 @@ void Audio::collectEvents(MusECore::MidiTrack* track, unsigned int cts, unsigned // dont play muted parts if (part->mute()) continue; - EventList* events = part->events(); + const EventList& events = part->events(); unsigned partTick = part->tick(); unsigned partLen = part->lenTick(); int delay = track->delay; @@ -644,8 +644,8 @@ void Audio::collectEvents(MusECore::MidiTrack* track, unsigned int cts, unsigned if(etick > partLen) continue; - iEvent ie = events->lower_bound(stick); - iEvent iend = events->lower_bound(etick); + ciEvent ie = events.lower_bound(stick); + ciEvent iend = events.lower_bound(etick); for (; ie != iend; ++ie) { Event ev = ie->second; @@ -1009,7 +1009,6 @@ void Audio::processMidi() // if (track->recordFlag()) { - MusECore::MPEventList* rl = track->mpevents(); MusECore::MidiPort* tport = &MusEGlobal::midiPorts[port]; RouteList* irl = track->inRoutes(); for(ciRoute r = irl->begin(); r != irl->end(); ++r) @@ -1063,7 +1062,7 @@ void Audio::processMidi() event.setTime(MusEGlobal::tempomap.frame2tick(event.time())); if(recording) - rl->add(event); + track->mpevents.add(event); } dev->setSysexFIFOProcessed(true); } @@ -1252,7 +1251,7 @@ void Audio::processMidi() drumRecEvent.setB(preVelo); drumRecEvent.setPort(port); //rec-event to current port drumRecEvent.setChannel(track->outChannel()); //rec-event to current channel - rl->add(drumRecEvent); + track->mpevents.add(drumRecEvent); } else { @@ -1263,7 +1262,7 @@ void Audio::processMidi() // different port. That must have been wrong - buildMidiEventList would ignore that. Tim. drumRecEvent.setPort(port); //rec-event to current port drumRecEvent.setChannel(track->outChannel()); //rec-event to current channel - rl->add(drumRecEvent); + track->mpevents.add(drumRecEvent); } } else @@ -1277,7 +1276,7 @@ void Audio::processMidi() recEvent.setPort(port); recEvent.setChannel(track->outChannel()); - rl->add(recEvent); + track->mpevents.add(recEvent); } } } |