tracktion-engine 3.0-10-g034fdde4aa5
Tracktion Engine — High level data model for audio applications

« « « Anklang Documentation
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
tracktion::engine::MidiInputDevice Class Referenceabstract
Inheritance diagram for tracktion::engine::MidiInputDevice:
tracktion::engine::InputDevice juce::MidiInputCallback juce::Timer tracktion::engine::Selectable tracktion::engine::HostedMidiInputDevice tracktion::engine::PhysicalMidiInputDevice tracktion::engine::VirtualMidiInputDevice

Classes

struct  MidiKeyChangeDispatcher
 Gets notified (lazily, not in real-time) when any MidiInputDevice's key's state changes. More...
 
class  NoteDispatcher
 Polls a set of targets to see if they should be stopped. More...
 
struct  NoteFilterRange
 

Public Types

enum class  MergeMode { always , never , optional }
 
- Public Types inherited from tracktion::engine::InputDevice
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...
 
- Public Types inherited from tracktion::engine::Selectable
using WeakRef = juce::WeakReference< Selectable >
 

Public Member Functions

 MidiInputDevice (Engine &, juce::String type, juce::String name, juce::String deviceID)
 
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
 
ClipaddMidiAsTransaction (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 &)=0
 
RetrospectiveMidiBuffergetRetrospectiveMidiBuffer () const
 
void updateRetrospectiveBufferLength (double length) override
 
double getAdjustSecs () const
 
juce::Array< AudioTrack * > getDestinationTracks ()
 
MidiChannel getMidiChannelFor (int rawChannelNumber) const
 
MidiMessageArray::MPESourceID getMPESourceID () const
 
- Public Member Functions inherited from tracktion::engine::InputDevice
 InputDevice (Engine &, juce::String type, juce::String name, juce::String deviceID)
 
const juce::StringgetName () const
 
const juce::StringgetType () 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 InputDeviceInstancecreateInstance (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
 
- Public Member Functions inherited from tracktion::engine::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 Member Functions inherited from juce::MidiInputCallback
virtual void handlePartialSysexMessage (MidiInput *source, const uint8 *messageData, int numBytesSoFar, double timestamp)
 

Public Attributes

bool mergeRecordings
 
bool recordingEnabled
 
bool replaceExistingClips
 
bool recordToNoteAutomation
 
QuantisationType quantisation
 
juce::MidiKeyboardState keyboardState
 
- Public Attributes inherited from tracktion::engine::InputDevice
Engineengine
 
LevelMeasurer levelMeasurer
 
- Public Attributes inherited from tracktion::engine::Selectable
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 &)
 

Protected Attributes

std::atomic< doubleadjustSecs
 
double manualAdjustMs
 
double minimumLengthMs
 
bool overrideNoteVels
 
bool eventReceivedFromDevice
 
juce::BigInteger disallowedChannels
 
MidiChannel channelToUse
 
int programToUse
 
int bankToUse
 
NoteFilterRange noteFilterRange
 
MidiMessageArray::MPESourceID midiSourceID
 
std::unique_ptr< NoteDispatchernoteDispatcher
 
std::vector< doublelastNoteOns
 
juce::CriticalSection noteLock
 
bool keysDown [128]
 
bool keysUp [128]
 
uint8_t keyDownVelocities [128]
 
juce::SharedResourcePointer< MidiKeyChangeDispatchermidiKeyChangeDispatcher
 
juce::CriticalSection instanceLock
 
juce::Array< MidiInputDeviceInstanceBase * > instances
 
std::unique_ptr< RetrospectiveMidiBufferretrospectiveBuffer
 
- Protected Attributes inherited from tracktion::engine::InputDevice
std::atomic< bool > enabled
 
MonitorMode monitorMode
 
MonitorMode defaultMonitorMode
 
bool retrospectiveRecordLock
 

Additional Inherited Members

- Static Public Member Functions inherited from tracktion::engine::InputDevice
static void setRetrospectiveLock (Engine &, const juce::Array< InputDeviceInstance * > &, bool lock)
 
- Static Public Member Functions inherited from tracktion::engine::Selectable
static void initialise ()
 
static bool isSelectableValid (const Selectable *) noexcept
 checks whether this object has been deleted.
 

Detailed Description

Definition at line 15 of file tracktion_MidiInputDevice.h.

Member Enumeration Documentation

◆ MergeMode

enum class tracktion::engine::MidiInputDevice::MergeMode
strong

Definition at line 91 of file tracktion_MidiInputDevice.h.

Constructor & Destructor Documentation

◆ MidiInputDevice()

