JUCE  v5.4.1-191-g0ab5e696f
JUCE API
Looking for a senior C++ dev?
I'm looking for work. Hire me!
juce::MidiMessage Class Reference

Encapsulates a MIDI message. More...

#include <juce_MidiMessage.h>

Public Types

enum  MidiMachineControlCommand {
  mmc_stop = 1,
  mmc_play = 2,
  mmc_deferredplay = 3,
  mmc_fastforward = 4,
  mmc_rewind = 5,
  mmc_recordStart = 6,
  mmc_recordStop = 7,
  mmc_pause = 9
}
 Types of MMC command. More...
 
enum  SmpteTimecodeType {
  fps24 = 0,
  fps25 = 1,
  fps30drop = 2,
  fps30 = 3
}
 SMPTE timecode types. More...
 

Public Member Functions

 MidiMessage (int byte1, int byte2, int byte3, double timeStamp=0) noexcept
 Creates a 3-byte short midi message. More...
 
 MidiMessage (int byte1, int byte2, double timeStamp=0) noexcept
 Creates a 2-byte short midi message. More...
 
 MidiMessage (int byte1, double timeStamp=0) noexcept
 Creates a 1-byte short midi message. More...
 
template<typename... Data>
 MidiMessage (int byte1, int byte2, int byte3, Data... otherBytes)
 Creates a midi message from a list of bytes. More...
 
 MidiMessage (const void *data, int numBytes, double timeStamp=0)
 Creates a midi message from a block of data. More...
 
 MidiMessage (const void *data, int maxBytesToUse, int &numBytesUsed, uint8 lastStatusByte, double timeStamp=0, bool sysexHasEmbeddedLength=true)
 Reads the next midi message from some data. More...
 
 MidiMessage () noexcept
 Creates an active-sense message. More...
 
 MidiMessage (const MidiMessage &)
 Creates a copy of another midi message. More...
 
 MidiMessage (const MidiMessage &, double newTimeStamp)
 Creates a copy of another midi message, with a different timestamp. More...
 
 MidiMessage (MidiMessage &&) noexcept
 Move constructor. More...
 
 ~MidiMessage () noexcept
 Destructor. More...
 
void addToTimeStamp (double delta) noexcept
 Adds a value to the message's timestamp. More...
 
int getAfterTouchValue () const noexcept
 Returns the amount of aftertouch from an aftertouch messages. More...
 
int getChannel () const noexcept
 Returns the midi channel associated with the message. More...
 
int getChannelPressureValue () const noexcept
 Returns the pressure from a channel pressure change message. More...
 
int getControllerNumber () const noexcept
 Returns the controller number of a controller message. More...
 
int getControllerValue () const noexcept
 Returns the controller value from a controller message. More...
 
String getDescription () const
 Returns a human-readable description of the midi message as a string, for example "Note On C#3 Velocity 120 Channel 1". More...
 
float getFloatVelocity () const noexcept
 Returns the velocity of a note-on or note-off message. More...
 
void getFullFrameParameters (int &hours, int &minutes, int &seconds, int &frames, SmpteTimecodeType &timecodeType) const noexcept
 Extracts the timecode information from a full-frame midi timecode message. More...
 
int getKeySignatureNumberOfSharpsOrFlats () const noexcept
 Returns the key from a key-signature meta-event. More...
 
const uint8getMetaEventData () const noexcept
 Returns a pointer to the data in a meta-event. More...
 
int getMetaEventLength () const noexcept
 Returns the length of the data for a meta-event. More...
 
int getMetaEventType () const noexcept
 Returns a meta-event's type number. More...
 
int getMidiChannelMetaEventChannel () const noexcept
 Returns the channel number from a channel meta-event. More...
 
MidiMachineControlCommand getMidiMachineControlCommand () const noexcept
 For an MMC message, this returns its type. More...
 
int getNoteNumber () const noexcept
 Returns the midi note number for note-on and note-off messages. More...
 
int getPitchWheelValue () const noexcept
 Returns the pitch wheel position from a pitch-wheel move message. More...
 
int getProgramChangeNumber () const noexcept
 Returns the new program number of a program change message. More...
 
int getQuarterFrameSequenceNumber () const noexcept
 Returns the sequence number of a quarter-frame midi timecode message. More...
 
int getQuarterFrameValue () const noexcept
 Returns the value from a quarter-frame message. More...
 
const uint8getRawData () const noexcept
 Returns a pointer to the raw midi data. More...
 
int getRawDataSize () const noexcept
 Returns the number of bytes of data in the message. More...
 
int getSongPositionPointerMidiBeat () const noexcept
 Returns the midi beat-number of a song-position-pointer message. More...
 
const uint8getSysExData () const noexcept
 Returns a pointer to the sysex data inside the message. More...
 
int getSysExDataSize () const noexcept
 Returns the size of the sysex data. More...
 
double getTempoMetaEventTickLength (short timeFormat) const noexcept
 Returns the tick length from a tempo meta-event. More...
 
double getTempoSecondsPerQuarterNote () const noexcept
 Calculates the seconds-per-quarter-note from a tempo meta-event. More...
 
String getTextFromTextMetaEvent () const
 Returns the text from a text meta-event. More...
 
void getTimeSignatureInfo (int &numerator, int &denominator) const noexcept
 Returns the time-signature values from a time-signature meta-event. More...
 
double getTimeStamp () const noexcept
 Returns the timestamp associated with this message. More...
 
uint8 getVelocity () const noexcept
 Returns the velocity of a note-on or note-off message. More...
 
bool isActiveSense () const noexcept
 Returns true if this is an active-sense message. More...
 
bool isAftertouch () const noexcept
 Returns true if the message is an aftertouch event. More...
 
bool isAllNotesOff () const noexcept
 Checks whether this message is an all-notes-off message. More...
 
bool isAllSoundOff () const noexcept
 Checks whether this message is an all-sound-off message. More...
 
bool isChannelPressure () const noexcept
 Returns true if the message is a channel-pressure change event. More...
 
bool isController () const noexcept
 Returns true if this is a midi controller message. More...
 
bool isControllerOfType (int controllerType) const noexcept
 Returns true if this message is a controller message and if it has the specified controller type. More...
 
bool isEndOfTrackMetaEvent () const noexcept
 Returns true if this is an 'end-of-track' meta-event. More...
 
bool isForChannel (int channelNumber) const noexcept
 Returns true if the message applies to the given midi channel. More...
 
bool isFullFrame () const noexcept
 Returns true if this is a full-frame midi timecode message. More...
 
