#include <ardour/smf_source.h>
#include <ardour/session.h>
#include <ardour/midi_ring_buffer.h>
-#include <ardour/midi_util.h>
#include <ardour/tempo.h>
#include <ardour/audioengine.h>
#include <ardour/event_type_map.h>
{
_write_data_count = 0;
- EventTime time;
- EventType type;
- uint32_t size;
+ Evoral::EventTime time;
+ Evoral::EventType type;
+ uint32_t size;
size_t buf_capacity = 4;
uint8_t* buf = (uint8_t*)malloc(buf_capacity);
append_event_unlocked(Frames, ev);
- if (_model)
+ if (_model) {
_model->append(ev);
+ }
}
SMF::flush();
void
SMFSource::load_model(bool lock, bool force_reload)
{
- if (_writing)
+ if (_writing) {
return;
+ }
+
- if (lock)
+ if (lock) {
Glib::Mutex::Lock lm (_lock);
+ }
- if (_model && !force_reload && !_model->empty())
+ if (_model && !force_reload && !_model->empty()) {
return;
+ }
if (! _model) {
_model = boost::shared_ptr<MidiModel>(new MidiModel(this));
if (ret > 0) { // didn't skip (meta) event
// make ev.time absolute time in frames
- ev.time() = time * frames_per_beat / (EventTime)ppqn();
+ ev.time() = time * frames_per_beat / (Evoral::EventTime)ppqn();
ev.set_event_type(EventTypeMap::instance().midi_event_type(buf[0]));
_model->append(ev);
}
- if (ev.size() > scratch_size)
+ if (ev.size() > scratch_size) {
scratch_size = ev.size();
- else
+ } else {
ev.size() = scratch_size;
+ }
+ }
+
+ // set interpolation style to defaults, can be changed by the GUI later
+ Evoral::ControlSet::Controls controls = _model->controls();
+ for (Evoral::ControlSet::Controls::iterator c = controls.begin(); c != controls.end(); ++c) {
+ (*c).second->list()->set_interpolation(
+ EventTypeMap::instance().interpolation_of((*c).first));
}
_model->end_write(false);