Make it possible to consolidate/bounce ranges without applying processing
git-svn-id: svn://localhost/ardour2/branches/3.0@4743 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
0697aed059
commit
bb20bcc7b6
@ -2173,8 +2173,10 @@ Editor::add_selection_context_items (Menu_Helpers::MenuList& edit_items)
|
||||
edit_items.push_back (MenuElem (_("Duplicate range"), bind (mem_fun(*this, &Editor::duplicate_dialog), false)));
|
||||
edit_items.push_back (MenuElem (_("Create chunk from range"), mem_fun(*this, &Editor::create_named_selection)));
|
||||
edit_items.push_back (SeparatorElem());
|
||||
edit_items.push_back (MenuElem (_("Consolidate range"), bind (mem_fun(*this, &Editor::bounce_range_selection), true)));
|
||||
edit_items.push_back (MenuElem (_("Bounce range to region list"), bind (mem_fun(*this, &Editor::bounce_range_selection), false)));
|
||||
edit_items.push_back (MenuElem (_("Consolidate range"), bind (mem_fun(*this, &Editor::bounce_range_selection), true, false)));
|
||||
edit_items.push_back (MenuElem (_("Consolidate range with processing"), bind (mem_fun(*this, &Editor::bounce_range_selection), true, true)));
|
||||
edit_items.push_back (MenuElem (_("Bounce range to region list"), bind (mem_fun(*this, &Editor::bounce_range_selection), false, false)));
|
||||
edit_items.push_back (MenuElem (_("Bounce range to region list with processing"), bind (mem_fun(*this, &Editor::bounce_range_selection), false, true)));
|
||||
edit_items.push_back (MenuElem (_("Export range"), mem_fun(*this, &Editor::export_range)));
|
||||
}
|
||||
|
||||
|
@ -2067,7 +2067,7 @@ public:
|
||||
int write_region_selection(RegionSelection&);
|
||||
bool write_region (string path, boost::shared_ptr<ARDOUR::AudioRegion>);
|
||||
void bounce_region_selection ();
|
||||
void bounce_range_selection (bool replace);
|
||||
void bounce_range_selection (bool replace, bool enable_processing);
|
||||
void external_edit_region ();
|
||||
|
||||
int write_audio_selection (TimeSelection&);
|
||||
|
@ -3688,7 +3688,7 @@ Editor::freeze_route ()
|
||||
}
|
||||
|
||||
void
|
||||
Editor::bounce_range_selection (bool replace)
|
||||
Editor::bounce_range_selection (bool replace, bool enable_processing)
|
||||
{
|
||||
if (selection->time.empty()) {
|
||||
return;
|
||||
@ -3723,7 +3723,7 @@ Editor::bounce_range_selection (bool replace)
|
||||
itt.progress = false;
|
||||
|
||||
XMLNode &before = playlist->get_state();
|
||||
boost::shared_ptr<Region> r = rtv->track()->bounce_range (start, start+cnt, itt);
|
||||
boost::shared_ptr<Region> r = rtv->track()->bounce_range (start, start+cnt, itt, enable_processing);
|
||||
|
||||
if (replace) {
|
||||
list<AudioRange> ranges;
|
||||
|
@ -53,13 +53,13 @@ class AudioTrack : public Track
|
||||
int use_diskstream (string name);
|
||||
int use_diskstream (const PBD::ID& id);
|
||||
|
||||
int export_stuff (BufferSet& bufs, nframes_t nframes, nframes_t end_frame);
|
||||
int export_stuff (BufferSet& bufs, nframes_t nframes, nframes_t end_frame, bool enable_processing = true);
|
||||
|
||||
void freeze (InterThreadInfo&);
|
||||
void unfreeze ();
|
||||
|
||||
boost::shared_ptr<Region> bounce (InterThreadInfo&);
|
||||
boost::shared_ptr<Region> bounce_range (nframes_t start, nframes_t end, InterThreadInfo&);
|
||||
boost::shared_ptr<Region> bounce_range (nframes_t start, nframes_t end, InterThreadInfo&, bool enable_processing);
|
||||
|
||||
int set_state(const XMLNode& node);
|
||||
|
||||
|
@ -66,7 +66,8 @@ public:
|
||||
void unfreeze ();
|
||||
|
||||
boost::shared_ptr<Region> bounce (InterThreadInfo&);
|
||||
boost::shared_ptr<Region> bounce_range (nframes_t start, nframes_t end, InterThreadInfo&);
|
||||
boost::shared_ptr<Region> bounce_range (nframes_t start, nframes_t end, InterThreadInfo&,
|
||||
bool enable_processing);
|
||||
|
||||
int set_state(const XMLNode& node);
|
||||
|
||||
|
@ -725,7 +725,8 @@ class Session : public PBD::StatefulDestructible, public boost::noncopyable
|
||||
/* flattening stuff */
|
||||
|
||||
boost::shared_ptr<Region> write_one_track (AudioTrack&, nframes_t start, nframes_t end,
|
||||
bool overwrite, vector<boost::shared_ptr<Source> >&, InterThreadInfo& wot);
|
||||
bool overwrite, vector<boost::shared_ptr<Source> >&, InterThreadInfo& wot,
|
||||
bool enable_processing = true);
|
||||
int freeze (InterThreadInfo&);
|
||||
|
||||
/* session-wide solo/mute/rec-enable */
|
||||
|
@ -78,7 +78,7 @@ class Track : public Route
|
||||
virtual void unfreeze () = 0;
|
||||
|
||||
virtual boost::shared_ptr<Region> bounce (InterThreadInfo&) = 0;
|
||||
virtual boost::shared_ptr<Region> bounce_range (nframes_t start, nframes_t end, InterThreadInfo&) = 0;
|
||||
virtual boost::shared_ptr<Region> bounce_range (nframes_t start, nframes_t end, InterThreadInfo&, bool enable_processing = true) = 0;
|
||||
|
||||
XMLNode& get_state();
|
||||
XMLNode& get_template();
|
||||
|
@ -722,7 +722,7 @@ AudioTrack::silent_roll (nframes_t nframes, nframes_t start_frame, nframes_t end
|
||||
}
|
||||
|
||||
int
|
||||
AudioTrack::export_stuff (BufferSet& buffers, nframes_t start, nframes_t nframes)
|
||||
AudioTrack::export_stuff (BufferSet& buffers, nframes_t start, nframes_t nframes, bool enable_processing)
|
||||
{
|
||||
gain_t gain_automation[nframes];
|
||||
gain_t gain_buffer[nframes];
|
||||
@ -761,6 +761,9 @@ AudioTrack::export_stuff (BufferSet& buffers, nframes_t start, nframes_t nframes
|
||||
}
|
||||
}
|
||||
|
||||
// If no processing is required, there's no need to go any further.
|
||||
if (!enable_processing)
|
||||
return 0;
|
||||
|
||||
/* note: only run processors during export. other layers in the machinery
|
||||
will already have checked that there are no external port processors.
|
||||
@ -830,10 +833,10 @@ AudioTrack::bounce (InterThreadInfo& itt)
|
||||
}
|
||||
|
||||
boost::shared_ptr<Region>
|
||||
AudioTrack::bounce_range (nframes_t start, nframes_t end, InterThreadInfo& itt)
|
||||
AudioTrack::bounce_range (nframes_t start, nframes_t end, InterThreadInfo& itt, bool enable_processing)
|
||||
{
|
||||
vector<boost::shared_ptr<Source> > srcs;
|
||||
return _session.write_one_track (*this, start, end, false, srcs, itt);
|
||||
return _session.write_one_track (*this, start, end, false, srcs, itt, enable_processing);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -635,7 +635,7 @@ MidiTrack::bounce (InterThreadInfo& itt)
|
||||
|
||||
|
||||
boost::shared_ptr<Region>
|
||||
MidiTrack::bounce_range (nframes_t start, nframes_t end, InterThreadInfo& itt)
|
||||
MidiTrack::bounce_range (nframes_t start, nframes_t end, InterThreadInfo& itt, bool enable_processing)
|
||||
{
|
||||
throw;
|
||||
//vector<MidiSource*> srcs;
|
||||
|
@ -4055,7 +4055,8 @@ Session::freeze (InterThreadInfo& itt)
|
||||
|
||||
boost::shared_ptr<Region>
|
||||
Session::write_one_track (AudioTrack& track, nframes_t start, nframes_t end,
|
||||
bool overwrite, vector<boost::shared_ptr<Source> >& srcs, InterThreadInfo& itt)
|
||||
bool overwrite, vector<boost::shared_ptr<Source> >& srcs,
|
||||
InterThreadInfo& itt, bool enable_processing)
|
||||
{
|
||||
boost::shared_ptr<Region> result;
|
||||
boost::shared_ptr<Playlist> playlist;
|
||||
@ -4140,7 +4141,7 @@ Session::write_one_track (AudioTrack& track, nframes_t start, nframes_t end,
|
||||
|
||||
this_chunk = min (to_do, chunk_size);
|
||||
|
||||
if (track.export_stuff (buffers, start, this_chunk)) {
|
||||
if (track.export_stuff (buffers, start, this_chunk, enable_processing)) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user