diff options
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/smf_source.cc | 3 | ||||
-rw-r--r-- | libs/evoral/evoral/SMF.hpp | 4 | ||||
-rw-r--r-- | libs/evoral/src/SMF.cpp | 23 |
3 files changed, 12 insertions, 18 deletions
diff --git a/libs/ardour/smf_source.cc b/libs/ardour/smf_source.cc index 64bd687418..cdf252c8cf 100644 --- a/libs/ardour/smf_source.cc +++ b/libs/ardour/smf_source.cc @@ -303,7 +303,7 @@ SMFSource::append_event_unlocked(EventTimeUnit unit, const Evoral::Event<double> delta_time = (uint32_t)((ev.time() - last_event_time()) * ppqn()); } - Evoral::SMF<double>::append_event_delta(delta_time, ev); + Evoral::SMF<double>::append_event_delta(delta_time, ev.size(), ev.buffer()); _last_ev_time = ev.time(); _write_data_count += ev.size(); @@ -619,7 +619,6 @@ SMFSource::load_model(bool lock, bool force_reload) return; } - if (lock) { Glib::Mutex::Lock lm (_lock); } diff --git a/libs/evoral/evoral/SMF.hpp b/libs/evoral/evoral/SMF.hpp index cdf3170d52..14046ab8f3 100644 --- a/libs/evoral/evoral/SMF.hpp +++ b/libs/evoral/evoral/SMF.hpp @@ -64,14 +64,12 @@ public: bool eof() const { assert(false); return true; } void begin_write(); - void append_event_delta(uint32_t delta_t, const Event<Time>& ev); + void append_event_delta(uint32_t delta_t, uint32_t size, const uint8_t* buf); void end_write() THROW_FILE_ERROR; void flush() {}; private: - static const uint16_t _ppqn = 19200; - std::string _path; smf_t* _smf; smf_track_t* _smf_track; diff --git a/libs/evoral/src/SMF.cpp b/libs/evoral/src/SMF.cpp index 7e5e5935ce..86110b6401 100644 --- a/libs/evoral/src/SMF.cpp +++ b/libs/evoral/src/SMF.cpp @@ -211,7 +211,7 @@ SMF<Time>::read_event(uint32_t* delta_t, uint32_t* size, uint8_t** buf) const *size = event_size; /*printf("SMF::read_event:\n"); - for (size_t i=0; i < *size; ++i) { + for (size_t i = 0; i < *size; ++i) { printf("%X ", (*buf)[i]); } printf("\n");*/ @@ -223,28 +223,25 @@ SMF<Time>::read_event(uint32_t* delta_t, uint32_t* size, uint8_t** buf) const template<typename Time> void -SMF<Time>::append_event_delta(uint32_t delta_t, const Event<Time>& ev) +SMF<Time>::append_event_delta(uint32_t delta_t, uint32_t size, const uint8_t* buf) { - assert(ev.size() > 0); + if (size == 0) { + return; + } /*printf("SMF::append_event_delta:\n"); - for (size_t i=0; i < ev.size(); ++i) { - printf("%X ", ev.buffer()[i]); + for (size_t i = 0; i < size; ++i) { + printf("%X ", buf[i]); } printf("\n");*/ smf_event_t* event; - event = smf_event_new_from_pointer((void *) ev.buffer(), int(ev.size())); + event = smf_event_new_from_pointer(buf, size); assert(event != NULL); - memcpy(event->midi_buffer, ev.buffer(), ev.size()); - assert(_smf_track); - smf_track_add_event_delta_pulses(_smf_track, event, int(delta_t)); - - if (ev.size() > 0) { - _empty = false; - } + smf_track_add_event_delta_pulses(_smf_track, event, delta_t); + _empty = false; } template<typename Time> |