fix start, length/position for recorded MIDI regions
Note that we should really set the position value as part of the length, but then Playlist::add_region() would need to drop its second argument (position). Maybe in a future commit
This commit is contained in:
parent
fed449d54d
commit
af4ba1cc01
|
@ -983,9 +983,25 @@ Track::use_captured_midi_sources (SourceList& srcs, CaptureInfos const & capture
|
||||||
|
|
||||||
/* start of this region is the offset between the start of its capture and the start of the whole pass */
|
/* start of this region is the offset between the start of its capture and the start of the whole pass */
|
||||||
samplecnt_t start_off = (*ci)->start - initial_capture + (*ci)->loop_offset;
|
samplecnt_t start_off = (*ci)->start - initial_capture + (*ci)->loop_offset;
|
||||||
#warning NUTEMPO thinkme MIDI region with start & length in samples
|
timepos_t s;
|
||||||
plist.add (Properties::start, timecnt_t (start_off, timepos_t::zero (false)));
|
timecnt_t l;
|
||||||
plist.add (Properties::length, timecnt_t ((*ci)->samples, timepos_t::zero (false)));
|
|
||||||
|
if (time_domain() == Temporal::BeatTime) {
|
||||||
|
|
||||||
|
const timepos_t ss (start_off);
|
||||||
|
const timecnt_t ll ((*ci)->samples, ss);
|
||||||
|
|
||||||
|
s = timepos_t (ss.beats());
|
||||||
|
l = timecnt_t (ll.beats(), s);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
s = timepos_t (start_off);
|
||||||
|
l = timecnt_t ((*ci)->samples, s);
|
||||||
|
}
|
||||||
|
|
||||||
|
plist.add (Properties::start, s);
|
||||||
|
plist.add (Properties::length, l);
|
||||||
plist.add (Properties::name, region_name);
|
plist.add (Properties::name, region_name);
|
||||||
|
|
||||||
boost::shared_ptr<Region> rx (RegionFactory::create (srcs, plist));
|
boost::shared_ptr<Region> rx (RegionFactory::create (srcs, plist));
|
||||||
|
@ -996,15 +1012,16 @@ Track::use_captured_midi_sources (SourceList& srcs, CaptureInfos const & capture
|
||||||
}
|
}
|
||||||
|
|
||||||
catch (failed_constructor& err) {
|
catch (failed_constructor& err) {
|
||||||
error << _("MidiDiskstream: could not create region for captured midi!") << endmsg;
|
error << string_compose (_("%1: could not create region for captured data!"), name()) << endmsg;
|
||||||
continue; /* XXX is this OK? */
|
continue; /* XXX is this OK? */
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef NDEBUG
|
if (time_domain() == Temporal::BeatTime) {
|
||||||
cerr << "add new region, len = " << (*ci)->samples << " @ " << (*ci)->start << endl;
|
const timepos_t b ((*ci)->start + preroll_off);
|
||||||
#endif
|
pl->add_region (midi_region, timepos_t (b.beats()), 1, _session.config.get_layered_record_mode ());
|
||||||
|
} else {
|
||||||
pl->add_region (midi_region, timepos_t ((*ci)->start + preroll_off), 1, _session.config.get_layered_record_mode ());
|
pl->add_region (midi_region, timepos_t ((*ci)->start + preroll_off), 1, _session.config.get_layered_record_mode ());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pl->thaw ();
|
pl->thaw ();
|
||||||
|
|
Loading…
Reference in New Issue
Block a user