58 : token_(
std::move(token)), watch_(
std::move(watch)) {}
62 : token_(
std::move(token)), watch_(
std::move(watch)),
63 second_watch_(
std::move(second_watch)) {}
70 state::ListenerToken token_;
71 state::StateStore::ModulationWatch watch_;
72 state::StateStore::ModulationWatch second_watch_;
82template <
typename Control>
87 control.set_modulated_value(*played);
89 control.clear_modulated_value();
104 knob.set_value(store.get_normalized(id));
121 fader.set_value(store.get_normalized(id));
135 pad.
on_change = [&store, x_id, y_id](
float x,
float y) {
148 pad.set_x(store.get_normalized(x_id));
150 pad.set_y(store.get_normalized(y_id));
155 [&pad](std::optional<float> played) {
157 pad.set_modulated_x(*played);
159 pad.clear_modulated_x();
163 pad.set_modulated_y(*played);
165 pad.clear_modulated_y();
181 slider.set_value(store.get_normalized(id), Notify::none);
194 combo.
on_change = [&store, id](
int index) {
196 store.
set_value(
id,
static_cast<float>(index));
201 if (changed == id) combo.set_selected_silent(static_cast<int>(store.get_value(id)));
213 stepper.on_select = [&store, id](
int index) {
215 store.
set_value(
id,
static_cast<float>(index));
220 if (changed == id) stepper.set_selected_silent(static_cast<int>(store.get_value(id)));
230 toggle.on_toggle = [&store, id](
bool on) {
237 if (changed == id) toggle.set_on(store.get_value(id) >= 0.5f);
254 if (changed == id) box.set_checked(store.get_value(id) >= 0.5f);
272 if (changed == id) button.set_on(store.get_value(id) >= 0.5f);
RAII handle for a registered parameter-change listener.
Definition listener_token.hpp:47
RAII handle for watch_modulation(). Move-only; dropping it unwatches.
Definition store.hpp:742
Centralized parameter storage with lock-free value access.
Definition store.hpp:164
float get_value(ParamID id) const
Read a parameter's base value (lock-free).
Definition store.hpp:186
ModulationWatch watch_modulation(ParamID id, std::function< void(std::optional< float >)> on_change)
Call on_change on the main thread, from pump_listeners(), whenever displayed_modulation(id) changes (...
void set_value(ParamID id, float value)
Write a parameter's base value (lock-free).
void set_normalized(ParamID id, float normalized)
Write a parameter from a normalized [0, 1] value (lock-free).
float get_normalized(ParamID id) const
Read a parameter's value mapped to [0, 1] (lock-free).
void end_gesture(ParamID id)
Signal the host that the current gesture has ended.
ListenerToken add_listener(ParamChangeCallback callback, ListenerThread thread)
Subscribe to parameter-value changes.
void begin_gesture(ParamID id)
Signal the host that a gesture (drag, click) has begun on a parameter.
Definition widgets.hpp:2111
std::function< void(bool)> on_change
Definition widgets.hpp:2262
void set_checked(bool v)
Definition widgets.hpp:2127
Drop-down selector for enumerated parameters.
Definition ui_components.hpp:43
std::function< void(int index)> on_change
Called when selection changes.
Definition ui_components.hpp:93
void set_selected_silent(int index)
Definition design_frame_view.hpp:1077
Definition widgets.hpp:1337
Definition widgets.hpp:901
ParameterBinding(state::ListenerToken token)
Definition parameter_binding.hpp:56
ParameterBinding(state::ListenerToken token, state::StateStore::ModulationWatch watch, state::StateStore::ModulationWatch second_watch)
A two-parameter control (XY pad): one watch per axis.
Definition parameter_binding.hpp:60
ParameterBinding()=default
ParameterBinding(state::ListenerToken token, state::StateStore::ModulationWatch watch)
Definition parameter_binding.hpp:57
ParameterBinding(ParameterBinding &&) noexcept=default
Definition widgets.hpp:1750
std::function< void()> on_gesture_begin
Fired when an interactive drag begins / ends, so a binding can bracket the edit in a host automation ...
Definition widgets.hpp:1976
void set_value(float v, Notify notify=Notify::sync)
Set the current value.
Definition widgets.hpp:1818
std::function< void(float)> on_change
Fired when the value changes — from drag, click, or set_value().
Definition widgets.hpp:1972
std::function< void()> on_gesture_end
Definition widgets.hpp:1977
Definition widgets.hpp:2036
Definition widgets.hpp:2599
void set_y(float v)
Definition widgets.hpp:2604
void set_x(float v)
Definition widgets.hpp:2603
std::function< void(float, float)> on_change
Definition widgets.hpp:2640
std::function< void()> on_gesture_end
Definition widgets.hpp:2642
std::function< void()> on_gesture_begin
Definition widgets.hpp:2641
SequencerStateChannel is the audio-safe transport for a plugin's structured NON-parameter state: the ...
Definition audio_device_manager.hpp:48
@ Main
Definition listener_token.hpp:24
@ Reconcile
Definition listener_token.hpp:36
uint32_t ParamID
Unique parameter identifier, stable across plugin versions.
Definition parameter.hpp:55
Definition accessibility_provider.hpp:65
state::StateStore::ModulationWatch watch_modulated_display(Control &control, state::StateStore &store, state::ParamID id)
The modulated-value half of a binding: whatever modulates the parameter – a host's CLAP modulation,...
Definition parameter_binding.hpp:84
Hover-cursor tracking for platform window hosts.
Definition fwd.hpp:27
@ fader
Definition design_ir.hpp:261
@ toggle
Definition design_ir.hpp:272
@ stepper
Definition design_ir.hpp:281
@ knob
Definition design_ir.hpp:260
ParameterBinding bind_parameter(Knob &knob, state::StateStore &store, state::ParamID id)
Knob ↔ parameter (normalized).
Definition parameter_binding.hpp:96
@ none
change the value silently
Definition slider_core.hpp:61
@ y
Definition input_events.hpp:42
@ x
Definition input_events.hpp:41
@ v
Definition input_events.hpp:41
@ changed
Definition gesture.hpp:17
@ on
Definition accessibility.hpp:132
Additional UI components: ComboBox, Tooltip, ProgressBar, CallOutBox, TabPanel, ListBox,...