56 Purpose purpose = Purpose::Main);
58 [[gnu::hot]]
void process_block (
61 const dsp::TempoMap &tempo_map)
noexcept override;
63 void clear_buffer (std::size_t offset, std::size_t nframes)
override;
65 [[nodiscard]]
auto layout ()
const {
return layout_; }
66 [[nodiscard]]
auto purpose ()
const {
return purpose_; }
67 [[nodiscard]]
auto &buffers ()
const {
return buf_; }
68 auto num_channels ()
const {
return num_channels_; }
70 void mark_as_requires_limiting () { requires_limiting_ =
true; }
71 auto requires_limiting ()
const {
return requires_limiting_; }
79 float multiplier = 1.f);
84 float multiplier = 1.f);
86 friend void init_from (
88 const AudioPort &other,
91 void prepare_for_processing_impl (
93 units::sample_rate_t sample_rate,
94 units::sample_u32_t max_block_length)
override;
98 static constexpr auto kBusLayoutId =
"busLayout"sv;
99 static constexpr auto kPurposeId =
"purpose"sv;
100 static constexpr auto kRequiresLimitingId =
"requiresLimiting"sv;
101 static constexpr auto kChannels =
"channels"sv;
102 friend void to_json (nlohmann::json &j,
const AudioPort &port);
103 friend void from_json (
const nlohmann::json &j, AudioPort &port);
109 uint8_t num_channels_{};
117 bool requires_limiting_{};
122 std::unique_ptr<juce::AudioSampleBuffer> buf_;
124 BOOST_DESCRIBE_CLASS (
129 (layout_, purpose_, requires_limiting_))