VJ Master 1.0
Real-time audio analysis and visualisation.
Loading...
Searching...
No Matches
UST_MIDIManager Class Reference

Manages MIDI device input and output events within ShaderTech's audio control system. More...

#include <ST_MIDIManager.h>

Public Member Functions

 UST_MIDIManager ()
void OnMIDIEventHandler (UMIDIDeviceController *HandledMIDIDeviceController, int32 Timestamp, EMIDIEventType EventType, int32 Channel, int32 ControlID, int32 Velocity, int32 RawEventType)
bool ManageMIDIDeviceController (FName NewDeviceName)
bool UnmanageMIDIDeviceController (FName NewDeviceName)
FMIDIRanges GetMIDIRanges () const
void SetControlChangeValue (FIntPoint NewRange)
void SetPitchBendValue (FIntPoint NewRange)
Interface Implementations
virtual void OnMIDINoteOn_Implementation (int32 Timestamp, int32 Channel, int32 Note, int32 Velocity) override
virtual void OnMIDINoteOff_Implementation (int32 Timestamp, int32 Channel, int32 Note, int32 Velocity) override
virtual void OnMIDIPitchBend_Implementation (FIntPoint PitchBendRange, int32 Timestamp, int32 Channel, int32 Pitch) override
virtual void OnMIDIAftertouch_Implementation (int32 Timestamp, int32 Channel, int32 Note, int32 Amount) override
virtual void OnMIDIControlChange_Implementation (FIntPoint ControlChangeRange, int32 Timestamp, int32 Channel, int32 Type, int32 Value) override
virtual void OnMIDIProgramChange_Implementation (int32 Timestamp, int32 Channel, int32 ControlID, int32 Velocity) override
virtual void OnMIDIChannelAftertouch_Implementation (int32 Timestamp, int32 Channel, int32 Amount) override
Input Handlers
void OnMIDINoteOnHandler (UMIDIDeviceInputController *MIDIDeviceController, int32 Timestamp, int32 Channel, int32 Note, int32 Velocity)
void OnMIDINoteOffHandler (UMIDIDeviceInputController *MIDIDeviceController, int32 Timestamp, int32 Channel, int32 Note, int32 Velocity)
void OnMIDIPitchBendHandler (UMIDIDeviceInputController *MIDIDeviceController, int32 Timestamp, int32 Channel, int32 Pitch)
void OnMIDIAftertouchHandler (UMIDIDeviceInputController *MIDIDeviceController, int32 Timestamp, int32 Channel, int32 Note, int32 Amount)
void OnMIDIControlChangeHandler (UMIDIDeviceInputController *MIDIDeviceController, int32 Timestamp, int32 Channel, int32 Type, int32 Value)
void OnMIDIProgramChangeHandler (UMIDIDeviceInputController *MIDIDeviceController, int32 Timestamp, int32 Channel, int32 ControlID, int32 Velocity)
void OnMIDIChannelAftertouchHandler (UMIDIDeviceInputController *MIDIDeviceController, int32 Timestamp, int32 Channel, int32 Amount)
void OnMIDIRawEventHandler (UMIDIDeviceInputController *MIDIDeviceController, int32 Timestamp, int32 Type, int32 Channel, int32 MessageData1, int32 MessageData2)
Output Senders
void SendMIDIEvent (EMIDIEventType EventType, int32 Channel, int32 data1, int32 data2)
void SendMIDINoteOn (int32 Channel, int32 Note, int32 Velocity)
void SendMIDINoteOff (int32 Channel, int32 Note, int32 Velocity)
void SendMIDIPitchBend (int32 Channel, int32 Pitch)
void SendMIDINoteAftertouch (int32 Channel, int32 Note, float Amount)
void SendMIDIControlChange (int32 Channel, int32 Type, int32 Value)
void SendMIDIProgramChange (int32 Channel, int32 ProgramNumber)
void SendMIDIChannelAftertouch (int32 Channel, float Amount)
Public Member Functions inherited from UST_AudioControlManagerBase
 UST_AudioControlManagerBase ()
 Constructor for UST_AudioControlManagerBase.
bool RegisterManagedItem (UObject *ManagedItem)
 Registers a managed item with the subsystem.
bool DeregisterManagedItem (UObject *ManagedItem)
 Deregisters a managed item from the subsystem.
bool RegisterController (FST_AudioController Controller)
 Registers an audio controller with the subsystem.
bool DeregisterController (FST_AudioController Controller)
 Deregisters an audio controller from the subsystem.
const TArray< UObject * > & GetManagedItems () const
 Gets the list of currently managed items.
