most of the 2.X->3.0 commit (up to rev 4299) except for gtk2_ardour/editor_canvas...
[ardour.git] / gtk2_ardour / editor_timefx.cc
index 6628be711615b5c9d492c7e2b4ec8773a6787516..3dda9e87e9dff431d1aa1a7feacaf31a3dae78cc 100644 (file)
@@ -72,7 +72,8 @@ Editor::TimeFXDialog::TimeFXDialog (Editor& e, bool pitch)
          quick_button (_("Quick but Ugly")),
          antialias_button (_("Skip Anti-aliasing")),
          stretch_opts_label (_("Contents:")),
-         precise_button (_("Strict Linear"))
+         precise_button (_("Strict Linear")),
+         preserve_formants_button(_("Preserve Formants"))
 {
        set_modal (true);
        set_position (Gtk::WIN_POS_MOUSE);
@@ -112,6 +113,9 @@ Editor::TimeFXDialog::TimeFXDialog (Editor& e, bool pitch)
 
                pitch_cent_spinner.set_digits (1);
 
+               upper_button_box.pack_start (preserve_formants_button, false, false);
+
+
                add_button (_("Shift"), Gtk::RESPONSE_ACCEPT);
 
                get_vbox()->pack_start (upper_button_box, false, false);
@@ -281,6 +285,7 @@ Editor::time_fx (RegionSelection& regions, float val, bool pitching)
        bool peaklock = true;
        bool longwin = false;
        bool shortwin = false;
+       bool preserve_formants = false;
        string txt;
 
        enum {
@@ -290,6 +295,7 @@ Editor::time_fx (RegionSelection& regions, float val, bool pitching)
        } transients = Transients;
        
        precise = current_timefx->precise_button.get_active();
+       preserve_formants = current_timefx->preserve_formants_button.get_active();
        
        txt = current_timefx->stretch_opts_selector.get_active_text ();
 
@@ -312,10 +318,14 @@ Editor::time_fx (RegionSelection& regions, float val, bool pitching)
 
        if (realtime)    options |= RubberBandStretcher::OptionProcessRealTime;
        if (precise)     options |= RubberBandStretcher::OptionStretchPrecise;
+       if (preserve_formants)  options |= RubberBandStretcher::OptionFormantPreserved;
+
        if (!peaklock)   options |= RubberBandStretcher::OptionPhaseIndependent;
        if (longwin)     options |= RubberBandStretcher::OptionWindowLong;
        if (shortwin)    options |= RubberBandStretcher::OptionWindowShort;
                
+               
+               
        switch (transients) {
        case NoTransients:
                options |= RubberBandStretcher::OptionTransientsSmooth;
@@ -455,7 +465,7 @@ Editor::do_timefx (TimeFXDialog& dialog)
 void*
 Editor::timefx_thread (void *arg)
 {
-       PBD::ThreadCreated (pthread_self(), X_("TimeFX"));
+       PBD::notify_gui_about_thread_creation (pthread_self(), X_("TimeFX"));
 
        TimeFXDialog* tsd = static_cast<TimeFXDialog*>(arg);