From 0ca77db96d8750b36c41aef0b710f34511fd8149 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 19 Jul 2021 00:48:53 +0200 Subject: [PATCH] Separate transport and varispeed dialog --- gtk2_ardour/shuttle_control.cc | 1 - gtk2_ardour/shuttle_control.h | 2 +- gtk2_ardour/transpose_dialog.cc | 82 ---------------------------- gtk2_ardour/transpose_dialog.h | 23 -------- gtk2_ardour/varispeed_dialog.cc | 97 +++++++++++++++++++++++++++++++++ gtk2_ardour/varispeed_dialog.h | 48 ++++++++++++++++ gtk2_ardour/wscript | 1 + 7 files changed, 147 insertions(+), 107 deletions(-) create mode 100644 gtk2_ardour/varispeed_dialog.cc create mode 100644 gtk2_ardour/varispeed_dialog.h diff --git a/gtk2_ardour/shuttle_control.cc b/gtk2_ardour/shuttle_control.cc index 88c6d7ba6b..a24d470a12 100644 --- a/gtk2_ardour/shuttle_control.cc +++ b/gtk2_ardour/shuttle_control.cc @@ -45,7 +45,6 @@ #include "rgb_macros.h" #include "shuttle_control.h" #include "timers.h" -#include "transpose_dialog.h" #include "pbd/i18n.h" diff --git a/gtk2_ardour/shuttle_control.h b/gtk2_ardour/shuttle_control.h index 87476a6439..47e4f8a640 100644 --- a/gtk2_ardour/shuttle_control.h +++ b/gtk2_ardour/shuttle_control.h @@ -32,7 +32,7 @@ #include "widgets/ardour_button.h" #include "widgets/binding_proxy.h" -#include "transpose_dialog.h" +#include "varispeed_dialog.h" namespace Gtk { class Menu; diff --git a/gtk2_ardour/transpose_dialog.cc b/gtk2_ardour/transpose_dialog.cc index 4ff1f7e6f5..6ab29872e7 100644 --- a/gtk2_ardour/transpose_dialog.cc +++ b/gtk2_ardour/transpose_dialog.cc @@ -24,12 +24,6 @@ #include "pbd/i18n.h" -#include - -#include "ardour_ui.h" -#include "utils.h" - - using namespace Gtk; TransposeDialog::TransposeDialog () @@ -68,79 +62,3 @@ TransposeDialog::semitones () const { return _octaves_spinner.get_value () * 12 + _semitones_spinner.get_value (); } - - - - - -VarispeedDialog::VarispeedDialog () - : ArdourDialog (_("Varispeed")) - , _semitones_adjustment (0.0, -12.0, 12.0, 1.0, 4.0) - , _cents_adjustment (0.0, -100.0, 100.0, 1.0, 10.0) - , _semitones_spinner (_semitones_adjustment) - , _cents_spinner (_cents_adjustment) -{ - set_modal(false); - - Table* t = manage (new Table (3, 2)); - t->set_row_spacings (6); - t->set_col_spacings (6); - - int r = 0; - Label* l = manage (new Label (_("Semitones:"), ALIGN_LEFT, ALIGN_CENTER, false)); - t->attach (*l, 0, 1, r, r + 1, FILL, EXPAND, 0, 0); - t->attach (_semitones_spinner, 1, 2, r, r + 1, FILL, EXPAND & FILL, 0, 0); - ++r; - - l = manage (new Label (_("Cents:"), ALIGN_LEFT, ALIGN_CENTER, false)); - t->attach (*l, 0, 1, r, r + 1, FILL, EXPAND, 0, 0); - t->attach (_cents_spinner, 1, 2, r, r + 1, FILL, EXPAND & FILL, 0, 0); - ++r; - - get_vbox()->set_spacing (6); - get_vbox()->pack_start (*t, false, false); - -// add_button (Stock::CANCEL, RESPONSE_CANCEL); -// add_button (_("Transpose"), RESPONSE_ACCEPT); - - _semitones_spinner.set_can_focus(false); - _cents_spinner.set_can_focus(false); - - _semitones_spinner.signal_changed().connect (sigc::mem_fun (*this, &VarispeedDialog::apply_speed)); - _cents_spinner.signal_changed().connect (sigc::mem_fun (*this, &VarispeedDialog::apply_speed)); - - show_all_children (); -} - -bool -VarispeedDialog::on_key_press_event (GdkEventKey *ev) -{ - Gtk::Window& main_window (ARDOUR_UI::instance()->main_window()); - return ARDOUR_UI_UTILS::relay_key_press (ev, &main_window); -} - -void -VarispeedDialog::reset () -{ - _semitones_spinner.set_value(0); - _cents_spinner.set_value(0); -} - -void -VarispeedDialog::apply_speed () -{ - int cents = _semitones_spinner.get_value () * 100 + _cents_spinner.get_value (); - - double speed = pow (2.0, ((double)cents / (double)1200.0)); - - if (_session) { - _session->set_default_play_speed(speed); - } -} - -void -VarispeedDialog::on_hide () -{ - _session->set_default_play_speed(1.0); - ArdourDialog::on_hide(); -} diff --git a/gtk2_ardour/transpose_dialog.h b/gtk2_ardour/transpose_dialog.h index 8b2249c6ab..a6f86dd729 100644 --- a/gtk2_ardour/transpose_dialog.h +++ b/gtk2_ardour/transpose_dialog.h @@ -42,27 +42,4 @@ private: Gtk::SpinButton _semitones_spinner; }; - -/** A dialog box to select a speed change for "varispeed" recording/playback. - * It asks for octaves, semitones, and cents, and sums them to report 'speed' - */ - -class VarispeedDialog : public ArdourDialog -{ -public: - VarispeedDialog (); - - void reset (); - void apply_speed (); - void on_hide (); - - bool on_key_press_event(GdkEventKey*); - -private: - Gtk::Adjustment _semitones_adjustment; - Gtk::Adjustment _cents_adjustment; - Gtk::SpinButton _semitones_spinner; - Gtk::SpinButton _cents_spinner; -}; - #endif /* __ardour_transpose_dialog_h__ */ diff --git a/gtk2_ardour/varispeed_dialog.cc b/gtk2_ardour/varispeed_dialog.cc new file mode 100644 index 0000000000..572753b0db --- /dev/null +++ b/gtk2_ardour/varispeed_dialog.cc @@ -0,0 +1,97 @@ +/* + * Copyright (C) 2021 Ben Loftis + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include + +#include "varispeed_dialog.h" + +#include "ardour_ui.h" +#include "utils.h" + +#include "pbd/i18n.h" + +using namespace Gtk; + +VarispeedDialog::VarispeedDialog () + : ArdourDialog (_("Varispeed")) + , _semitones_adjustment (0.0, -12.0, 12.0, 1.0, 4.0) + , _cents_adjustment (0.0, -100.0, 100.0, 1.0, 10.0) + , _semitones_spinner (_semitones_adjustment) + , _cents_spinner (_cents_adjustment) +{ + set_modal (false); + + Table* t = manage (new Table (3, 2)); + t->set_row_spacings (6); + t->set_col_spacings (6); + + int r = 0; + Label* l = manage (new Label (_("Semitones:"), ALIGN_LEFT, ALIGN_CENTER, false)); + t->attach (*l, 0, 1, r, r + 1, FILL, EXPAND, 0, 0); + t->attach (_semitones_spinner, 1, 2, r, r + 1, FILL, EXPAND & FILL, 0, 0); + ++r; + + l = manage (new Label (_("Cents:"), ALIGN_LEFT, ALIGN_CENTER, false)); + t->attach (*l, 0, 1, r, r + 1, FILL, EXPAND, 0, 0); + t->attach (_cents_spinner, 1, 2, r, r + 1, FILL, EXPAND & FILL, 0, 0); + ++r; + + get_vbox ()->set_spacing (6); + get_vbox ()->pack_start (*t, false, false); + + _semitones_spinner.set_can_focus (false); + _cents_spinner.set_can_focus (false); + + _semitones_spinner.signal_changed ().connect (sigc::mem_fun (*this, &VarispeedDialog::apply_speed)); + _cents_spinner.signal_changed ().connect (sigc::mem_fun (*this, &VarispeedDialog::apply_speed)); + + show_all_children (); +} + +bool +VarispeedDialog::on_key_press_event (GdkEventKey* ev) +{ + Gtk::Window& main_window (ARDOUR_UI::instance ()->main_window ()); + return ARDOUR_UI_UTILS::relay_key_press (ev, &main_window); +} + +void +VarispeedDialog::reset () +{ + _semitones_spinner.set_value (0); + _cents_spinner.set_value (0); +} + +void +VarispeedDialog::apply_speed () +{ + int cents = _semitones_spinner.get_value () * 100 + _cents_spinner.get_value (); + + double speed = pow (2.0, ((double)cents / (double)1200.0)); + + if (_session) { + _session->set_default_play_speed (speed); + } +} + +void +VarispeedDialog::on_hide () +{ + _session->set_default_play_speed (1.0); + ArdourDialog::on_hide (); +} diff --git a/gtk2_ardour/varispeed_dialog.h b/gtk2_ardour/varispeed_dialog.h new file mode 100644 index 0000000000..2dd590d933 --- /dev/null +++ b/gtk2_ardour/varispeed_dialog.h @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2021 Ben Loftis + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#ifndef _gtkardour_varispeed_dialog_h_ +#define _gtkardour_varispeed_dialog_h_ + +#include + +#include "ardour_dialog.h" + +/** A dialog box to select a speed change for "varispeed" recording/playback. + * It asks for octaves, semitones, and cents, and sums them to report 'speed' + */ + +class VarispeedDialog : public ArdourDialog +{ +public: + VarispeedDialog (); + + void reset (); + void apply_speed (); + void on_hide (); + + bool on_key_press_event (GdkEventKey*); + +private: + Gtk::Adjustment _semitones_adjustment; + Gtk::Adjustment _cents_adjustment; + Gtk::SpinButton _semitones_spinner; + Gtk::SpinButton _cents_spinner; +}; + +#endif diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript index 8d64209cbc..1c3010a56d 100644 --- a/gtk2_ardour/wscript +++ b/gtk2_ardour/wscript @@ -297,6 +297,7 @@ gtk2_ardour_sources = [ 'transpose_dialog.cc', 'ui_config.cc', 'utils.cc', + 'varispeed_dialog.cc', 'vca_master_strip.cc', 'verbose_cursor.cc', 'virtual_keyboard_window.cc',