33 if (total == 0)
return;
35 std::size_t start = 0;
36 const auto event_span =
events ?
events->events() : std::span<const state::ParameterEvent>{};
38 auto emit = [&](std::size_t block_start, std::size_t block_end) {
39 if (block_end <= block_start)
return;
40 auto out_slice = output.
slice(block_start, block_end - block_start);
41 auto in_slice = input.
slice(block_start, block_end - block_start);
42 fn(out_slice, in_slice, params);
45 for (
const auto& event : event_span) {
46 if (event.sample_offset <= 0)
continue;
47 if (
static_cast<std::size_t
>(event.sample_offset) >= total)
break;
49 const auto split =
static_cast<std::size_t
>(
event.sample_offset);
67 std::span<const state::ParamSnapshotEntry> initial_values,
82 std::span<const state::ParamSnapshotEntry>{},
83 std::forward<Fn>(fn));
90 float initial_value) {
91 ramp_seconds_ = info.smoothing_ramp_seconds > 0.0f
92 ? info.smoothing_ramp_seconds
94 smoothing_enabled_ = ramp_seconds_ > 0.0f && sample_rate > 0.0;
95 value_.set_immediate(initial_value);
96 if (smoothing_enabled_) {
97 value_.set_ramp_time(ramp_seconds_,
static_cast<float>(sample_rate));
101 void reset(
float value) { value_.set_immediate(value); }
104 if (smoothing_enabled_) {
105 value_.set_target(value);
107 value_.set_immediate(value);
111 float next() {
return value_.next(); }
112 void skip(
int samples) { value_.skip(samples); }
113 float current()
const {
return value_.current(); }
114 float target()
const {
return value_.target(); }
121 float ramp_seconds_ = 0.0f;
122 bool smoothing_enabled_ =
false;
Non-owning view over multi-channel audio sample data.
Definition buffer.hpp:30
std::size_t num_samples() const
Definition buffer.hpp:84
BufferView slice(std::size_t start, std::size_t length) const
Create a non-owning slice over this view.
Definition buffer.hpp:49
Linear smoothing for control-rate parameters.
Definition smoothed_value.hpp:24
Definition param_cursor.hpp:26
void advance_to(int32_t sample_offset)
Definition param_cursor.hpp:43
Definition parameter_event_queue.hpp:82
Centralized parameter storage with lock-free value access.
Definition store.hpp:164
Definition child_process_manager.hpp:18
Immutable parameter metadata, registered once at plugin initialization.
Definition parameter.hpp:316
Definition param_cursor.hpp:21