mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-10 15:36:24 +01:00
(Untested) loop recording support in MIDI Diskstream (fix compilation broken by loop recording changes).
git-svn-id: svn://localhost/ardour2/trunk@2036 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
e9b1b7110b
commit
72b0e4399c
2 changed files with 32 additions and 0 deletions
|
|
@ -127,6 +127,7 @@ class MidiDiskstream : public Diskstream
|
|||
|
||||
void finish_capture (bool rec_monitors_input);
|
||||
void transport_stopped (struct tm&, time_t, bool abort);
|
||||
void transport_looped (nframes_t transport_frame);
|
||||
|
||||
void init (Diskstream::Flag);
|
||||
|
||||
|
|
@ -145,6 +146,8 @@ class MidiDiskstream : public Diskstream
|
|||
void engage_record_enable ();
|
||||
void disengage_record_enable ();
|
||||
|
||||
/* FIXME: too much code duplication in this class because of lack of ChannelInfo */
|
||||
|
||||
MidiRingBuffer* _playback_buf;
|
||||
MidiRingBuffer* _capture_buf;
|
||||
MidiPort* _source_port;
|
||||
|
|
|
|||
|
|
@ -1106,6 +1106,35 @@ MidiDiskstream::transport_stopped (struct tm& when, time_t twhen, bool abort_cap
|
|||
capture_start_frame = 0;
|
||||
}
|
||||
|
||||
void
|
||||
MidiDiskstream::transport_looped (nframes_t transport_frame)
|
||||
{
|
||||
if (was_recording) {
|
||||
|
||||
// adjust the capture length knowing that the data will be recorded to disk
|
||||
// only necessary after the first loop where we're recording
|
||||
if (capture_info.size() == 0) {
|
||||
capture_captured += _capture_offset;
|
||||
|
||||
if (_alignment_style == ExistingMaterial) {
|
||||
capture_captured += _session.worst_output_latency();
|
||||
} else {
|
||||
capture_captured += _roll_delay;
|
||||
}
|
||||
}
|
||||
|
||||
finish_capture (true);
|
||||
|
||||
// the next region will start recording via the normal mechanism
|
||||
// we'll set the start position to the current transport pos
|
||||
// no latency adjustment or capture offset needs to be made, as that already happened the first time
|
||||
capture_start_frame = transport_frame;
|
||||
first_recordable_frame = transport_frame; // mild lie
|
||||
last_recordable_frame = max_frames;
|
||||
was_recording = true;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MidiDiskstream::finish_capture (bool rec_monitors_input)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue