openshot-audio  0.1.4
juce_MidiMessageSequence.h
Go to the documentation of this file.
1 /*
2  ==============================================================================
3 
4  This file is part of the JUCE library.
5  Copyright (c) 2015 - ROLI Ltd.
6 
7  Permission is granted to use this software under the terms of either:
8  a) the GPL v2 (or any later version)
9  b) the Affero GPL v3
10 
11  Details of these licenses can be found at: www.gnu.org/licenses
12 
13  JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
14  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
15  A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16 
17  ------------------------------------------------------------------------------
18 
19  To release a closed-source product which uses JUCE, commercial licenses are
20  available: visit www.juce.com for more information.
21 
22  ==============================================================================
23 */
24 
25 #ifndef JUCE_MIDIMESSAGESEQUENCE_H_INCLUDED
26 #define JUCE_MIDIMESSAGESEQUENCE_H_INCLUDED
27 
28 
29 //==============================================================================
39 {
40 public:
41  //==============================================================================
44 
47 
49  MidiMessageSequence& operator= (const MidiMessageSequence&);
50 
53 
54  //==============================================================================
63  {
64  public:
65  //==============================================================================
67  ~MidiEventHolder();
68 
71 
81 
82  private:
83  //==============================================================================
84  friend class MidiMessageSequence;
87  };
88 
89  //==============================================================================
91  void clear();
92 
94  int getNumEvents() const noexcept;
95 
97  MidiEventHolder* getEventPointer (int index) const noexcept;
98 
103  double getTimeOfMatchingKeyUp (int index) const noexcept;
104 
109  int getIndexOfMatchingKeyUp (int index) const noexcept;
110 
112  int getIndexOf (MidiEventHolder* event) const noexcept;
113 
118  int getNextIndexAtTime (double timeStamp) const noexcept;
119 
120  //==============================================================================
124  double getStartTime() const noexcept;
125 
129  double getEndTime() const noexcept;
130 
134  double getEventTime (int index) const noexcept;
135 
136  //==============================================================================
149  MidiEventHolder* addEvent (const MidiMessage& newMessage,
150  double timeAdjustment = 0);
151 
160  void deleteEvent (int index, bool deleteMatchingNoteUp);
161 
176  void addSequence (const MidiMessageSequence& other,
177  double timeAdjustmentDelta,
178  double firstAllowableDestTime,
179  double endOfAllowableDestTimes);
180 
181  //==============================================================================
188  void updateMatchedPairs() noexcept;
189 
194  void sort() noexcept;
195 
196  //==============================================================================
205  void extractMidiChannelMessages (int channelNumberToExtract,
206  MidiMessageSequence& destSequence,
207  bool alsoIncludeMetaEvents) const;
208 
214  void extractSysExMessages (MidiMessageSequence& destSequence) const;
215 
219  void deleteMidiChannelMessages (int channelNumberToRemove);
220 
222  void deleteSysExMessages();
223 
227  void addTimeToMessages (double deltaTime) noexcept;
228 
229  //==============================================================================
249  void createControllerUpdatesForTime (int channelNumber, double time,
250  Array<MidiMessage>& resultMessages);
251 
252  //==============================================================================
254  void swapWith (MidiMessageSequence&) noexcept;
255 
256 private:
257  //==============================================================================
258  friend class MidiFile;
260 
262 };
263 
264 
265 #endif // JUCE_MIDIMESSAGESEQUENCE_H_INCLUDED
int getIndexOf(MidiEventHolder *event) const noexcept
Definition: juce_MidiMessageSequence.cpp:83
void deleteSysExMessages()
Definition: juce_MidiMessageSequence.cpp:271
void createControllerUpdatesForTime(int channelNumber, double time, Array< MidiMessage > &resultMessages)
Definition: juce_MidiMessageSequence.cpp:279
void extractSysExMessages(MidiMessageSequence &destSequence) const
Definition: juce_MidiMessageSequence.cpp:253
#define noexcept
Definition: juce_CompilerSupport.h:141
void clear()
Definition: juce_MidiMessageSequence.cpp:51
int getNextIndexAtTime(double timeStamp) const noexcept
Definition: juce_MidiMessageSequence.cpp:88
void sort() noexcept
Definition: juce_MidiMessageSequence.cpp:185
void swapWith(MidiMessageSequence &) noexcept
Definition: juce_MidiMessageSequence.cpp:42
void extractMidiChannelMessages(int channelNumberToExtract, MidiMessageSequence &destSequence, bool alsoIncludeMetaEvents) const
Definition: juce_MidiMessageSequence.cpp:240
double getStartTime() const noexcept
Definition: juce_MidiMessageSequence.cpp:101
void addSequence(const MidiMessageSequence &other, double timeAdjustmentDelta, double firstAllowableDestTime, double endOfAllowableDestTimes)
Definition: juce_MidiMessageSequence.cpp:159
MidiEventHolder * addEvent(const MidiMessage &newMessage, double timeAdjustment=0)
Definition: juce_MidiMessageSequence.cpp:120
#define JUCE_API
Definition: juce_StandardHeader.h:139
Definition: juce_MidiMessageSequence.h:38
double getEndTime() const noexcept
Definition: juce_MidiMessageSequence.cpp:106
int getNumEvents() const noexcept
Definition: juce_MidiMessageSequence.cpp:56
void deleteEvent(int index, bool deleteMatchingNoteUp)
Definition: juce_MidiMessageSequence.cpp:137
void addTimeToMessages(double deltaTime) noexcept
Definition: juce_MidiMessageSequence.cpp:230
Definition: juce_Array.h:60
double getTimeOfMatchingKeyUp(int index) const noexcept
Definition: juce_MidiMessageSequence.cpp:66
MidiEventHolder * getEventPointer(int index) const noexcept
Definition: juce_MidiMessageSequence.cpp:61
Definition: juce_OwnedArray.h:55
Definition: juce_MidiMessageSequence.h:62
int getEventTime(const void *const d) noexcept
Definition: juce_audio_basics.cpp:28
void deleteMidiChannelMessages(int channelNumberToRemove)
Definition: juce_MidiMessageSequence.cpp:264
#define JUCE_LEAK_DETECTOR(OwnerClass)
Definition: juce_LeakedObjectDetector.h:141
void updateMatchedPairs() noexcept
Definition: juce_MidiMessageSequence.cpp:191
Definition: juce_MidiMessage.h:35
int getIndexOfMatchingKeyUp(int index) const noexcept
Definition: juce_MidiMessageSequence.cpp:75
MidiMessage message
Definition: juce_MidiMessageSequence.h:70
MidiEventHolder * noteOffObject
Definition: juce_MidiMessageSequence.h:80
Definition: juce_MidiFile.h:42