#include <signal_graph_runtime.hpp>
Classes | |
| struct | GraphLimits |
| struct | GeneratedGraphValidation |
| struct | PreparedStats |
| struct | PreparedNodeLatency |
| struct | PreparedConnectionDelay |
| struct | PreparedLatencySnapshot |
| struct | RuntimeBudgetReport |
| struct | PluginCatalogToken |
| struct | NodeLoadReport |
| struct | EdgeProbeIdentity |
| class | ExecutionSnapshot |
| Strong, typed handle to one exact compiled SignalGraph generation. More... | |
| class | PreparedTopologyEdit |
Public Types | |
| enum class | GeneratedGraphValidationRejectReason : uint8_t { None , InvalidBlockSize , MaxBlockSizeExceeded , NodeLimitExceeded , ConnectionLimitExceeded , PortLimitExceeded , EstimatedWorkExceeded } |
| enum class | SpectralTransitionState : std::uint8_t { Idle , Staged , Activated , Rejected , Finalized } |
| enum class | SwapResult { Swapped , Staged , NeedsEagerPrepare , NotInSwapEdit } |
| enum class | EdgeProbeStatus : std::uint8_t { Attached , Detached , Unprepared , UnknownPort , MissingEdge , UnsupportedKind , UnsupportedExecution , Busy } |
| using | PluginLoaderForTest = std::function<std::unique_ptr<PluginSlot>(const PluginInfo&)> |
| using | RoutedExecutionStatus = SignalGraphExecutionStatus |
| Control-thread view of the actual routed paths embedded in the live compiled snapshot. | |
Public Member Functions | |
| SignalGraph ()=default | |
| SpectralResult< SpectralAnalysisPorts > | add_spectral_analysis (SpectralIdentity identity, const std::string &name) |
| SpectralResult< SpectralStagePorts > | add_spectral_stage (SpectralIdentity identity, QualifiedSpectralStage stage, const std::string &name) |
| SpectralResult< SpectralSynthesisPorts > | add_spectral_synthesis (SpectralIdentity identity, const std::string &name) |
| GraphResult | connect (SpectralOutputPort source, SpectralInputPort dest) |
| SpectralTransitionState | spectral_transition_state () const noexcept |
| SpectralError | finalize_spectral_transition () |
| SpectralError | stop_spectral_controller () |
| Control thread only, after the host has stopped calling process(). | |
| SpectralError | spectral_error () const noexcept |
| NodeId | add_input_node (int channels, const std::string &name="Input") |
| NodeId | add_output_node (int channels, const std::string &name="Output") |
| NodeId | add_plugin_node (const PluginInfo &info) |
| NodeId | add_unresolved_plugin_node (const PluginInfo &info, int num_inputs, int num_outputs, const std::string &name) |
| NodeId | add_plugin_node (std::unique_ptr< PluginSlot > slot, int num_inputs, int num_outputs, const std::string &name="Plugin") |
| NodeId | add_processor_node (std::shared_ptr< format::ProcessorNodeInstance > processor, const std::string &name={}) |
| Add an owned in-process Processor. | |
| NodeId | add_processor_node (std::unique_ptr< format::Processor > processor, const std::string &name={}) |
| bool | is_processor_node (NodeId id) const |
| std::shared_ptr< format::ProcessorNodeInstance > | processor_node_instance (NodeId id) const |
| Returns the retained Processor instance for a runtime-owned node. | |
| bool | set_processor_audio_input_provider (NodeId id, format::AudioInputBusProvider provider) noexcept |
| Install a host-owned realtime input-bus provider on an in-process Processor node. | |
| NodeId | add_gain_node (const std::string &name="Gain") |
| NodeId | add_trigger_producer (const TriggerProducerConfig &config) |
| NodeId | add_trigger_envelope (const TriggerEnvelopeConfig &config={}) |
| NodeId | add_trigger_modulation () |
| NodeId | add_trigger_lowpass (float coefficient=0.5f) |
| TriggerGraphResult | connect_trigger (TriggerEdge edge) |
| std::vector< TriggerEdge > | trigger_edges () const |
| TriggerPreparation | prepare_trigger_plan (double sample_rate, int max_frames) |
| TriggerGraphResult | try_install_prepared_trigger_plan (std::unique_ptr< PreparedTriggerPlan > &candidate) |
| TriggerGraphResult | try_reset_events () noexcept |
| TriggerGraphResult | process_checked (audio::BufferView< float > &output, const audio::BufferView< const float > &input, int frames) |
| TriggerGraphResult | trigger_counters (TriggerCounters &counters) const noexcept |
| TriggerResourceReport | trigger_resources () const |
| std::span< const TriggerRecord > | trigger_trace () const noexcept |
| NodeId | add_midi_input_node (const std::string &name="MIDI In") |
| NodeId | add_midi_output_node (const std::string &name="MIDI Out") |
| bool | register_custom_node_type (CustomNodeType type) |
| bool | register_custom_node_type (CustomNodeType type, SampleKernelDescriptor sample_kernel) |
| bool | register_custom_node_diagnostics (CustomNodeDiagnosticsDescriptor descriptor) |
| CustomNodeDiagnosticResult | custom_node_diagnostic_handle (NodeId id) const |
| CustomNodeDiagnosticResult | query_custom_node_diagnostics (CustomNodeDiagnosticHandle handle, std::uint64_t schema, std::span< std::byte > output, CustomNodeDiagnosticConsistency consistency=CustomNodeDiagnosticConsistency::LiveApproximate) const |
| template<typename Report> requires (!std::is_same_v<std::remove_cvref_t<Report>, std::span<std::byte>>) | |
| CustomNodeDiagnosticResult | query_custom_node_diagnostics (CustomNodeDiagnosticHandle handle, std::uint64_t schema, Report &output, CustomNodeDiagnosticConsistency consistency=CustomNodeDiagnosticConsistency::LiveApproximate) const |
| std::vector< CustomNodeTypeMetadata > | custom_node_types () const |
| const CustomNodeType * | custom_node_type (std::string_view type_id) const |
| const CustomNodeType * | custom_node_type (std::string_view type_id, int version) const |
| const SampleKernelDescriptor * | sample_kernel_type (std::string_view type_id, int version) const |
| SampleRegionProof | prove_sample_region (SampleRegionId id) const |
| std::optional< SampleRegionDescriptor > | sample_region (SampleRegionId id) const |
| std::vector< SampleRegionDescriptor > | sample_regions () const |
| const SampleRegionParameterBinding * | sample_region_parameter_binding () const noexcept |
| NodeId | add_custom_node (std::string_view type_id, const std::string &name={}) |
| NodeId | add_custom_node (std::string_view type_id, int version, const std::string &name={}) |
| NodeId | add_unresolved_custom_node (std::string_view type_id, int version, int num_inputs, int num_outputs, const std::string &name) |
| std::vector< uint8_t > | custom_node_state (NodeId id) const |
| bool | set_custom_node_state (NodeId id, const std::vector< uint8_t > &bytes) |
| bool | remove_node (NodeId id) |
| bool | connect (NodeId source, PortIndex source_port, NodeId dest, PortIndex dest_port) |
| GraphResult | connect (const PortHandle &source, const PortHandle &dest) |
| Connect named typed ports. | |
| bool | connect_feedback (NodeId source, PortIndex source_port, NodeId dest, PortIndex dest_port) |
| bool | connect_midi (NodeId source, NodeId dest) |
| bool | connect_sidechain (NodeId source, PortIndex source_port, NodeId dest, PortIndex dest_sidechain_port) |
| bool | connect_automation (NodeId src, PortIndex src_audio_port, NodeId dest, uint32_t dest_param_id, float range_lo, float range_hi, float smoothing_ms=0.0f, AutomationMix mix=AutomationMix::Replace) |
| bool | connect_audio_rate_modulation (NodeId src, PortIndex src_audio_port, NodeId dest, uint32_t dest_param_id, float range_lo, float range_hi, float smoothing_ms=0.0f, AutomationMix mix=AutomationMix::Replace) |
| bool | disconnect_modulation (NodeId src, PortIndex src_audio_port, NodeId dest, uint32_t dest_param_id, bool audio_rate) |
| Remove one automation or audio-rate modulation edge by its typed target. | |
| bool | audio_rate_modulation_lane (const Connection &connection, state::ModulationLane &lane) const |
| bool | inject_midi (NodeId midi_input_node, const midi::MidiBuffer &events) noexcept |
| bool | inject_midi (NodeId midi_input_node, const midi::MidiBuffer &events, const midi::MpeBuffer &mpe) noexcept |
| bool | inject_parameter_events (NodeId plugin_node, const state::ParameterEventQueue &events) |
| bool | extract_midi (NodeId midi_output_node, midi::MidiBuffer &out) const |
| bool | disconnect (NodeId source, PortIndex source_port, NodeId dest, PortIndex dest_port) |
| const GraphNode * | node (NodeId id) const |
| const std::vector< GraphNode > & | nodes () const |
| const std::vector< Connection > & | connections () const |
| GraphAuthoringReceipt | authoring_receipt () const |
| GraphAuthoringReceiptStatus | validate_authoring_receipt (GraphAuthoringReceipt receipt) const |
| bool | would_create_cycle (NodeId source, NodeId dest) const |
| std::vector< NodeId > | processing_order () const |
| bool | prepare (double sample_rate, int max_block_size) |
| NodeId | last_prepare_custom_failure_node () const |
| std::unique_ptr< PreparedTopologyEdit > | begin_prepared_topology_edit () |
| void | begin_swap_edit () |
| SwapResult | prepare_swap (double sample_rate, int max_block_size) |
| void | abort_swap_edit () |
| void | release () |
| bool | set_node_live_swap_policy (NodeId id, NodeLiveSwapPolicy policy) |
| bool | set_node_hosted_editor_open (NodeId id, bool open) |
| PluginCatalogToken | register_scanned_plugin (const PluginInfo &info) |
| void | clear_scanned_plugin_catalog () |
| SwapResult | stage_plugin_replacement (NodeId id, PluginCatalogToken token) |
| LiveSwapDiagnostics | last_swap_diagnostics () const |
| void | set_live_swap_plugin_loader_for_test (PluginLoaderForTest loader) |
| bool | seed_midi_input_sequence_for_test (NodeId midi_input_node, std::uint64_t predecessor) noexcept |
| std::uint64_t | midi_input_sequence_for_test (NodeId midi_input_node) const noexcept |
| void | set_limits (GraphLimits limits) |
| GraphLimits | limits () const |
| std::size_t | estimate_generated_graph_work_units (int max_block_size) const |
| GeneratedGraphValidation | validate_generated_graph (int max_block_size) const |
| PreparedStats | prepared_stats () const |
| std::uint64_t | sample_region_binding_generation () const noexcept |
| std::vector< SampleRegionRuntimeReceipt > | sample_region_runtime_receipts () const |
| EdgeProbeStatus | attach_audio_edge_probe (const PortHandle &source, const PortHandle &destination) |
| void | detach_audio_edge_probe () |
| bool | read_audio_edge_probe (graph::GraphRuntimeProbeSample &sample) |
| std::uint64_t | audio_edge_probe_dropped () const |
| EdgeProbeStatus | audio_edge_probe_status () const |
| EdgeProbeIdentity | audio_edge_probe_identity () const |
| std::vector< NodeLoadReport > | node_loads () const |
| void | set_node_load_monitoring (bool enabled) noexcept |
| bool | node_load_monitoring () const noexcept |
| audio::AudioProcessLoadSnapshot | graph_load () const |
| void | set_live_dsp_telemetry_enabled (bool enabled) |
| bool | live_dsp_telemetry_enabled () const |
| audio::LiveDspTelemetrySnapshot | poll_live_dsp_telemetry () |
| void | compile_snapshot_for_test (double sample_rate, int max_block_size) |
| bool | is_prepared () const noexcept |
| int | prepared_max_block_size () const noexcept |
| std::atomic< float > * | live_gain_atomic (NodeId id) const noexcept |
| PluginSlot * | live_plugin_slot (NodeId id) const noexcept |
| const CustomNodeProcessFn * | live_custom_processor (NodeId id) const noexcept |
| const CustomNodeTransportProcessFn * | live_custom_transport_processor (NodeId id) const noexcept |
| const CustomNodeEventProcessFn * | live_custom_event_processor (NodeId id) const noexcept |
| int | live_custom_latency_samples (NodeId id) const noexcept |
| const CustomNodeParamProcessFn * | live_custom_param_processor (NodeId id) const noexcept |
| std::shared_ptr< const void > | live_snapshot_handle () const noexcept |
| RoutedExecutionStatus | routed_execution_status (int block_size) const noexcept |
| std::uint64_t | routed_only_execution_failures () const noexcept |
| Number of blocks made silent because routed processing failed, including a hosted node rejection, or because a routed-only lease had no usable compiled path. | |
| void | acquire_routed_only_execution () noexcept |
| Require compiled routed execution while at least one owner holds a lease. | |
| void | release_routed_only_execution () noexcept |
| void | set_canonical_executor_routing_enabled (bool enabled) noexcept |
| bool | canonical_executor_routing_enabled () const noexcept |
| void | set_parallel_routing_enabled (bool enabled) noexcept |
| bool | parallel_routing_enabled () const noexcept |
| void | set_audio_workgroup (void *workgroup) noexcept override |
| Publish the device-owned workgroup for subsequent renders, or null when the standalone device has no workgroup / removes its current one. | |
| void | set_audio_workgroup_from_render_context (void *workgroup) noexcept override |
| Publish an AU render-context workgroup. | |
| bool | prepare_audio_workgroup_for_render () noexcept override |
| RT-safe render-cycle preparation. | |
| void | wait_for_audio_workgroup_update () noexcept override |
| Off-RT barrier for borrowed-handle teardown. | |
| void * | configured_audio_workgroup () const noexcept |
| void | set_parallel_min_work_units (std::uint64_t channel_samples) noexcept |
| std::uint64_t | parallel_min_work_units () const noexcept |
| format::GraphRuntimeExecutorStats | routing_executor_stats () const noexcept |
| std::uint64_t | routed_walk_fallbacks () const noexcept |
| void | set_anticipation_enabled (bool enabled) noexcept |
| bool | anticipation_enabled () const noexcept |
| int | pump_anticipation (int max_blocks=8) |
| RuntimeBudgetReport | evaluate_optional_runtime_budget (runtime::RuntimeBudgetFrame &frame, runtime::RuntimeWorkLane lane=runtime::RuntimeWorkLane::Background, bool required=false) const noexcept |
| void | process (audio::BufferView< float > &output, const audio::BufferView< const float > &input, int num_samples) |
| void | process (audio::BufferView< float > &output, const audio::BufferView< const float > &input, int num_samples, const format::ProcessContext &transport) |
| std::uint64_t | transport_suppressed_for_anticipation () const noexcept |
| void | clear () |
| bool | set_node_gain (NodeId id, float linear_gain) |
| float | node_gain (NodeId id) const |
| int | latency_samples () const |
| int | node_latency_samples (NodeId id) const |
| std::optional< PreparedLatencySnapshot > | prepared_latency_snapshot () const |
| bool | set_node_parameter (NodeId id, uint32_t param_id, float value) |
| float | get_node_parameter (NodeId id, uint32_t param_id) const |
| std::size_t | custom_node_type_count () const |
Friends | |
| class | GraphSerializer |
| class | ExecutionSnapshot |
| class | PreparedTriggerPlan |
| struct | detail::TriggerTestAccess |
| struct | SpectralControllerTestAccess |
| bool | build_signal_graph_executor_routing (const SignalGraph &graph, SignalGraphExecutorRouting &out) |
| std::optional< std::vector< HostParamInfo > > | detail::processor_node_parameters (const SignalGraph &, NodeId) |
| bool | register_builtin_sample_region_types (SignalGraph &graph) |
| using pulp::host::SignalGraph::PluginLoaderForTest = std::function<std::unique_ptr<PluginSlot>(const PluginInfo&)> |
Control-thread view of the actual routed paths embedded in the live compiled snapshot.
Unlike topology eligibility, this reports whether snapshot construction and its fixed scratch pools both succeeded for the requested block size.
|
strong |
|
strong |
|
strong |
|
strong |
|
default |
| void pulp::host::SignalGraph::abort_swap_edit | ( | ) |
|
inlinenoexcept |
Require compiled routed execution while at least one owner holds a lease.
If no prepared routed path can process a block, process() clears output instead of entering the legacy reference walk. Control-thread only.
| NodeId pulp::host::SignalGraph::add_custom_node | ( | std::string_view | type_id, |
| const std::string & | name = {} ) |
| NodeId pulp::host::SignalGraph::add_custom_node | ( | std::string_view | type_id, |
| int | version, | ||
| const std::string & | name = {} ) |
| NodeId pulp::host::SignalGraph::add_gain_node | ( | const std::string & | name = "Gain" | ) |
| NodeId pulp::host::SignalGraph::add_input_node | ( | int | channels, |
| const std::string & | name = "Input" ) |
| NodeId pulp::host::SignalGraph::add_midi_input_node | ( | const std::string & | name = "MIDI In" | ) |
| NodeId pulp::host::SignalGraph::add_midi_output_node | ( | const std::string & | name = "MIDI Out" | ) |
| NodeId pulp::host::SignalGraph::add_output_node | ( | int | channels, |
| const std::string & | name = "Output" ) |
| NodeId pulp::host::SignalGraph::add_plugin_node | ( | const PluginInfo & | info | ) |
| NodeId pulp::host::SignalGraph::add_plugin_node | ( | std::unique_ptr< PluginSlot > | slot, |
| int | num_inputs, | ||
| int | num_outputs, | ||
| const std::string & | name = "Plugin" ) |
| NodeId pulp::host::SignalGraph::add_processor_node | ( | std::shared_ptr< format::ProcessorNodeInstance > | processor, |
| const std::string & | name = {} ) |
Add an owned in-process Processor.
The main-bus channel counts and default name come from its frozen descriptor. Processor nodes are runtime-only: graph serialization and baking refuse them explicitly.
| NodeId pulp::host::SignalGraph::add_processor_node | ( | std::unique_ptr< format::Processor > | processor, |
| const std::string & | name = {} ) |
| SpectralResult< SpectralAnalysisPorts > pulp::host::SignalGraph::add_spectral_analysis | ( | SpectralIdentity | identity, |
| const std::string & | name ) |
| SpectralResult< SpectralStagePorts > pulp::host::SignalGraph::add_spectral_stage | ( | SpectralIdentity | identity, |
| QualifiedSpectralStage | stage, | ||
| const std::string & | name ) |
| SpectralResult< SpectralSynthesisPorts > pulp::host::SignalGraph::add_spectral_synthesis | ( | SpectralIdentity | identity, |
| const std::string & | name ) |
| NodeId pulp::host::SignalGraph::add_trigger_envelope | ( | const TriggerEnvelopeConfig & | config = {} | ) |
| NodeId pulp::host::SignalGraph::add_trigger_lowpass | ( | float | coefficient = 0.5f | ) |
| NodeId pulp::host::SignalGraph::add_trigger_modulation | ( | ) |
| NodeId pulp::host::SignalGraph::add_trigger_producer | ( | const TriggerProducerConfig & | config | ) |
| NodeId pulp::host::SignalGraph::add_unresolved_custom_node | ( | std::string_view | type_id, |
| int | version, | ||
| int | num_inputs, | ||
| int | num_outputs, | ||
| const std::string & | name ) |
| NodeId pulp::host::SignalGraph::add_unresolved_plugin_node | ( | const PluginInfo & | info, |
| int | num_inputs, | ||
| int | num_outputs, | ||
| const std::string & | name ) |
|
inlinenoexcept |
| EdgeProbeStatus pulp::host::SignalGraph::attach_audio_edge_probe | ( | const PortHandle & | source, |
| const PortHandle & | destination ) |
| std::uint64_t pulp::host::SignalGraph::audio_edge_probe_dropped | ( | ) | const |
| EdgeProbeIdentity pulp::host::SignalGraph::audio_edge_probe_identity | ( | ) | const |
| EdgeProbeStatus pulp::host::SignalGraph::audio_edge_probe_status | ( | ) | const |
| bool pulp::host::SignalGraph::audio_rate_modulation_lane | ( | const Connection & | connection, |
| state::ModulationLane & | lane ) const |
| GraphAuthoringReceipt pulp::host::SignalGraph::authoring_receipt | ( | ) | const |
| std::unique_ptr< PreparedTopologyEdit > pulp::host::SignalGraph::begin_prepared_topology_edit | ( | ) |
| void pulp::host::SignalGraph::begin_swap_edit | ( | ) |
|
inlinenoexcept |
| void pulp::host::SignalGraph::clear | ( | ) |
| void pulp::host::SignalGraph::clear_scanned_plugin_catalog | ( | ) |
| void pulp::host::SignalGraph::compile_snapshot_for_test | ( | double | sample_rate, |
| int | max_block_size ) |
|
inlinenoexcept |
| GraphResult pulp::host::SignalGraph::connect | ( | const PortHandle & | source, |
| const PortHandle & | dest ) |
Connect named typed ports.
The returned diagnostic is stable and suitable for CLI/MCP surfaces; the legacy index overload remains unchanged.
| bool pulp::host::SignalGraph::connect | ( | NodeId | source, |
| PortIndex | source_port, | ||
| NodeId | dest, | ||
| PortIndex | dest_port ) |
|
inline |
| bool pulp::host::SignalGraph::connect_audio_rate_modulation | ( | NodeId | src, |
| PortIndex | src_audio_port, | ||
| NodeId | dest, | ||
| uint32_t | dest_param_id, | ||
| float | range_lo, | ||
| float | range_hi, | ||
| float | smoothing_ms = 0.0f, | ||
| AutomationMix | mix = AutomationMix::Replace ) |
| bool pulp::host::SignalGraph::connect_automation | ( | NodeId | src, |
| PortIndex | src_audio_port, | ||
| NodeId | dest, | ||
| uint32_t | dest_param_id, | ||
| float | range_lo, | ||
| float | range_hi, | ||
| float | smoothing_ms = 0.0f, | ||
| AutomationMix | mix = AutomationMix::Replace ) |
| bool pulp::host::SignalGraph::connect_feedback | ( | NodeId | source, |
| PortIndex | source_port, | ||
| NodeId | dest, | ||
| PortIndex | dest_port ) |
| bool pulp::host::SignalGraph::connect_sidechain | ( | NodeId | source, |
| PortIndex | source_port, | ||
| NodeId | dest, | ||
| PortIndex | dest_sidechain_port ) |
| TriggerGraphResult pulp::host::SignalGraph::connect_trigger | ( | TriggerEdge | edge | ) |
|
inline |
| CustomNodeDiagnosticResult pulp::host::SignalGraph::custom_node_diagnostic_handle | ( | NodeId | id | ) | const |
| std::vector< uint8_t > pulp::host::SignalGraph::custom_node_state | ( | NodeId | id | ) | const |
| const CustomNodeType * pulp::host::SignalGraph::custom_node_type | ( | std::string_view | type_id | ) | const |
| const CustomNodeType * pulp::host::SignalGraph::custom_node_type | ( | std::string_view | type_id, |
| int | version ) const |
| std::size_t pulp::host::SignalGraph::custom_node_type_count | ( | ) | const |
| std::vector< CustomNodeTypeMetadata > pulp::host::SignalGraph::custom_node_types | ( | ) | const |
| void pulp::host::SignalGraph::detach_audio_edge_probe | ( | ) |
| bool pulp::host::SignalGraph::disconnect | ( | NodeId | source, |
| PortIndex | source_port, | ||
| NodeId | dest, | ||
| PortIndex | dest_port ) |
| bool pulp::host::SignalGraph::disconnect_modulation | ( | NodeId | src, |
| PortIndex | src_audio_port, | ||
| NodeId | dest, | ||
| uint32_t | dest_param_id, | ||
| bool | audio_rate ) |
Remove one automation or audio-rate modulation edge by its typed target.
The route kind is part of the identity so sparse and dense edges cannot be confused by a control operation.
| std::size_t pulp::host::SignalGraph::estimate_generated_graph_work_units | ( | int | max_block_size | ) | const |
|
noexcept |
| bool pulp::host::SignalGraph::extract_midi | ( | NodeId | midi_output_node, |
| midi::MidiBuffer & | out ) const |
| SpectralError pulp::host::SignalGraph::finalize_spectral_transition | ( | ) |
| float pulp::host::SignalGraph::get_node_parameter | ( | NodeId | id, |
| uint32_t | param_id ) const |
| audio::AudioProcessLoadSnapshot pulp::host::SignalGraph::graph_load | ( | ) | const |
|
noexcept |
|
noexcept |
| bool pulp::host::SignalGraph::inject_parameter_events | ( | NodeId | plugin_node, |
| const state::ParameterEventQueue & | events ) |
|
inlinenoexcept |
| bool pulp::host::SignalGraph::is_processor_node | ( | NodeId | id | ) | const |
| NodeId pulp::host::SignalGraph::last_prepare_custom_failure_node | ( | ) | const |
| LiveSwapDiagnostics pulp::host::SignalGraph::last_swap_diagnostics | ( | ) | const |
|
inline |
|
inline |
|
noexcept |
|
noexcept |
|
noexcept |
|
noexcept |
|
noexcept |
| bool pulp::host::SignalGraph::live_dsp_telemetry_enabled | ( | ) | const |
|
noexcept |
|
noexcept |
|
noexcept |
|
noexcept |
| float pulp::host::SignalGraph::node_gain | ( | NodeId | id | ) | const |
| int pulp::host::SignalGraph::node_latency_samples | ( | NodeId | id | ) | const |
|
noexcept |
| std::vector< NodeLoadReport > pulp::host::SignalGraph::node_loads | ( | ) | const |
|
inline |
|
inlinenoexcept |
|
inlinenoexcept |
| audio::LiveDspTelemetrySnapshot pulp::host::SignalGraph::poll_live_dsp_telemetry | ( | ) |
| bool pulp::host::SignalGraph::prepare | ( | double | sample_rate, |
| int | max_block_size ) |
|
inlineoverridevirtualnoexcept |
RT-safe render-cycle preparation.
Every worker completes the transition; false means at least one new join failed and the caller must render inline for this publication.
Reimplemented from pulp::format::AudioWorkgroupClient.
| SwapResult pulp::host::SignalGraph::prepare_swap | ( | double | sample_rate, |
| int | max_block_size ) |
| TriggerPreparation pulp::host::SignalGraph::prepare_trigger_plan | ( | double | sample_rate, |
| int | max_frames ) |
| std::optional< PreparedLatencySnapshot > pulp::host::SignalGraph::prepared_latency_snapshot | ( | ) | const |
|
noexcept |
| PreparedStats pulp::host::SignalGraph::prepared_stats | ( | ) | const |
| void pulp::host::SignalGraph::process | ( | audio::BufferView< float > & | output, |
| const audio::BufferView< const float > & | input, | ||
| int | num_samples ) |
| void pulp::host::SignalGraph::process | ( | audio::BufferView< float > & | output, |
| const audio::BufferView< const float > & | input, | ||
| int | num_samples, | ||
| const format::ProcessContext & | transport ) |
| TriggerGraphResult pulp::host::SignalGraph::process_checked | ( | audio::BufferView< float > & | output, |
| const audio::BufferView< const float > & | input, | ||
| int | frames ) |
| std::vector< NodeId > pulp::host::SignalGraph::processing_order | ( | ) | const |
| std::shared_ptr< format::ProcessorNodeInstance > pulp::host::SignalGraph::processor_node_instance | ( | NodeId | id | ) | const |
Returns the retained Processor instance for a runtime-owned node.
Control-thread only; the returned shared handle keeps the instance alive.
| SampleRegionProof pulp::host::SignalGraph::prove_sample_region | ( | SampleRegionId | id | ) | const |
| int pulp::host::SignalGraph::pump_anticipation | ( | int | max_blocks = 8 | ) |
|
inline |
| CustomNodeDiagnosticResult pulp::host::SignalGraph::query_custom_node_diagnostics | ( | CustomNodeDiagnosticHandle | handle, |
| std::uint64_t | schema, | ||
| std::span< std::byte > | output, | ||
| CustomNodeDiagnosticConsistency | consistency = CustomNodeDiagnosticConsistency::LiveApproximate ) const |
| bool pulp::host::SignalGraph::read_audio_edge_probe | ( | graph::GraphRuntimeProbeSample & | sample | ) |
| bool pulp::host::SignalGraph::register_custom_node_diagnostics | ( | CustomNodeDiagnosticsDescriptor | descriptor | ) |
| bool pulp::host::SignalGraph::register_custom_node_type | ( | CustomNodeType | type | ) |
| bool pulp::host::SignalGraph::register_custom_node_type | ( | CustomNodeType | type, |
| SampleKernelDescriptor | sample_kernel ) |
| PluginCatalogToken pulp::host::SignalGraph::register_scanned_plugin | ( | const PluginInfo & | info | ) |
| void pulp::host::SignalGraph::release | ( | ) |
|
inlinenoexcept |
| bool pulp::host::SignalGraph::remove_node | ( | NodeId | id | ) |
|
noexcept |
|
inlinenoexcept |
Number of blocks made silent because routed processing failed, including a hosted node rejection, or because a routed-only lease had no usable compiled path.
Setup-only routing fallback is tracked separately by routed_walk_fallbacks().
|
inlinenoexcept |
|
inlinenoexcept |
| const SampleKernelDescriptor * pulp::host::SignalGraph::sample_kernel_type | ( | std::string_view | type_id, |
| int | version ) const |
| std::optional< SampleRegionDescriptor > pulp::host::SignalGraph::sample_region | ( | SampleRegionId | id | ) | const |
|
noexcept |
|
inlinenoexcept |
| std::vector< SampleRegionRuntimeReceipt > pulp::host::SignalGraph::sample_region_runtime_receipts | ( | ) | const |
| std::vector< SampleRegionDescriptor > pulp::host::SignalGraph::sample_regions | ( | ) | const |
|
noexcept |
|
inlinenoexcept |
|
inlineoverridevirtualnoexcept |
Publish the device-owned workgroup for subsequent renders, or null when the standalone device has no workgroup / removes its current one.
A null device publication preserves the worker pool's best-effort priority fallback. The publisher for one client must be serialized (CoreAudio serializes device changes). This may run on the realtime thread and must not allocate, lock, block, retain/release Objective-C/os objects, or call host APIs.
AU lifetime follows Apple's render-context protocol: the context struct is callback-scoped, while its workgroup is the host-owned current render context that auxiliary realtime threads are instructed to join and leave when the next observer publication arrives. Standalone devices hold a caller-owned query reference until the explicit teardown barrier below.
Implements pulp::format::AudioWorkgroupClient.
|
inlineoverridevirtualnoexcept |
Publish an AU render-context workgroup.
Null is an explicit context removal and must not select the standalone no-workgroup fallback. Apple does not document os_retain/os_release as RT-safe and supplies no completion callback by which a host can know a late asynchronous join no longer references the previous context. Pulp therefore adopts it in a synchronous observer barrier: every worker, including cold sleepers, completes leave of the old context and acknowledges its new join result before the observer returns.
Reimplemented from pulp::format::AudioWorkgroupClient.
|
inlinenoexcept |
| bool pulp::host::SignalGraph::set_custom_node_state | ( | NodeId | id, |
| const std::vector< uint8_t > & | bytes ) |
| void pulp::host::SignalGraph::set_limits | ( | GraphLimits | limits | ) |
| void pulp::host::SignalGraph::set_live_dsp_telemetry_enabled | ( | bool | enabled | ) |
| void pulp::host::SignalGraph::set_live_swap_plugin_loader_for_test | ( | PluginLoaderForTest | loader | ) |
| bool pulp::host::SignalGraph::set_node_gain | ( | NodeId | id, |
| float | linear_gain ) |
| bool pulp::host::SignalGraph::set_node_hosted_editor_open | ( | NodeId | id, |
| bool | open ) |
| bool pulp::host::SignalGraph::set_node_live_swap_policy | ( | NodeId | id, |
| NodeLiveSwapPolicy | policy ) |
|
noexcept |
| bool pulp::host::SignalGraph::set_node_parameter | ( | NodeId | id, |
| uint32_t | param_id, | ||
| float | value ) |
|
inlinenoexcept |
|
inlinenoexcept |
|
noexcept |
Install a host-owned realtime input-bus provider on an in-process Processor node.
The small POD handle is copied before prepare(); the provider itself must remain immutable and valid for every audio block until the node is removed. Returns false for unknown/non-Processor nodes or after a live snapshot has been prepared.
|
inlinenoexcept |
|
noexcept |
| SwapResult pulp::host::SignalGraph::stage_plugin_replacement | ( | NodeId | id, |
| PluginCatalogToken | token ) |
| SpectralError pulp::host::SignalGraph::stop_spectral_controller | ( | ) |
Control thread only, after the host has stopped calling process().
|
inlinenoexcept |
|
noexcept |
| std::vector< TriggerEdge > pulp::host::SignalGraph::trigger_edges | ( | ) | const |
| TriggerResourceReport pulp::host::SignalGraph::trigger_resources | ( | ) | const |
|
noexcept |
| TriggerGraphResult pulp::host::SignalGraph::try_install_prepared_trigger_plan | ( | std::unique_ptr< PreparedTriggerPlan > & | candidate | ) |
|
noexcept |
| GraphAuthoringReceiptStatus pulp::host::SignalGraph::validate_authoring_receipt | ( | GraphAuthoringReceipt | receipt | ) | const |
| GeneratedGraphValidation pulp::host::SignalGraph::validate_generated_graph | ( | int | max_block_size | ) | const |
|
inlineoverridevirtualnoexcept |
Off-RT barrier for borrowed-handle teardown.
Returns only after every auxiliary worker has acknowledged the most recently published value. Never call this from an audio callback or AU render-context observer.
Implements pulp::format::AudioWorkgroupClient.
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |