26 struct BaseProcessingCache
28 units::sample_rate_t sample_rate_;
31 std::vector<dsp::ProcessorParameter *> live_params_;
32 std::vector<dsp::PortPtrVariant> live_input_ports_;
33 std::vector<dsp::PortPtrVariant> live_output_ports_;
39 dsp::PortRegistry &port_registry_;
54 void add_input_port (
const dsp::PortUuidReference &uuid);
55 void add_output_port (
const dsp::PortUuidReference &uuid);
56 void add_parameter (
const dsp::ProcessorParameterUuidReference &uuid);
58 auto &get_input_ports ()
const {
return input_ports_; }
59 auto &get_output_ports ()
const {
return output_ports_; }
60 auto &get_parameters ()
const {
return params_; }
79 const dsp::TempoMap &tempo_map)
noexcept final;
82 units::sample_rate_t sample_rate,
97 const dsp::TempoMap &tempo_map) noexcept [[clang::nonblocking]];
99 virtual
void custom_prepare_for_processing (
100 const graph::GraphNode * node,
101 units::sample_rate_t sample_rate,
106 virtual void custom_release_resources () { }
108 auto dependencies ()
const {
return dependencies_; }
111 static constexpr auto kProcessorNameKey =
"processorName"sv;
112 static constexpr auto kInputPortsKey =
"inputPorts"sv;
113 static constexpr auto kOutputPortsKey =
"outputPorts"sv;
114 static constexpr auto kParametersKey =
"parameters"sv;
115 friend void to_json (nlohmann::json &j,
const ProcessorBase &p);
116 friend void from_json (
const nlohmann::json &j, ProcessorBase &p);
119 ProcessorBaseDependencies dependencies_;
120 utils::Utf8String name_;
121 std::vector<dsp::PortUuidReference> input_ports_;
122 std::vector<dsp::PortUuidReference> output_ports_;
123 std::vector<dsp::ProcessorParameterUuidReference> params_;
126 std::unique_ptr<BaseProcessingCache> processing_caches_;
128 BOOST_DESCRIBE_CLASS (ProcessorBase, (), (), (), (name_))
void process_block(EngineProcessTimeInfo time_nfo, const dsp::ITransport &transport, const dsp::TempoMap &tempo_map) noexcept final
Calls custom_process_block() internally after processing all the parameters.
virtual void custom_process_block(EngineProcessTimeInfo time_nfo, const dsp::ITransport &transport, const dsp::TempoMap &tempo_map) noexcept
Custom processor logic after processing all owned parameters.