Default_Play_Speed: simple varispeed GUI

This commit is contained in:
Ben Loftis 2021-06-18 15:26:22 -05:00 committed by Robin Gareus
parent d6d60711aa
commit 50c555f1a1
No known key found for this signature in database
GPG key ID: A090BCE02CF57F04
6 changed files with 252 additions and 152 deletions

View file

@ -37,6 +37,9 @@
#include <iostream>
#include <cmath>
#include <gtkmm/menu.h>
#include <gtkmm/menuitem.h>
#include <sigc++/bind.h>
#include <gtkmm/settings.h>
@ -79,6 +82,7 @@ using namespace ArdourWidgets;
using namespace Gtk;
using namespace Glib;
using namespace ARDOUR_UI_UTILS;
using namespace Menu_Helpers;
void
ARDOUR_UI::setup_tooltips ()
@ -98,6 +102,8 @@ ARDOUR_UI::setup_tooltips ()
set_tip (latency_disable_button, _("Disable all Plugin Delay Compensation. This results in the shortest delay from live input to output, but any paths with delay-causing plugins will sound later than those without."));
set_tip (_varispeed_pulldown, _("Varispeed: change the default playback and recording speed"));
synchronize_sync_source_and_video_pullup ();
editor->setup_tooltips ();
@ -528,9 +534,9 @@ ARDOUR_UI::setup_transport ()
ssbox->set_spacing (PX_SCALE(2));
ssbox->pack_start (sync_button, false, false, 0);
ssbox->pack_start (shuttle_box, true, true, 0);
ssbox->pack_start (_varispeed_pulldown, false, false, 0);
ssbox->pack_start (*shuttle_box.info_button(), false, false, 0);
/* and the main table layout */
int vpadding = 1;
int hpadding = 2;
@ -630,6 +636,20 @@ ARDOUR_UI::setup_transport ()
transport_table.attach (editor_visibility_button, TCOL, 0, 1 , FILL, SHRINK, hpadding, vpadding);
++col;
// _varispeed_pulldown.set_icon (ArdourIcon::RecButton);
_varispeed_pulldown.set_text(_("Vari"));
// _varispeed_pulldown.set_icon(record_tape_red);
_varispeed_pulldown.AddMenuElem (MenuElem (_("None"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_default_play_spd_from_menu), 1.0)));
_varispeed_pulldown.AddMenuElem (SeparatorElem());
_varispeed_pulldown.AddMenuElem (MenuElem (_("-10 cents"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_default_play_spd_from_menu), ShuttleControl::cents_as_speed(-10, false))));
_varispeed_pulldown.AddMenuElem (MenuElem (_("+10 cents"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_default_play_spd_from_menu), ShuttleControl::cents_as_speed(10, false))));
_varispeed_pulldown.AddMenuElem (SeparatorElem());
_varispeed_pulldown.AddMenuElem (MenuElem (_("-1 semitone"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_default_play_spd_from_menu), ShuttleControl::semitones_as_speed(-1, false))));
_varispeed_pulldown.AddMenuElem (MenuElem (_("+1 semitone"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_default_play_spd_from_menu), ShuttleControl::semitones_as_speed(1, false))));
_varispeed_pulldown.AddMenuElem (SeparatorElem());
_varispeed_pulldown.AddMenuElem (MenuElem (_("-1 octave"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_default_play_spd_from_menu), ShuttleControl::semitones_as_speed(-12, false))));
_varispeed_pulldown.AddMenuElem (MenuElem (_("+1 octave"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_default_play_spd_from_menu), ShuttleControl::semitones_as_speed(12, false))));
/* initialize */
latency_switch_changed ();
session_latency_updated (true);
@ -749,6 +769,12 @@ ARDOUR_UI::layered_button_clicked ()
}
}
void
ARDOUR_UI::set_default_play_spd_from_menu (double spd)
{
_session->set_default_play_speed(spd);
}
void
ARDOUR_UI::solo_blink (bool onoff)
{