bool isKeySignatureMajorKey () const noexcept
 Returns true if this key-signature event is major, or false if it's minor. More...
 
bool isKeySignatureMetaEvent () const noexcept
 Returns true if this is a 'key-signature' meta-event. More...
 
bool isMetaEvent () const noexcept
 Returns true if this event is a meta-event. More...
 
bool isMidiChannelMetaEvent () const noexcept
 Returns true if this is a 'channel' meta-event. More...
 
bool isMidiClock () const noexcept
 Returns true if this is a midi clock event. More...
 
bool isMidiContinue () const noexcept
 Returns true if this is a midi continue event. More...
 
bool isMidiMachineControlGoto (int &hours, int &minutes, int &seconds, int &frames) const noexcept
 Checks whether this is an MMC "goto" message. More...
 
bool isMidiMachineControlMessage () const noexcept
 Checks whether this is an MMC message. More...
 
bool isMidiStart () const noexcept
 Returns true if this is a midi start event. More...
 
bool isMidiStop () const noexcept
 Returns true if this is a midi stop event. More...
 
bool isNoteOff (bool returnTrueForNoteOnVelocity0=true) const noexcept
 Returns true if this message is a 'key-up' event. More...
 
bool isNoteOn (bool returnTrueForVelocity0=false) const noexcept
 Returns true if this message is a 'key-down' event. More...
 
bool isNoteOnOrOff () const noexcept
 Returns true if this message is a 'key-down' or 'key-up' event. More...
 
bool isPitchWheel () const noexcept
 Returns true if the message is a pitch-wheel move. More...
 
bool isProgramChange () const noexcept
 Returns true if the message is a program (patch) change message. More...
 
bool isQuarterFrame () const noexcept
 Returns true if this is a quarter-frame midi timecode message. More...
 
bool isResetAllControllers () const noexcept
 Checks whether this message is a reset all controllers message. More...
 
bool isSoftPedalOff () const noexcept
 Returns true if this message is a 'soft pedal up' controller message. More...
 
bool isSoftPedalOn () const noexcept
 Returns true if this message is a 'soft pedal down' controller message. More...
 
bool isSongPositionPointer () const noexcept
 Returns true if this is a song-position-pointer message. More...
 
bool isSostenutoPedalOff () const noexcept
 Returns true if this message is a 'sostenuto pedal up' controller message. More...
 
bool isSostenutoPedalOn () const noexcept
 Returns true if this message is a 'sostenuto pedal down' controller message. More...
 
bool isSustainPedalOff () const noexcept
 Returns true if this message is a 'sustain pedal up' controller message. More...
 
bool isSustainPedalOn () const noexcept
 Returns true if this message is a 'sustain pedal down' controller message. More...
 
bool isSysEx () const noexcept
 Returns true if this is a system-exclusive message. More...
 
bool isTempoMetaEvent () const noexcept
 Returns true if this is a 'tempo' meta-event. More...
 
bool isTextMetaEvent () const noexcept
 Returns true if this is a 'text' meta-event. More...
 
bool isTimeSignatureMetaEvent () const noexcept
 Returns true if this is a 'time-signature' meta-event. More...
 
bool isTrackMetaEvent () const noexcept
 Returns true if this is a 'track' meta-event. More...
 
bool isTrackNameEvent () const noexcept
 Returns true if this is an 'track name' meta-event. More...
 
void multiplyVelocity (float scaleFactor) noexcept
 Multiplies the velocity of a note-on or note-off message by a given amount. More...
 
MidiMessageoperator= (const MidiMessage &other)
 Copies this message from another one. More...
 
MidiMessageoperator= (MidiMessage &&) noexcept
 Move assignment operator. More...
 
void setChannel (int newChannelNumber) noexcept
 Changes the message's midi channel. More...
 
void setNoteNumber (int newNoteNumber) noexcept
 Changes the midi note number of a note-on or note-off message. More...
 
void setTimeStamp (double newTimestamp) noexcept
 Changes the message's associated timestamp. More...
 
void setVelocity (float newVelocity) noexcept
 Changes the velocity of a note-on or note-off message. More...
 
MidiMessage withTimeStamp (double newTimestamp) const
 Return a copy of this message with a new timestamp. More...
 

Static Public Member Functions

static MidiMessage aftertouchChange (int channel, int noteNumber, int aftertouchAmount) noexcept
 Creates an aftertouch message. More...
 
static MidiMessage allControllersOff (int channel) noexcept
 Creates an all-controllers-off message. More...
 
static MidiMessage allNotesOff (int channel) noexcept
 Creates an all-notes-off message. More...
 
static MidiMessage allSoundOff (int channel) noexcept
 Creates an all-sound-off message. More...
 
static MidiMessage channelPressureChange (int channel, int pressure) noexcept
 Creates a channel-pressure change event. More...
 
static MidiMessage controllerEvent (int channel, int controllerType, int value) noexcept
 Creates a controller message. More...
 
static MidiMessage createSysExMessage (const void *sysexData, int dataSize)
 Creates a system-exclusive message. More...
 
static MidiMessage endOfTrack () noexcept
 Creates an end-of-track meta-event. More...
 
static uint8 floatValueToMidiByte (float valueBetween0and1) noexcept
 Converts a floating-point value between 0 and 1 to a MIDI 7-bit value between 0 and 127. More...
 
static MidiMessage fullFrame (int hours, int minutes, int seconds, int frames, SmpteTimecodeType timecodeType)
 Creates a full-frame MTC message. More...
 
static const char * getControllerName (int controllerNumber)
 Returns the name of a controller type number, or nullptr if unknown for this controller number. More...
 
static const char * getGMInstrumentBankName (int midiBankNumber)
 Returns the name of a bank of GM instruments, or nullptr if unknown for this bank number. More...
 
static const char * getGMInstrumentName (int midiInstrumentNumber)
 Returns the standard name of a GM instrument, or nullptr if unknown for this index. More...
 
static int getMessageLengthFromFirstByte (uint8 firstByte) noexcept
 Based on the first byte of a short midi message, this uses a lookup table to return the message length (either 1, 2, or 3 bytes). More...
 
static double getMidiNoteInHertz (int noteNumber, double frequencyOfA=440.0) noexcept
 Returns the frequency of a midi note number. More...
 
static String getMidiNoteName (int noteNumber, bool useSharps, bool includeOctaveNumber, int octaveNumForMiddleC)
 Returns the name of a midi note number. More...
 
static const char * getRhythmInstrumentName (int midiNoteNumber)
 Returns the standard name of a channel 10 percussion sound, or nullptr if unknown for this note number. More...
 
