TracktionEngine
|
#include <tracktion_MidiList.h>
Public Types | |
enum class | NoteAutomationType { none , expression } |
enum class | TimeBase { seconds , beats , beatsRaw } |
Determines MIDI event timing. More... | |
Public Member Functions | |
MidiList () | |
MidiList (const juce::ValueTree &, juce::UndoManager *) | |
~MidiList () | |
void | copyFrom (const MidiList &, juce::UndoManager *) |
Clears the current list and copies the others contents and properties. | |
void | addFrom (const MidiList &, juce::UndoManager *) |
Adds copies of the events in another list to this one. | |
const juce::Array< MidiNote * > & | getNotes () const |
const juce::Array< MidiControllerEvent * > & | getControllerEvents () const |
const juce::Array< MidiSysexEvent * > & | getSysexEvents () const |
bool | isAttachedToClip () const noexcept |
void | setCompList (bool shouldBeComp) noexcept |
bool | isCompList () const noexcept |
MidiChannel | getMidiChannel () const |
Gets the list's midi channel number. | |
void | setMidiChannel (MidiChannel chanNum) |
Gives the list a channel number that it'll use when generating real midi messages. | |
juce::String | getImportedMidiTrackName () const noexcept |
If the data was pulled from a midi file then this may have a useful name describing its purpose. | |
juce::String | getImportedFileName () const noexcept |
Set the imported file name if you want it to appear on the clip. | |
void | setImportedFileName (const juce::String &n) |
bool | isEmpty () const noexcept |
void | clear (juce::UndoManager *) |
void | trimOutside (BeatPosition firstBeat, BeatPosition lastBeat, juce::UndoManager *) |
void | moveAllBeatPositions (BeatDuration deltaBeats, juce::UndoManager *) |
void | rescale (double factor, juce::UndoManager *) |
int | getNumNotes () const |
MidiNote * | getNote (int index) const |
MidiNote * | getNoteFor (const juce::ValueTree &) |
juce::Range< int > | getNoteNumberRange () const |
BeatPosition | getFirstBeatNumber () const |
Beat number of first event in the list. | |
BeatPosition | getLastBeatNumber () const |
Beat number of last event in the list. | |
MidiNote * | addNote (const MidiNote &, juce::UndoManager *) |
MidiNote * | addNote (int pitch, BeatPosition startBeat, BeatDuration lengthInBeats, int velocity, int colourIndex, juce::UndoManager *) |
void | removeNote (MidiNote &, juce::UndoManager *) |
void | removeAllNotes (juce::UndoManager *) |
int | getNumControllerEvents () const |
MidiControllerEvent * | getControllerEvent (int index) const |
MidiControllerEvent * | getControllerEventAt (BeatPosition, int controllerType) const |
MidiControllerEvent * | addControllerEvent (const MidiControllerEvent &, juce::UndoManager *) |
MidiControllerEvent * | addControllerEvent (BeatPosition, int controllerType, int controllerValue, juce::UndoManager *) |
MidiControllerEvent * | addControllerEvent (BeatPosition, int controllerType, int controllerValue, int metadata, juce::UndoManager *) |
void | removeControllerEvent (MidiControllerEvent &, juce::UndoManager *) |
void | removeAllControllers (juce::UndoManager *) |
bool | containsController (int controllerType) const |
True if there are any controller events of this type. | |
void | setControllerValueAt (int controllerType, BeatPosition beatNumber, int newValue, juce::UndoManager *) |
void | removeControllersBetween (int controllerType, BeatPosition beatNumberStart, BeatPosition beatNumberEnd, juce::UndoManager *) |
void | insertRepeatedControllerValue (int type, int startVal, int endVal, BeatRange rangeBeats, BeatDuration intervalBeats, juce::UndoManager *) |
Adds controller values over a specified time, at an even interval. | |
int | getNumSysExEvents () const |
MidiSysexEvent * | getSysexEvent (int index) const |
MidiSysexEvent * | getSysexEventUnchecked (int index) const |
MidiSysexEvent * | getSysexEventFor (const juce::ValueTree &) const |
MidiSysexEvent & | addSysExEvent (const juce::MidiMessage &, BeatPosition, juce::UndoManager *) |
void | removeSysExEvent (const MidiSysexEvent &, juce::UndoManager *) |
void | removeAllSysexes (juce::UndoManager *) |
void | importMidiSequence (const juce::MidiMessageSequence &, Edit *, TimePosition editTimeOfListTimeZero, juce::UndoManager *) |
Adds the contents of a MidiMessageSequence to this list. | |
void | importFromEditTimeSequenceWithNoteExpression (const juce::MidiMessageSequence &, Edit *, TimePosition editTimeOfListTimeZero, juce::UndoManager *) |
Adds the contents of a MidiSequence to this list assigning MPE expression changes to EXP expression. | |
juce::MidiMessageSequence | exportToPlaybackMidiSequence (MidiClip &, TimeBase, bool generateMPE) const |
Creates a juce::MidiMessageSequence from the list in order to be played back The sequence will be in terms of edit time, either in seconds or beats. | |
Static Public Member Functions | |
static juce::ValueTree | createMidiList () |
static juce::MidiMessageSequence | createDefaultPlaybackMidiSequence (const MidiList &, MidiClip &, TimeBase, bool generateMPE) |
Creates the default MIDI playback sequence. | |
static bool | looksLikeMPEData (const juce::File &) |
static bool | fileHasTempoChanges (const juce::File &) |
static bool | readSeparateTracksFromFile (const juce::File &, juce::OwnedArray< MidiList > &lists, juce::Array< BeatPosition > &tempoChangeBeatNumbers, juce::Array< double > &bpms, juce::Array< int > &numerators, juce::Array< int > &denominators, BeatDuration &songLength, bool importAsNoteExpression) |
template<typename Type > | |
static void | sortMidiEventsByTime (juce::Array< Type > ¬es) |
template<typename Type > | |
static void | sortMidiEventsByNoteNumber (juce::Array< Type > ¬es) |
Public Attributes | |
juce::ValueTree | state |
Static Public Attributes | |
static constexpr const double | defaultInitialTimbreValue = 0.5 |
static constexpr const double | defaultInitialPitchBendValue = 0 |
static constexpr const double | defaultInitialPressureValue = 0 |
|
strong |
|
strong |
tracktion::engine::MidiList::MidiList | ( | ) |
tracktion::engine::MidiList::MidiList | ( | const juce::ValueTree & | , |
juce::UndoManager * | |||
) |
tracktion::engine::MidiList::~MidiList | ( | ) |
|
static |
void tracktion::engine::MidiList::copyFrom | ( | const MidiList & | , |
juce::UndoManager * | |||
) |
Clears the current list and copies the others contents and properties.
void tracktion::engine::MidiList::addFrom | ( | const MidiList & | , |
juce::UndoManager * | |||
) |
Adds copies of the events in another list to this one.
const juce::Array< MidiNote * > & tracktion::engine::MidiList::getNotes | ( | ) | const |
Referenced by getNote(), and getNumNotes().
const juce::Array< MidiControllerEvent * > & tracktion::engine::MidiList::getControllerEvents | ( | ) | const |
Referenced by getControllerEvent(), and getNumControllerEvents().
const juce::Array< MidiSysexEvent * > & tracktion::engine::MidiList::getSysexEvents | ( | ) | const |
Referenced by getNumSysExEvents(), getSysexEvent(), and getSysexEventUnchecked().
|
noexcept |
References state.
|
noexcept |
|
noexcept |
MidiChannel tracktion::engine::MidiList::getMidiChannel | ( | ) | const |
Gets the list's midi channel number.
Value is 1 to 16.
Referenced by tracktion::engine::MidiClip::getMidiChannel().
void tracktion::engine::MidiList::setMidiChannel | ( | MidiChannel | chanNum | ) |
Gives the list a channel number that it'll use when generating real midi messages.
Value is 1 to 16.
Referenced by tracktion::engine::MidiClip::setMidiChannel().
|
noexcept |
If the data was pulled from a midi file then this may have a useful name describing its purpose.
|
noexcept |
Set the imported file name if you want it to appear on the clip.
void tracktion::engine::MidiList::setImportedFileName | ( | const juce::String & | n | ) |
|
noexcept |
References state.
void tracktion::engine::MidiList::clear | ( | juce::UndoManager * | ) |
void tracktion::engine::MidiList::trimOutside | ( | BeatPosition | firstBeat, |
BeatPosition | lastBeat, | ||
juce::UndoManager * | |||
) |
void tracktion::engine::MidiList::moveAllBeatPositions | ( | BeatDuration | deltaBeats, |
juce::UndoManager * | |||
) |
void tracktion::engine::MidiList::rescale | ( | double | factor, |
juce::UndoManager * | |||
) |
int tracktion::engine::MidiList::getNumNotes | ( | ) | const |
References getNotes().
MidiNote * tracktion::engine::MidiList::getNote | ( | int | index | ) | const |
References getNotes().
MidiNote * tracktion::engine::MidiList::getNoteFor | ( | const juce::ValueTree & | ) |
juce::Range< int > tracktion::engine::MidiList::getNoteNumberRange | ( | ) | const |
BeatPosition tracktion::engine::MidiList::getFirstBeatNumber | ( | ) | const |
Beat number of first event in the list.
BeatPosition tracktion::engine::MidiList::getLastBeatNumber | ( | ) | const |
Beat number of last event in the list.
MidiNote * tracktion::engine::MidiList::addNote | ( | int | pitch, |
BeatPosition | startBeat, | ||
BeatDuration | lengthInBeats, | ||
int | velocity, | ||
int | colourIndex, | ||
juce::UndoManager * | |||
) |
void tracktion::engine::MidiList::removeNote | ( | MidiNote & | , |
juce::UndoManager * | |||
) |
void tracktion::engine::MidiList::removeAllNotes | ( | juce::UndoManager * | ) |
int tracktion::engine::MidiList::getNumControllerEvents | ( | ) | const |
References getControllerEvents().
MidiControllerEvent * tracktion::engine::MidiList::getControllerEvent | ( | int | index | ) | const |
References getControllerEvents().
MidiControllerEvent * tracktion::engine::MidiList::getControllerEventAt | ( | BeatPosition | , |
int | controllerType | ||
) | const |
MidiControllerEvent * tracktion::engine::MidiList::addControllerEvent | ( | const MidiControllerEvent & | , |
juce::UndoManager * | |||
) |
MidiControllerEvent * tracktion::engine::MidiList::addControllerEvent | ( | BeatPosition | , |
int | controllerType, | ||
int | controllerValue, | ||
juce::UndoManager * | |||
) |
MidiControllerEvent * tracktion::engine::MidiList::addControllerEvent | ( | BeatPosition | , |
int | controllerType, | ||
int | controllerValue, | ||
int | metadata, | ||
juce::UndoManager * | |||
) |
void tracktion::engine::MidiList::removeControllerEvent | ( | MidiControllerEvent & | , |
juce::UndoManager * | |||
) |
void tracktion::engine::MidiList::removeAllControllers | ( | juce::UndoManager * | ) |
bool tracktion::engine::MidiList::containsController | ( | int | controllerType | ) | const |
True if there are any controller events of this type.
void tracktion::engine::MidiList::setControllerValueAt | ( | int | controllerType, |
BeatPosition | beatNumber, | ||
int | newValue, | ||
juce::UndoManager * | |||
) |
void tracktion::engine::MidiList::removeControllersBetween | ( | int | controllerType, |
BeatPosition | beatNumberStart, | ||
BeatPosition | beatNumberEnd, | ||
juce::UndoManager * | |||
) |
void tracktion::engine::MidiList::insertRepeatedControllerValue | ( | int | type, |
int | startVal, | ||
int | endVal, | ||
BeatRange | rangeBeats, | ||
BeatDuration | intervalBeats, | ||
juce::UndoManager * | |||
) |
Adds controller values over a specified time, at an even interval.
int tracktion::engine::MidiList::getNumSysExEvents | ( | ) | const |
References getSysexEvents().
MidiSysexEvent * tracktion::engine::MidiList::getSysexEvent | ( | int | index | ) | const |
References getSysexEvents().
MidiSysexEvent * tracktion::engine::MidiList::getSysexEventUnchecked | ( | int | index | ) | const |
References getSysexEvents().
MidiSysexEvent * tracktion::engine::MidiList::getSysexEventFor | ( | const juce::ValueTree & | ) | const |
MidiSysexEvent & tracktion::engine::MidiList::addSysExEvent | ( | const juce::MidiMessage & | , |
BeatPosition | , | ||
juce::UndoManager * | |||
) |
void tracktion::engine::MidiList::removeSysExEvent | ( | const MidiSysexEvent & | , |
juce::UndoManager * | |||
) |
void tracktion::engine::MidiList::removeAllSysexes | ( | juce::UndoManager * | ) |
void tracktion::engine::MidiList::importMidiSequence | ( | const juce::MidiMessageSequence & | , |
Edit * | , | ||
TimePosition | editTimeOfListTimeZero, | ||
juce::UndoManager * | |||
) |
Adds the contents of a MidiMessageSequence to this list.
If an Edit is provided, it'll be used to convert the timestamps from possible seconds to beats
void tracktion::engine::MidiList::importFromEditTimeSequenceWithNoteExpression | ( | const juce::MidiMessageSequence & | , |
Edit * | , | ||
TimePosition | editTimeOfListTimeZero, | ||
juce::UndoManager * | |||
) |
Adds the contents of a MidiSequence to this list assigning MPE expression changes to EXP expression.
juce::MidiMessageSequence tracktion::engine::MidiList::exportToPlaybackMidiSequence | ( | MidiClip & | , |
TimeBase | , | ||
bool | generateMPE | ||
) | const |
Creates a juce::MidiMessageSequence from the list in order to be played back The sequence will be in terms of edit time, either in seconds or beats.
MidiClip | The clip boundries to use and the groove template if the clip contains one |
TimeBase | The format the exported MIDI event times will be in |
generateMPE | Whether the sequence should create MPE or standard MIDI |
|
static |
Creates the default MIDI playback sequence.
Referenced by tracktion::engine::EngineBehaviour::createPlaybackMidiSequence().
|
static |
|
static |
|
static |
|
static |
|
static |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
juce::ValueTree tracktion::engine::MidiList::state |
Referenced by isAttachedToClip(), and isEmpty().