tweak wscript files to set PACKAGE in one place
[ardour.git] / libs / ardour / midi_region.cc
index f8640e01977b77553918b37a3b15f6e2c6261a9d..f501390c2403275764cc10c9feac424d3e151fd6 100644 (file)
 #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>
@@ -115,10 +117,10 @@ MidiRegion::~MidiRegion ()
 {
 }
 
-/** 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);
@@ -189,7 +191,7 @@ MidiRegion::master_read_at (MidiRingBuffer<framepos_t>& out, framepos_t position
 }
 
 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;
@@ -220,11 +222,9 @@ MidiRegion::_read_at (const SourceList& /*srcs*/, Evoral::EventSink<framepos_t>&
                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
@@ -246,8 +246,6 @@ MidiRegion::_read_at (const SourceList& /*srcs*/, Evoral::EventSink<framepos_t>&
                return 0; /* "read nothing" */
        }
 
-       _read_data_count += src->read_data_count();
-
        return to_read;
 }
 
@@ -296,6 +294,30 @@ MidiRegion::separate_by_channel (ARDOUR::Session&, vector< boost::shared_ptr<Reg
        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&)
 {
@@ -315,7 +337,7 @@ MidiRegion::model_changed ()
        if (!model()) {
                return;
        }
-       
+
        /* build list of filtered Parameters, being those whose automation state is not `Play' */
 
        _filtered_parameters.clear ();
@@ -342,14 +364,14 @@ MidiRegion::model_changed ()
 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);