const TArray< FST_AudioController > & GetRegisteredControllers () const
 Gets the list of currently registered controllers.
Public Member Functions inherited from IST_MIDIControlInterface
void OnMIDIItemRegistered ()
 Called when a MIDI item is registered with the system.
void OnMIDIItemDeregistered ()
 Called when a MIDI item is deregistered from the system.
void OnMIDINoteOn (int32 Timestamp, int32 Channel, int32 Note, int32 Velocity)
 Called when a MIDI Note On message is received.
void OnMIDINoteOff (int32 Timestamp, int32 Channel, int32 Note, int32 Velocity)
 Called when a MIDI Note Off message is received.
void OnMIDIPitchBend (FIntPoint PitchBendRange, int32 Timestamp, int32 Channel, int32 Pitch)
 Called when a MIDI Pitch Bend message is received.
void OnMIDIAftertouch (int32 Timestamp, int32 Channel, int32 Note, int32 Amount)
 Called when a MIDI Aftertouch (per-note) message is received.
void OnMIDIControlChange (FIntPoint ControlChangeRange, int32 Timestamp, int32 Channel, int32 Type, int32 Value)
 Called when a MIDI Control Change (CC) message is received.
void OnMIDIProgramChange (int32 Timestamp, int32 Channel, int32 ControlID, int32 Velocity)
 Called when a MIDI Program Change message is received.
void OnMIDIChannelAftertouch (int32 Timestamp, int32 Channel, int32 Amount)
 Called when a MIDI Channel Aftertouch message is received.

Static Public Member Functions

static UST_MIDIManagerGetInstance (const UObject *context)

Protected Member Functions

virtual void OnManagedItemRegistered (UObject *ManagedItem, bool bFirstManagedItemRegistered) override
virtual void OnManagedItemDeregistered (UObject *ManagedItem, bool bAllManagedItemDeregistered) override
virtual void OnControllerRegistered (FST_AudioController Controller, bool bFirstControllerRegistered) override
virtual void OnControllerDeregistered (FST_AudioController Controller, bool bAllControllersDeregistered) override
Protected Member Functions inherited from UST_AudioControlManagerBase
virtual void Initialize (FSubsystemCollectionBase &Collection) override
 Called when the subsystem is initialized.
virtual void Deinitialize () override
 Called before the subsystem is destroyed.

Protected Attributes

FMIDIRanges MIDIRanges

Detailed Description

Manages MIDI device input and output events within ShaderTech's audio control system.

Implements IST_MIDIControlInterface to handle real-time MIDI events, route them to appropriate handlers, and facilitate MIDI event sending. Designed to integrate with UMIDIDeviceInputController and UMIDIDeviceOutputController.

Author
Aaron Trotter

Constructor & Destructor Documentation

◆ UST_MIDIManager()

UST_MIDIManager::UST_MIDIManager ( )

Default constructor

Member Function Documentation

◆ GetInstance()

UST_MIDIManager * UST_MIDIManager::GetInstance ( const UObject * context)
static

Get a reference to the global MIDI manager instance from a given UObject context.

Parameters
contextA UObject used to retrieve the world context.
Returns
The global instance of UST_MIDIManager if available.

◆ GetMIDIRanges()

FMIDIRanges UST_MIDIManager::GetMIDIRanges ( ) const
inline
Returns
Current MIDI ranges used for filtering/control.

◆ ManageMIDIDeviceController()

bool UST_MIDIManager::ManageMIDIDeviceController ( FName NewDeviceName)

Add a MIDI device to the manager by name.

Parameters
NewDeviceNameThe name of the MIDI device.
Returns
true if the device was successfully managed.

◆ OnControllerDeregistered()

void UST_MIDIManager::OnControllerDeregistered ( FST_AudioController Controller,
bool bAllControllersDeregistered )
overrideprotectedvirtual

Triggered when a registered audio controller is removed. Used for cleanup and unregistering MIDI input/output mappings.

Parameters
ControllerThe controller being deregistered.
bAllControllersDeregisteredTrue if no other controllers remain.

Reimplemented from UST_AudioControlManagerBase.

◆ OnControllerRegistered()

void UST_MIDIManager::OnControllerRegistered ( FST_AudioController Controller,
bool bFirstControllerRegistered )
overrideprotectedvirtual

Triggered when a new audio controller is registered. Allows the MIDI manager to associate MIDI logic with specific audio controllers.

Parameters
ControllerThe controller being registered.
bFirstControllerRegisteredTrue if this is the first registered controller.

Reimplemented from UST_AudioControlManagerBase.

◆ OnManagedItemDeregistered()

