120 std::function<void(
void* ,
double ,
int )>
prepare;
128 std::function<bool(
void* ,
const std::vector<uint8_t>& )>
load_state;
231 const bool has_plain_callback =
234 const bool has_transport_callback =
236 (
static_cast<bool>(
create) &&
245 !has_plain_callback)) {
268 const bool declares_baked_params = !
baked_params.empty();
269 const bool has_baked_param_process =
271 if (declares_baked_params != has_baked_param_process)
return false;
273 if (declares_baked_params) {
281 || !std::isfinite(param.min_value)
282 || !std::isfinite(param.max_value)
283 || !std::isfinite(param.default_value)
284 || param.min_value > param.max_value
285 || param.default_value < param.min_value
286 || param.default_value > param.max_value) {
289 for (std::size_t j = 0; j < i; ++j) {
312static_assert(
sizeof(float) == 4 &&
alignof(float) == 4,
313 "sample-kernel ABI requires 32-bit, 4-byte-aligned float");
370 float* outputs)
noexcept;
372 float* outputs)
noexcept;
374 const float* inputs)
noexcept;
416 float* outputs) noexcept;
Non-owning view over multi-channel audio sample data.
Definition buffer.hpp:30
Definition custom_node_type.hpp:51
virtual float value_at(state::ParamID id, int32_t sample_offset) const =0
virtual ~BakedParamView()=default
virtual float value(state::ParamID id) const =0
The event block a Custom graph node receives, and the callback types that take it.
Bounded event contracts shared by host ingress and graph-authored nodes.
Definition anticipation_eligibility.hpp:9
SampleKernelConfigKind
Definition custom_node_type.hpp:324
@ Invalid
Definition custom_node_type.hpp:325
@ BoundaryIndex
Definition custom_node_type.hpp:327
@ PromotedParameterId
Definition custom_node_type.hpp:329
@ FiniteConstant
Definition custom_node_type.hpp:328
@ None
Definition anticipation_eligibility.hpp:22
void(*)(void *state) noexcept SampleKernelDestroyFn
Definition custom_node_type.hpp:367
std::function< void(audio::BufferView< float > &output, const audio::BufferView< const float > &input, int num_samples, const CustomNodeEventBlock &events)> CustomNodeEventProcessFn
Stateless event-aware process callback.
Definition custom_node_events.hpp:62
std::function< void(audio::BufferView< float > &output, const audio::BufferView< const float > &input, int num_samples, const BakedParamView ¶ms)> CustomNodeParamProcessFn
Definition custom_node_type.hpp:61
SampleKernelCausality
Definition custom_node_type.hpp:315
@ OneSampleDelay
Definition custom_node_type.hpp:317
@ Combinational
Definition custom_node_type.hpp:316
bool(*)(void *state, const SampleKernelPrepareContext &context) noexcept SampleKernelConstructFn
Definition custom_node_type.hpp:364
bool sample_kernel_storage_is_disjoint(const SampleKernelDescriptor &descriptor, const void *state, const PreparedSampleKernelConfig &config, const SampleFrameContext &frame, const float *inputs, float *outputs) noexcept
void(*)(const void *state, const PreparedSampleKernelConfig &config, float *outputs) noexcept SampleDelayPublishFn
Definition custom_node_type.hpp:371
std::function< void(audio::BufferView< float > &output, const audio::BufferView< const float > &input, int num_samples, const format::ProcessContext &transport)> CustomNodeTransportProcessFn
Definition custom_node_type.hpp:84
std::function< void(audio::BufferView< float > &output, const audio::BufferView< const float > &input, int num_samples)> CustomNodeProcessFn
Definition custom_node_type.hpp:24
void(*)(void *state, const PreparedSampleKernelConfig &config, const SampleFrameContext &frame, const float *inputs, float *outputs) noexcept SampleKernelProcessFn
Definition custom_node_type.hpp:368
void(*)(void *state) noexcept SampleKernelResetFn
Definition custom_node_type.hpp:366
SampleKernelScope
Definition custom_node_type.hpp:320
@ RegionOnly
Definition custom_node_type.hpp:321
void(*)(void *state, const PreparedSampleKernelConfig &config, const float *inputs) noexcept SampleDelayCommitFn
Definition custom_node_type.hpp:373
PreparedSampleKernelConfigKind
Definition custom_node_type.hpp:338
@ Invalid
Definition custom_node_type.hpp:339
@ PromotedParameterIndex
Definition custom_node_type.hpp:343
std::function< void(void *instance, audio::BufferView< float > &output, const audio::BufferView< const float > &input, int num_samples, const CustomNodeEventBlock &events)> CustomNodeInstanceEventProcessFn
Stateful event-aware process callback.
Definition custom_node_events.hpp:69
SequencerStateChannel is the audio-safe transport for a plugin's structured NON-parameter state: the ...
Definition audio_device_manager.hpp:48
uint32_t ParamID
Unique parameter identifier, stable across plugin versions.
Definition parameter.hpp:55
Process context — passed every audio callback with transport state.
Definition process_context.hpp:89
Definition custom_node_type.hpp:71
float min_value
Definition custom_node_type.hpp:73
float max_value
Definition custom_node_type.hpp:74
float default_value
Definition custom_node_type.hpp:75
Definition custom_node_type.hpp:90
std::function< void(void *)> destroy
Definition custom_node_type.hpp:119
std::string default_name
Definition custom_node_type.hpp:95
std::function< void(void *)> reset
Definition custom_node_type.hpp:122
CustomNodeProcessFn process
Definition custom_node_type.hpp:96
std::function< void(void *)> release
Definition custom_node_type.hpp:121
std::vector< CustomNodeBakedParam > baked_params
Definition custom_node_type.hpp:174
std::function< void(void *, double, int)> prepare
Definition custom_node_type.hpp:120
std::function< void(void *, audio::BufferView< float > &, const audio::BufferView< const float > &, int, const BakedParamView &)> process_instance_baked_param
Definition custom_node_type.hpp:178
std::function< int(double, int)> latency_samples_for_block
Definition custom_node_type.hpp:212
bool is_valid_registration() const noexcept
Definition custom_node_type.hpp:230
CustomNodeTransportProcessFn process_transport
Definition custom_node_type.hpp:140
std::function< void *()> create
Definition custom_node_type.hpp:118
CustomNodeInstanceEventProcessFn process_instance_events
Definition custom_node_type.hpp:220
std::function< void(void *, audio::BufferView< float > &, const audio::BufferView< const float > &, int)> process_instance
Definition custom_node_type.hpp:126
std::function< void(void *, audio::BufferView< float > &, const audio::BufferView< const float > &, int, const format::ProcessContext &)> process_instance_transport
Definition custom_node_type.hpp:144
std::function< bool(void *, const std::vector< uint8_t > &)> load_state
Definition custom_node_type.hpp:128
static constexpr int kMaxLatencySamples
Definition custom_node_type.hpp:202
int version
Definition custom_node_type.hpp:92
std::string type_id
Definition custom_node_type.hpp:91
std::function< int(double)> latency_samples
Definition custom_node_type.hpp:203
CustomNodeEventProcessFn process_events
Definition custom_node_type.hpp:219
bool lowerable
Definition custom_node_type.hpp:155
int num_output_ports
Definition custom_node_type.hpp:94
bool consumes_events() const noexcept
Definition custom_node_type.hpp:225
int num_input_ports
Definition custom_node_type.hpp:93
std::function< std::vector< uint8_t >(void *)> save_state
Definition custom_node_type.hpp:127
Definition custom_node_type.hpp:346
std::uint32_t boundary_or_parameter_index
Definition custom_node_type.hpp:348
PreparedSampleKernelConfigKind kind
Definition custom_node_type.hpp:347
float constant
Definition custom_node_type.hpp:349
Definition custom_node_type.hpp:358
std::uint32_t promoted_value_count
Definition custom_node_type.hpp:360
std::uint32_t sample_offset
Definition custom_node_type.hpp:361
const float * promoted_values
Definition custom_node_type.hpp:359
Definition custom_node_type.hpp:332
float constant
Definition custom_node_type.hpp:335
SampleKernelConfigKind kind
Definition custom_node_type.hpp:333
std::uint32_t boundary_index_or_parameter_id
Definition custom_node_type.hpp:334
Definition custom_node_type.hpp:386
SampleKernelMetadata metadata
Definition custom_node_type.hpp:406
SampleKernelProcessFn process
Definition custom_node_type.hpp:402
SampleDelayCommitFn delay_commit
Definition custom_node_type.hpp:404
std::uint32_t state_alignment
Definition custom_node_type.hpp:398
std::string type_id
Definition custom_node_type.hpp:390
SampleKernelResetFn reset
Definition custom_node_type.hpp:400
SampleDelayPublishFn delay_publish
Definition custom_node_type.hpp:403
SampleKernelConfigKind authored_config_kind
Definition custom_node_type.hpp:396
SampleKernelCausality causality
Definition custom_node_type.hpp:394
SampleKernelScope scope
Definition custom_node_type.hpp:395
std::uint32_t num_input_ports
Definition custom_node_type.hpp:392
std::uint32_t state_size
Definition custom_node_type.hpp:397
std::uint32_t num_output_ports
Definition custom_node_type.hpp:393
SampleKernelConstructFn construct
Definition custom_node_type.hpp:399
std::uint32_t abi_version
Definition custom_node_type.hpp:389
std::uint32_t latency_samples
Definition custom_node_type.hpp:405
static constexpr std::uint32_t kAbiVersion
Definition custom_node_type.hpp:387
bool is_valid_registration() const noexcept
int version
Definition custom_node_type.hpp:391
SampleKernelDestroyFn destroy
Definition custom_node_type.hpp:401
Definition custom_node_type.hpp:352
PreparedSampleKernelConfig config
Definition custom_node_type.hpp:355
std::uint32_t max_block_size
Definition custom_node_type.hpp:354
double sample_rate
Definition custom_node_type.hpp:353