static bool isMidiNoteBlack (int noteNumber) noexcept
 Returns true if the given midi note number is a black key. More...
 
static MidiMessage keySignatureMetaEvent (int numberOfSharpsOrFlats, bool isMinorKey)
 Creates a key-signature meta-event. More...
 
static MidiMessage masterVolume (float volume)
 Creates a master-volume change message. More...
 
static MidiMessage midiChannelMetaEvent (int channel) noexcept
 Creates a midi channel meta-event. More...
 
static MidiMessage midiClock () noexcept
 Creates a midi clock event. More...
 
static MidiMessage midiContinue () noexcept
 Creates a midi continue event. More...
 
static MidiMessage midiMachineControlCommand (MidiMachineControlCommand command)
 Creates an MMC message. More...
 
static MidiMessage midiMachineControlGoto (int hours, int minutes, int seconds, int frames)
 Creates an MMC "goto" message. More...
 
static MidiMessage midiStart () noexcept
 Creates a midi start event. More...
 
static MidiMessage midiStop () noexcept
 Creates a midi stop event. More...
 
static MidiMessage noteOff (int channel, int noteNumber, float velocity) noexcept
 Creates a key-up message. More...
 
static MidiMessage noteOff (int channel, int noteNumber, uint8 velocity) noexcept
 Creates a key-up message. More...
 
static MidiMessage noteOff (int channel, int noteNumber) noexcept
 Creates a key-up message. More...
 
static MidiMessage noteOn (int channel, int noteNumber, float velocity) noexcept
 Creates a key-down message (using a floating-point velocity). More...
 
static MidiMessage noteOn (int channel, int noteNumber, uint8 velocity) noexcept
 Creates a key-down message (using an integer velocity). More...
 
static uint16 pitchbendToPitchwheelPos (float pitchbendInSemitones, float pitchbendRangeInSemitones) noexcept
 Converts a pitchbend value in semitones to a MIDI 14-bit pitchwheel position value. More...
 
static MidiMessage pitchWheel (int channel, int position) noexcept
 Creates a pitch-wheel move message. More...
 
static MidiMessage programChange (int channel, int programNumber) noexcept
 Creates a program-change message. More...
 
static MidiMessage quarterFrame (int sequenceNumber, int value) noexcept
 Creates a quarter-frame MTC message. More...
 
static int readVariableLengthVal (const uint8 *data, int &numBytesUsed) noexcept
 Reads a midi variable-length integer. More...
 
static MidiMessage songPositionPointer (int positionInMidiBeats) noexcept
 Creates a song-position-pointer message. More...
 
static MidiMessage tempoMetaEvent (int microsecondsPerQuarterNote) noexcept
 Creates a tempo meta-event. More...
 
static MidiMessage textMetaEvent (int type, StringRef text)
 Creates a text meta-event. More...
 
static MidiMessage timeSignatureMetaEvent (int numerator, int denominator)
 Creates a time-signature meta-event. More...
 

Private Member Functions

uint8allocateSpace (int)
 
uint8getData () const noexcept
 
bool isHeapAllocated () const noexcept
 

Detailed Description

Encapsulates a MIDI message.

See also
MidiMessageSequence, MidiOutput, MidiInput

{Audio}

Member Enumeration Documentation

◆ MidiMachineControlCommand

Types of MMC command.

See also
isMidiMachineControlMessage, getMidiMachineControlCommand, midiMachineControlCommand
Enumerator
mmc_stop 
mmc_play 
mmc_deferredplay 
mmc_fastforward 
mmc_rewind 
mmc_recordStart 
mmc_recordStop 
mmc_pause 

◆ SmpteTimecodeType

SMPTE timecode types.

Used by the getFullFrameParameters() and fullFrame() methods.

Enumerator
fps24 
fps25 
fps30drop 
fps30 

Constructor & Destructor Documentation

◆ MidiMessage() [1/10]

juce::MidiMessage::MidiMessage ( int  byte1,
int  byte2,
int  byte3,
double  timeStamp = 0 
)
noexcept

Creates a 3-byte short midi message.

Parameters
byte1message byte 1
byte2message byte 2
byte3message byte 3
timeStampthe time to give the midi message - this value doesn't use any particular units, so will be application-specific

◆ MidiMessage() [2/10]

juce::MidiMessage::MidiMessage ( int  byte1,
int  byte2,
double  timeStamp = 0 
)
noexcept

Creates a 2-byte short midi message.

Parameters
byte1message byte 1
byte2message byte 2
timeStampthe time to give the midi message - this value doesn't use any particular units, so will be application-specific

◆ MidiMessage() [3/10]

juce::MidiMessage::MidiMessage ( int  byte1,
double  timeStamp = 0 
)
noexcept

Creates a 1-byte short midi message.

Parameters
byte1message byte 1
timeStampthe time to give the midi message - this value doesn't use any particular units, so will be application-specific

◆ MidiMessage() [4/10]

template<typename... Data>
juce::MidiMessage::MidiMessage ( int  byte1,
int  byte2,
int  byte3,
Data...  otherBytes 
)
inline

Creates a midi message from a list of bytes.

References jassert.

◆ MidiMessage() [5/10]

juce::MidiMessage::MidiMessage ( const void *  data,
int  numBytes,
double  timeStamp = 0 
)

Creates a midi message from a block of data.

◆ MidiMessage() [6/10]

juce::MidiMessage::MidiMessage ( const void *  data,
int  maxBytesToUse,
int numBytesUsed,
uint8  lastStatusByte,
double  timeStamp = 0,
bool  sysexHasEmbeddedLength = true 
)

Reads the next midi message from some data.

This will read as many bytes from a data stream as it needs to make a complete message, and will return the number of bytes it used. This lets you read a sequence of midi messages from a file or stream.

Parameters
datathe data to read from
maxBytesToUsethe maximum number of bytes it's allowed to read
numBytesUsedreturns the number of bytes that were actually needed
lastStatusBytein a sequence of midi messages, the initial byte can be dropped from a message if it's the same as the first byte of the previous message, so this lets you supply the byte to use if the first byte of the message has in fact been dropped.
timeStampthe time to give the midi message - this value doesn't use any particular units, so will be application-specific
sysexHasEmbeddedLengthwhen reading sysexes, this flag indicates whether to expect the data to begin with a variable-length field indicating its size

◆ MidiMessage() [7/10]

juce::MidiMessage::MidiMessage ( )
noexcept

Creates an active-sense message.

