LMMS
Loading...
Searching...
No Matches
juce_MidiBuffer.h
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
6
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
9
10 The code included in this file is provided under the terms of the ISC license
11 http://www.isc.org/downloads/software-support-policy/isc-license. Permission
12 To use, copy, modify, and/or distribute this software for any purpose with or
13 without fee is hereby granted provided that the above copyright notice and
14 this permission notice appear in all copies.
15
16 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
17 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
18 DISCLAIMED.
19
20 ==============================================================================
21*/
22
23namespace juce
24{
25
26//==============================================================================
37{
39
40 MidiMessageMetadata (const uint8* dataIn, int numBytesIn, int positionIn) noexcept
41 : data (dataIn), numBytes (numBytesIn), samplePosition (positionIn)
42 {
43 }
44
50
52 const uint8* data = nullptr;
53
55 int numBytes = 0;
56
59};
60
61//==============================================================================
79{
80 using Ptr = const uint8*;
81
82public:
83 MidiBufferIterator() = default;
84
90 explicit MidiBufferIterator (const uint8* dataIn) noexcept
91 : data (dataIn)
92 {
93 }
94
95 using difference_type = std::iterator_traits<Ptr>::difference_type;
98 using pointer = void;
99 using iterator_category = std::input_iterator_tag;
100
103
107 MidiBufferIterator operator++ (int) noexcept;
108
112 bool operator== (const MidiBufferIterator& other) const noexcept { return data == other.data; }
113
117 bool operator!= (const MidiBufferIterator& other) const noexcept { return ! operator== (other); }
118
122 reference operator*() const noexcept;
123
124private:
125 Ptr data = nullptr;
126};
127
128//==============================================================================
145{
146public:
147 //==============================================================================
149 MidiBuffer() noexcept = default;
150
153
154 //==============================================================================
156 void clear() noexcept;
157
163 void clear (int start, int numSamples);
164
168 bool isEmpty() const noexcept;
169
177
191 bool addEvent (const MidiMessage& midiMessage, int sampleNumber);
192
211 bool addEvent (const void* rawMidiData,
212 int maxBytesOfMidiData,
213 int sampleNumber);
214
229 void addEvents (const MidiBuffer& otherBuffer,
230 int startSample,
231 int numSamples,
232 int sampleDeltaToAdd);
233
238
243
244 //==============================================================================
251
256 void ensureSize (size_t minimumNumBytes);
257
260
263
266
269
273 MidiBufferIterator findNextSamplePosition (int samplePosition) const noexcept;
274
275 //==============================================================================
276 #ifndef DOXYGEN
286 class [[deprecated]] JUCE_API Iterator
287 {
288 public:
289 //==============================================================================
291 Iterator (const MidiBuffer& b) noexcept;
292
293 //==============================================================================
297 void setNextSamplePosition (int samplePosition) noexcept;
298
309 int& samplePosition) noexcept;
310
324 bool getNextEvent (const uint8* &midiData,
325 int& numBytesOfMidiData,
326 int& samplePosition) noexcept;
327
328 private:
329 //==============================================================================
332 };
333 #endif
334
340
341private:
343};
344
345} // namespace juce
#define noexcept
Definition DistrhoDefines.h:72
#define final
Definition DistrhoDefines.h:74
static void message(int level, const char *fmt,...)
Definition adplugdb.cpp:120
Definition juce_Array.h:56
Iterator(const MidiBuffer &b) noexcept
Definition juce_MidiBuffer.cpp:215
void setNextSamplePosition(int samplePosition) noexcept
Definition juce_MidiBuffer.cpp:220
const MidiBuffer & buffer
Definition juce_MidiBuffer.h:330
MidiBufferIterator iterator
Definition juce_MidiBuffer.h:331
bool getNextEvent(MidiMessage &result, int &samplePosition) noexcept
Definition juce_MidiBuffer.cpp:237
int getFirstEventTime() const noexcept
Definition juce_MidiBuffer.cpp:180
int getLastEventTime() const noexcept
Definition juce_MidiBuffer.cpp:185
void ensureSize(size_t minimumNumBytes)
Definition juce_MidiBuffer.cpp:111
int getNumEvents() const noexcept
Definition juce_MidiBuffer.cpp:169
MidiBufferIterator cbegin() const noexcept
Definition juce_MidiBuffer.h:265
MidiBufferIterator cend() const noexcept
Definition juce_MidiBuffer.h:268
bool isEmpty() const noexcept
Definition juce_MidiBuffer.cpp:112
void swapWith(MidiBuffer &) noexcept
Definition juce_MidiBuffer.cpp:109
bool addEvent(const MidiMessage &midiMessage, int sampleNumber)
Definition juce_MidiBuffer.cpp:122
MidiBuffer() noexcept=default
void clear() noexcept
Definition juce_MidiBuffer.cpp:110
void addEvents(const MidiBuffer &otherBuffer, int startSample, int numSamples, int sampleDeltaToAdd)
Definition juce_MidiBuffer.cpp:155
Array< uint8 > data
Definition juce_MidiBuffer.h:339
MidiBufferIterator begin() const noexcept
Definition juce_MidiBuffer.h:259
MidiBufferIterator end() const noexcept
Definition juce_MidiBuffer.h:262
Definition juce_MidiBuffer.h:79
void pointer
Definition juce_MidiBuffer.h:98
std::iterator_traits< Ptr >::difference_type difference_type
Definition juce_MidiBuffer.h:95
MidiMessageMetadata reference
Definition juce_MidiBuffer.h:97
MidiMessageMetadata value_type
Definition juce_MidiBuffer.h:96
MidiBufferIterator(const uint8 *dataIn) noexcept
Definition juce_MidiBuffer.h:90
std::input_iterator_tag iterator_category
Definition juce_MidiBuffer.h:99
MidiBufferIterator & operator++() noexcept
Definition juce_MidiBuffer.cpp:83
Ptr data
Definition juce_MidiBuffer.h:125
const uint8 * Ptr
Definition juce_MidiBuffer.h:80
Definition juce_MidiMessage.h:35
virtual ASIOError start()=0
JSAMPIMAGE data
Definition jpeglib.h:945
#define JUCE_LEAK_DETECTOR(OwnerClass)
Definition juce_LeakedObjectDetector.h:138
#define JUCE_API
Definition juce_StandardHeader.h:152
Definition carla_juce.cpp:31
const DirectoryEntry & operator*(const DirectoryEntry &e) noexcept
Definition juce_RangedDirectoryIterator.h:80
unsigned char uint8
Definition juce_MathsFunctions.h:37
Definition juce_MidiBuffer.h:37
const uint8 * data
Definition juce_MidiBuffer.h:52
int samplePosition
Definition juce_MidiBuffer.h:58
MidiMessageMetadata() noexcept=default
int numBytes
Definition juce_MidiBuffer.h:55
MidiMessage getMessage() const
Definition juce_MidiBuffer.h:49
b
Definition crypt.c:628
int result
Definition process.c:1455
#define void
Definition unzip.h:396
#define const
Definition zconf.h:137