diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index d749e23914..5f1c4fbcf5 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -2532,7 +2532,7 @@ Editor::play_selection () framepos_t Editor::get_preroll () { - return 1.0 /*Config->get_edit_preroll_seconds()*/ * _session->frame_rate(); + return Config->get_preroll_seconds() * _session->frame_rate(); } diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index bc0a607f56..246babe5f9 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -2062,6 +2062,23 @@ RCOptionEditor::RCOptionEditor () "that occurs when fast-forwarding or rewinding through some kinds of audio")); add_option (_("Transport"), tsf); + ComboOption* psc = new ComboOption ( + "preroll-seconds", + _("Preroll"), + sigc::mem_fun (*_rc_config, &RCConfiguration::get_preroll_seconds), + sigc::mem_fun (*_rc_config, &RCConfiguration::set_preroll_seconds) + ); + Gtkmm2ext::UI::instance()->set_tip (tsf->tip_widget(), + (_("The amount of preroll (in seconds) to apply when Play with Preroll is 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 (0.0, _("0 (no pre-roll)")); + psc->add (0.1, _("0.1 second")); + psc->add (0.25, _("0.25 second")); + psc->add (0.5, _("0.5 second")); + psc->add (1.0, _("1.0 second")); + psc->add (2.0, _("2.0 seconds")); + add_option (_("Transport"), psc); + add_option (_("Transport"), new OptionEditorHeading (S_("Sync/Slave"))); _sync_source = new ComboOption ( diff --git a/libs/ardour/ardour/rc_configuration_vars.h b/libs/ardour/ardour/rc_configuration_vars.h index 0c155e2e10..9ced6a6c54 100644 --- a/libs/ardour/ardour/rc_configuration_vars.h +++ b/libs/ardour/ardour/rc_configuration_vars.h @@ -161,6 +161,7 @@ CONFIG_VARIABLE (bool, stop_recording_on_xrun, "stop-recording-on-xrun", false) CONFIG_VARIABLE (bool, create_xrun_marker, "create-xrun-marker", true) CONFIG_VARIABLE (bool, stop_at_session_end, "stop-at-session-end", false) CONFIG_VARIABLE (bool, seamless_loop, "seamless-loop", false) +CONFIG_VARIABLE (float, preroll_seconds, "preroll-seconds", 1.0f) #ifdef USE_TRACKS_CODE_FEATURES CONFIG_VARIABLE (bool, loop_is_mode, "loop-is-mode", true) #else