Since the MidiMessage has to contain a valid message, this default constructor just initialises it with an empty sysex message.

◆ MidiMessage() [8/10]

juce::MidiMessage::MidiMessage ( const MidiMessage )

Creates a copy of another midi message.

◆ MidiMessage() [9/10]

juce::MidiMessage::MidiMessage ( const MidiMessage ,
double  newTimeStamp 
)

Creates a copy of another midi message, with a different timestamp.

◆ ~MidiMessage()

juce::MidiMessage::~MidiMessage ( )
noexcept

Destructor.

◆ MidiMessage() [10/10]

juce::MidiMessage::MidiMessage ( MidiMessage &&  )
noexcept

Move constructor.

Member Function Documentation

◆ addToTimeStamp()

void juce::MidiMessage::addToTimeStamp ( double  delta)
inlinenoexcept

Adds a value to the message's timestamp.

The units for the timestamp will be application-specific.

◆ aftertouchChange()

static MidiMessage juce::MidiMessage::aftertouchChange ( int  channel,
int  noteNumber,
int  aftertouchAmount 
)
staticnoexcept

Creates an aftertouch message.

Parameters
channelthe midi channel, in the range 1 to 16
noteNumberthe key number, 0 to 127
aftertouchAmountthe amount of aftertouch, 0 to 127
See also
isAftertouch

◆ allControllersOff()

static MidiMessage juce::MidiMessage::allControllersOff ( int  channel)
staticnoexcept

Creates an all-controllers-off message.

Parameters
channelthe midi channel, in the range 1 to 16

◆ allNotesOff()

static MidiMessage juce::MidiMessage::allNotesOff ( int  channel)
staticnoexcept

Creates an all-notes-off message.

Parameters
channelthe midi channel, in the range 1 to 16
See also
isAllNotesOff

◆ allocateSpace()

uint8* juce::MidiMessage::allocateSpace ( int  )
private

◆ allSoundOff()

static MidiMessage juce::MidiMessage::allSoundOff ( int  channel)
staticnoexcept

Creates an all-sound-off message.

Parameters
channelthe midi channel, in the range 1 to 16
See also
isAllSoundOff

◆ channelPressureChange()

static MidiMessage juce::MidiMessage::channelPressureChange ( int  channel,
int  pressure 
)
staticnoexcept

Creates a channel-pressure change event.

Parameters
channelthe midi channel: 1 to 16
pressurethe pressure, 0 to 127
See also
isChannelPressure

◆ controllerEvent()

static MidiMessage juce::MidiMessage::controllerEvent ( int  channel,
int  controllerType,
int  value 
)
staticnoexcept

Creates a controller message.

Parameters
channelthe midi channel, in the range 1 to 16
controllerTypethe type of controller
valuethe controller value
See also
isController

◆ createSysExMessage()

static MidiMessage juce::MidiMessage::createSysExMessage ( const void *  sysexData,
int  dataSize 
)
static

Creates a system-exclusive message.

The data passed in is wrapped with header and tail bytes of 0xf0 and 0xf7.

◆ endOfTrack()

static MidiMessage juce::MidiMessage::endOfTrack ( )
staticnoexcept

Creates an end-of-track meta-event.

See also
isEndOfTrackMetaEvent

◆ floatValueToMidiByte()

static uint8 juce::MidiMessage::floatValueToMidiByte ( float  valueBetween0and1)
staticnoexcept

Converts a floating-point value between 0 and 1 to a MIDI 7-bit value between 0 and 127.

◆ fullFrame()

static MidiMessage juce::MidiMessage::fullFrame ( int  hours,
int  minutes,
int  seconds,
int  frames,
SmpteTimecodeType  timecodeType 
)
static

Creates a full-frame MTC message.

◆ getAfterTouchValue()

int juce::MidiMessage::getAfterTouchValue ( ) const
noexcept

Returns the amount of aftertouch from an aftertouch messages.

The value returned is in the range 0 to 127, and will be nonsense for messages other than aftertouch messages.

See also
isAftertouch

◆ getChannel()

int juce::MidiMessage::getChannel ( ) const
noexcept

Returns the midi channel associated with the message.

Returns
a value 1 to 16 if the message has a channel, or 0 if it hasn't (e.g. if it's a sysex)
See also
isForChannel, setChannel

◆ getChannelPressureValue()

int juce::MidiMessage::getChannelPressureValue ( ) const
noexcept

Returns the pressure from a channel pressure change message.

Returns
the pressure, in the range 0 to 127
See also
isChannelPressure, channelPressureChange

◆ getControllerName()

static const char* juce::MidiMessage::getControllerName ( int  controllerNumber)
static

Returns the name of a controller type number, or nullptr if unknown for this controller number.

See also
getControllerNumber

◆ getControllerNumber()

int juce::MidiMessage::getControllerNumber ( ) const
noexcept

Returns the controller number of a controller message.

The name of the controller can be looked up using the getControllerName() method. Note that the value returned is invalid for messages that aren't controller changes.

See also
isController, getControllerName, getControllerValue

◆ getControllerValue()

int juce::MidiMessage::getControllerValue ( ) const
noexcept

Returns the controller value from a controller message.

A value 0 to 127 is returned to indicate the new controller position. Note that the value returned is invalid for messages that aren't controller changes.

See also
isController, getControllerNumber

◆ getData()

uint8* juce::MidiMessage::getData ( ) const
inlineprivatenoexcept

◆ getDescription()

String juce::MidiMessage::getDescription ( ) const

Returns a human-readable description of the midi message as a string, for example "Note On C#3 Velocity 120 Channel 1".

◆ getFloatVelocity()

float juce::MidiMessage::getFloatVelocity ( ) const
noexcept

Returns the velocity of a note-on or note-off message.

The value returned will be in the range 0 to 1.0 If the message isn't a note-on or off event, it will return 0.

See also
getVelocity, setVelocity

◆ getFullFrameParameters()

void juce::MidiMessage::getFullFrameParameters ( int hours,
int minutes,
int seconds,
int frames,
SmpteTimecodeType timecodeType 
) const
noexcept

Extracts the timecode information from a full-frame midi timecode message.

You should only call this on messages where you've used isFullFrame() to check that they're the right kind.

◆ getGMInstrumentBankName()

static const char* juce::MidiMessage::getGMInstrumentBankName ( int  midiBankNumber)
static

Returns the name of a bank of GM instruments, or nullptr if unknown for this bank number.

Parameters
midiBankNumberthe bank, 0 to 15

◆ getGMInstrumentName()

static const char* juce::MidiMessage::getGMInstrumentName ( int  midiInstrumentNumber)
static

