diff --git a/libs/ardour/ardour/rc_configuration_vars.h b/libs/ardour/ardour/rc_configuration_vars.h index 0b66791c8c..464d361da2 100644 --- a/libs/ardour/ardour/rc_configuration_vars.h +++ b/libs/ardour/ardour/rc_configuration_vars.h @@ -221,6 +221,7 @@ CONFIG_VARIABLE (double, automation_thinning_factor, "automation-thinning-factor CONFIG_VARIABLE (std::string, freesound_download_dir, "freesound-download-dir", Glib::get_home_dir() + "/Freesound/snd") CONFIG_VARIABLE (samplecnt_t, range_location_minimum, "range-location-minimum", 128) /* samples */ CONFIG_VARIABLE (EditMode, edit_mode, "edit-mode", Slide) +CONFIG_VARIABLE (RippleMode, ripple_mode, "ripple-mode", RippleSelected) CONFIG_VARIABLE (Temporal::TimeDomain, default_automation_time_domain, "default-automation-time-domain", Temporal::BeatTime) /* plugin related */ diff --git a/libs/ardour/ardour/types.h b/libs/ardour/ardour/types.h index 972d4705c6..075896ca7d 100644 --- a/libs/ardour/ardour/types.h +++ b/libs/ardour/ardour/types.h @@ -413,10 +413,15 @@ enum MeterHold { enum EditMode { Slide, Ripple, - RippleAll, Lock }; +enum RippleMode { + RippleSelected, + RippleAll, + RippleInterview +}; + enum RegionSelectionAfterSplit { None = 0, NewlyCreatedLeft = 1, // bit 0 diff --git a/libs/ardour/ardour/types_convert.h b/libs/ardour/ardour/types_convert.h index 3d445eef81..5746672519 100644 --- a/libs/ardour/ardour/types_convert.h +++ b/libs/ardour/ardour/types_convert.h @@ -49,6 +49,7 @@ DEFINE_ENUM_CONVERT(ARDOUR::AutoConnectOption) DEFINE_ENUM_CONVERT(ARDOUR::TracksAutoNamingRule) DEFINE_ENUM_CONVERT(ARDOUR::TrackMode) DEFINE_ENUM_CONVERT(ARDOUR::EditMode) +DEFINE_ENUM_CONVERT(ARDOUR::RippleMode) DEFINE_ENUM_CONVERT(ARDOUR::MonitorModel) DEFINE_ENUM_CONVERT(ARDOUR::AFLPosition) DEFINE_ENUM_CONVERT(ARDOUR::PFLPosition) diff --git a/libs/ardour/ardour/utils.h b/libs/ardour/ardour/utils.h index 1a49cb1819..d729d6a736 100644 --- a/libs/ardour/ardour/utils.h +++ b/libs/ardour/ardour/utils.h @@ -82,6 +82,9 @@ LIBARDOUR_API void compute_equal_power_fades (ARDOUR::samplecnt_t nframes, float LIBARDOUR_API const char* edit_mode_to_string (ARDOUR::EditMode); LIBARDOUR_API ARDOUR::EditMode string_to_edit_mode (std::string); +LIBARDOUR_API const char* ripple_mode_to_string (ARDOUR::RippleMode); +LIBARDOUR_API ARDOUR::RippleMode string_to_ripple_mode (std::string); + LIBARDOUR_API double gain_to_slider_position_with_max (double g, double max_gain = 2.0); LIBARDOUR_API double slider_position_to_gain_with_max (double g, double max_gain = 2.0); diff --git a/libs/ardour/enums.cc b/libs/ardour/enums.cc index d23f4eca38..1c67fe65cb 100644 --- a/libs/ardour/enums.cc +++ b/libs/ardour/enums.cc @@ -80,6 +80,7 @@ setup_enum_writer () MeterLineUp _MeterLineUp; InputMeterLayout _InputMeterLayout; EditMode _EditMode; + RippleMode _RippleMode; RegionPoint _RegionPoint; Placement _Placement; MonitorModel _MonitorModel; @@ -304,9 +305,13 @@ setup_enum_writer () REGISTER_ENUM (LayoutAutomatic); REGISTER (_InputMeterLayout); + REGISTER_ENUM (RippleSelected); + REGISTER_ENUM (RippleAll); //enum had to be disambiguated from EditMode:RippleAll + REGISTER_ENUM (RippleInterview); + REGISTER (_RippleMode); + REGISTER_ENUM (Slide); REGISTER_ENUM (Ripple); - REGISTER_ENUM (RippleAll); REGISTER_ENUM (Lock); REGISTER (_EditMode); /* diff --git a/libs/ardour/utils.cc b/libs/ardour/utils.cc index 0d64d94376..553fb0b5c1 100644 --- a/libs/ardour/utils.cc +++ b/libs/ardour/utils.cc @@ -422,8 +422,6 @@ ARDOUR::string_to_edit_mode (string str) return Slide; } else if (str == _("Ripple")) { return Ripple; - } else if (str == _("Ripple All")) { - return RippleAll; } else if (str == _("Lock")) { return Lock; } @@ -442,15 +440,43 @@ ARDOUR::edit_mode_to_string (EditMode mode) case Ripple: return _("Ripple"); - case RippleAll: - return _("Ripple All"); - default: case Slide: return _("Slide"); } } +RippleMode +ARDOUR::string_to_ripple_mode (string str) +{ + if (str == _("RippleSelected")) { + return RippleSelected; + } else if (str == _("RippleAll")) { + return RippleAll; + } else if (str == _("RippleInterview")) { + return RippleInterview; + } + fatal << string_compose (_("programming error: unknown ripple mode string \"%1\""), str) << endmsg; + abort(); /*NOTREACHED*/ + return RippleSelected; +} + +const char* +ARDOUR::ripple_mode_to_string (RippleMode mode) +{ + switch (mode) { + case RippleInterview: + return _("RippleInterview"); + + case RippleAll: + return _("RippleAll"); + + default: + case RippleSelected: + return _("RippleSelected"); + } +} + float ARDOUR::meter_falloff_to_float (MeterFalloff falloff) {