Jamba  3.0.2
pongasoft::VST::RT::RTProcessor Class Referenceabstract

#include <RTProcessor.h>

Inherits AudioEffect, and pongasoft::VST::IMessageProducer.

Classes

class  GUITimerCallback
 

Public Member Functions

IPtr< IMessage > allocateMessage () override
 
tresult PLUGIN_API canProcessSampleSize (int32 symbolicSampleSize) override
 
virtual RTStategetRTState ()=0
 
tresult PLUGIN_API getState (IBStream *state) override
 
tresult PLUGIN_API initialize (FUnknown *context) override
 
tresult PLUGIN_API notify (IMessage *message) SMTG_OVERRIDE
 
tresult PLUGIN_API process (ProcessData &data) override
 
 RTProcessor (Steinberg::FUID const &iControllerUID)
 
tresult sendMessage (IPtr< IMessage > iMessage) override
 
tresult PLUGIN_API setActive (TBool state) override
 
tresult PLUGIN_API setState (IBStream *state) override
 
 ~RTProcessor () override=default
 
- Public Member Functions inherited from pongasoft::VST::IMessageProducer
virtual ~IMessageProducer ()=default
 

Protected Member Functions

virtual bool canProcess32Bits () const
 
virtual bool canProcess64Bits () const
 
void enableGUITimer (uint32 iUIFrameRateMs)
 
virtual void onGUITimer ()
 
virtual tresult processInputs (ProcessData &data)
 
virtual tresult processInputs32Bits (ProcessData &data)
 
virtual tresult processInputs64Bits (ProcessData &data)
 
virtual void sendPendingMessages ()
 

Protected Attributes

uint32 fGUIMessageTimerIntervalMs
 

Private Types

using RTProcessorCallback = void(RTProcessor::*)()
 

Private Attributes

bool fActive
 
std::unique_ptr< AutoReleaseTimerfGUIMessageTimer
 
GUITimerCallback fGUIMessageTimerCallback {this, &RTProcessor::sendPendingMessages}
 
std::unique_ptr< AutoReleaseTimerfGUITimer
 
GUITimerCallback fGUITimerCallback {this, &RTProcessor::onGUITimer}
 
uint32 fGUITimerIntervalMs
 

Detailed Description

Base class from which the actual processor inherits from. Handles most of the "framework" logic, (state loading/saving in a thread safe manner, setting up GUI thread if messaging to the GUI is required, etc...) so that the actual processor code deals mostly with business logic.

Member Typedef Documentation

◆ RTProcessorCallback

using pongasoft::VST::RT::RTProcessor::RTProcessorCallback = void (RTProcessor::*)()
private

Constructor & Destructor Documentation

◆ RTProcessor()

pongasoft::VST::RT::RTProcessor::RTProcessor ( Steinberg::FUID const &  iControllerUID)
explicit

◆ ~RTProcessor()

pongasoft::VST::RT::RTProcessor::~RTProcessor ( )
overridedefault

Member Function Documentation

◆ allocateMessage()

IPtr< IMessage > pongasoft::VST::RT::RTProcessor::allocateMessage ( )
overridevirtual

Allocates a message instance

Implements pongasoft::VST::IMessageProducer.

◆ canProcess32Bits()

virtual bool pongasoft::VST::RT::RTProcessor::canProcess32Bits ( ) const
inlineprotectedvirtual
Returns
true if you can handle 32 bits (true buy default)

◆ canProcess64Bits()

virtual bool pongasoft::VST::RT::RTProcessor::canProcess64Bits ( ) const
inlineprotectedvirtual
Returns
true if you can handle 64 bits (true buy default)

◆ canProcessSampleSize()

tresult pongasoft::VST::RT::RTProcessor::canProcessSampleSize ( int32  symbolicSampleSize)
override

Asks if a given sample size is supported see SymbolicSampleSizes.

◆ enableGUITimer()

void pongasoft::VST::RT::RTProcessor::enableGUITimer ( uint32  iUIFrameRateMs)
protected