Returns the standard name of a GM instrument, or nullptr if unknown for this index.

Parameters
midiInstrumentNumberthe program number 0 to 127
See also
getProgramChangeNumber

◆ getKeySignatureNumberOfSharpsOrFlats()

int juce::MidiMessage::getKeySignatureNumberOfSharpsOrFlats ( ) const
noexcept

Returns the key from a key-signature meta-event.

This method must only be called if isKeySignatureMetaEvent() is true. A positive number here indicates the number of sharps in the key signature, and a negative number indicates a number of flats. So e.g. 3 = F# + C# + G#, -2 = Bb + Eb

See also
isKeySignatureMetaEvent, isKeySignatureMajorKey

◆ getMessageLengthFromFirstByte()

static int juce::MidiMessage::getMessageLengthFromFirstByte ( uint8  firstByte)
staticnoexcept

Based on the first byte of a short midi message, this uses a lookup table to return the message length (either 1, 2, or 3 bytes).

The value passed in must be 0x80 or higher.

Referenced by juce::MidiDataConcatenator::pushMidiData().

◆ getMetaEventData()

const uint8* juce::MidiMessage::getMetaEventData ( ) const
noexcept

Returns a pointer to the data in a meta-event.

See also
isMetaEvent, getMetaEventLength

◆ getMetaEventLength()

int juce::MidiMessage::getMetaEventLength ( ) const
noexcept

Returns the length of the data for a meta-event.

See also
isMetaEvent, getMetaEventData

◆ getMetaEventType()

int juce::MidiMessage::getMetaEventType ( ) const
noexcept

Returns a meta-event's type number.

If the message isn't a meta-event, this will return -1.

See also
isMetaEvent, isTrackMetaEvent, isEndOfTrackMetaEvent, isTextMetaEvent, isTrackNameEvent, isTempoMetaEvent, isTimeSignatureMetaEvent, isKeySignatureMetaEvent, isMidiChannelMetaEvent

◆ getMidiChannelMetaEventChannel()

int juce::MidiMessage::getMidiChannelMetaEventChannel ( ) const
noexcept

Returns the channel number from a channel meta-event.

Returns
the channel, in the range 1 to 16.
See also
isMidiChannelMetaEvent

◆ getMidiMachineControlCommand()

MidiMachineControlCommand juce::MidiMessage::getMidiMachineControlCommand ( ) const
noexcept

For an MMC message, this returns its type.

Make sure it's actually an MMC message with isMidiMachineControlMessage() before calling this method.

◆ getMidiNoteInHertz()

static double juce::MidiMessage::getMidiNoteInHertz ( int  noteNumber,
double  frequencyOfA = 440.0 
)
staticnoexcept

Returns the frequency of a midi note number.

The frequencyOfA parameter is an optional frequency for 'A', normally 440-444Hz for concert pitch.

See also
getMidiNoteName

◆ getMidiNoteName()

static String juce::MidiMessage::getMidiNoteName ( int  noteNumber,
bool  useSharps,
bool  includeOctaveNumber,
int  octaveNumForMiddleC 
)
static

Returns the name of a midi note number.

E.g "C", "D#", etc.

Parameters
noteNumberthe midi note number, 0 to 127
useSharpsif true, sharpened notes are used, e.g. "C#", otherwise they'll be flattened, e.g. "Db"
includeOctaveNumberif true, the octave number will be appended to the string, e.g. "C#4"
octaveNumForMiddleCif an octave number is being appended, this indicates the number that will be used for middle C's octave
See also
getMidiNoteInHertz

◆ getNoteNumber()

int juce::MidiMessage::getNoteNumber ( ) const
noexcept

Returns the midi note number for note-on and note-off messages.

If the message isn't a note-on or off, the value returned is undefined.

See also
isNoteOff, getMidiNoteName, getMidiNoteInHertz, setNoteNumber

◆ getPitchWheelValue()

int juce::MidiMessage::getPitchWheelValue ( ) const
noexcept

Returns the pitch wheel position from a pitch-wheel move message.

The value returned is a 14-bit number from 0 to 0x3fff, indicating the wheel position. If called for messages which aren't pitch wheel events, the number returned will be nonsense.

See also
isPitchWheel

◆ getProgramChangeNumber()

int juce::MidiMessage::getProgramChangeNumber ( ) const
noexcept

Returns the new program number of a program change message.

If the message isn't a program change, the value returned is undefined.

See also
isProgramChange, getGMInstrumentName

◆ getQuarterFrameSequenceNumber()

int juce::MidiMessage::getQuarterFrameSequenceNumber ( ) const
noexcept

Returns the sequence number of a quarter-frame midi timecode message.

This will be a value between 0 and 7.

See also
isQuarterFrame, getQuarterFrameValue, quarterFrame

◆ getQuarterFrameValue()

int juce::MidiMessage::getQuarterFrameValue ( ) const
noexcept

Returns the value from a quarter-frame message.

This will be the lower nybble of the message's data-byte, a value between 0 and 15

◆ getRawData()

const uint8* juce::MidiMessage::getRawData ( ) const
inlinenoexcept

Returns a pointer to the raw midi data.

See also
getRawDataSize

◆ getRawDataSize()

int juce::MidiMessage::getRawDataSize ( ) const
inlinenoexcept

Returns the number of bytes of data in the message.

See also
getRawData

◆ getRhythmInstrumentName()

static const char* juce::MidiMessage::getRhythmInstrumentName ( int  midiNoteNumber)
static

Returns the standard name of a channel 10 percussion sound, or nullptr if unknown for this note number.

Parameters
midiNoteNumberthe key number, 35 to 81

◆ getSongPositionPointerMidiBeat()

int juce::MidiMessage::getSongPositionPointerMidiBeat ( ) const
noexcept

Returns the midi beat-number of a song-position-pointer message.

See also
isSongPositionPointer, songPositionPointer

◆ getSysExData()

const uint8* juce::MidiMessage::getSysExData ( ) const
noexcept

Returns a pointer to the sysex data inside the message.

If this event isn't a sysex event, it'll return 0.

See also
getSysExDataSize

◆ getSysExDataSize()

int juce::MidiMessage::getSysExDataSize ( ) const
noexcept

Returns the size of the sysex data.

This value excludes the 0xf0 header byte and the 0xf7 at the end.

See also
getSysExData

◆ getTempoMetaEventTickLength()

double juce::MidiMessage::getTempoMetaEventTickLength ( short  timeFormat) const
noexcept

Returns the tick length from a tempo meta-event.

