somewhat illogical and temporary workaround to the problems with consolidate & bounce...
authorPaul Davis <paul@linuxaudiosystems.com>
Fri, 27 May 2011 01:04:56 +0000 (01:04 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Fri, 27 May 2011 01:04:56 +0000 (01:04 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@9606 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/ardour.menus.in
gtk2_ardour/editor.h
gtk2_ardour/editor_actions.cc
gtk2_ardour/editor_export_audio.cc
gtk2_ardour/editor_ops.cc

index af423cbb2303f71a5b1374a187d201ed85386248..8d21a4afa963be5e860b9e5041b811e7d45ca626 100644 (file)
       <menuitem action='remove-region-sync'/>
       <menuitem action='play-selected-regions'/>
       <menuitem action='export-region'/>
-      <menuitem action='bounce-region'/>
+      <menuitem action='bounce-regions-processed'/>
+      <menuitem action='bounce-regions-unprocessed'/>
       <menuitem action='combine-regions'/>
       <menuitem action='uncombine-regions'/>
       <menuitem action='analyze-region'/>
   <popup name='PopupRegionMenu' action='PopupRegionMenu'>
     <menuitem action='rename-region'/>
     <menuitem action='show-region-properties'/>
+    <menuitem action='combine-regions'/>
+    <menuitem action='uncombine-regions'/>
+    <menuitem action='split-region'/>
+    <menuitem action='split-multichannel-region'/>
     <menuitem action='set-region-sync-position'/>
     <menuitem action='remove-region-sync'/>
     <menuitem action='play-selected-regions'/>
     <menuitem action='export-region'/>
-    <menuitem action='bounce-region'/>
+    <menuitem action='bounce-regions-processed'/>
+    <menuitem action='bounce-regions-unprocessed'/>
     <menuitem action='analyze-region'/>
     <menuitem action='toggle-region-lock'/>
     <menuitem action='toggle-region-lock-style'/>
     <menuitem action='pitch-shift-region'/>
     <menuitem action='transpose-region'/>
     <menuitem action='naturalize-region'/>
-    <menuitem action='combine-regions'/>
-    <menuitem action='uncombine-regions'/>
-    <menuitem action='split-region'/>
-    <menuitem action='split-multichannel-region'/>
-    <menuitem action='remove-region'/>
+    <menuitem action='reverse-region'/>    
     <menuitem action='loop-region'/>
     <menuitem action='snap-regions-to-grid'/>
     <menuitem action='close-region-gaps'/>
     <menuitem action='place-transient' />
     <menuitem action='show-rhythm-ferret'/>
     <menuitem action='strip-region-silence'/>
-    <menuitem action='reverse-region'/>    
+    <menuitem action='remove-region'/>
     <menu action='RegionMenuLayering'>
       <menuitem action='raise-region-to-top'/>
       <menuitem action='raise-region'/>
index 984d072f8309c47d9e64e2bd1d1fccd8dc235418..e0fc037054a56f082831eb2fdc35da5c3525f4d9 100644 (file)
@@ -1751,7 +1751,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
 
        int  write_region_selection(RegionSelection&);
        bool write_region (std::string path, boost::shared_ptr<ARDOUR::AudioRegion>);
-       void bounce_region_selection ();
+       void bounce_region_selection (bool with_processing);
        void bounce_range_selection (bool replace, bool enable_processing);
        void external_edit_region ();
 
index 74cc69e6dbd94c9d86e8e5676e023f9ae10ca7bc..d19bfe4fa172d4cf1d866a9264f3791bb5439769 100644 (file)
@@ -1371,7 +1371,8 @@ Editor::register_region_actions ()
 
        reg_sens (_region_actions, "play-selected-regions", _("Play"), sigc::mem_fun(*this, &Editor::play_selected_region));
 
-       reg_sens (_region_actions, "bounce-region", _("Bounce"), sigc::mem_fun (*this, &Editor::bounce_region_selection));
+       reg_sens (_region_actions, "bounce-regions-unprocessed", _("Bounce (with processing)"), (sigc::bind (sigc::mem_fun (*this, &Editor::bounce_region_selection), true)));
+       reg_sens (_region_actions, "bounce-regions-processed", _("Bounce (without processing)"), (sigc::bind (sigc::mem_fun (*this, &Editor::bounce_region_selection), false)));
        reg_sens (_region_actions, "combine-regions", _("Combine"), sigc::mem_fun (*this, &Editor::combine_regions));
        reg_sens (_region_actions, "uncombine-regions", _("Uncombine"), sigc::mem_fun (*this, &Editor::uncombine_regions));
 
index 2eff80614ebdeafd365b191cf1e7d8452cda602b..3fb4a4b3276ead27ffe8fdc7a1efdf60e182d02e 100644 (file)
@@ -145,23 +145,11 @@ Editor::write_region_selection (RegionSelection& regions)
 }
 
 void
-Editor::bounce_region_selection ()
+Editor::bounce_region_selection (bool with_processing)
 {
-       for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) {
-
-               RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (&(*i)->get_time_axis_view());
-               boost::shared_ptr<Track> track = boost::dynamic_pointer_cast<Track> (rtv->route());
-
-               if (!track->bounceable()) {
-                       MessageDialog d (
-                               _("One or more of the selected regions' tracks cannot be bounced because it has more outputs than inputs.  "
-                                 "You can fix this by increasing the number of inputs on that track.")
-                               );
-                       d.set_title (_("Cannot bounce"));
-                       d.run ();
-                       return;
-               }
-       }
+       /* no need to check for bounceable() because this operation never puts
+        * its results back in the playlist (only in the region list).
+        */
 
        for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) {
 
@@ -171,12 +159,7 @@ Editor::bounce_region_selection ()
 
                InterThreadInfo itt;
 
-               boost::shared_ptr<Region> r = track->bounce_range (region->position(), region->position() + region->length(), itt);
-               cerr << "Result of bounce of "
-                    << region->name() << " len = " << region->length()
-                    << " was "
-                    << r->name() << " len = " << r->length()
-                    << endl;
+               boost::shared_ptr<Region> r = track->bounce_range (region->position(), region->position() + region->length(), itt, with_processing);
        }
 }
 
index 9e46c04eed705f53eec24fae9ae61f099209849a..b986976f9e8ee7d9558d4a9a2c5cf0d3aeb4ceda 100644 (file)
@@ -3319,10 +3319,11 @@ Editor::bounce_range_selection (bool replace, bool enable_processing)
 
        for (TrackViewList::iterator i = views.begin(); i != views.end(); ++i) {
                RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (*i);
-               if (rtv && rtv->track() && !rtv->track()->bounceable()) {
+               if (rtv && rtv->track() && replace && enable_processing && !rtv->track()->bounceable()) {
                        MessageDialog d (
-                               _("One or more selected tracks cannot be bounced because it has more outputs than inputs.  "
-                                 "You can fix this by increasing the number of inputs on that track.")
+                               _("You can't perform this operation because the processing of the signal "
+                                 "will cause one or more of the tracks will end up with a region with more channels than this track has inputs.\n\n"
+                                 "You can do this without processing, which is a different operation.")
                                );
                        d.set_title (_("Cannot bounce"));
                        d.run ();