tracktion::engine::MidiInputDevice::MidiInputDevice ( Engine e,
juce::String  type,
juce::String  name,
juce::String  deviceID 
)

Definition at line 333 of file tracktion_MidiInputDevice.cpp.

◆ ~MidiInputDevice()

tracktion::engine::MidiInputDevice::~MidiInputDevice ( )
override

Definition at line 346 of file tracktion_MidiInputDevice.cpp.

Member Function Documentation

◆ addInstance()

void tracktion::engine::MidiInputDevice::addInstance ( MidiInputDeviceInstanceBase i)

Definition at line 562 of file tracktion_MidiInputDevice.cpp.

◆ addMidiAsTransaction()

Clip * tracktion::engine::MidiInputDevice::addMidiAsTransaction ( Edit ed,
EditItemID  targetID,
Clip takeClip,
juce::MidiMessageSequence  ms,
TimeRange  markedRange,
MergeMode  merge,
MidiChannel  midiChannel 
)

Definition at line 692 of file tracktion_MidiInputDevice.cpp.

◆ connectionStateChanged()

void tracktion::engine::MidiInputDevice::connectionStateChanged ( )

Definition at line 565 of file tracktion_MidiInputDevice.cpp.

◆ getAdjustSecs()

double tracktion::engine::MidiInputDevice::getAdjustSecs ( ) const

Definition at line 104 of file tracktion_MidiInputDevice.h.

◆ getBankToUse()

int tracktion::engine::MidiInputDevice::getBankToUse ( ) const

Definition at line 37 of file tracktion_MidiInputDevice.h.

◆ getChannelToUse()

MidiChannel tracktion::engine::MidiInputDevice::getChannelToUse ( ) const
noexcept

Definition at line 30 of file tracktion_MidiInputDevice.h.

◆ getDestinationTracks()

juce::Array< AudioTrack * > tracktion::engine::MidiInputDevice::getDestinationTracks ( )

Definition at line 436 of file tracktion_MidiInputDevice.cpp.

◆ getManualAdjustmentMs()

double tracktion::engine::MidiInputDevice::getManualAdjustmentMs ( ) const

Definition at line 62 of file tracktion_MidiInputDevice.h.

◆ getMinimumLengthMs()

double tracktion::engine::MidiInputDevice::getMinimumLengthMs ( ) const

Definition at line 65 of file tracktion_MidiInputDevice.h.

◆ getMPESourceID()

MidiMessageArray::MPESourceID tracktion::engine::MidiInputDevice::getMPESourceID ( ) const

Definition at line 109 of file tracktion_MidiInputDevice.h.

◆ getNoteFilterRange()

NoteFilterRange tracktion::engine::MidiInputDevice::getNoteFilterRange ( ) const

Definition at line 56 of file tracktion_MidiInputDevice.h.

◆ getProgramToUse()

int tracktion::engine::MidiInputDevice::getProgramToUse ( ) const
noexcept

Definition at line 33 of file tracktion_MidiInputDevice.h.

◆ getRetrospectiveMidiBuffer()

RetrospectiveMidiBuffer * tracktion::engine::MidiInputDevice::getRetrospectiveMidiBuffer ( ) const

Definition at line 102 of file tracktion_MidiInputDevice.h.

◆ handleIncomingMessage()

bool tracktion::engine::MidiInputDevice::handleIncomingMessage ( juce::MidiMessage m)

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.

Definition at line 1581 of file tracktion_MidiInputDevice.cpp.

◆ handleIncomingMidiMessage()

void tracktion::engine::MidiInputDevice::handleIncomingMidiMessage ( juce::MidiInput ,
const juce::MidiMessage m 
)
overridevirtual

Implements juce::MidiInputCallback.

Definition at line 548 of file tracktion_MidiInputDevice.cpp.

◆ handleNoteOff()

void tracktion::engine::MidiInputDevice::handleNoteOff ( juce::MidiKeyboardState ,
int  midiChannel,
int  midiNoteNumber,
float  velocity 
)
overrideprotected

Definition at line 540 of file tracktion_MidiInputDevice.cpp.

◆ handleNoteOn()

void tracktion::engine::MidiInputDevice::handleNoteOn ( juce::MidiKeyboardState ,
int  midiChannel,
int  midiNoteNumber,
float  velocity 
)
overrideprotected

Definition at line 532 of file tracktion_MidiInputDevice.cpp.

◆ isChannelAllowed()

bool tracktion::engine::MidiInputDevice::isChannelAllowed ( int  midiChannel) const

Definition at line 40 of file tracktion_MidiInputDevice.h.

◆ isMidi()