Parameters
timeFormatthe 16-bit time format value from the midi file's header.
Returns
the tick length (in seconds).
See also
isTempoMetaEvent

◆ getTempoSecondsPerQuarterNote()

double juce::MidiMessage::getTempoSecondsPerQuarterNote ( ) const
noexcept

Calculates the seconds-per-quarter-note from a tempo meta-event.

See also
isTempoMetaEvent, getTempoMetaEventTickLength

◆ getTextFromTextMetaEvent()

String juce::MidiMessage::getTextFromTextMetaEvent ( ) const

Returns the text from a text meta-event.

See also
isTextMetaEvent

◆ getTimeSignatureInfo()

void juce::MidiMessage::getTimeSignatureInfo ( int numerator,
int denominator 
) const
noexcept

Returns the time-signature values from a time-signature meta-event.

See also
isTimeSignatureMetaEvent

◆ getTimeStamp()

double juce::MidiMessage::getTimeStamp ( ) const
inlinenoexcept

Returns the timestamp associated with this message.

The exact meaning of this time and its units will vary, as messages are used in a variety of different contexts.

If you're getting the message from a midi file, this could be a time in seconds, or a number of ticks - see MidiFile::convertTimestampTicksToSeconds().

If the message is being used in a MidiBuffer, it might indicate the number of audio samples from the start of the buffer.

If the message was created by a MidiInput, see MidiInputCallback::handleIncomingMidiMessage() for details of the way that it initialises this value.

See also
setTimeStamp, addToTimeStamp

◆ getVelocity()

uint8 juce::MidiMessage::getVelocity ( ) const
noexcept

Returns the velocity of a note-on or note-off message.

The value returned will be in the range 0 to 127. If the message isn't a note-on or off event, it will return 0.

See also
getFloatVelocity

◆ isActiveSense()

bool juce::MidiMessage::isActiveSense ( ) const
noexcept

Returns true if this is an active-sense message.

◆ isAftertouch()

bool juce::MidiMessage::isAftertouch ( ) const
noexcept

Returns true if the message is an aftertouch event.

For aftertouch events, use the getNoteNumber() method to find out the key that it applies to, and getAftertouchValue() to find out the amount. Use getChannel() to find out the channel.

See also
getAftertouchValue, getNoteNumber

◆ isAllNotesOff()

bool juce::MidiMessage::isAllNotesOff ( ) const
noexcept

Checks whether this message is an all-notes-off message.

See also
allNotesOff

◆ isAllSoundOff()

bool juce::MidiMessage::isAllSoundOff ( ) const
noexcept

Checks whether this message is an all-sound-off message.

See also
allSoundOff

◆ isChannelPressure()

bool juce::MidiMessage::isChannelPressure ( ) const
noexcept

Returns true if the message is a channel-pressure change event.

This is like aftertouch, but common to the whole channel rather than a specific note. Use getChannelPressureValue() to find out the pressure, and getChannel() to find out the channel.

See also
channelPressureChange

◆ isController()

bool juce::MidiMessage::isController ( ) const
noexcept

Returns true if this is a midi controller message.

See also
getControllerNumber, getControllerValue, controllerEvent

◆ isControllerOfType()

bool juce::MidiMessage::isControllerOfType ( int  controllerType) const
noexcept

Returns true if this message is a controller message and if it has the specified controller type.

◆ isEndOfTrackMetaEvent()

bool juce::MidiMessage::isEndOfTrackMetaEvent ( ) const
noexcept

Returns true if this is an 'end-of-track' meta-event.

◆ isForChannel()

bool juce::MidiMessage::isForChannel ( int  channelNumber) const
noexcept

Returns true if the message applies to the given midi channel.

Parameters
channelNumberthe channel number to look for, in the range 1 to 16
See also
getChannel, setChannel

◆ isFullFrame()

bool juce::MidiMessage::isFullFrame ( ) const
noexcept

Returns true if this is a full-frame midi timecode message.

◆ isHeapAllocated()

bool juce::MidiMessage::isHeapAllocated ( ) const
inlineprivatenoexcept

References int().

◆ isKeySignatureMajorKey()

bool juce::MidiMessage::isKeySignatureMajorKey ( ) const
noexcept

Returns true if this key-signature event is major, or false if it's minor.

This method must only be called if isKeySignatureMetaEvent() is true.

◆ isKeySignatureMetaEvent()

bool juce::MidiMessage::isKeySignatureMetaEvent ( ) const
noexcept

Returns true if this is a 'key-signature' meta-event.

See also
getKeySignatureNumberOfSharpsOrFlats, isKeySignatureMajorKey

◆ isMetaEvent()

bool juce::MidiMessage::isMetaEvent ( ) const
noexcept

Returns true if this event is a meta-event.

Meta-events are things like tempo changes, track names, etc.

See also
getMetaEventType, isTrackMetaEvent, isEndOfTrackMetaEvent, isTextMetaEvent, isTrackNameEvent, isTempoMetaEvent, isTimeSignatureMetaEvent, isKeySignatureMetaEvent, isMidiChannelMetaEvent

◆ isMidiChannelMetaEvent()

bool juce::MidiMessage::isMidiChannelMetaEvent ( ) const
noexcept

Returns true if this is a 'channel' meta-event.

A channel meta-event specifies the midi channel that should be used for subsequent meta-events.

See also
getMidiChannelMetaEventChannel

◆ isMidiClock()

bool juce::MidiMessage::isMidiClock ( ) const
noexcept

Returns true if this is a midi clock event.

See also
midiClock, songPositionPointer

◆ isMidiContinue()

bool juce::MidiMessage::isMidiContinue ( ) const
noexcept

Returns true if this is a midi continue event.

See also
midiContinue

◆ isMidiMachineControlGoto()

bool juce::MidiMessage::isMidiMachineControlGoto ( int hours,
int minutes,
int seconds,
int frames 
) const
noexcept

Checks whether this is an MMC "goto" message.

If it is, the parameters passed-in are set to the time that the message contains.

See also
midiMachineControlGoto

◆ isMidiMachineControlMessage()

bool juce::MidiMessage::isMidiMachineControlMessage ( ) const
noexcept

Checks whether this is an MMC message.

If it is, you can use the getMidiMachineControlCommand() to find out its type.

◆ isMidiNoteBlack()

static bool juce::MidiMessage::isMidiNoteBlack ( int  noteNumber)
staticnoexcept

Returns true if the given midi note number is a black key.

◆ isMidiStart()

bool juce::MidiMessage::isMidiStart ( ) const
noexcept

