diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 00234670ea..6d78b9fac0 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -2609,17 +2609,16 @@ Editor::play_selection () framepos_t Editor::get_preroll (framepos_t pos) { -#if 0 // TODO: this needs a config option, or special case (e.g. negative get_preroll_seconds ()) - if (pos >= 0) { + const float pr = Config->get_preroll_seconds(); + if (pos >= 0 && pr < 0) { /* currently 1 bar's worth of pre-roll, not aligned to bar/beat * to align to a bar before pos, see count_in, session_transport.cc */ const Tempo& tempo = _session->tempo_map().tempo_at_frame (pos); const Meter& meter = _session->tempo_map().meter_at_frame (pos); - return meter.frames_per_bar (tempo, _session->frame_rate()); + return meter.frames_per_bar (tempo, _session->frame_rate()) * -pr; } -#endif - return Config->get_preroll_seconds() * _session->frame_rate(); + return pr * _session->frame_rate(); } diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index 316592dc12..4a5b0a8eef 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -2999,8 +2999,11 @@ RCOptionEditor::RCOptionEditor () sigc::mem_fun (*_rc_config, &RCConfiguration::set_preroll_seconds) ); Gtkmm2ext::UI::instance()->set_tip (psc->tip_widget(), - (_("The amount of preroll (in seconds) to apply when Play with Preroll is initiated.\n\n" + (_("The amount of preroll to apply when Play with Preroll or Record with Prerollis initiated.\n\n" "If Follow Edits is enabled, the preroll is applied to the playhead position when a region is selected or trimmed."))); + psc->add (-4.0, _("4 Bars")); + psc->add (-2.0, _("2 Bars")); + psc->add (-1.0, _("1 Bar")); psc->add (0.0, _("0 (no pre-roll)")); psc->add (0.1, _("0.1 second")); psc->add (0.25, _("0.25 second"));