summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2010-12-21 00:04:58 +0000
committerDavid Robillard <d@drobilla.net>2010-12-21 00:04:58 +0000
commit384c418ae0181f413ae85b06d11b244352ee74a6 (patch)
tree41df0c4c841d6034c44172da8a58e043e1cecf81 /libs/ardour
parentfe79c4272531a426358f896053045f371da8baa7 (diff)
Set new (recorded) MIDI source length to length of entire capture (instead of length from start to last actual recorded event).
Precisely set length_beats of newly captured MIDI regions to source length in beats (no conversion). git-svn-id: svn://localhost/ardour2/branches/3.0@8317 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/ardour/midi_source.h2
-rw-r--r--libs/ardour/midi_diskstream.cc6
-rw-r--r--libs/ardour/midi_region.cc5
3 files changed, 9 insertions, 4 deletions
diff --git a/libs/ardour/ardour/midi_source.h b/libs/ardour/ardour/midi_source.h
index f13b71e0f1..c58452c044 100644
--- a/libs/ardour/ardour/midi_source.h
+++ b/libs/ardour/ardour/midi_source.h
@@ -96,6 +96,8 @@ class MidiSource : virtual public Source, public boost::enable_shared_from_this<
int set_state (const XMLNode&, int version);
bool length_mutable() const { return true; }
+
+ void set_length_beats(double l) { _length_beats = l; }
double length_beats() const { return _length_beats; }
virtual void load_model(bool lock=true, bool force_reload=false) = 0;
diff --git a/libs/ardour/midi_diskstream.cc b/libs/ardour/midi_diskstream.cc
index 7227c8ba2e..c3f85438db 100644
--- a/libs/ardour/midi_diskstream.cc
+++ b/libs/ardour/midi_diskstream.cc
@@ -968,6 +968,12 @@ MidiDiskstream::transport_stopped_wallclock (struct tm& /*when*/, time_t /*twhen
_write_source->mark_streaming_write_completed ();
+ /* set length in beats to entire capture length */
+
+ BeatsFramesConverter converter (_session.tempo_map(), capture_info.front()->start);
+ const double total_capture_beats = converter.from(total_capture);
+ _write_source->set_length_beats(total_capture_beats);
+
/* make it not a stub anymore */
_write_source->unstubify ();
diff --git a/libs/ardour/midi_region.cc b/libs/ardour/midi_region.cc
index cb1d178b8b..5cd08d98d5 100644
--- a/libs/ardour/midi_region.cc
+++ b/libs/ardour/midi_region.cc
@@ -72,11 +72,8 @@ MidiRegion::register_properties ()
/* Basic MidiRegion constructor (many channels) */
MidiRegion::MidiRegion (const SourceList& srcs)
: Region (srcs)
- , _length_beats (Properties::length_beats, (Evoral::MusicalTime) 0)
+ , _length_beats (Properties::length_beats, midi_source(0)->length_beats())
{
- _length_beats = midi_source(0)->length_beats();
- cout << "NEW MIDI REGION LENGTH BEATS: " << _length_beats << endl;
-
register_properties ();
midi_source(0)->ModelChanged.connect_same_thread (_source_connection, boost::bind (&MidiRegion::model_changed, this));