Returns true if this is a midi start event.

See also
midiStart

◆ isMidiStop()

bool juce::MidiMessage::isMidiStop ( ) const
noexcept

Returns true if this is a midi stop event.

See also
midiStop

◆ isNoteOff()

bool juce::MidiMessage::isNoteOff ( bool  returnTrueForNoteOnVelocity0 = true) const
noexcept

Returns true if this message is a 'key-up' event.

If returnTrueForNoteOnVelocity0 is true, then his will also return true for a note-on event with a velocity of 0.

See also
isNoteOn, getNoteNumber, getVelocity, noteOff

◆ isNoteOn()

bool juce::MidiMessage::isNoteOn ( bool  returnTrueForVelocity0 = false) const
noexcept

Returns true if this message is a 'key-down' event.

Parameters
returnTrueForVelocity0if true, then if this event is a note-on with velocity 0, it will still be considered to be a note-on and the method will return true. If returnTrueForVelocity0 is false, then if this is a note-on event with velocity 0, it'll be regarded as a note-off, and the method will return false
See also
isNoteOff, getNoteNumber, getVelocity, noteOn

◆ isNoteOnOrOff()

bool juce::MidiMessage::isNoteOnOrOff ( ) const
noexcept

Returns true if this message is a 'key-down' or 'key-up' event.

See also
isNoteOn, isNoteOff

◆ isPitchWheel()

bool juce::MidiMessage::isPitchWheel ( ) const
noexcept

Returns true if the message is a pitch-wheel move.

See also
getPitchWheelValue, pitchWheel

◆ isProgramChange()

bool juce::MidiMessage::isProgramChange ( ) const
noexcept

Returns true if the message is a program (patch) change message.

See also
getProgramChangeNumber, getGMInstrumentName

◆ isQuarterFrame()

bool juce::MidiMessage::isQuarterFrame ( ) const
noexcept

Returns true if this is a quarter-frame midi timecode message.

See also
quarterFrame, getQuarterFrameSequenceNumber, getQuarterFrameValue

◆ isResetAllControllers()

bool juce::MidiMessage::isResetAllControllers ( ) const
noexcept

Checks whether this message is a reset all controllers message.

See also
allControllerOff

◆ isSoftPedalOff()

bool juce::MidiMessage::isSoftPedalOff ( ) const
noexcept

Returns true if this message is a 'soft pedal up' controller message.

◆ isSoftPedalOn()

bool juce::MidiMessage::isSoftPedalOn ( ) const
noexcept

Returns true if this message is a 'soft pedal down' controller message.

◆ isSongPositionPointer()

bool juce::MidiMessage::isSongPositionPointer ( ) const
noexcept

Returns true if this is a song-position-pointer message.

See also
getSongPositionPointerMidiBeat, songPositionPointer

◆ isSostenutoPedalOff()

bool juce::MidiMessage::isSostenutoPedalOff ( ) const
noexcept

Returns true if this message is a 'sostenuto pedal up' controller message.

◆ isSostenutoPedalOn()

bool juce::MidiMessage::isSostenutoPedalOn ( ) const
noexcept

Returns true if this message is a 'sostenuto pedal down' controller message.

◆ isSustainPedalOff()

bool juce::MidiMessage::isSustainPedalOff ( ) const
noexcept

Returns true if this message is a 'sustain pedal up' controller message.

◆ isSustainPedalOn()

bool juce::MidiMessage::isSustainPedalOn ( ) const
noexcept

Returns true if this message is a 'sustain pedal down' controller message.

◆ isSysEx()

bool juce::MidiMessage::isSysEx ( ) const
noexcept

Returns true if this is a system-exclusive message.

◆ isTempoMetaEvent()

bool juce::MidiMessage::isTempoMetaEvent ( ) const
noexcept

Returns true if this is a 'tempo' meta-event.

See also
getTempoMetaEventTickLength, getTempoSecondsPerQuarterNote

◆ isTextMetaEvent()

bool juce::MidiMessage::isTextMetaEvent ( ) const
noexcept

Returns true if this is a 'text' meta-event.

See also
getTextFromTextMetaEvent

◆ isTimeSignatureMetaEvent()

bool juce::MidiMessage::isTimeSignatureMetaEvent ( ) const
noexcept

Returns true if this is a 'time-signature' meta-event.

See also
getTimeSignatureInfo

◆ isTrackMetaEvent()

bool juce::MidiMessage::isTrackMetaEvent ( ) const
noexcept

Returns true if this is a 'track' meta-event.

◆ isTrackNameEvent()

bool juce::MidiMessage::isTrackNameEvent ( ) const
noexcept

Returns true if this is an 'track name' meta-event.

You can use the getTextFromTextMetaEvent() method to get the track's name.

◆ keySignatureMetaEvent()

static MidiMessage juce::MidiMessage::keySignatureMetaEvent ( int  numberOfSharpsOrFlats,
bool  isMinorKey 
)
static

Creates a key-signature meta-event.

Parameters
numberOfSharpsOrFlatsif positive, this indicates the number of sharps in the key; if negative, the number of flats
isMinorKeyif true, the key is minor; if false, it is major
See also
isKeySignatureMetaEvent

◆ masterVolume()

static MidiMessage juce::MidiMessage::masterVolume ( float  volume)
static

Creates a master-volume change message.

Parameters
volumethe volume, 0 to 1.0

◆ midiChannelMetaEvent()

static MidiMessage juce::MidiMessage::midiChannelMetaEvent ( int  channel)
staticnoexcept

Creates a midi channel meta-event.

Parameters
channelthe midi channel, in the range 1 to 16
See also
isMidiChannelMetaEvent

◆ midiClock()

static MidiMessage juce::MidiMessage::midiClock ( )
staticnoexcept

Creates a midi clock event.

◆ midiContinue()

static MidiMessage juce::MidiMessage::midiContinue ( )
staticnoexcept

Creates a midi continue event.

◆ midiMachineControlCommand()

static MidiMessage juce::MidiMessage::midiMachineControlCommand ( MidiMachineControlCommand  command)
static

Creates an MMC message.

◆ midiMachineControlGoto()

static MidiMessage juce::MidiMessage::midiMachineControlGoto ( int  hours,
int  minutes,
int  seconds,
int  frames 
)
static

Creates an MMC "goto" message.

This messages tells the device to go to a specific frame.

See also
isMidiMachineControlGoto

◆ midiStart()

static MidiMessage juce::MidiMessage::midiStart ( )
staticnoexcept

Creates a midi start event.

◆ midiStop()

