#include "pbd/xml++.h"
#include "pbd/enumwriter.h"
-#include "ardour/midi_region.h"
-#include "ardour/session.h"
-#include "ardour/gain.h"
+#include "ardour/automation_control.h"
#include "ardour/dB.h"
-#include "ardour/playlist.h"
+#include "ardour/gain.h"
+#include "ardour/midi_model.h"
+#include "ardour/midi_region.h"
+#include "ardour/midi_ring_buffer.h"
#include "ardour/midi_source.h"
+#include "ardour/playlist.h"
#include "ardour/region_factory.h"
+#include "ardour/session.h"
#include "ardour/types.h"
-#include "ardour/midi_ring_buffer.h"
#include "i18n.h"
#include <locale.h>
{
}
-/** Create a new MidiRegion that has its own version of some/all of the Source used by another.
+/** Create a new MidiRegion that has its own version of some/all of the Source used by another.
*/
boost::shared_ptr<MidiRegion>
-MidiRegion::clone ()
+MidiRegion::clone () const
{
BeatsFramesConverter bfc (_session.tempo_map(), _position);
Evoral::MusicalTime const bbegin = bfc.from (_start);
}
framecnt_t
-MidiRegion::_read_at (const SourceList& /*srcs*/, Evoral::EventSink<framepos_t>& dst, framepos_t position, framecnt_t dur, uint32_t chan_n,
+MidiRegion::_read_at (const SourceList& /*srcs*/, Evoral::EventSink<framepos_t>& dst, framepos_t position, framecnt_t dur, uint32_t chan_n,
NoteMode mode, MidiStateTracker* tracker) const
{
frameoffset_t internal_offset = 0;
return 0; /* read nothing */
}
- _read_data_count = 0;
-
boost::shared_ptr<MidiSource> src = midi_source(chan_n);
src->set_note_mode(mode);
-
+
/*
cerr << "MR read @ " << position << " * " << to_read
<< " _position = " << _position
return 0; /* "read nothing" */
}
- _read_data_count += src->read_data_count();
-
return to_read;
}
return -1;
}
+boost::shared_ptr<Evoral::Control>
+MidiRegion::control (const Evoral::Parameter& id, bool create)
+{
+ return model()->control(id, create);
+}
+
+boost::shared_ptr<const Evoral::Control>
+MidiRegion::control (const Evoral::Parameter& id) const
+{
+ return model()->control(id);
+}
+
+boost::shared_ptr<MidiModel>
+MidiRegion::model()
+{
+ return midi_source()->model();
+}
+
+boost::shared_ptr<const MidiModel>
+MidiRegion::model() const
+{
+ return midi_source()->model();
+}
+
int
MidiRegion::exportme (ARDOUR::Session&, ARDOUR::ExportSpecification&)
{
if (!model()) {
return;
}
-
+
/* build list of filtered Parameters, being those whose automation state is not `Play' */
_filtered_parameters.clear ();
void
MidiRegion::model_contents_changed ()
{
- send_change (PropertyChange (Properties::midi_data));
+ send_change (PropertyChange (Properties::midi_data));
}
void
MidiRegion::model_automation_state_changed (Evoral::Parameter const & p)
{
/* Update our filtered parameters list after a change to a parameter's AutoState */
-
+
boost::shared_ptr<AutomationControl> ac = model()->automation_control (p);
assert (ac);