27 #include <glibmm/threads.h>
44 class MidiChannelFilter;
46 class MidiNoteTracker;
70 std::shared_ptr<MidiSource> newsrc,
84 std::shared_ptr<MidiSource> newsrc,
110 const std::set<Evoral::Parameter>& filtered);
185 std::shared_ptr<MidiModel>
model() {
return _model; }
virtual timecnt_t read_unlocked(const ReaderLock &lock, Evoral::EventSink< samplepos_t > &dst, timepos_t const &position, timepos_t const &start, timecnt_t const &cnt, Temporal::Range *loop_range, MidiNoteTracker *tracker, MidiChannelFilter *filter) const =0
AutoState automation_state_of(Evoral::Parameter const &) const
InterpolationStyleMap _interpolation_style
PBD::Signal< void()> ModelChanged
PBD::Signal< void(Evoral::Parameter, AutoState)> AutomationStateChanged
virtual void mark_midi_streaming_write_completed(const WriterLock &lock, Evoral::Sequence< Temporal::Beats >::StuckNoteOption stuck_option, Temporal::timecnt_t const &when)
samplecnt_t _capture_length
std::shared_ptr< MidiModel > model()
virtual timecnt_t midi_read(const ReaderLock &lock, Evoral::EventSink< samplepos_t > &dst, timepos_t const &source_start, timepos_t const &start, timecnt_t const &cnt, Temporal::Range *loop_range, MidiCursor &cursor, MidiNoteTracker *tracker, MidiChannelFilter *filter, const std::set< Evoral::Parameter > &filtered)
void copy_interpolation_from(std::shared_ptr< MidiSource >)
bool length_mutable() const
virtual void mark_streaming_write_started(const WriterLock &lock)
std::map< Evoral::Parameter, AutoState > AutomationStateMap
XMLNode & get_state() const
void set_interpolation_of(Evoral::Parameter const &, AutomationList::InterpolationStyle)
virtual void load_model(const WriterLock &lock, bool force_reload=false)=0
virtual void append_event_samples(const WriterLock &lock, const Evoral::Event< samplepos_t > &ev, samplepos_t source_start)=0
void copy_interpolation_from(MidiSource *)
virtual void append_event_beats(const WriterLock &lock, const Evoral::Event< Temporal::Beats > &ev)=0
PBD::Signal< void(bool)> Invalidated
virtual void mark_streaming_midi_write_started(const WriterLock &lock, NoteMode mode)
virtual void mark_streaming_write_completed(const WriterLock &lock, Temporal::timecnt_t const &duration)
void set_model(const WriterLock &lock, std::shared_ptr< MidiModel >)
std::map< Evoral::Parameter, AutomationList::InterpolationStyle > InterpolationStyleMap
AutomationList::InterpolationStyle interpolation_of(Evoral::Parameter const &) const
void copy_automation_state_from(std::shared_ptr< MidiSource >)
virtual void render(const ReaderLock &lock, Evoral::EventSink< Temporal::Beats > &dst)=0
virtual timecnt_t midi_write(const WriterLock &lock, MidiRingBuffer< samplepos_t > &source, timepos_t const &source_start, timecnt_t const &cnt)
virtual timecnt_t write_unlocked(const WriterLock &lock, MidiRingBuffer< samplepos_t > &source, timepos_t const &position, timecnt_t const &cnt)=0
int write_to(const ReaderLock &lock, std::shared_ptr< MidiSource > newsrc, Temporal::Beats begin=Temporal::Beats(), Temporal::Beats end=std::numeric_limits< Temporal::Beats >::max())
int export_write_to(const ReaderLock &lock, std::shared_ptr< MidiSource > newsrc, Temporal::Beats begin, Temporal::Beats end)
virtual void destroy_model(const WriterLock &lock)=0
PBD::Signal< void(Evoral::Parameter, AutomationList::InterpolationStyle)> InterpolationChanged
MidiSource(Session &session, const XMLNode &)
virtual void flush_midi(const WriterLock &lock)=0
void drop_model(const WriterLock &lock)
void copy_automation_state_from(MidiSource *)
MidiSource(Session &session, std::string name, Source::Flag flags=Source::Flag(0))
std::shared_ptr< MidiModel > _model
void set_note_mode(const WriterLock &lock, NoteMode mode)
void mark_write_starting_now(timepos_t const &position, samplecnt_t capture_length)
void set_automation_state_of(Evoral::Parameter const &, AutoState)
void invalidate(const WriterLock &lock)
virtual void session_saved()
int set_state(const XMLNode &, int version)
AutomationStateMap _automation_state
Glib::Threads::RWLock::ReaderLock ReaderLock
Glib::Threads::RWLock::WriterLock WriterLock
GtkImageIconNameData name
void session(lua_State *L)
PBD::PropertyDescriptor< timepos_t > start
Temporal::samplecnt_t samplecnt_t
Temporal::samplepos_t samplepos_t
static Temporal::Beats max()