TracktionEngine
|
#include <tracktion_MidiInputDevice.h>
Classes | |
struct | MidiKeyChangeDispatcher |
Gets notified (lazily, not in real-time) when any MidiInputDevice's key's state changes. More... | |
struct | NoteFilterRange |
Public Types | |
enum class | MergeMode { always , never , optional } |
![]() | |
enum | DeviceType { waveDevice , trackWaveDevice , physicalMidiDevice , virtualMidiDevice , trackMidiDevice } |
enum to allow quick querying of the device type. More... | |
enum class | MonitorMode { off , automatic , on } |
Enum to describe monitor modes. More... | |
![]() | |
using | WeakRef = juce::WeakReference< Selectable > |
Public Member Functions | |
MidiInputDevice (Engine &, juce::String type, juce::String name, juce::String deviceID) | |
~MidiInputDevice () override | |
virtual juce::String | openDevice ()=0 |
virtual void | closeDevice ()=0 |
void | setEnabled (bool) override |
bool | isMidi () const override |
MidiChannel | getChannelToUse () const noexcept |
void | setChannelToUse (int) |
int | getProgramToUse () const noexcept |
void | setProgramToUse (int) |
void | setBankToUse (int) |
int | getBankToUse () const |
void | setChannelAllowed (int midiChannel, bool) |
bool | isChannelAllowed (int midiChannel) const |
void | setNoteFilterRange (NoteFilterRange) |
NoteFilterRange | getNoteFilterRange () const |
void | setOverridingNoteVelocities (bool) |
bool | isOverridingNoteVelocities () const |
void | setManualAdjustmentMs (double) |
double | getManualAdjustmentMs () const |
void | setMinimumLengthMs (double) |
double | getMinimumLengthMs () const |
bool | isMPEDevice () const |
Returns true if the given device is an MPE device and so should always record incoming MIDI to Note Expression. | |
void | masterTimeUpdate (double time) override |
This is a bit of a hack but allows the time for MIDI devices to be set through the base class interface. | |
void | connectionStateChanged () |
bool | handleIncomingMessage (juce::MidiMessage &) |
Updates the timestamp of the message and handles sending it out to listeners. | |
void | addInstance (MidiInputDeviceInstanceBase *) |
void | removeInstance (MidiInputDeviceInstanceBase *) |
virtual void | loadProps ()=0 |
Clip * | addMidiAsTransaction (Edit &, EditItemID targetID, Clip *takeClip, juce::MidiMessageSequence, TimeRange markedRange, MergeMode, MidiChannel) |
void | handleIncomingMidiMessage (juce::MidiInput *, const juce::MidiMessage &) override |
virtual void | handleIncomingMidiMessage (const juce::MidiMessage &, MPESourceID)=0 |
RetrospectiveMidiBuffer * | getRetrospectiveMidiBuffer () const |
void | updateRetrospectiveBufferLength (double length) override |
double | getAdjustSecs () const |
juce::Array< AudioTrack * > | getDestinationTracks () |
MidiChannel | getMidiChannelFor (int rawChannelNumber) const |
MPESourceID | getMPESourceID () const |
![]() | |
InputDevice (Engine &, juce::String type, juce::String name, juce::String deviceID) | |
~InputDevice () override | |
const juce::String & | getName () const |
const juce::String & | getType () const |
juce::String | getDeviceID () const |
virtual DeviceType | getDeviceType () const =0 |
bool | isTrackDevice () const |
juce::String | getAlias () const |
the alias is the name shown in the draggable input device components | |
void | setAlias (const juce::String &newAlias) |
virtual bool | isAvailableToEdit () const |
bool | isEnabled () const |
MonitorMode | getMonitorMode () const |
void | setMonitorMode (MonitorMode) |
virtual InputDeviceInstance * | createInstance (EditPlaybackContext &)=0 |
Creates an instance to use for a given playback context. | |
juce::String | getSelectableDescription () override |
Subclasses must return a description of what they are. | |
virtual void | saveProps ()=0 |
![]() | |
Selectable () | |
virtual | ~Selectable () |
virtual void | selectionStatusChanged (bool isNowSelected) |
Can be overridden to tell this object that it has just been selected or deselected. | |
virtual void | changed () |
This should be called to send a change notification to any SelectableListeners that are registered with this object. | |
virtual void | selectableAboutToBeDeleted () |
Called just before the selectable is about to be deleted so any subclasses should still be valid at this point. | |
void | addListener (SelectableListener *) |
void | removeListener (SelectableListener *) |
void | addSelectableListener (SelectableListener *) |
void | removeSelectableListener (SelectableListener *) |
void | cancelAnyPendingUpdates () |
If changed() has been called, this will cancel any pending async change notificaions. | |
void | deselect () |
void | propertiesChanged () |
void | notifyListenersOfDeletion () |
WeakRef | getWeakRef () |
Public Attributes | |
bool | mergeRecordings = true |
bool | recordingEnabled = true |
bool | replaceExistingClips = false |
bool | recordToNoteAutomation = false |
QuantisationType | quantisation |
juce::MidiKeyboardState | keyboardState |
![]() | |
Engine & | engine |
LevelMeasurer | levelMeasurer |
![]() | |
WeakRef::Master | masterReference |
Protected Member Functions | |
void | handleNoteOn (juce::MidiKeyboardState *, int midiChannel, int midiNoteNumber, float velocity) override |
void | handleNoteOff (juce::MidiKeyboardState *, int midiChannel, int midiNoteNumber, float velocity) override |
void | timerCallback () override |
void | sendNoteOnToMidiKeyListeners (juce::MidiMessage &) |
void | loadMidiProps (const juce::XmlElement *) |
void | saveMidiProps (juce::XmlElement &) |
void | sendMessageToInstances (const juce::MidiMessage &, MPESourceID) |
Protected Attributes | |
std::atomic< double > | adjustSecs { 0 } |
double | manualAdjustMs = 0 |
double | minimumLengthMs = 0 |
bool | overrideNoteVels = false |
bool | eventReceivedFromDevice = false |
juce::BigInteger | disallowedChannels |
MidiChannel | channelToUse |
int | programToUse = 0 |
int | bankToUse = 0 |
NoteFilterRange | noteFilterRange |
MPESourceID | midiSourceID = createUniqueMPESourceID() |
std::unique_ptr< NoteDispatcher > | noteDispatcher |
std::vector< double > | lastNoteOns |
juce::CriticalSection | noteLock |
bool | keysDown [128] |
bool | keysUp [128] |
uint8_t | keyDownVelocities [128] |
juce::SharedResourcePointer< MidiKeyChangeDispatcher > | midiKeyChangeDispatcher |
juce::CriticalSection | instanceLock |
juce::Array< MidiInputDeviceInstanceBase * > | instances |
std::unique_ptr< RetrospectiveMidiBuffer > | retrospectiveBuffer |
![]() | |
std::atomic< bool > | enabled { false } |
MonitorMode | monitorMode = MonitorMode::automatic |
MonitorMode | defaultMonitorMode = MonitorMode::automatic |
bool | retrospectiveRecordLock = false |
Additional Inherited Members | |
![]() | |
static void | setRetrospectiveLock (Engine &, const juce::Array< InputDeviceInstance * > &, bool lock) |
![]() | |
static void | initialise () |
static bool | isSelectableValid (const Selectable *) noexcept |
checks whether this object has been deleted. | |
|
strong |
tracktion::engine::MidiInputDevice::MidiInputDevice | ( | Engine & | , |
juce::String | type, | ||
juce::String | name, | ||
juce::String | deviceID | ||
) |
|
override |
|
pure virtual |
Implemented in tracktion::engine::PhysicalMidiInputDevice.
|
pure virtual |
Implemented in tracktion::engine::PhysicalMidiInputDevice.
|
overridevirtual |
Implements tracktion::engine::InputDevice.
Reimplemented in tracktion::engine::VirtualMidiInputDevice.
|
overridevirtual |
Reimplemented from tracktion::engine::InputDevice.
|
noexcept |
References channelToUse.
void tracktion::engine::MidiInputDevice::setChannelToUse | ( | int | ) |
|
noexcept |
References programToUse.
void tracktion::engine::MidiInputDevice::setProgramToUse | ( | int | ) |
void tracktion::engine::MidiInputDevice::setBankToUse | ( | int | ) |
int tracktion::engine::MidiInputDevice::getBankToUse | ( | ) | const |
References bankToUse.
void tracktion::engine::MidiInputDevice::setChannelAllowed | ( | int | midiChannel, |
bool | |||
) |
bool tracktion::engine::MidiInputDevice::isChannelAllowed | ( | int | midiChannel | ) | const |
References disallowedChannels.
void tracktion::engine::MidiInputDevice::setNoteFilterRange | ( | NoteFilterRange | ) |
NoteFilterRange tracktion::engine::MidiInputDevice::getNoteFilterRange | ( | ) | const |
References noteFilterRange.
void tracktion::engine::MidiInputDevice::setOverridingNoteVelocities | ( | bool | ) |
bool tracktion::engine::MidiInputDevice::isOverridingNoteVelocities | ( | ) | const |
References overrideNoteVels.
void tracktion::engine::MidiInputDevice::setManualAdjustmentMs | ( | double | ) |
double tracktion::engine::MidiInputDevice::getManualAdjustmentMs | ( | ) | const |
References manualAdjustMs.
void tracktion::engine::MidiInputDevice::setMinimumLengthMs | ( | double | ) |
double tracktion::engine::MidiInputDevice::getMinimumLengthMs | ( | ) | const |
References minimumLengthMs.
bool tracktion::engine::MidiInputDevice::isMPEDevice | ( | ) | const |
Returns true if the given device is an MPE device and so should always record incoming MIDI to Note Expression.
|
overridevirtual |
This is a bit of a hack but allows the time for MIDI devices to be set through the base class interface.
Implements tracktion::engine::InputDevice.
void tracktion::engine::MidiInputDevice::connectionStateChanged | ( | ) |
bool tracktion::engine::MidiInputDevice::handleIncomingMessage | ( | juce::MidiMessage & | ) |
Updates the timestamp of the message and handles sending it out to listeners.
false if the given message has been filtered out by channel or number.
void tracktion::engine::MidiInputDevice::addInstance | ( | MidiInputDeviceInstanceBase * | ) |
void tracktion::engine::MidiInputDevice::removeInstance | ( | MidiInputDeviceInstanceBase * | ) |
|
pure virtual |
Implemented in tracktion::engine::PhysicalMidiInputDevice, and tracktion::engine::VirtualMidiInputDevice.
Clip * tracktion::engine::MidiInputDevice::addMidiAsTransaction | ( | Edit & | , |
EditItemID | targetID, | ||
Clip * | takeClip, | ||
juce::MidiMessageSequence | , | ||
TimeRange | markedRange, | ||
MergeMode | , | ||
MidiChannel | |||
) |
|
override |
|
pure virtual |
RetrospectiveMidiBuffer * tracktion::engine::MidiInputDevice::getRetrospectiveMidiBuffer | ( | ) | const |
References retrospectiveBuffer.
|
overridevirtual |
Implements tracktion::engine::InputDevice.
double tracktion::engine::MidiInputDevice::getAdjustSecs | ( | ) | const |
References adjustSecs.
juce::Array< AudioTrack * > tracktion::engine::MidiInputDevice::getDestinationTracks | ( | ) |
MidiChannel tracktion::engine::MidiInputDevice::getMidiChannelFor | ( | int | rawChannelNumber | ) | const |
MPESourceID tracktion::engine::MidiInputDevice::getMPESourceID | ( | ) | const |
References midiSourceID.
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
|
protected |
|
protected |
|
protected |
|
protected |
bool tracktion::engine::MidiInputDevice::mergeRecordings = true |
bool tracktion::engine::MidiInputDevice::recordingEnabled = true |
bool tracktion::engine::MidiInputDevice::replaceExistingClips = false |
bool tracktion::engine::MidiInputDevice::recordToNoteAutomation = false |
QuantisationType tracktion::engine::MidiInputDevice::quantisation |
juce::MidiKeyboardState tracktion::engine::MidiInputDevice::keyboardState |
|
protected |
Referenced by getAdjustSecs().
|
protected |
Referenced by getManualAdjustmentMs().
|
protected |
Referenced by getMinimumLengthMs().
|
protected |
Referenced by isOverridingNoteVelocities().
|
protected |
|
protected |
Referenced by isChannelAllowed().
|
protected |
Referenced by getChannelToUse().
|
protected |
Referenced by getProgramToUse().
|
protected |
Referenced by getBankToUse().
|
protected |
Referenced by getNoteFilterRange().
|
protected |
Referenced by getMPESourceID().
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
Referenced by getRetrospectiveMidiBuffer().