38 lines
1.0 KiB
C++
38 lines
1.0 KiB
C++
#pragma once
|
|
#include "Singleton.h"
|
|
#include "Thread/ThreadMessage.h"
|
|
|
|
class FSampler;
|
|
class FPluginHost;
|
|
|
|
DECLARE_LOG_CATEGORY_EXTERN(LogPluginHostList, Log, All);
|
|
|
|
DECLARE_MULTICAST_DELEGATE_OneParam(FOnPluginHostEvent, FPluginHost*);
|
|
|
|
class FPluginHostList : public TSingleton<FPluginHostList>, public TArray<FPluginHost*>
|
|
{
|
|
FRIEND_THREAD_MESSAGE(RegisterInstrument)
|
|
public:
|
|
virtual void Init() override;
|
|
virtual void Release() override;
|
|
|
|
virtual FName GetName() override { return "PluginHostList"; }
|
|
|
|
FPluginHost* TryLoadPlugin(const FString& Path);
|
|
FSampler* TryLoadSampler(const FString& SampleFilePath);
|
|
void RegisterInstrument(FPluginHost* Host);
|
|
void RemovePluginHost(FPluginHost* Host);
|
|
void RemoveInstrument(FPluginHost* Host);
|
|
|
|
void Process(int32 NumSamples);
|
|
void StopAllMidiOn();
|
|
|
|
FOnPluginHostEvent OnPluginHostCreated;
|
|
FOnPluginHostEvent OnInstrumentHostCreated;
|
|
FOnPluginHostEvent OnPluginHostRemoved;
|
|
|
|
TArray<FPluginHost*> Instruments;
|
|
private:
|
|
void RegisterInstrument_AudioThread(FPluginHost* Host);
|
|
};
|