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();
return;
}
-
if (lock) {
Glib::Mutex::Lock lm (_lock);
}
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;
*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");*/
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>