bool tracktion::engine::MidiInputDevice::isMidi ( ) const
overridevirtual

Reimplemented from tracktion::engine::InputDevice.

Definition at line 28 of file tracktion_MidiInputDevice.h.

◆ isMPEDevice()

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.

Definition at line 526 of file tracktion_MidiInputDevice.cpp.

◆ isOverridingNoteVelocities()

bool tracktion::engine::MidiInputDevice::isOverridingNoteVelocities ( ) const

Definition at line 59 of file tracktion_MidiInputDevice.h.

◆ loadMidiProps()

void tracktion::engine::MidiInputDevice::loadMidiProps ( const juce::XmlElement n)
protected

Definition at line 362 of file tracktion_MidiInputDevice.cpp.

◆ masterTimeUpdate()

void tracktion::engine::MidiInputDevice::masterTimeUpdate ( double  time)
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.

Definition at line 1609 of file tracktion_MidiInputDevice.cpp.

◆ removeInstance()

void tracktion::engine::MidiInputDevice::removeInstance ( MidiInputDeviceInstanceBase i)

Definition at line 563 of file tracktion_MidiInputDevice.cpp.

◆ saveMidiProps()

void tracktion::engine::MidiInputDevice::saveMidiProps ( juce::XmlElement n)
protected

Definition at line 410 of file tracktion_MidiInputDevice.cpp.

◆ sendMessageToInstances()

void tracktion::engine::MidiInputDevice::sendMessageToInstances ( const juce::MidiMessage message)
protected

Definition at line 1619 of file tracktion_MidiInputDevice.cpp.

◆ sendNoteOnToMidiKeyListeners()

void tracktion::engine::MidiInputDevice::sendNoteOnToMidiKeyListeners ( juce::MidiMessage message)
protected

Definition at line 587 of file tracktion_MidiInputDevice.cpp.

◆ setBankToUse()

void tracktion::engine::MidiInputDevice::setBankToUse ( int  bank)

Definition at line 484 of file tracktion_MidiInputDevice.cpp.

◆ setChannelAllowed()

void tracktion::engine::MidiInputDevice::setChannelAllowed ( int  midiChannel,
bool  allowed 
)

Definition at line 445 of file tracktion_MidiInputDevice.cpp.

◆ setChannelToUse()

void tracktion::engine::MidiInputDevice::setChannelToUse ( int  newChan)

Definition at line 466 of file tracktion_MidiInputDevice.cpp.

◆ setEnabled()

void tracktion::engine::MidiInputDevice::setEnabled ( bool  b)
overridevirtual

Implements tracktion::engine::InputDevice.

Definition at line 352 of file tracktion_MidiInputDevice.cpp.

◆ setManualAdjustmentMs()

void tracktion::engine::MidiInputDevice::setManualAdjustmentMs ( double  ms)

Definition at line 499 of file tracktion_MidiInputDevice.cpp.

◆ setMinimumLengthMs()

void tracktion::engine::MidiInputDevice::setMinimumLengthMs ( double  ms)

Definition at line 509 of file tracktion_MidiInputDevice.cpp.

◆ setNoteFilterRange()

void tracktion::engine::MidiInputDevice::setNoteFilterRange ( NoteFilterRange  newRange)

Definition at line 455 of file tracktion_MidiInputDevice.cpp.

◆ setOverridingNoteVelocities()

void tracktion::engine::MidiInputDevice::setOverridingNoteVelocities ( bool  b)

Definition at line 489 of file tracktion_MidiInputDevice.cpp.

◆ setProgramToUse()

void tracktion::engine::MidiInputDevice::setProgramToUse ( int  prog)

Definition at line 478 of file tracktion_MidiInputDevice.cpp.

◆ timerCallback()

void tracktion::engine::MidiInputDevice::timerCallback ( )
overrideprotectedvirtual

Implements juce::Timer.

Definition at line 619 of file tracktion_MidiInputDevice.cpp.

◆ updateRetrospectiveBufferLength()

void tracktion::engine::MidiInputDevice::updateRetrospectiveBufferLength ( double  length)
overridevirtual

Implements tracktion::engine::InputDevice.

Definition at line 555 of file tracktion_MidiInputDevice.cpp.

Member Data Documentation

◆ adjustSecs

std::atomic<double> tracktion::engine::MidiInputDevice::adjustSecs
protected

Definition at line 134 of file tracktion_MidiInputDevice.h.

◆ bankToUse

int tracktion::engine::MidiInputDevice::bankToUse
protected

Definition at line 141 of file tracktion_MidiInputDevice.h.

◆ channelToUse

