28 struct ChannelSendProcessingCaches
31 std::vector<dsp::AudioPort *> audio_ins_rt_;
32 std::vector<dsp::AudioPort *> audio_outs_rt_;
43 dsp::PortType signal_type,
46 QObject * parent =
nullptr);
72 const dsp::TempoMap &tempo_map)
noexcept override;
74 void custom_prepare_for_processing (
76 units::sample_rate_t sample_rate,
79 void custom_release_resources ()
override;
83 bool is_prefader ()
const {
return is_prefader_; }
84 bool is_audio ()
const {
return signal_type_ == dsp::PortType::Audio; }
85 bool is_midi ()
const {
return signal_type_ == dsp::PortType::Midi; }
90 return *get_input_ports ().at (0).get_object_as<
dsp::AudioPort> ();
95 return *get_input_ports ().front ().get_object_as<
dsp::MidiPort> ();
97 dsp::AudioPort &get_stereo_out_port ()
const
100 return *get_output_ports ().front ().get_object_as<dsp::AudioPort> ();
102 dsp::MidiPort &get_midi_out_port ()
const
105 return *get_output_ports ().front ().get_object_as<dsp::MidiPort> ();
109 static constexpr auto kSignalTypeKey =
"signalType"sv;
110 static constexpr auto kIsPrefaderKey =
"isPrefader"sv;
111 friend void to_json (nlohmann::json &j,
const ChannelSend &p);
112 friend void from_json (
const nlohmann::json &j,
ChannelSend &p);
114 friend void init_from (
120 dsp::PortType signal_type_;
128 std::unique_ptr<ChannelSendProcessingCaches> processing_caches_;
void custom_process_block(EngineProcessTimeInfo time_nfo, const dsp::ITransport &transport, const dsp::TempoMap &tempo_map) noexcept override
Custom processor logic after processing all owned parameters.