54 lines
1.5 KiB
C++
54 lines
1.5 KiB
C++
#pragma once
|
|
#include "PluginHost.h"
|
|
#include "Midi/VSTEventList.h"
|
|
#include "pluginterfaces/vst2.x/aeffect.h"
|
|
#include "pluginterfaces/vst2.x/aeffectx.h"
|
|
|
|
DECLARE_LOG_CATEGORY_EXTERN(LogVST2PluginHost, Log, All);
|
|
|
|
namespace VST2
|
|
{
|
|
inline VstTimeInfo VSTTimeInfo;
|
|
}
|
|
|
|
|
|
class FVST2PluginHandle
|
|
{
|
|
public:
|
|
~FVST2PluginHandle();
|
|
void* Handle = nullptr;
|
|
FString Path;
|
|
};
|
|
|
|
class FVST2PluginHost : public FPluginHost
|
|
{
|
|
public:
|
|
FVST2PluginHost();
|
|
~FVST2PluginHost();
|
|
virtual bool Load(const FString& Path) override;
|
|
virtual void SetEnabled(bool bEnabled) override;
|
|
virtual bool IsEnabled() override;
|
|
virtual void UpdateBlockSize(int32 BlockSize) override;
|
|
virtual void UpdateSampleRate(float SampleRate) override;
|
|
virtual void Process(int32 NumSamples) override;
|
|
virtual int32 GetInputChannelNum() override { return Effect->numInputs; }
|
|
virtual int32 GetOutputChannelNum() override { return Effect->numOutputs; }
|
|
virtual void UpdateChannelNodeName() override;
|
|
|
|
virtual void OpenEditor(void* WindowHandle) override;
|
|
virtual void CloseEditor() override;
|
|
virtual void IdleEditor() override;
|
|
virtual bool HasEditor() override;
|
|
virtual FVector2D GetEditorSize() override;
|
|
private:
|
|
VstIntPtr Dispatch(const VstInt32 Opcode, const VstInt32 Index = 0, const VstIntPtr Value = 0, void* Ptr = nullptr, const float Opt = 0.0f)
|
|
{
|
|
return Effect->dispatcher(Effect, Opcode, Index, Value, Ptr, Opt);
|
|
}
|
|
|
|
TSharedPtr<FVST2PluginHandle> Handle;
|
|
AEffect* Effect;
|
|
bool EnableState = false;
|
|
VSTMidiEventList MidiEventsToSend;
|
|
};
|