summaryrefslogtreecommitdiff
path: root/libs/ardour/audio_diskstream.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-01-19 13:03:57 +0100
committerRobin Gareus <robin@gareus.org>2017-01-19 13:05:54 +0100
commit9c08a403c4c0a169acf44c741af1c40b16e23795 (patch)
treea237c82529b9e2bfddbac109336b0c807851c94e /libs/ardour/audio_diskstream.cc
parente959a762b5a0d09b92a95e2171a22d86b655a1c5 (diff)
Add alternative preroll record mode:
* Start recording at preroll, trim region to skip preroll at rec-stop * Keep old punch-in rec-at-preroll API for tape-tracks (later)
Diffstat (limited to 'libs/ardour/audio_diskstream.cc')
-rw-r--r--libs/ardour/audio_diskstream.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/libs/ardour/audio_diskstream.cc b/libs/ardour/audio_diskstream.cc
index 4bbcab419d..9dde222651 100644
--- a/libs/ardour/audio_diskstream.cc
+++ b/libs/ardour/audio_diskstream.cc
@@ -1641,6 +1641,7 @@ AudioDiskstream::transport_stopped_wallclock (struct tm& when, time_t twhen, boo
_playlist->set_capture_insertion_in_progress (true);
_playlist->freeze ();
+ const framepos_t preroll_off = _session.preroll_record_trim_len ();
for (buffer_position = c->front()->write_source->last_capture_start_frame(), ci = capture_info.begin(); ci != capture_info.end(); ++ci) {
string region_name;
@@ -1660,6 +1661,9 @@ AudioDiskstream::transport_stopped_wallclock (struct tm& when, time_t twhen, boo
boost::shared_ptr<Region> rx (RegionFactory::create (srcs, plist));
region = boost::dynamic_pointer_cast<AudioRegion> (rx);
+ if (preroll_off > 0) {
+ region->trim_front (buffer_position + preroll_off);
+ }
}
catch (failed_constructor& err) {
@@ -1669,7 +1673,7 @@ AudioDiskstream::transport_stopped_wallclock (struct tm& when, time_t twhen, boo
i_am_the_modifier++;
- _playlist->add_region (region, (*ci)->start, 1, non_layered());
+ _playlist->add_region (region, (*ci)->start + preroll_off, 1, non_layered());
_playlist->set_layer (region, DBL_MAX);
i_am_the_modifier--;