aboutsummaryrefslogtreecommitdiffstats
path: root/src/engine/SMFDriver.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2013-01-12 03:17:47 +0000
committerDavid Robillard <d@drobilla.net>2013-01-12 03:17:47 +0000
commite1a63732f796c8057751cb7f8ac98a595b91692e (patch)
tree764392d055901118ee285dd20f233ff33e0cd04a /src/engine/SMFDriver.cpp
parentbb62bf2c23ba84f547e37b70b3ef31b51ba987ab (diff)
downloadmachina-e1a63732f796c8057751cb7f8ac98a595b91692e.tar.gz
machina-e1a63732f796c8057751cb7f8ac98a595b91692e.tar.bz2
machina-e1a63732f796c8057751cb7f8ac98a595b91692e.zip
Bulk reformat.
git-svn-id: http://svn.drobilla.net/lad/trunk/machina@4929 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/engine/SMFDriver.cpp')
-rw-r--r--src/engine/SMFDriver.cpp49
1 files changed, 30 insertions, 19 deletions
diff --git a/src/engine/SMFDriver.cpp b/src/engine/SMFDriver.cpp
index 641baf9..a07f47d 100644
--- a/src/engine/SMFDriver.cpp
+++ b/src/engine/SMFDriver.cpp
@@ -49,11 +49,13 @@ SMFDriver::SMFDriver(Raul::Forge& forge, Raul::TimeUnit unit)
* @return the resulting machine.
*/
SharedPtr<Machine>
-SMFDriver::learn(const string& filename, unsigned track, double q, Raul::TimeDuration max_duration)
+SMFDriver::learn(const string& filename, unsigned track, double q,
+ Raul::TimeDuration max_duration)
{
//assert(q.unit() == max_duration.unit());
- SharedPtr<Machine> m(new Machine(max_duration.unit()));
- SharedPtr<MachineBuilder> builder = SharedPtr<MachineBuilder>(new MachineBuilder(m, q, false));
+ SharedPtr<Machine> m(new Machine(max_duration.unit()));
+ SharedPtr<MachineBuilder> builder = SharedPtr<MachineBuilder>(
+ new MachineBuilder(m, q, false));
SMFReader reader;
if (!reader.open(filename)) {
@@ -61,17 +63,19 @@ SMFDriver::learn(const string& filename, unsigned track, double q, Raul::TimeDur
return SharedPtr<Machine>();
}
- if (track > reader.num_tracks())
+ if (track > reader.num_tracks()) {
return SharedPtr<Machine>();
- else
+ } else {
learn_track(builder, reader, track, q, max_duration);
+ }
m->reset(NULL, m->time());
- if (m->nodes().size() > 1)
+ if (m->nodes().size() > 1) {
return m;
- else
+ } else {
return SharedPtr<Machine>();
+ }
}
/** Learn all tracks from a MIDI file into a single machine.
@@ -81,8 +85,9 @@ SMFDriver::learn(const string& filename, unsigned track, double q, Raul::TimeDur
SharedPtr<Machine>
SMFDriver::learn(const string& filename, double q, Raul::TimeStamp max_duration)
{
- SharedPtr<Machine> m(new Machine(max_duration.unit()));
- SharedPtr<MachineBuilder> builder = SharedPtr<MachineBuilder>(new MachineBuilder(m, q, false));
+ SharedPtr<Machine> m(new Machine(max_duration.unit()));
+ SharedPtr<MachineBuilder> builder = SharedPtr<MachineBuilder>(
+ new MachineBuilder(m, q, false));
SMFReader reader;
if (!reader.open(filename)) {
@@ -90,17 +95,18 @@ SMFDriver::learn(const string& filename, double q, Raul::TimeStamp max_duration)
return SharedPtr<Machine>();
}
- for (unsigned t=1; t <= reader.num_tracks(); ++t) {
+ for (unsigned t = 1; t <= reader.num_tracks(); ++t) {
builder->reset();
learn_track(builder, reader, t, q, max_duration);
}
m->reset(NULL, m->time());
- if (m->nodes().size() > 1)
+ if (m->nodes().size() > 1) {
return m;
- else
+ } else {
return SharedPtr<Machine>();
+ }
}
void
@@ -111,27 +117,30 @@ SMFDriver::learn_track(SharedPtr<MachineBuilder> builder,
Raul::TimeDuration max_duration)
{
const bool found_track = reader.seek_to_track(track);
- if (!found_track)
+ if (!found_track) {
return;
+ }
uint8_t buf[4];
uint32_t ev_size;
uint32_t ev_delta_time;
- uint64_t t = 0;
+ uint64_t t = 0;
double unquantized_t = 0;
while (reader.read_event(4, buf, &ev_size, &ev_delta_time) >= 0) {
unquantized_t += ev_delta_time;
- t = quantize(q, unquantized_t);
+ t = quantize(q, unquantized_t);
builder->set_time(TimeStamp(max_duration.unit(), (double)t));
- if ((!max_duration.is_zero()) && t > max_duration.to_double())
+ if ((!max_duration.is_zero()) && ( t > max_duration.to_double()) ) {
break;
+ }
- if (ev_size > 0)
+ if (ev_size > 0) {
builder->event(TimeStamp(max_duration.unit(), 0, 0), ev_size, buf);
+ }
}
builder->resolve();
@@ -141,9 +150,11 @@ void
SMFDriver::run(SharedPtr<Machine> machine, Raul::TimeStamp max_time)
{
// FIXME: unit kludge (tempo only)
- Context context(_forge, machine->time().unit().ppt(), _writer->unit().ppt(), 120.0);
+ Context context(_forge, machine->time().unit().ppt(),
+ _writer->unit().ppt(), 120.0);
context.set_sink(this);
- context.time().set_slice(TimeStamp(max_time.unit(), 0, 0), context.time().beats_to_ticks(max_time));
+ context.time().set_slice(TimeStamp(max_time.unit(), 0, 0),
+ context.time().beats_to_ticks(max_time));
machine->run(context, SharedPtr<UpdateBuffer>());
}