mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 19:07:34 +00:00
Piano: Add Play/Pause, Forward and Back buttons
Piano now has a toolbar allowing the playback to be paused, or to be stepped forward or back a note.
This commit is contained in:
parent
54c005754a
commit
74f1f2b5e2
10 changed files with 234 additions and 69 deletions
|
@ -1,6 +1,7 @@
|
|||
/*
|
||||
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
|
||||
* Copyright (c) 2019-2020, William McPherson <willmcpherson2@gmail.com>
|
||||
* Copyright (c) 2021, JJ Roberts-White <computerfido@gmail.com>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
@ -10,12 +11,14 @@
|
|||
#include "Music.h"
|
||||
#include <LibGUI/Widget.h>
|
||||
|
||||
class AudioPlayerLoop;
|
||||
class TrackManager;
|
||||
class WaveWidget;
|
||||
class RollWidget;
|
||||
class SamplerWidget;
|
||||
class KeysWidget;
|
||||
class KnobsWidget;
|
||||
class PlayerWidget;
|
||||
|
||||
class MainWidget final : public GUI::Widget {
|
||||
C_OBJECT(MainWidget)
|
||||
|
@ -28,7 +31,7 @@ public:
|
|||
void set_octave_and_ensure_note_change(int);
|
||||
|
||||
private:
|
||||
explicit MainWidget(TrackManager&);
|
||||
explicit MainWidget(TrackManager&, AudioPlayerLoop&);
|
||||
|
||||
virtual void keydown_event(GUI::KeyEvent&) override;
|
||||
virtual void keyup_event(GUI::KeyEvent&) override;
|
||||
|
@ -41,6 +44,7 @@ private:
|
|||
void turn_on_pressed_keys();
|
||||
|
||||
TrackManager& m_track_manager;
|
||||
AudioPlayerLoop& m_audio_loop;
|
||||
|
||||
RefPtr<WaveWidget> m_wave_widget;
|
||||
RefPtr<RollWidget> m_roll_widget;
|
||||
|
@ -49,6 +53,7 @@ private:
|
|||
RefPtr<GUI::Widget> m_keys_and_knobs_container;
|
||||
RefPtr<KeysWidget> m_keys_widget;
|
||||
RefPtr<KnobsWidget> m_knobs_widget;
|
||||
RefPtr<PlayerWidget> m_player_widget;
|
||||
|
||||
bool m_keys_pressed[key_code_count] { false };
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue