@@ -29,6 +29,7 @@ MidiMessageSequence::MidiMessageSequence() | |||
MidiMessageSequence::MidiMessageSequence (const MidiMessageSequence& other) | |||
{ | |||
list.addCopiesOf (other.list); | |||
updateMatchedPairs(); | |||
} | |||
MidiMessageSequence& MidiMessageSequence::operator= (const MidiMessageSequence& other) | |||
@@ -52,17 +53,17 @@ void MidiMessageSequence::clear() | |||
list.clear(); | |||
} | |||
int MidiMessageSequence::getNumEvents() const | |||
int MidiMessageSequence::getNumEvents() const noexcept | |||
{ | |||
return list.size(); | |||
} | |||
MidiMessageSequence::MidiEventHolder* MidiMessageSequence::getEventPointer (const int index) const | |||
MidiMessageSequence::MidiEventHolder* MidiMessageSequence::getEventPointer (const int index) const noexcept | |||
{ | |||
return list [index]; | |||
} | |||
double MidiMessageSequence::getTimeOfMatchingKeyUp (const int index) const | |||
double MidiMessageSequence::getTimeOfMatchingKeyUp (const int index) const noexcept | |||
{ | |||
if (const MidiEventHolder* const meh = list [index]) | |||
if (meh->noteOffObject != nullptr) | |||
@@ -71,7 +72,7 @@ double MidiMessageSequence::getTimeOfMatchingKeyUp (const int index) const | |||
return 0.0; | |||
} | |||
int MidiMessageSequence::getIndexOfMatchingKeyUp (const int index) const | |||
int MidiMessageSequence::getIndexOfMatchingKeyUp (const int index) const noexcept | |||
{ | |||
if (const MidiEventHolder* const meh = list [index]) | |||
return list.indexOf (meh->noteOffObject); | |||
@@ -79,12 +80,12 @@ int MidiMessageSequence::getIndexOfMatchingKeyUp (const int index) const | |||
return -1; | |||
} | |||
int MidiMessageSequence::getIndexOf (MidiEventHolder* const event) const | |||
int MidiMessageSequence::getIndexOf (MidiEventHolder* const event) const noexcept | |||
{ | |||
return list.indexOf (event); | |||
} | |||
int MidiMessageSequence::getNextIndexAtTime (const double timeStamp) const | |||
int MidiMessageSequence::getNextIndexAtTime (const double timeStamp) const noexcept | |||
{ | |||
const int numEvents = list.size(); | |||
@@ -97,17 +98,17 @@ int MidiMessageSequence::getNextIndexAtTime (const double timeStamp) const | |||
} | |||
//============================================================================== | |||
double MidiMessageSequence::getStartTime() const | |||
double MidiMessageSequence::getStartTime() const noexcept | |||
{ | |||
return getEventTime (0); | |||
} | |||
double MidiMessageSequence::getEndTime() const | |||
double MidiMessageSequence::getEndTime() const noexcept | |||
{ | |||
return getEventTime (list.size() - 1); | |||
} | |||
double MidiMessageSequence::getEventTime (const int index) const | |||
double MidiMessageSequence::getEventTime (const int index) const noexcept | |||
{ | |||
if (const MidiEventHolder* const meh = list [index]) | |||
return meh->message.getTimeStamp(); | |||
@@ -181,13 +182,13 @@ void MidiMessageSequence::addSequence (const MidiMessageSequence& other, | |||
} | |||
//============================================================================== | |||
void MidiMessageSequence::sort() | |||
void MidiMessageSequence::sort() noexcept | |||
{ | |||
MidiMessageSequenceSorter sorter; | |||
list.sort (sorter, true); | |||
} | |||
void MidiMessageSequence::updateMatchedPairs() | |||
void MidiMessageSequence::updateMatchedPairs() noexcept | |||
{ | |||
for (int i = 0; i < list.size(); ++i) | |||
{ | |||
@@ -226,7 +227,7 @@ void MidiMessageSequence::updateMatchedPairs() | |||
} | |||
} | |||
void MidiMessageSequence::addTimeToMessages (const double delta) | |||
void MidiMessageSequence::addTimeToMessages (const double delta) noexcept | |||
{ | |||
for (int i = list.size(); --i >= 0;) | |||
{ | |||
@@ -91,47 +91,47 @@ public: | |||
void clear(); | |||
/** Returns the number of events in the sequence. */ | |||
int getNumEvents() const; | |||
int getNumEvents() const noexcept; | |||
/** Returns a pointer to one of the events. */ | |||
MidiEventHolder* getEventPointer (int index) const; | |||
MidiEventHolder* getEventPointer (int index) const noexcept; | |||
/** Returns the time of the note-up that matches the note-on at this index. | |||
If the event at this index isn't a note-on, it'll just return 0. | |||
@see MidiMessageSequence::MidiEventHolder::noteOffObject | |||
*/ | |||
double getTimeOfMatchingKeyUp (int index) const; | |||
double getTimeOfMatchingKeyUp (int index) const noexcept; | |||
/** Returns the index of the note-up that matches the note-on at this index. | |||
If the event at this index isn't a note-on, it'll just return -1. | |||
@see MidiMessageSequence::MidiEventHolder::noteOffObject | |||
*/ | |||
int getIndexOfMatchingKeyUp (int index) const; | |||
int getIndexOfMatchingKeyUp (int index) const noexcept; | |||
/** Returns the index of an event. */ | |||
int getIndexOf (MidiEventHolder* event) const; | |||
int getIndexOf (MidiEventHolder* event) const noexcept; | |||
/** Returns the index of the first event on or after the given timestamp. | |||
If the time is beyond the end of the sequence, this will return the | |||
number of events. | |||
*/ | |||
int getNextIndexAtTime (double timeStamp) const; | |||
int getNextIndexAtTime (double timeStamp) const noexcept; | |||
//============================================================================== | |||
/** Returns the timestamp of the first event in the sequence. | |||
@see getEndTime | |||
*/ | |||
double getStartTime() const; | |||
double getStartTime() const noexcept; | |||
/** Returns the timestamp of the last event in the sequence. | |||
@see getStartTime | |||
*/ | |||
double getEndTime() const; | |||
double getEndTime() const noexcept; | |||
/** Returns the timestamp of the event at a given index. | |||
If the index is out-of-range, this will return 0.0 | |||
*/ | |||
double getEventTime (int index) const; | |||
double getEventTime (int index) const noexcept; | |||
//============================================================================== | |||
/** Inserts a midi message into the sequence. | |||
@@ -185,13 +185,13 @@ public: | |||
will scan the list and make sure all the note-offs in the MidiEventHolder | |||
structures are pointing at the correct ones. | |||
*/ | |||
void updateMatchedPairs(); | |||
void updateMatchedPairs() noexcept; | |||
/** Forces a sort of the sequence. | |||
You may need to call this if you've manually modified the timestamps of some | |||
events such that the overall order now needs updating. | |||
*/ | |||
void sort(); | |||
void sort() noexcept; | |||
//============================================================================== | |||
/** Copies all the messages for a particular midi channel to another sequence. | |||
@@ -224,7 +224,7 @@ public: | |||
/** Adds an offset to the timestamps of all events in the sequence. | |||
@param deltaTime the amount to add to each timestamp. | |||
*/ | |||
void addTimeToMessages (double deltaTime); | |||
void addTimeToMessages (double deltaTime) noexcept; | |||
//============================================================================== | |||
/** Scans through the sequence to determine the state of any midi controllers at | |||