Navigation
API > API/Plugins > API/Plugins/HarmonixMetasound
Handles updating low-resolution play cursors associated with a MIDI clock. This now includes both FMidiClock and UMusicClockComponents. MidiClock: Because FMidiClock instances do not have their lifecycle managed by the garbage collector, we need a way to tick them on the game thread while avoiding races. This gives us a way to register clocks to be ticked from within their constructors/destructor, and provides no user-facing API. MusicClockComponent: Because the "current music time" is typically of interest to many game systems, and some of those systems run in parallel in different threads (e.g. TickComponent functions and animation jobs), it is important that the current music time is updated at the beginning of the game frame, and then that same time can be used for all systems for the frame. This subsystem solves for those problems.
| Name | UMidiClockUpdateSubsystem |
| Type | class |
| Header File | /Engine/Plugins/Runtime/Harmonix/Source/HarmonixMetasound/Public/HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h |
| Include Path | #include "HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h" |
Syntax
UCLASS (MinimalAPI)
class UMidiClockUpdateSubsystem : public UEngineSubsystem
Inheritance Hierarchy
- UObjectBase → UObjectBaseUtility → UObject → USubsystem → UDynamicSubsystem → UEngineSubsystem → UMidiClockUpdateSubsystem
Typedefs
| Name | Type | Remarks | Include Path |
|---|---|---|---|
| FClockHistoryPtr | TSharedPtr< HarmonixMetasound::Analysis::FMidiClockSongPositionHistory > | HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h | |
| FOnMusicClockComponentsUpdated | TMulticastDelegate_OneParam< void, const TArray< TWeakObjectPtr< UMusicClockComponent > > & > | HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h | |
| FOnTrackMusicClockComponentChange | TMulticastDelegate_OneParam< void, UMusicClockComponent * > | HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h |
Constants
| Name | Type | Remarks | Include Path |
|---|---|---|---|
| ClockHistories | TMap< uint32, TWeakPtr< HarmonixMetasound::Analysis::FMidiClockSongPositionHistory > > | HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h | |
| ClockHistoryMapLocker | FCriticalSection | HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h | |
| UpdateTimeSeconds | double | HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h |
Variables
Protected
| Name | Type | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|---|
| EngineSamplingInputDelegate | FDelegateHandle | HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h | ||
| OnMusicClockComponentsUpdatedDelegate | FOnMusicClockComponentsUpdated | HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h | ||
| OnStopTrackingMusicClockComponentDelegate | FOnTrackMusicClockComponentChange | HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h | ||
| OnTrackMusicClockComponentDelegate | FOnTrackMusicClockComponentChange | HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h | ||
| TrackedMidiClocksMutex | FCriticalSection | HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h | ||
| TrackedMusicClockComponents | TArray< TWeakObjectPtr< UMusicClockComponent > > | HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h | ||
| TrackedMusicClocks | TArray< TWeakObjectPtr< UMusicClock > > | Music clocks tracked for per-frame UpdateForGameFrame() calls. | HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h | |
| TrackedMusicSources | TArray< TWeakObjectPtr< UObject > > | Music sources tracked for per-frame Update() calls. | HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h |
Functions
Public
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
const TArray< TWeakObjectPtr< UMusicClockComponent > > & GetTrackedMusicClockComponents() |
HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h | ||
FOnMusicClockComponentsUpdated & OnMusicClockComponentsUpdated() |
HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h | ||
FOnTrackMusicClockComponentChange & OnStopTrackingMusicClockComponent() |
HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h | ||
FOnTrackMusicClockComponentChange & OnTrackMusicClockComponent() |
HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h | ||
void TickForTesting() |
Declare a "tick" method that can be used during automated testing so that the test code doesn't need knowledge of how the low-res clocks are being ticked... | HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h |
Public Virtual
Overridden from USubsystem
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
virtual void Deinitialize() |
HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h | ||
virtual void Initialize
(
FSubsystemCollectionBase& Collection |
Begin USubsystem. | HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h |
Static
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
static FClockHistoryPtr GetOrCreateClockHistory
(
const Metasound::Frontend::FAnalyzerAddress& ForAddress |
HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h | ||
static double GetUpdateTimeSeconds() |
HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h | ||
static uint32 MakeMidiSongPosAnalyzerAddressHash
(
const Metasound::Frontend::FAnalyzerAddress& ForAddress |
HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h | ||
static void StopTrackingMusicClock
(
UMusicClock* Clock |
HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h | ||
static void StopTrackingMusicClockComponent
(
UMusicClockComponent* Clock |
HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h | ||
static void StopTrackingMusicSource
(
UObject* Source |
HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h | ||
static void TrackMusicClock
(
UMusicClock* Clock |
Track a music clock for per-frame updates. | HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h | |
static void TrackMusicClockComponent
(
UMusicClockComponent* Clock |
HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h | ||
static void TrackMusicSource
(
UObject* Source |
Track a music source for per-frame updates. | HarmonixMetasound/Subsystems/MidiClockUpdateSubsystem.h |