X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gtk2_ardour%2Fcrossfade_edit.cc;h=da833b8ea452f6eb40d87705c91f4a03f7b8fb3e;hb=7f1784252882cd216a9912f57f66533cc06af8a5;hp=0c8daafb045995826673acdb50616d103a4c61db;hpb=73192bc1a7ea55fa1864dc3826845b15c00dd2ec;p=ardour.git diff --git a/gtk2_ardour/crossfade_edit.cc b/gtk2_ardour/crossfade_edit.cc index 0c8daafb04..da833b8ea4 100644 --- a/gtk2_ardour/crossfade_edit.cc +++ b/gtk2_ardour/crossfade_edit.cc @@ -37,6 +37,7 @@ #include "ardour/audiosource.h" #include "ardour/region_factory.h" #include "ardour/profile.h" +#include "ardour/crossfade_binder.h" #include @@ -97,7 +98,7 @@ CrossfadeEditor::CrossfadeEditor (Session* s, boost::shared_ptr xf, d select_out_button (_("Fade Out")), _peaks_ready_connection (0) - + { set_session (s); @@ -509,7 +510,7 @@ CrossfadeEditor::Point::move_to (double nx, double ny, double xfract, double yfr } else if ( xfract > 1.0 ) { xfract = 1.0; } - + if ( yfract < 0.0 ) { yfract = 0.0; } else if ( yfract > 1.0 ) { @@ -788,10 +789,16 @@ CrossfadeEditor::apply () _session->begin_reversible_command (_("Edit crossfade")); XMLNode& before = xfade->get_state (); - + _apply_to (xfade); - _session->add_command (new MementoCommand (*xfade.get(), &before, &xfade->get_state ())); + _session->add_command ( + new MementoCommand ( + new ARDOUR::CrossfadeBinder (_session->playlists, xfade->id ()), + &before, &xfade->get_state () + ) + ); + _session->commit_reversible_command (); } @@ -809,8 +816,6 @@ CrossfadeEditor::_apply_to (boost::shared_ptr xf) double firstx = (*in.begin())->when; double endx = (*the_end)->when; - double miny = in.get_min_y (); - double maxy = in.get_max_y (); in.freeze (); in.clear (); @@ -818,7 +823,7 @@ CrossfadeEditor::_apply_to (boost::shared_ptr xf) for (list::iterator i = fade[In].points.begin(); i != fade[In].points.end(); ++i) { double when = firstx + ((*i)->x * (endx - firstx)); - double value = (*i)->y; // miny + ((*i)->y * (maxy - miny)); + double value = (*i)->y; in.add (when, value); } @@ -829,8 +834,6 @@ CrossfadeEditor::_apply_to (boost::shared_ptr xf) firstx = (*out.begin())->when; endx = (*the_end)->when; - miny = out.get_min_y (); - maxy = out.get_max_y (); out.freeze (); out.clear (); @@ -838,7 +841,7 @@ CrossfadeEditor::_apply_to (boost::shared_ptr xf) for (list::iterator i = fade[Out].points.begin(); i != fade[Out].points.end(); ++i) { double when = firstx + ((*i)->x * (endx - firstx)); - double value = (*i)->y; // miny + ((*i)->y * (maxy - miny)); + double value = (*i)->y; out.add (when, value); } @@ -1154,7 +1157,7 @@ CrossfadeEditor::make_waves (boost::shared_ptr region, WhichFade wh delete _peaks_ready_connection; _peaks_ready_connection = 0; - + for (uint32_t n = 0; n < nchans; ++n) { gdouble yoff = n * ht; @@ -1207,7 +1210,7 @@ CrossfadeEditor::peaks_ready (boost::weak_ptr wr, WhichFade which) */ delete _peaks_ready_connection; _peaks_ready_connection = 0; - + make_waves (r, which); } @@ -1251,16 +1254,16 @@ CrossfadeEditor::audition (Audition which) right_length = xfade->in()->length(); } - PropertyList left_plist; - PropertyList right_plist; + PropertyList left_plist; + PropertyList right_plist; + - left_plist.add (ARDOUR::Properties::start, left_start_offset); left_plist.add (ARDOUR::Properties::length, left_length); left_plist.add (ARDOUR::Properties::name, string ("xfade out")); left_plist.add (ARDOUR::Properties::layer, 0); left_plist.add (ARDOUR::Properties::fade_in_active, true); - + right_plist.add (ARDOUR::Properties::start, 0); right_plist.add (ARDOUR::Properties::length, right_length); right_plist.add (ARDOUR::Properties::name, string("xfade in")); @@ -1273,9 +1276,9 @@ CrossfadeEditor::audition (Audition which) left_plist.add (ARDOUR::Properties::scale_amplitude, 0.0f); } - boost::shared_ptr left (boost::dynamic_pointer_cast + boost::shared_ptr left (boost::dynamic_pointer_cast (RegionFactory::create (xfade->out(), left_plist, false))); - boost::shared_ptr right (boost::dynamic_pointer_cast + boost::shared_ptr right (boost::dynamic_pointer_cast (RegionFactory::create (xfade->in(), right_plist, false))); // apply a 20ms declicking fade at the start and end of auditioning @@ -1302,14 +1305,14 @@ CrossfadeEditor::audition_both () void CrossfadeEditor::audition_left_dry () { - PropertyList plist; + PropertyList plist; plist.add (ARDOUR::Properties::start, xfade->out()->length() - xfade->length()); plist.add (ARDOUR::Properties::length, xfade->length()); plist.add (ARDOUR::Properties::name, string("xfade left")); plist.add (ARDOUR::Properties::layer, 0); - - boost::shared_ptr left (boost::dynamic_pointer_cast + + boost::shared_ptr left (boost::dynamic_pointer_cast (RegionFactory::create (xfade->out(), plist, false))); _session->audition_region (left); @@ -1324,14 +1327,14 @@ CrossfadeEditor::audition_left () void CrossfadeEditor::audition_right_dry () { - PropertyList plist; + PropertyList plist; plist.add (ARDOUR::Properties::start, 0); plist.add (ARDOUR::Properties::length, xfade->length()); plist.add (ARDOUR::Properties::name, string ("xfade right")); plist.add (ARDOUR::Properties::layer, 0); - boost::shared_ptr right (boost::dynamic_pointer_cast + boost::shared_ptr right (boost::dynamic_pointer_cast (RegionFactory::create (xfade->in(), plist, false))); _session->audition_region (right);