diff --git a/modules/juce_audio_basics/midi/juce_MidiMessageSequence.cpp b/modules/juce_audio_basics/midi/juce_MidiMessageSequence.cpp index effefbbb4f..94a6b9bcfd 100644 --- a/modules/juce_audio_basics/midi/juce_MidiMessageSequence.cpp +++ b/modules/juce_audio_basics/midi/juce_MidiMessageSequence.cpp @@ -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;) { diff --git a/modules/juce_audio_basics/midi/juce_MidiMessageSequence.h b/modules/juce_audio_basics/midi/juce_MidiMessageSequence.h index d91ed8b246..b62940c2d0 100644 --- a/modules/juce_audio_basics/midi/juce_MidiMessageSequence.h +++ b/modules/juce_audio_basics/midi/juce_MidiMessageSequence.h @@ -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