From 29e2b1c386728aa16199330923f5fbc3dc5b2554 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?kleines=20Filmr=C3=B6llchen?= Date: Sat, 23 Jul 2022 15:52:50 +0200 Subject: [PATCH] Piano: Replace knob instantiations with ProcessorParameterWidgets The only remaining "manual" knob instatiation is the octave, which will be moved into an entirely different UI in the future. --- Userland/Applications/Piano/KnobsWidget.cpp | 72 ++++----------------- Userland/Applications/Piano/KnobsWidget.h | 24 ++----- 2 files changed, 19 insertions(+), 77 deletions(-) diff --git a/Userland/Applications/Piano/KnobsWidget.cpp b/Userland/Applications/Piano/KnobsWidget.cpp index cb329bca4a..733d82c1f2 100644 --- a/Userland/Applications/Piano/KnobsWidget.cpp +++ b/Userland/Applications/Piano/KnobsWidget.cpp @@ -8,7 +8,7 @@ #include "KnobsWidget.h" #include "MainWidget.h" -#include "ProcessorParameterWidget/Slider.h" +#include "ProcessorParameterWidget/ParameterWidget.h" #include "TrackManager.h" #include #include @@ -20,33 +20,16 @@ KnobsWidget::KnobsWidget(TrackManager& track_manager, MainWidget& main_widget) : m_track_manager(track_manager) , m_main_widget(main_widget) { - set_layout(); + set_layout(); set_fill_with_background_color(true); - m_labels_container = add(); - m_labels_container->set_layout(); - m_labels_container->set_fixed_height(45); - - m_volume_label = m_labels_container->add("Volume"); - m_octave_label = m_labels_container->add("Octave"); - - m_values_container = add(); - m_values_container->set_layout(); - m_values_container->set_fixed_height(10); - - m_volume_value = m_values_container->add(String::number(0)); - m_octave_value = m_values_container->add(String::number(m_track_manager.keyboard()->virtual_keyboard_octave())); - - m_knobs_container = add(); - m_knobs_container->set_layout(); + m_octave_container = add(); + m_octave_container->set_layout(); + m_octave_container->add("Octave"); + m_octave_value = m_octave_container->add(String::number(m_track_manager.keyboard()->virtual_keyboard_octave())); // FIXME: Implement vertical flipping in GUI::Slider, not here. - - m_volume_knob = m_knobs_container->add(); - m_volume_knob->set_range(0, volume_max); - m_volume_knob->set_step(10); - - m_octave_knob = m_knobs_container->add(); + m_octave_knob = m_octave_container->add(); m_octave_knob->set_tooltip("Z: octave down, X: octave up"); m_octave_knob->set_range(octave_min - 1, octave_max - 1); m_octave_knob->set_value((octave_max - 1) - (m_track_manager.keyboard()->virtual_keyboard_octave() - 1)); @@ -59,41 +42,14 @@ KnobsWidget::KnobsWidget(TrackManager& track_manager, MainWidget& main_widget) m_octave_value->set_text(String::number(new_octave)); }; - for (auto& raw_parameter : m_track_manager.current_track()->synth()->parameters()) { - // The synth has range and enum parameters - switch (raw_parameter.type()) { - case DSP::ParameterType::Range: { - auto& parameter = static_cast(raw_parameter); - m_synth_values.append(m_values_container->add(String::number(static_cast(parameter.value())))); - auto& parameter_knob_value = m_synth_values.last(); - m_synth_labels.append(m_labels_container->add(String::formatted("Synth: {}", parameter.name()))); - m_synth_knobs.append(m_knobs_container->add(Orientation::Vertical, parameter, parameter_knob_value)); - break; - } - case DSP::ParameterType::Enum: { - // FIXME: We shouldn't do that, but we know the synth and it is nice - auto& parameter = static_cast&>(raw_parameter); - // The value is empty for enum parameters - m_synth_values.append(m_values_container->add(String::empty())); - m_synth_labels.append(m_labels_container->add(String::formatted("Synth: {}", parameter.name()))); - auto enum_strings = Vector { "Sine", "Triangle", "Square", "Saw", "Noise" }; - m_synth_knobs.append(m_knobs_container->add>(parameter, move(enum_strings))); - m_synth_waveform = static_cast&>(m_synth_knobs.last()); - break; - } - default: - VERIFY_NOT_REACHED(); - } - } + for (auto& parameter : m_track_manager.current_track()->track_mastering()->parameters()) + m_parameter_widgets.append(add(parameter)); - for (auto& raw_parameter : m_track_manager.current_track()->delay()->parameters()) { - // FIXME: We shouldn't do that, but we know the effect and it's nice. - auto& parameter = static_cast(raw_parameter); - m_delay_values.append(m_values_container->add(String::number(static_cast(parameter.value())))); - auto& parameter_knob_value = m_delay_values.last(); - m_delay_labels.append(m_labels_container->add(String::formatted("Delay: {}", parameter.name()))); - m_delay_knobs.append(m_knobs_container->add(Orientation::Vertical, parameter, parameter_knob_value)); - } + for (auto& parameter : m_track_manager.current_track()->synth()->parameters()) + m_parameter_widgets.append(add(parameter)); + + for (auto& parameter : m_track_manager.current_track()->delay()->parameters()) + m_parameter_widgets.append(add(parameter)); } void KnobsWidget::update_knobs() diff --git a/Userland/Applications/Piano/KnobsWidget.h b/Userland/Applications/Piano/KnobsWidget.h index b8d9fefcb9..2165697317 100644 --- a/Userland/Applications/Piano/KnobsWidget.h +++ b/Userland/Applications/Piano/KnobsWidget.h @@ -8,8 +8,7 @@ #pragma once -#include "ProcessorParameterWidget/Dropdown.h" -#include "ProcessorParameterWidget/Slider.h" +#include "ProcessorParameterWidget/ParameterWidget.h" #include #include #include @@ -33,24 +32,11 @@ private: TrackManager& m_track_manager; MainWidget& m_main_widget; - RefPtr m_labels_container; - RefPtr m_volume_label; - RefPtr m_octave_label; - NonnullRefPtrVector m_synth_labels; - NonnullRefPtrVector m_delay_labels; - - RefPtr m_values_container; - RefPtr m_volume_value; - RefPtr m_octave_value; - NonnullRefPtrVector m_synth_values; - NonnullRefPtrVector m_delay_values; - - RefPtr m_knobs_container; - RefPtr m_volume_knob; + RefPtr m_octave_container; RefPtr m_octave_knob; - RefPtr> m_synth_waveform; - NonnullRefPtrVector m_synth_knobs; - NonnullRefPtrVector m_delay_knobs; + RefPtr m_octave_value; + + NonnullRefPtrVector m_parameter_widgets; bool m_change_underlying { true }; };