LMMS
Loading...
Searching...
No Matches
MidiBuffer.h
Go to the documentation of this file.
1/*
2 ==============================================================================
3
4 This file is part of the Water library.
5 Copyright (c) 2016 ROLI Ltd.
6 Copyright (C) 2017-2022 Filipe Coelho <falktx@falktx.com>
7
8 Permission is granted to use this software under the terms of the ISC license
9 http://www.isc.org/downloads/software-support-policy/isc-license/
10
11 Permission to use, copy, modify, and/or distribute this software for any
12 purpose with or without fee is hereby granted, provided that the above
13 copyright notice and this permission notice appear in all copies.
14
15 THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH REGARD
16 TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
17 FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT,
18 OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
19 USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
20 TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
21 OF THIS SOFTWARE.
22
23 ==============================================================================
24*/
25
26#ifndef WATER_MIDIBUFFER_H_INCLUDED
27#define WATER_MIDIBUFFER_H_INCLUDED
28
29#include "../containers/Array.h"
30
31namespace water {
32
33//==============================================================================
48{
49public:
50 //==============================================================================
52 MidiBuffer() noexcept;
53
55 explicit MidiBuffer (const MidiMessage& message) noexcept;
56
58 MidiBuffer (const MidiBuffer&) noexcept;
59
61 MidiBuffer& operator= (const MidiBuffer&) noexcept;
62
65
66 //==============================================================================
68 void clear() noexcept;
69
75 void clear (int start, int numSamples);
76
80 bool isEmpty() const noexcept;
81
88 int getNumEvents() const noexcept;
89
101 void addEvent (const MidiMessage& midiMessage, int sampleNumber);
102
119 void addEvent (const void* rawMidiData,
120 int maxBytesOfMidiData,
121 int sampleNumber);
122
137 void addEvents (const MidiBuffer& otherBuffer,
138 int startSample,
139 int numSamples,
140 int sampleDeltaToAdd);
141
145 int getFirstEventTime() const noexcept;
146
150 int getLastEventTime() const noexcept;
151
152 //==============================================================================
158 void swapWith (MidiBuffer&) noexcept;
159
164 void ensureSize (size_t minimumNumBytes);
165
166 //==============================================================================
176 {
177 public:
178 //==============================================================================
180 Iterator (const MidiBuffer&) noexcept;
181
183 ~Iterator() noexcept;
184
185 //==============================================================================
189 void setNextSamplePosition (int samplePosition) noexcept;
190
201 int& samplePosition) noexcept;
202
216 bool getNextEvent (const uint8* &midiData,
217 int& numBytesOfMidiData,
218 int& samplePosition) noexcept;
219
220 private:
221 //==============================================================================
223 const uint8* data;
224
226 };
227
233};
234
235}
236
237#endif // WATER_MIDIBUFFER_H_INCLUDED
#define CARLA_DECLARE_NON_COPYABLE(ClassName)
Definition CarlaDefines.h:242
static void message(int level, const char *fmt,...)
Definition adplugdb.cpp:120
uint8_t uint8
Definition basics.h:86
Iterator(const MidiBuffer &) noexcept
Definition MidiBuffer.cpp:194
MidiBuffer() noexcept
Definition MidiBuffer.cpp:89
Definition MidiMessage.h:40
Definition Array.h:57
Iterator(const MidiBuffer &) noexcept
Definition MidiBuffer.cpp:194
const uint8 * data
Definition MidiBuffer.h:223
void setNextSamplePosition(int samplePosition) noexcept
Definition MidiBuffer.cpp:203
const MidiBuffer & buffer
Definition MidiBuffer.h:222
bool getNextEvent(MidiMessage &result, int &samplePosition) noexcept
Definition MidiBuffer.cpp:226
~Iterator() noexcept
Definition MidiBuffer.cpp:199
int getLastEventTime() const noexcept
Definition MidiBuffer.cpp:175
~MidiBuffer()
Definition MidiBuffer.cpp:90
void addEvent(const MidiMessage &midiMessage, int sampleNumber)
Definition MidiBuffer.cpp:118
void addEvents(const MidiBuffer &otherBuffer, int startSample, int numSamples, int sampleDeltaToAdd)
Definition MidiBuffer.cpp:141
int getFirstEventTime() const noexcept
Definition MidiBuffer.cpp:170
MidiBuffer & operator=(const MidiBuffer &) noexcept
Definition MidiBuffer.cpp:94
void ensureSize(size_t minimumNumBytes)
Definition MidiBuffer.cpp:107
Array< uint8 > data
Definition MidiBuffer.h:232
bool isEmpty() const noexcept
Definition MidiBuffer.cpp:108
MidiBuffer() noexcept
Definition MidiBuffer.cpp:89
int getNumEvents() const noexcept
Definition MidiBuffer.cpp:159
void clear() noexcept
Definition MidiBuffer.cpp:106
void swapWith(MidiBuffer &) noexcept
Definition MidiBuffer.cpp:105
virtual ASIOError start()=0
Definition AudioSampleBuffer.h:33
unsigned char uint8
Definition water.h:90
int result
Definition process.c:1455