void UST_MIDIManager::OnManagedItemDeregistered ( UObject * ManagedItem,
bool bAllManagedItemDeregistered )
overrideprotectedvirtual

Called when a previously registered object is removed from the MIDI manager. This ensures cleanup and detachment from event bindings.

Parameters
ManagedItemThe object being removed.
bAllManagedItemDeregisteredTrue if this was the last registered item.

Reimplemented from UST_AudioControlManagerBase.

◆ OnManagedItemRegistered()

void UST_MIDIManager::OnManagedItemRegistered ( UObject * ManagedItem,
bool bFirstManagedItemRegistered )
overrideprotectedvirtual

Called when a new object is registered with the MIDI manager. This could represent a connected device, UI element, or logic handler.

Parameters
ManagedItemThe object being registered.
bFirstManagedItemRegisteredTrue if this is the first object being registered.

Reimplemented from UST_AudioControlManagerBase.

◆ OnMIDIAftertouch_Implementation()

void UST_MIDIManager::OnMIDIAftertouch_Implementation ( int32 Timestamp,
int32 Channel,
int32 Note,
int32 Amount )
overridevirtual

Handle incoming MIDI Aftertouch event

◆ OnMIDIChannelAftertouch_Implementation()

void UST_MIDIManager::OnMIDIChannelAftertouch_Implementation ( int32 Timestamp,
int32 Channel,
int32 Amount )
overridevirtual

Handle incoming MIDI Channel Aftertouch event

◆ OnMIDIControlChange_Implementation()

void UST_MIDIManager::OnMIDIControlChange_Implementation ( FIntPoint ControlChangeRange,
int32 Timestamp,
int32 Channel,
int32 Type,
int32 Value )
overridevirtual

Handle incoming MIDI Control Change event

◆ OnMIDIEventHandler()

void UST_MIDIManager::OnMIDIEventHandler ( UMIDIDeviceController * HandledMIDIDeviceController,
int32 Timestamp,
EMIDIEventType EventType,
int32 Channel,
int32 ControlID,
int32 Velocity,
int32 RawEventType )

Handle generic MIDI event from device

◆ OnMIDINoteOff_Implementation()

void UST_MIDIManager::OnMIDINoteOff_Implementation ( int32 Timestamp,
int32 Channel,
int32 Note,
int32 Velocity )
overridevirtual

Handle incoming MIDI Note Off event

◆ OnMIDINoteOn_Implementation()

void UST_MIDIManager::OnMIDINoteOn_Implementation ( int32 Timestamp,
int32 Channel,
int32 Note,
int32 Velocity )
overridevirtual

Handle incoming MIDI Note On event

◆ OnMIDIPitchBend_Implementation()

void UST_MIDIManager::OnMIDIPitchBend_Implementation ( FIntPoint PitchBendRange,
int32 Timestamp,
int32 Channel,
int32 Pitch )
overridevirtual

Handle incoming MIDI Pitch Bend event

◆ OnMIDIProgramChange_Implementation()

void UST_MIDIManager::OnMIDIProgramChange_Implementation ( int32 Timestamp,
int32 Channel,
int32 ControlID,
int32 Velocity )
overridevirtual

Handle incoming MIDI Program Change event

◆ SetControlChangeValue()

void UST_MIDIManager::SetControlChangeValue ( FIntPoint NewRange)
inline

Sets the range used for interpreting incoming MIDI Control Change messages.

Parameters
NewRangeThe new control change range (Min, Max).

◆ SetPitchBendValue()

void UST_MIDIManager::SetPitchBendValue ( FIntPoint NewRange)
inline

Sets the range used for interpreting incoming MIDI Pitch Bend messages.

Parameters
NewRangeThe new pitch bend range (Min, Max).

◆ UnmanageMIDIDeviceController()

bool UST_MIDIManager::UnmanageMIDIDeviceController ( FName NewDeviceName)

Remove a MIDI device from the manager by name.

Parameters
NewDeviceNameThe name of the MIDI device.
Returns
true if the device was successfully unmanaged.

Member Data Documentation

◆ MIDIRanges

FMIDIRanges UST_MIDIManager::MIDIRanges
protected

Holds configuration for filtering or mapping incoming MIDI data. This includes value ranges for MIDI Pitch Bend and Control Change messages.


The documentation for this class was generated from the following files:
  • H:/Games/Unreal/Aaron/FunWithShaders/Plugins/ST_VJMaster/Source/ST_AudioControl/Public/MIDI/ST_MIDIManager.h
  • H:/Games/Unreal/Aaron/FunWithShaders/Plugins/ST_VJMaster/Source/ST_AudioControl/Private/MIDI/ST_MIDIManager.cpp