117 virtual bool prepare(
double sample_rate,
int max_block_size) = 0;
132 int num_samples) = 0;
167 [[deprecated(
"Override create_hosted_editor() instead — see pulp::view::EditorAttachment "
168 "for typed hosted editor attachment.")]]
170 [[deprecated(
"Override destroy_hosted_editor() instead — see pulp::view::EditorAttachment "
171 "for typed hosted editor attachment.")]]
208 virtual std::unique_ptr<HostedEditor>
211#if defined(__GNUC__) || defined(__clang__)
212# pragma GCC diagnostic push
213# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
216#if defined(__GNUC__) || defined(__clang__)
217# pragma GCC diagnostic pop
219 if (!h)
return nullptr;
220 auto ed = std::make_unique<HostedEditor>();
221 ed->native_handle = h;
227#if defined(__GNUC__) || defined(__clang__)
228# pragma GCC diagnostic push
229# pragma GCC diagnostic ignored "-Wdeprecated-declarations"
232#if defined(__GNUC__) || defined(__clang__)
233# pragma GCC diagnostic pop
277 auto* output =
audio.main_output();
280 auto* input =
audio.main_input();
281 process(output ? *output : empty_output, input ? *input : empty_input, midi_in, midi_out,
282 param_events, num_samples);
316 process(
audio, midi_in, midi_out, param_events, num_samples);
Non-owning view over multi-channel audio sample data.
Definition buffer.hpp:30
Definition native_handle_visitor.hpp:116
virtual void visit_unknown(const PluginSlot &, NativeHandleFormat)
Called when the slot represents a format the visitor did not override, or when the slot itself does n...
Definition native_handle_visitor.hpp:123
Definition plugin_slot.hpp:94
virtual bool is_loaded() const =0
virtual BypassSurface bypass_surface() const
Where this plugin keeps its own bypass control.
Definition plugin_slot.hpp:361
virtual void begin_process() noexcept
Definition plugin_slot.hpp:398
ProcessStatus
Definition plugin_slot.hpp:101
@ failed
Definition plugin_slot.hpp:101
@ ok
Definition plugin_slot.hpp:101
virtual bool set_hosted_editor_size(uint32_t &, uint32_t &)
Host-initiated resize: ask the plugin to adopt (width, height).
Definition plugin_slot.hpp:354
virtual void destroy_hosted_editor(std::unique_ptr< HostedEditor > ed)
Tear down a hosted editor. Default routes to destroy_editor_view().
Definition plugin_slot.hpp:226
virtual void process(format::ProcessBuffers &audio, const midi::MidiBuffer &midi_in, midi::MidiBuffer &midi_out, const ParameterEventQueue ¶m_events, int num_samples)
Definition plugin_slot.hpp:272
virtual std::vector< uint8_t > save_state() const =0
virtual bool wants_transport() const
Definition plugin_slot.hpp:302
static std::unique_ptr< PluginSlot > load(const PluginInfo &info)
virtual void process(audio::BufferView< float > &output, const audio::BufferView< const float > &input, const midi::MidiBuffer &midi_in, midi::MidiBuffer &midi_out, const ParameterEventQueue ¶m_events, int num_samples)=0
virtual int tail_samples() const =0
virtual float get_parameter(uint32_t id) const =0
std::function< bool(uint32_t width, uint32_t height)> EditorResizeRequestHandler
Called when the plugin asks the host to resize its editor.
Definition plugin_slot.hpp:343
virtual void * create_editor_view()=0
virtual void set_bypass(bool bypassed)=0
static PluginLoadResult load_exact(const PluginSelection &selection)
Explicit strict CLAP selection. Legacy load() keeps best-effort behavior.
virtual int latency_samples() const =0
virtual bool restore_state(const std::vector< uint8_t > &data)=0
virtual std::optional< PluginResolvedIdentity > resolved_identity() const
Detached strict-load receipt; unavailable for legacy or unsupported loaders.
Definition plugin_slot.hpp:408
virtual void set_preferred_channel_layout(int, int)
Definition plugin_slot.hpp:374
virtual void set_editor_resize_request_handler(EditorResizeRequestHandler)
Install the handler invoked on a plugin-initiated resize request.
Definition plugin_slot.hpp:348
virtual void destroy_editor_view()=0
virtual void accept(NativeHandleVisitor &visitor) const
Definition plugin_slot.hpp:260
virtual std::string retained_history_key() const
Optional realtime DSP-history carry for a prepared replacement.
Definition plugin_slot.hpp:381
virtual std::vector< uint8_t > serialize_dsp_state() const
Definition plugin_slot.hpp:384
virtual const PluginInfo & info() const =0
virtual std::unique_ptr< HostedEditor > create_hosted_editor(void *)
Create the hosted editor.
Definition plugin_slot.hpp:209
virtual bool prepare(double sample_rate, int max_block_size)=0
virtual void set_parameter(uint32_t id, float normalized_value)=0
virtual LatencyQuery latency_query() const
Whether latency_samples() is a fact from the plugin, or a placeholder.
Definition plugin_slot.hpp:331
LatencyQuery
Whether latency_samples() is a fact from the plugin, or a placeholder.
Definition plugin_slot.hpp:244
@ Available
The value is the plugin's own report. Zero means zero.
Definition plugin_slot.hpp:245
@ Unsupported
This backend cannot ask. The value is meaningless.
Definition plugin_slot.hpp:246
@ QueryFailed
The backend asked and the plugin errored.
Definition plugin_slot.hpp:247
virtual bool is_bypassed() const =0
virtual void process(format::ProcessBuffers &audio, const midi::MidiBuffer &midi_in, midi::MidiBuffer &midi_out, const ParameterEventQueue ¶m_events, int num_samples, const format::ProcessContext &)
Definition plugin_slot.hpp:310
virtual bool has_editor() const =0
virtual ProcessStatus process_status() const noexcept
Definition plugin_slot.hpp:403
virtual bool restore_dsp_state(const std::vector< uint8_t > &)
Definition plugin_slot.hpp:387
virtual std::vector< HostParamInfo > parameters() const =0
virtual ~PluginSlot()=default
virtual bool reseed_dsp_state(std::uint64_t)
Definition plugin_slot.hpp:390
Collection of timestamped MIDI events within a single audio buffer period.
Definition buffer.hpp:31
Definition analyzer_provider.hpp:12
Bounded event contracts shared by host ingress and graph-authored nodes.
Definition anticipation_eligibility.hpp:9
@ Unknown
Definition native_handle_visitor.hpp:47
@ none
Definition graph_serializer.hpp:49
::pulp::state::ParameterEventQueue ParameterEventQueue
Definition parameter_event_queue.hpp:8
BypassSurface
Definition plugin_slot.hpp:64
@ parameter
Definition plugin_slot.hpp:67
@ none
Definition plugin_slot.hpp:65
@ unit_property
Definition plugin_slot.hpp:69
state::ParamRate ParamRate
Definition plugin_slot.hpp:88
PluginIdentityError
Definition plugin_identity.hpp:21
ParamRate
Parameter update-rate classification.
Definition parameter.hpp:62
@ ControlRate
Definition parameter.hpp:63
Process context — passed every audio callback with transport state.
Definition process_context.hpp:89
Definition plugin_slot.hpp:74
float default_value
Definition plugin_slot.hpp:83
std::string unit
Definition plugin_slot.hpp:77
std::string name
Definition plugin_slot.hpp:76
float max_value
Definition plugin_slot.hpp:82
ParamFlags flags
Definition plugin_slot.hpp:84
state::ParamRate rate
Definition plugin_slot.hpp:85
float min_value
Definition plugin_slot.hpp:81
Definition plugin_slot.hpp:35
bool modulatable
Definition plugin_slot.hpp:45
bool stepped
Definition plugin_slot.hpp:39
bool read_only
Definition plugin_slot.hpp:37
bool hidden
Definition plugin_slot.hpp:38
bool rampable
Definition plugin_slot.hpp:44
bool automatable
Definition plugin_slot.hpp:36
bool is_bypass
Definition plugin_slot.hpp:40
Definition scanner.hpp:35
Exactly one loaded slot or typed refusal. A successful slot owns its receipt.
Definition plugin_slot.hpp:414
std::variant< std::unique_ptr< PluginSlot >, PluginIdentityError > value
Definition plugin_slot.hpp:415
Definition plugin_identity.hpp:119
Definition plugin_slot.hpp:198
void * native_handle
NSView*, HWND, GdkWindow*, clap_plugin_gui* etc.
Definition plugin_slot.hpp:199
bool resizable
Definition plugin_slot.hpp:202
uint32_t height
Definition plugin_slot.hpp:201
uint32_t width
Definition plugin_slot.hpp:200