MidiChannel tracktion::engine::MidiInputDevice::channelToUse
protected

Definition at line 139 of file tracktion_MidiInputDevice.h.

◆ disallowedChannels

juce::BigInteger tracktion::engine::MidiInputDevice::disallowedChannels
protected

Definition at line 138 of file tracktion_MidiInputDevice.h.

◆ eventReceivedFromDevice

bool tracktion::engine::MidiInputDevice::eventReceivedFromDevice
protected

Definition at line 137 of file tracktion_MidiInputDevice.h.

◆ instanceLock

juce::CriticalSection tracktion::engine::MidiInputDevice::instanceLock
protected

Definition at line 154 of file tracktion_MidiInputDevice.h.

◆ instances

juce::Array<MidiInputDeviceInstanceBase*> tracktion::engine::MidiInputDevice::instances
protected

Definition at line 155 of file tracktion_MidiInputDevice.h.

◆ keyboardState

juce::MidiKeyboardState tracktion::engine::MidiInputDevice::keyboardState

Definition at line 97 of file tracktion_MidiInputDevice.h.

◆ keyDownVelocities

uint8_t tracktion::engine::MidiInputDevice::keyDownVelocities[128]
protected

Definition at line 151 of file tracktion_MidiInputDevice.h.

◆ keysDown

bool tracktion::engine::MidiInputDevice::keysDown[128]
protected

Definition at line 150 of file tracktion_MidiInputDevice.h.

◆ keysUp

bool tracktion::engine::MidiInputDevice::keysUp[128]
protected

Definition at line 150 of file tracktion_MidiInputDevice.h.

◆ lastNoteOns

std::vector<double> tracktion::engine::MidiInputDevice::lastNoteOns
protected

Definition at line 147 of file tracktion_MidiInputDevice.h.

◆ manualAdjustMs

double tracktion::engine::MidiInputDevice::manualAdjustMs
protected

Definition at line 135 of file tracktion_MidiInputDevice.h.

◆ mergeRecordings

bool tracktion::engine::MidiInputDevice::mergeRecordings

Definition at line 85 of file tracktion_MidiInputDevice.h.

◆ midiKeyChangeDispatcher

juce::SharedResourcePointer<MidiKeyChangeDispatcher> tracktion::engine::MidiInputDevice::midiKeyChangeDispatcher
protected

Definition at line 152 of file tracktion_MidiInputDevice.h.

◆ midiSourceID

MidiMessageArray::MPESourceID tracktion::engine::MidiInputDevice::midiSourceID
protected

Definition at line 144 of file tracktion_MidiInputDevice.h.

◆ minimumLengthMs

double tracktion::engine::MidiInputDevice::minimumLengthMs
protected

Definition at line 136 of file tracktion_MidiInputDevice.h.

◆ noteDispatcher

std::unique_ptr<NoteDispatcher> tracktion::engine::MidiInputDevice::noteDispatcher
protected

Definition at line 146 of file tracktion_MidiInputDevice.h.

◆ noteFilterRange

NoteFilterRange tracktion::engine::MidiInputDevice::noteFilterRange
protected

Definition at line 142 of file tracktion_MidiInputDevice.h.

◆ noteLock

juce::CriticalSection tracktion::engine::MidiInputDevice::noteLock
protected

Definition at line 149 of file tracktion_MidiInputDevice.h.

◆ overrideNoteVels

bool tracktion::engine::MidiInputDevice::overrideNoteVels
protected

Definition at line 137 of file tracktion_MidiInputDevice.h.

◆ programToUse

int tracktion::engine::MidiInputDevice::programToUse
protected

Definition at line 140 of file tracktion_MidiInputDevice.h.

◆ quantisation

QuantisationType tracktion::engine::MidiInputDevice::quantisation

Definition at line 89 of file tracktion_MidiInputDevice.h.

◆ recordingEnabled

bool tracktion::engine::MidiInputDevice::recordingEnabled

Definition at line 86 of file tracktion_MidiInputDevice.h.

◆ recordToNoteAutomation

bool tracktion::engine::MidiInputDevice::recordToNoteAutomation

Definition at line 88 of file tracktion_MidiInputDevice.h.

◆ replaceExistingClips

bool tracktion::engine::MidiInputDevice::replaceExistingClips

Definition at line 87 of file tracktion_MidiInputDevice.h.

◆ retrospectiveBuffer

std::unique_ptr<RetrospectiveMidiBuffer> tracktion::engine::MidiInputDevice::retrospectiveBuffer
protected

Definition at line 156 of file tracktion_MidiInputDevice.h.


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