summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_diskstream.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-01-18 15:15:48 +0100
committerRobin Gareus <robin@gareus.org>2017-01-18 15:15:48 +0100
commitefd10abdfb54bb1dd56de0aa01278805f5fbf332 (patch)
treed25ed31bdd75b77842af782b6e97738e663ca264 /libs/ardour/midi_diskstream.cc
parentcf31233cd1503f7f3818c6bbeb6f5bd427144f80 (diff)
Implement record with preroll
Diffstat (limited to 'libs/ardour/midi_diskstream.cc')
-rw-r--r--libs/ardour/midi_diskstream.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/libs/ardour/midi_diskstream.cc b/libs/ardour/midi_diskstream.cc
index 13c0cdd9e8..9e784cbd38 100644
--- a/libs/ardour/midi_diskstream.cc
+++ b/libs/ardour/midi_diskstream.cc
@@ -367,7 +367,7 @@ MidiDiskstream::process (BufferSet& bufs, framepos_t transport_frame, pframes_t
adjust_capture_position = 0;
- if (nominally_recording || (re && was_recording && _session.get_record_enabled() && _session.config.get_punch_in())) {
+ if (nominally_recording || (re && was_recording && _session.get_record_enabled() && (_session.config.get_punch_in() || _session.preroll_record_enabled()))) {
Evoral::OverlapType ot = Evoral::coverage (first_recordable_frame, last_recordable_frame, transport_frame, transport_frame + nframes);
// XXX should this be transport_frame + nframes - 1 ? coverage() expects its parameter ranges to include their end points
@@ -1238,7 +1238,9 @@ MidiDiskstream::get_state ()
Location* pi;
- if (_session.config.get_punch_in() && ((pi = _session.locations()->auto_punch_location()) != 0)) {
+ if (_session.preroll_record_enabled ()) {
+ snprintf (buf, sizeof (buf), "%" PRId64, _session.preroll_record_in ());
+ } else if (_session.config.get_punch_in() && ((pi = _session.locations()->auto_punch_location()) != 0)) {
snprintf (buf, sizeof (buf), "%" PRId64, pi->start());
} else {
snprintf (buf, sizeof (buf), "%" PRId64, _session.transport_frame());