31 namespace Evoral {
template<
typename T>
class Event; }
52 return safe_midi_file_extension(path);
void destroy_model(const WriterLock &lock)
static bool valid_midi_file(const std::string &path)
void ensure_disk_file(const WriterLock &lock)
SMF::UsedChannels used_midi_channels()
void set_path(const std::string &newpath)
XMLNode & get_state() const
Temporal::Beats duration() const
Temporal::Beats _last_ev_time_beats
void append_event_samples(const WriterLock &lock, const Evoral::Event< samplepos_t > &ev, samplepos_t source_start)
static bool safe_midi_file_extension(const std::string &path)
samplepos_t _last_ev_time_samples
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
timecnt_t write_unlocked(const WriterLock &lock, MidiRingBuffer< samplepos_t > &src, timepos_t const &position, timecnt_t const &cnt)
void mark_streaming_midi_write_started(const WriterLock &lock, NoteMode mode)
SMFSource(Session &session, const std::string &path, Source::Flag flags)
SMFSource(Session &session, const std::string &path)
void mark_midi_streaming_write_completed(const WriterLock &lock, Evoral::Sequence< Temporal::Beats >::StuckNoteOption, Temporal::timecnt_t const &duration)
bool safe_file_extension(const std::string &path) const
void render(const ReaderLock &lock, Evoral::EventSink< Temporal::Beats > &dst)
int set_state(const XMLNode &, int version)
SMFSource(Session &session, const XMLNode &, bool must_exist=false)
timepos_t _smf_last_read_time
void append_event_beats(const WriterLock &lock, const Evoral::Event< Temporal::Beats > &ev)
void load_model(const WriterLock &lock, bool force_reload=false)
timepos_t _smf_last_read_end
void mark_streaming_write_completed(const WriterLock &lock, Temporal::timecnt_t const &duration)
void load_model_unlocked(bool force_reload=false)
void update_length(timepos_t const &dur)
void flush_midi(const WriterLock &lock)
Glib::Threads::RWLock::ReaderLock ReaderLock
Glib::Threads::RWLock::WriterLock WriterLock
void session(lua_State *L)
PBD::PropertyDescriptor< timepos_t > start
Temporal::samplepos_t samplepos_t