openshot-audio  0.1.2
Classes | Public Member Functions | Public Attributes | List of all members
juce::MidiBuffer Class Reference

#include <juce_audio_basics.h>

Classes

class  Iterator
 

Public Member Functions

 MidiBuffer () noexcept
 
 MidiBuffer (const MidiMessage &message) noexcept
 
 MidiBuffer (const MidiBuffer &) noexcept
 
MidiBufferoperator= (const MidiBuffer &) noexcept
 
 ~MidiBuffer ()
 
void clear () noexcept
 
void clear (int start, int numSamples)
 
bool isEmpty () const noexcept
 
int getNumEvents () const noexcept
 
void addEvent (const MidiMessage &midiMessage, int sampleNumber)
 
void addEvent (const void *rawMidiData, int maxBytesOfMidiData, int sampleNumber)
 
void addEvents (const MidiBuffer &otherBuffer, int startSample, int numSamples, int sampleDeltaToAdd)
 
int getFirstEventTime () const noexcept
 
int getLastEventTime () const noexcept
 
void swapWith (MidiBuffer &) noexcept
 
void ensureSize (size_t minimumNumBytes)
 

Public Attributes

Array< uint8data
 

Detailed Description

Holds a sequence of time-stamped midi events.

Analogous to the AudioSampleBuffer, this holds a set of midi events with integer time-stamps. The buffer is kept sorted in order of the time-stamps.

If you're working with a sequence of midi events that may need to be manipulated or read/written to a midi file, then MidiMessageSequence is probably a more appropriate container. MidiBuffer is designed for lower-level streams of raw midi data.

See also
MidiMessage

Constructor & Destructor Documentation

MidiBuffer::MidiBuffer ( )
noexcept

Creates an empty MidiBuffer.

MidiBuffer::MidiBuffer ( const MidiMessage message)
explicitnoexcept

Creates a MidiBuffer containing a single midi message.

MidiBuffer::MidiBuffer ( const MidiBuffer other)
noexcept

Creates a copy of another MidiBuffer.

MidiBuffer::~MidiBuffer ( )

Destructor

Member Function Documentation

void MidiBuffer::addEvent ( const MidiMessage midiMessage,
int  sampleNumber 
)

Adds an event to the buffer.

The sample number will be used to determine the position of the event in the buffer, which is always kept sorted. The MidiMessage's timestamp is ignored.

If an event is added whose sample position is the same as one or more events already in the buffer, the new event will be placed after the existing ones.

To retrieve events, use a MidiBuffer::Iterator object

void MidiBuffer::addEvent ( const void *  rawMidiData,
int  maxBytesOfMidiData,
int  sampleNumber 
)

Adds an event to the buffer from raw midi data.

The sample number will be used to determine the position of the event in the buffer, which is always kept sorted.

If an event is added whose sample position is the same as one or more events already in the buffer, the new event will be placed after the existing ones.

The event data will be inspected to calculate the number of bytes in length that the midi event really takes up, so maxBytesOfMidiData may be longer than the data that actually gets stored. E.g. if you pass in a note-on and a length of 4 bytes, it'll actually only store 3 bytes. If the midi data is invalid, it might not add an event at all.

To retrieve events, use a MidiBuffer::Iterator object

void MidiBuffer::addEvents ( const MidiBuffer otherBuffer,
int  startSample,
int  numSamples,
int  sampleDeltaToAdd 
)

Adds some events from another buffer to this one.

Parameters
otherBufferthe buffer containing the events you want to add
startSamplethe lowest sample number in the source buffer for which events should be added. Any source events whose timestamp is less than this will be ignored
numSamplesthe valid range of samples from the source buffer for which events should be added - i.e. events in the source buffer whose timestamp is greater than or equal to (startSample + numSamples) will be ignored. If this value is less than 0, all events after startSample will be taken.
sampleDeltaToAdda value which will be added to the source timestamps of the events that are added to this buffer
void MidiBuffer::clear ( )
noexcept

Removes all events from the buffer.

void MidiBuffer::clear ( int  start,
int  numSamples 
)

Removes all events between two times from the buffer.

All events for which (start <= event position < start + numSamples) will be removed.

void MidiBuffer::ensureSize ( size_t  minimumNumBytes)

Preallocates some memory for the buffer to use. This helps to avoid needing to reallocate space when the buffer has messages added to it.

int MidiBuffer::getFirstEventTime ( ) const
noexcept

Returns the sample number of the first event in the buffer. If the buffer's empty, this will just return 0.

int MidiBuffer::getLastEventTime ( ) const
noexcept

Returns the sample number of the last event in the buffer. If the buffer's empty, this will just return 0.

int MidiBuffer::getNumEvents ( ) const
noexcept

Counts the number of events in the buffer.

This is actually quite a slow operation, as it has to iterate through all the events, so you might prefer to call isEmpty() if that's all you need to know.

bool MidiBuffer::isEmpty ( ) const
noexcept

Returns true if the buffer is empty. To actually retrieve the events, use a MidiBuffer::Iterator object

MidiBuffer & MidiBuffer::operator= ( const MidiBuffer other)
noexcept

Makes a copy of another MidiBuffer.

void MidiBuffer::swapWith ( MidiBuffer other)
noexcept

Exchanges the contents of this buffer with another one.

This is a quick operation, because no memory allocating or copying is done, it just swaps the internal state of the two buffers.

Member Data Documentation

Array<uint8> juce::MidiBuffer::data

The raw data holding this buffer. Obviously access to this data is provided at your own risk. Its internal format could change in future, so don't write code that relies on it!


The documentation for this class was generated from the following files: