mirror of
https://github.com/RGBCube/serenity
synced 2025-05-30 22:08:12 +00:00
Piano: Add sustain
This commit is contained in:
parent
421a340572
commit
5990b3b2e6
5 changed files with 40 additions and 4 deletions
|
@ -51,6 +51,7 @@ KnobsWidget::KnobsWidget(GUI::Widget* parent, AudioEngine& audio_engine, MainWid
|
|||
m_octave_label = GUI::Label::construct("Octave", m_labels_container);
|
||||
m_wave_label = GUI::Label::construct("Wave", m_labels_container);
|
||||
m_decay_label = GUI::Label::construct("Decay", m_labels_container);
|
||||
m_sustain_label = GUI::Label::construct("Sustain", m_labels_container);
|
||||
m_delay_label = GUI::Label::construct("Delay", m_labels_container);
|
||||
|
||||
m_values_container = GUI::Widget::construct(this);
|
||||
|
@ -61,6 +62,7 @@ KnobsWidget::KnobsWidget(GUI::Widget* parent, AudioEngine& audio_engine, MainWid
|
|||
m_octave_value = GUI::Label::construct(String::number(m_audio_engine.octave()), m_values_container);
|
||||
m_wave_value = GUI::Label::construct(wave_strings[m_audio_engine.wave()], m_values_container);
|
||||
m_decay_value = GUI::Label::construct(String::number(m_audio_engine.decay()), m_values_container);
|
||||
m_sustain_value = GUI::Label::construct(String::number(m_audio_engine.sustain()), m_values_container);
|
||||
m_delay_value = GUI::Label::construct(String::number(m_audio_engine.delay() / m_audio_engine.tick()), m_values_container);
|
||||
|
||||
m_knobs_container = GUI::Widget::construct(this);
|
||||
|
@ -102,6 +104,17 @@ KnobsWidget::KnobsWidget(GUI::Widget* parent, AudioEngine& audio_engine, MainWid
|
|||
m_decay_value->set_text(String::number(new_decay));
|
||||
};
|
||||
|
||||
constexpr int max_sustain = 1000;
|
||||
m_sustain_knob = GUI::Slider::construct(Orientation::Vertical, m_knobs_container);
|
||||
m_sustain_knob->set_range(0, max_sustain);
|
||||
m_sustain_knob->set_value(max_sustain - m_audio_engine.sustain());
|
||||
m_sustain_knob->on_value_changed = [this](int value) {
|
||||
int new_sustain = max_sustain - value;
|
||||
m_audio_engine.set_sustain(new_sustain);
|
||||
ASSERT(new_sustain == m_audio_engine.sustain());
|
||||
m_sustain_value->set_text(String::number(new_sustain));
|
||||
};
|
||||
|
||||
constexpr int max_delay = 8;
|
||||
m_delay_knob = GUI::Slider::construct(Orientation::Vertical, m_knobs_container);
|
||||
m_delay_knob->set_range(0, max_delay);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue