Loading...
Searching...
No Matches
Inheritance diagram for vst3::vst_node_base:
vst3::vst_node< UseDouble >

Classes

struct  PluginHandle
 
struct  vst_control
 

Public Member Functions

std::size_t add_control (ossia::value_inlet *inlet, Steinberg::Vst::ParamID id, float v)
 
void set_control (std::size_t queue_idx, float value)
 
void setControls ()
 
void dispatchMidi (int64_t tick_start, int64_t samples)
 
void stashMidi ()
 
void dispatchMidi (ossia::midi_port &port, int index, int64_t tick_start, int64_t samples)
 
void readbackMidi (int64_t tick_start)
 
auto & preparePort (ossia::audio_port &port, int numChannels, std::size_t samples)
 
void setupTimeInfo (const ossia::token_request &tk, ossia::exec_state_facade st)
 

Public Attributes

PluginHandle fx
 
ossia::small_pod_vector< int, 2 > m_audioInputChannels {}
 
ossia::small_pod_vector< int, 2 > m_audioOutputChannels {}
 
int m_totalAudioIns {}
 
int m_totalAudioOuts {}
 
int m_totalEventIns {}
 
int m_totalEventOuts {}
 
ossia::small_vector< vst_control, 16 > controls
 
Steinberg::Vst::ProcessData m_vstData
 
ossia::small_vector< Steinberg::Vst::AudioBusBuffers, 1 > m_vstInput
 
ossia::small_vector< Steinberg::Vst::AudioBusBuffers, 1 > m_vstOutput
 
Steinberg::Vst::ProcessContext m_context
 
param_changes m_inputChanges
 
param_changes m_outputChanges
 
Steinberg::Vst::EventList m_inputEvents
 
Steinberg::Vst::EventList m_outputEvents
 
ossia::small_vector< std::pair< int, libremidi::ump >, 8 > m_deferred
 

Protected Member Functions

 vst_node_base (const Plugin &ptr)
 

Protected Attributes

ossia::hash_map< Steinberg::Vst::ParamID, std::size_t > queue_map
 
ossia::small_vector< std::size_t, 8 > m_midi_only_queues
 

Member Function Documentation

◆ stashMidi()

void vst3::vst_node_base::stashMidi ( )
inline

Keep this tick's events for the next block instead of dropping them. The span covers no whole sample, so every date in the tick maps to the sample the span starts on, which is offset 0 of the next block that does cover one: deferring is exact here, not an approximation.

Member Data Documentation

◆ m_deferred

ossia::small_vector<std::pair<int, libremidi::ump>, 8> vst3::vst_node_base::m_deferred

Events from ticks that covered no whole sample, with the bus they came in on, waiting for the next block that does cover one.

◆ m_midi_only_queues

ossia::small_vector<std::size_t, 8> vst3::vst_node_base::m_midi_only_queues
protected

Queues that exist only to carry MIDI controllers. Nothing else clears them - setControls() only touches the ones a control port backs - so dispatchMidi has to, or points accumulate block after block.


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