Call this method to enable the GUI timer (onGUITimer will be called at the specified frequency) Should be called in the constructor or setupProcessing method as it will take effect in setActive

◆ getRTState()

virtual RTState* pongasoft::VST::RT::RTProcessor::getRTState ( )
pure virtual

Subclasses must implement this method to return the state

◆ getState()

tresult pongasoft::VST::RT::RTProcessor::getState ( IBStream *  state)
override

Called to save the state (before saving a preset or project)

◆ initialize()

tresult pongasoft::VST::RT::RTProcessor::initialize ( FUnknown *  context)
override

Called at first after constructor (setup input/output)

◆ notify()

tresult pongasoft::VST::RT::RTProcessor::notify ( IMessage *  message)

Called to handle a message (coming from GUI)

◆ onGUITimer()

virtual void pongasoft::VST::RT::RTProcessor::onGUITimer ( )
inlineprotectedvirtual

Subclass will implement this method to respond to the GUI timer firing /////// WARNING !!!!! WARNING !!!!! WARNING !!!!! WARNING !!!!! WARNING !!!!! WARNING !!!!! ////// /////// this method WILL be called from the UI thread so do not modify the processor state ////// /////// WARNING !!!!! WARNING !!!!! WARNING !!!!! WARNING !!!!! WARNING !!!!! WARNING !!!!! //////

◆ process()

tresult pongasoft::VST::RT::RTProcessor::process ( ProcessData &  data)
override

Here we go...the process call

◆ processInputs()

tresult pongasoft::VST::RT::RTProcessor::processInputs ( ProcessData &  data)
protectedvirtual

Processes inputs (step 2 always called after processing the parameters) Delegate to processInputs32Bits or processInputs64Bits accordingly

◆ processInputs32Bits()

virtual tresult pongasoft::VST::RT::RTProcessor::processInputs32Bits ( ProcessData &  data)
inlineprotectedvirtual

Processes inputs (step 2 always called after processing the parameters) for 32 bits

◆ processInputs64Bits()

virtual tresult pongasoft::VST::RT::RTProcessor::processInputs64Bits ( ProcessData &  data)
inlineprotectedvirtual

Processes inputs (step 2 always called after processing the parameters) for 64 bits

◆ sendMessage()

tresult pongasoft::VST::RT::RTProcessor::sendMessage ( IPtr< IMessage >  iMessage)
overridevirtual

Sends the given message to the peer.

Implements pongasoft::VST::IMessageProducer.

◆ sendPendingMessages()

virtual void pongasoft::VST::RT::RTProcessor::sendPendingMessages ( )
inlineprotectedvirtual

Called (from a GUI timer) to send the messages to the GUI (JmbParam for the moment)

◆ setActive()

tresult pongasoft::VST::RT::RTProcessor::setActive ( TBool  state)
override

Switch the Plug-in on/off

◆ setState()

tresult pongasoft::VST::RT::RTProcessor::setState ( IBStream *  state)
override

Restore the state (ex: after loading preset or project)

Member Data Documentation

◆ fActive

bool pongasoft::VST::RT::RTProcessor::fActive
private

◆ fGUIMessageTimer

std::unique_ptr<AutoReleaseTimer> pongasoft::VST::RT::RTProcessor::fGUIMessageTimer
private

◆ fGUIMessageTimerCallback

GUITimerCallback pongasoft::VST::RT::RTProcessor::fGUIMessageTimerCallback {this, &RTProcessor::sendPendingMessages}
private

◆ fGUIMessageTimerIntervalMs

uint32 pongasoft::VST::RT::RTProcessor::fGUIMessageTimerIntervalMs
protected

◆ fGUITimer

std::unique_ptr<AutoReleaseTimer> pongasoft::VST::RT::RTProcessor::fGUITimer
private

◆ fGUITimerCallback

GUITimerCallback pongasoft::VST::RT::RTProcessor::fGUITimerCallback {this, &RTProcessor::onGUITimer}
private

◆ fGUITimerIntervalMs

uint32 pongasoft::VST::RT::RTProcessor::fGUITimerIntervalMs
private

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