summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2009-02-14 22:52:38 +0000
committerDavid Robillard <d@drobilla.net>2009-02-14 22:52:38 +0000
commitd0cc3120ae1d2f58942a6cdd1120dd0de1510aba (patch)
tree623407bded1da077943937da8282c0911340e752 /libs
parentea37584cac7cee5b808e6cd84519517b79c1da69 (diff)
Make SMF::append_event_delta take a buffer and a size rather than an Event (no point, more generic, etc.).
git-svn-id: svn://localhost/ardour2/branches/3.0@4567 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/smf_source.cc3
-rw-r--r--libs/evoral/evoral/SMF.hpp4
-rw-r--r--libs/evoral/src/SMF.cpp23
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>