From f564c924932e6ba3fbd949b37608c9d25b51de80 Mon Sep 17 00:00:00 2001 From: Ben Loftis Date: Mon, 13 Jul 2020 14:30:10 -0500 Subject: [PATCH] Prompt user for name of Range and Region bounces (libardour part) --- libs/ardour/ardour/audio_track.h | 5 +++-- libs/ardour/ardour/auditioner.h | 4 ++-- libs/ardour/ardour/midi_track.h | 5 +++-- libs/ardour/ardour/session.h | 2 +- libs/ardour/ardour/track.h | 4 ++-- libs/ardour/audio_track.cc | 10 +++++----- libs/ardour/midi_track.cc | 9 +++++---- libs/ardour/session.cc | 11 ++++++++--- 8 files changed, 29 insertions(+), 21 deletions(-) diff --git a/libs/ardour/ardour/audio_track.h b/libs/ardour/ardour/audio_track.h index 294a0495e7..bec0455bfb 100644 --- a/libs/ardour/ardour/audio_track.h +++ b/libs/ardour/ardour/audio_track.h @@ -44,9 +44,10 @@ class LIBARDOUR_API AudioTrack : public Track void unfreeze (); bool bounceable (boost::shared_ptr, bool include_endpoint) const; - boost::shared_ptr bounce (InterThreadInfo&); + boost::shared_ptr bounce (InterThreadInfo&, const std::string name); boost::shared_ptr bounce_range (samplepos_t start, samplepos_t end, InterThreadInfo&, - boost::shared_ptr endpoint, bool include_endpoint); + boost::shared_ptr endpoint, bool include_endpoint, + const std::string name); int export_stuff (BufferSet& bufs, samplepos_t start_sample, samplecnt_t nframes, boost::shared_ptr endpoint, bool include_endpoint, bool for_export, bool for_freeze, MidiStateTracker&); diff --git a/libs/ardour/ardour/auditioner.h b/libs/ardour/ardour/auditioner.h index 2ad2fba96d..a076170cc0 100644 --- a/libs/ardour/ardour/auditioner.h +++ b/libs/ardour/ardour/auditioner.h @@ -79,11 +79,11 @@ public: void freeze_me (InterThreadInfo&) {} void unfreeze () {} - boost::shared_ptr bounce (InterThreadInfo&) { + boost::shared_ptr bounce (InterThreadInfo&, const std::string name) { return boost::shared_ptr (); } - boost::shared_ptr bounce_range (samplepos_t, samplepos_t, InterThreadInfo&, boost::shared_ptr, bool) { + boost::shared_ptr bounce_range (samplepos_t, samplepos_t, InterThreadInfo&, boost::shared_ptr, bool, const std::string) { return boost::shared_ptr (); } diff --git a/libs/ardour/ardour/midi_track.h b/libs/ardour/ardour/midi_track.h index 371c82b36a..36dd9af177 100644 --- a/libs/ardour/ardour/midi_track.h +++ b/libs/ardour/ardour/midi_track.h @@ -53,12 +53,13 @@ public: void unfreeze (); bool bounceable (boost::shared_ptr, bool) const { return false; } - boost::shared_ptr bounce (InterThreadInfo&); + boost::shared_ptr bounce (InterThreadInfo&, const std::string name); boost::shared_ptr bounce_range (samplepos_t start, samplepos_t end, InterThreadInfo& iti, boost::shared_ptr endpoint, - bool include_endpoint); + bool include_endpoint, + const std::string name); int export_stuff (BufferSet& bufs, samplepos_t start_sample, diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index 19e1b87bf4..f1d8d511f1 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -913,7 +913,7 @@ public: boost::shared_ptr write_one_track (Track&, samplepos_t start, samplepos_t end, bool overwrite, std::vector >&, InterThreadInfo& wot, boost::shared_ptr endpoint, - bool include_endpoint, bool for_export, bool for_freeze); + bool include_endpoint, bool for_export, bool for_freeze, const std::string name); int freeze_all (InterThreadInfo&); /* session-wide solo/mute/rec-enable */ diff --git a/libs/ardour/ardour/track.h b/libs/ardour/ardour/track.h index e4c3124920..2951af10bc 100644 --- a/libs/ardour/ardour/track.h +++ b/libs/ardour/ardour/track.h @@ -96,7 +96,7 @@ public: * @param itt asynchronous progress report and cancel * @return a new audio region (or nil in case of error) */ - virtual boost::shared_ptr bounce (InterThreadInfo& itt) = 0; + virtual boost::shared_ptr bounce (InterThreadInfo& itt, const std::string name) = 0; /** Bounce the given range to a new audio region. * @param start start time (in samples) @@ -107,7 +107,7 @@ public: * @return a new audio region (or nil in case of error) */ virtual boost::shared_ptr bounce_range (samplepos_t start, samplepos_t end, InterThreadInfo& itt, - boost::shared_ptr endpoint, bool include_endpoint) = 0; + boost::shared_ptr endpoint, bool include_endpoint, const std::string name) = 0; virtual int export_stuff (BufferSet& bufs, samplepos_t start_sample, samplecnt_t nframes, boost::shared_ptr endpoint, bool include_endpoint, bool for_export, bool for_freeze, MidiStateTracker&) = 0; diff --git a/libs/ardour/audio_track.cc b/libs/ardour/audio_track.cc index 68a9951c70..e801cb5f30 100644 --- a/libs/ardour/audio_track.cc +++ b/libs/ardour/audio_track.cc @@ -292,17 +292,17 @@ AudioTrack::bounceable (boost::shared_ptr endpoint, bool include_endp } boost::shared_ptr -AudioTrack::bounce (InterThreadInfo& itt) +AudioTrack::bounce (InterThreadInfo& itt, const std::string name) { - return bounce_range (_session.current_start_sample(), _session.current_end_sample(), itt, main_outs(), false); + return bounce_range (_session.current_start_sample(), _session.current_end_sample(), itt, main_outs(), false, name); } boost::shared_ptr AudioTrack::bounce_range (samplepos_t start, samplepos_t end, InterThreadInfo& itt, - boost::shared_ptr endpoint, bool include_endpoint) + boost::shared_ptr endpoint, bool include_endpoint, const std::string name) { vector > srcs; - return _session.write_one_track (*this, start, end, false, srcs, itt, endpoint, include_endpoint, false, false); + return _session.write_one_track (*this, start, end, false, srcs, itt, endpoint, include_endpoint, false, false, name); } void @@ -345,7 +345,7 @@ AudioTrack::freeze_me (InterThreadInfo& itt) boost::shared_ptr res; if ((res = _session.write_one_track (*this, _session.current_start_sample(), _session.current_end_sample(), - true, srcs, itt, main_outs(), false, false, true)) == 0) { + true, srcs, itt, main_outs(), false, false, true, "")) == 0) { return; } diff --git a/libs/ardour/midi_track.cc b/libs/ardour/midi_track.cc index 2a315d1035..6f3cde45ac 100644 --- a/libs/ardour/midi_track.cc +++ b/libs/ardour/midi_track.cc @@ -539,9 +539,9 @@ MidiTrack::export_stuff (BufferSet& buffers, } boost::shared_ptr -MidiTrack::bounce (InterThreadInfo& itt) +MidiTrack::bounce (InterThreadInfo& itt, const std::string name) { - return bounce_range (_session.current_start_sample(), _session.current_end_sample(), itt, main_outs(), false); + return bounce_range (_session.current_start_sample(), _session.current_end_sample(), itt, main_outs(), false, name); } boost::shared_ptr @@ -549,10 +549,11 @@ MidiTrack::bounce_range (samplepos_t start, samplepos_t end, InterThreadInfo& itt, boost::shared_ptr endpoint, - bool include_endpoint) + bool include_endpoint, + const std::string name) { vector > srcs; - return _session.write_one_track (*this, start, end, false, srcs, itt, endpoint, include_endpoint, false, false); + return _session.write_one_track (*this, start, end, false, srcs, itt, endpoint, include_endpoint, false, false, name); } void diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index b485f70e0f..3436d36bde 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -5672,7 +5672,7 @@ Session::write_one_track (Track& track, samplepos_t start, samplepos_t end, bool /*overwrite*/, vector >& srcs, InterThreadInfo& itt, boost::shared_ptr endpoint, bool include_endpoint, - bool for_export, bool for_freeze) + bool for_export, bool for_freeze, const std::string name) { boost::shared_ptr result; boost::shared_ptr playlist; @@ -5731,11 +5731,15 @@ Session::write_one_track (Track& track, samplepos_t start, samplepos_t end, goto out; } - legal_playlist_name = legalize_for_path (playlist->name()); + if (name.length() > 0) { + /*if the user passed in a name, we will use it, and also prepend the resulting sources with that name*/ + legal_playlist_name.append(legalize_for_path (name) + "-"); + } + + legal_playlist_name.append(legalize_for_path(playlist->name())); for (uint32_t chan_n = 0; chan_n < diskstream_channels.n(data_type); ++chan_n) { - string base_name = string_compose ("%1-%2-bounce", playlist->name(), chan_n); string path = ((data_type == DataType::AUDIO) ? new_audio_source_path (legal_playlist_name, diskstream_channels.n_audio(), chan_n, true) : new_midi_source_path (legal_playlist_name)); @@ -5918,6 +5922,7 @@ Session::write_one_track (Track& track, samplepos_t start, samplepos_t end, result = RegionFactory::create (srcs, plist, true); + result->set_name((name.length() != 0) ? name : legal_playlist_name); /*setting name in the properties didn't seem to work, but this does*/ } out: