diff options
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r-- | libs/ardour/ardour/automatable.h | 8 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_model.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_region.h | 6 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_source.h | 10 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_track.h | 2 |
5 files changed, 24 insertions, 4 deletions
diff --git a/libs/ardour/ardour/automatable.h b/libs/ardour/ardour/automatable.h index 9b83705b0a..79bbec5199 100644 --- a/libs/ardour/ardour/automatable.h +++ b/libs/ardour/ardour/automatable.h @@ -24,6 +24,7 @@ #include <set> #include <string> #include <boost/shared_ptr.hpp> +#include "pbd/signals.h" #include "evoral/ControlSet.hpp" #include "ardour/types.h" @@ -94,6 +95,9 @@ public: int set_automation_state (const XMLNode&, Evoral::Parameter default_param); XMLNode& get_automation_state(); + /** Emitted when the automation state of one of our controls changes */ + PBD::Signal1<void, Evoral::Parameter> AutomationStateChanged; + protected: Session& _a_session; @@ -109,6 +113,10 @@ public: nframes_t _last_automation_snapshot; static nframes_t _automation_interval; + +private: + void automation_state_changed (Evoral::Parameter const &); + PBD::ScopedConnectionList _control_connections; ///< connections to our controls' signals }; diff --git a/libs/ardour/ardour/midi_model.h b/libs/ardour/ardour/midi_model.h index 9b2c66d5f0..f879c201ee 100644 --- a/libs/ardour/ardour/midi_model.h +++ b/libs/ardour/ardour/midi_model.h @@ -146,7 +146,7 @@ public: InsertMergePolicy insert_merge_policy () const; void set_insert_merge_policy (InsertMergePolicy); - + protected: int resolve_overlaps_unlocked (const NotePtr, void* arg = 0); diff --git a/libs/ardour/ardour/midi_region.h b/libs/ardour/ardour/midi_region.h index 568638ed21..ac65b86fc3 100644 --- a/libs/ardour/ardour/midi_region.h +++ b/libs/ardour/ardour/midi_region.h @@ -115,6 +115,12 @@ class MidiRegion : public Region void set_position_internal (framepos_t pos, bool allow_bbt_recompute); void switch_source(boost::shared_ptr<Source> source); + void model_changed (); + void model_automation_state_changed (Evoral::Parameter const &); + + std::set<Evoral::Parameter> _filtered_parameters; ///< parameters that we ask our source not to return when reading + PBD::ScopedConnection _model_connection; + PBD::ScopedConnection _source_connection; }; } /* namespace ARDOUR */ diff --git a/libs/ardour/ardour/midi_source.h b/libs/ardour/ardour/midi_source.h index 36c8548e20..0d0b744a95 100644 --- a/libs/ardour/ardour/midi_source.h +++ b/libs/ardour/ardour/midi_source.h @@ -63,7 +63,10 @@ class MidiSource : virtual public Source virtual nframes_t midi_read (Evoral::EventSink<nframes_t>& dst, sframes_t source_start, sframes_t start, nframes_t cnt, - sframes_t stamp_offset, sframes_t negative_stamp_offset, MidiStateTracker*) const; + sframes_t stamp_offset, + sframes_t negative_stamp_offset, + MidiStateTracker*, + std::set<Evoral::Parameter> const &) const; virtual nframes_t midi_write (MidiRingBuffer<nframes_t>& src, sframes_t source_start, @@ -111,9 +114,12 @@ class MidiSource : virtual public Source void set_note_mode(NoteMode mode); boost::shared_ptr<MidiModel> model() { return _model; } - void set_model(boost::shared_ptr<MidiModel> m) { _model = m; } + void set_model (boost::shared_ptr<MidiModel>); void drop_model(); + /** Emitted when a different MidiModel is set */ + PBD::Signal0<void> ModelChanged; + protected: virtual void flush_midi() = 0; diff --git a/libs/ardour/ardour/midi_track.h b/libs/ardour/ardour/midi_track.h index d181bea596..42446da70d 100644 --- a/libs/ardour/ardour/midi_track.h +++ b/libs/ardour/ardour/midi_track.h @@ -66,7 +66,7 @@ public: /** A control that will send "immediate" events to a MIDI track when twiddled */ struct MidiControl : public AutomationControl { MidiControl(MidiTrack* route, const Evoral::Parameter& param, - boost::shared_ptr<AutomationList> al = boost::shared_ptr<AutomationList>()) + boost::shared_ptr<AutomationList> al = boost::shared_ptr<AutomationList>()) : AutomationControl (route->session(), param, al) , _route (route) {} |