static MidiMessage juce::MidiMessage::midiStop ( )
staticnoexcept

Creates a midi stop event.

◆ multiplyVelocity()

void juce::MidiMessage::multiplyVelocity ( float  scaleFactor)
noexcept

Multiplies the velocity of a note-on or note-off message by a given amount.

If the message isn't a note on or off, this will do nothing.

Parameters
scaleFactorthe value by which to multiply the velocity
See also
setVelocity

◆ noteOff() [1/3]

static MidiMessage juce::MidiMessage::noteOff ( int  channel,
int  noteNumber,
float  velocity 
)
staticnoexcept

Creates a key-up message.

Parameters
channelthe midi channel, in the range 1 to 16
noteNumberthe key number, 0 to 127
velocityin the range 0 to 1.0
See also
isNoteOff

◆ noteOff() [2/3]

static MidiMessage juce::MidiMessage::noteOff ( int  channel,
int  noteNumber,
uint8  velocity 
)
staticnoexcept

Creates a key-up message.

Parameters
channelthe midi channel, in the range 1 to 16
noteNumberthe key number, 0 to 127
velocityin the range 0 to 127
See also
isNoteOff

◆ noteOff() [3/3]

static MidiMessage juce::MidiMessage::noteOff ( int  channel,
int  noteNumber 
)
staticnoexcept

Creates a key-up message.

Parameters
channelthe midi channel, in the range 1 to 16
noteNumberthe key number, 0 to 127
See also
isNoteOff

◆ noteOn() [1/2]

static MidiMessage juce::MidiMessage::noteOn ( int  channel,
int  noteNumber,
float  velocity 
)
staticnoexcept

Creates a key-down message (using a floating-point velocity).

Parameters
channelthe midi channel, in the range 1 to 16
noteNumberthe key number, 0 to 127
velocityin the range 0 to 1.0
See also
isNoteOn

◆ noteOn() [2/2]

static MidiMessage juce::MidiMessage::noteOn ( int  channel,
int  noteNumber,
uint8  velocity 
)
staticnoexcept

Creates a key-down message (using an integer velocity).

Parameters
channelthe midi channel, in the range 1 to 16
noteNumberthe key number, 0 to 127
velocityin the range 0 to 127
See also
isNoteOn

◆ operator=() [1/2]

MidiMessage& juce::MidiMessage::operator= ( const MidiMessage other)

Copies this message from another one.

◆ operator=() [2/2]

MidiMessage& juce::MidiMessage::operator= ( MidiMessage &&  )
noexcept

Move assignment operator.

◆ pitchbendToPitchwheelPos()

static uint16 juce::MidiMessage::pitchbendToPitchwheelPos ( float  pitchbendInSemitones,
float  pitchbendRangeInSemitones 
)
staticnoexcept

Converts a pitchbend value in semitones to a MIDI 14-bit pitchwheel position value.

◆ pitchWheel()

static MidiMessage juce::MidiMessage::pitchWheel ( int  channel,
int  position 
)
staticnoexcept

Creates a pitch-wheel move message.

Parameters
channelthe midi channel, in the range 1 to 16
positionthe wheel position, in the range 0 to 16383
See also
isPitchWheel

◆ programChange()

static MidiMessage juce::MidiMessage::programChange ( int  channel,
int  programNumber 
)
staticnoexcept

Creates a program-change message.

Parameters
channelthe midi channel, in the range 1 to 16
programNumberthe midi program number, 0 to 127
See also
isProgramChange, getGMInstrumentName

◆ quarterFrame()

static MidiMessage juce::MidiMessage::quarterFrame ( int  sequenceNumber,
int  value 
)
staticnoexcept

Creates a quarter-frame MTC message.

Parameters
sequenceNumbera value 0 to 7 for the upper nybble of the message's data byte
valuea value 0 to 15 for the lower nybble of the message's data byte

◆ readVariableLengthVal()

static int juce::MidiMessage::readVariableLengthVal ( const uint8 data,
int numBytesUsed 
)
staticnoexcept

Reads a midi variable-length integer.

Parameters
datathe data to read the number from
numBytesUsedon return, this will be set to the number of bytes that were read

◆ setChannel()

void juce::MidiMessage::setChannel ( int  newChannelNumber)
noexcept

Changes the message's midi channel.

This won't do anything for non-channel messages like sysexes.

Parameters
newChannelNumberthe channel number to change it to, in the range 1 to 16

◆ setNoteNumber()

void juce::MidiMessage::setNoteNumber ( int  newNoteNumber)
noexcept

Changes the midi note number of a note-on or note-off message.

If the message isn't a note on or off, this will do nothing.

◆ setTimeStamp()

void juce::MidiMessage::setTimeStamp ( double  newTimestamp)
inlinenoexcept

Changes the message's associated timestamp.

The units for the timestamp will be application-specific - see the notes for getTimeStamp().

See also
addToTimeStamp, getTimeStamp

◆ setVelocity()

void juce::MidiMessage::setVelocity ( float  newVelocity)
noexcept

Changes the velocity of a note-on or note-off message.

If the message isn't a note on or off, this will do nothing.

Parameters
newVelocitythe new velocity, in the range 0 to 1.0
See also
getFloatVelocity, multiplyVelocity

◆ songPositionPointer()

static MidiMessage juce::MidiMessage::songPositionPointer ( int  positionInMidiBeats)
staticnoexcept

Creates a song-position-pointer message.

The position is a number of midi beats from the start of the song, where 1 midi beat is 6 midi clocks, and there are 24 midi clocks in a quarter-note. So there are 4 midi beats in a quarter-note.

See also
isSongPositionPointer, getSongPositionPointerMidiBeat

◆ tempoMetaEvent()

static MidiMessage juce::MidiMessage::tempoMetaEvent ( int  microsecondsPerQuarterNote)
staticnoexcept

Creates a tempo meta-event.

See also
isTempoMetaEvent

◆ textMetaEvent()

static MidiMessage juce::MidiMessage::textMetaEvent ( int  type,
StringRef  text 
)
static

Creates a text meta-event.

◆ timeSignatureMetaEvent()

static MidiMessage juce::MidiMessage::timeSignatureMetaEvent ( int  numerator,
int  denominator 
)
static

Creates a time-signature meta-event.

See also
isTimeSignatureMetaEvent

◆ withTimeStamp()

MidiMessage juce::MidiMessage::withTimeStamp ( double  newTimestamp) const

Return a copy of this message with a new timestamp.

The units for the timestamp will be application-specific - see the notes for getTimeStamp().


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