aboutsummaryrefslogtreecommitdiffstats
path: root/src/engine
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/LearnRequest.cpp3
-rw-r--r--src/engine/Loader.cpp4
-rw-r--r--src/engine/Machine.cpp4
-rw-r--r--src/engine/MachineBuilder.cpp12
-rw-r--r--src/engine/MidiAction.cpp2
-rw-r--r--src/engine/Node.cpp5
-rw-r--r--src/engine/Problem.cpp2
-rw-r--r--src/engine/SMFDriver.cpp24
-rw-r--r--src/engine/SMFReader.cpp4
-rw-r--r--src/engine/SMFWriter.cpp2
10 files changed, 33 insertions, 29 deletions
diff --git a/src/engine/LearnRequest.cpp b/src/engine/LearnRequest.cpp
index eabf568..81ef0e3 100644
--- a/src/engine/LearnRequest.cpp
+++ b/src/engine/LearnRequest.cpp
@@ -55,8 +55,7 @@ LearnRequest::finish(TimeStamp time)
_node->set_enter_action(_enter_action);
_node->set_exit_action(_exit_action);
- //TimeDuration duration = quantize(_quantization, time - _start_time);
- //_node->set_duration(duration);
+ _node->set_duration(time - _start_time);
}
}
diff --git a/src/engine/Loader.cpp b/src/engine/Loader.cpp
index 1a85e29..32e8d19 100644
--- a/src/engine/Loader.cpp
+++ b/src/engine/Loader.cpp
@@ -178,7 +178,7 @@ Loader::load(const Glib::ustring& uri)
Created::iterator tail_i = created.find(tail);
Created::iterator head_i = created.find(head);
- if (( tail_i != created.end()) && ( head_i != created.end()) ) {
+ if (tail_i != created.end() && head_i != created.end()) {
const SharedPtr<Node> tail = tail_i->second;
const SharedPtr<Node> head = head_i->second;
@@ -193,7 +193,7 @@ Loader::load(const Glib::ustring& uri)
}
- if (machine && ( machine->nodes().size() > 0) ) {
+ if (machine && machine->nodes().size() > 0) {
machine->reset(NULL, machine->time());
return machine;
} else {
diff --git a/src/engine/Machine.cpp b/src/engine/Machine.cpp
index 0792331..4b548a7 100644
--- a/src/engine/Machine.cpp
+++ b/src/engine/Machine.cpp
@@ -275,8 +275,8 @@ Machine::exit_node(Context& context,
s != node->edges().end(); ++s) {
if (!(*s)->head()->is_active()
- && ( rand_normal > range_min)
- && ( rand_normal < range_min + (*s)->probability()) ) {
+ && rand_normal > range_min
+ && rand_normal < range_min + (*s)->probability()) {
enter_node(context, (*s)->head(), updates);
break;
diff --git a/src/engine/MachineBuilder.cpp b/src/engine/MachineBuilder.cpp
index 8bdd5d4..bb8f7c2 100644
--- a/src/engine/MachineBuilder.cpp
+++ b/src/engine/MachineBuilder.cpp
@@ -73,7 +73,7 @@ MachineBuilder::set_node_duration(SharedPtr<Node> node,
Raul::TimeStamp q_dur = quantize(TimeStamp(d.unit(), _quantization), d);
// Never quantize a note to duration 0
- if (q_dur.is_zero() && ( node->enter_action() || node->exit_action() )) {
+ if (q_dur.is_zero() && (node->enter_action() || node->exit_action())) {
q_dur = _quantization; // Round up
}
node->set_duration(q_dur);
@@ -223,9 +223,9 @@ MachineBuilder::event(Raul::TimeStamp time_offset,
// Trim useless delay node if possible (these appear after poly sections)
if (is_delay_node(_connect_node)
&& _connect_node->duration().is_zero()
- && ( _connect_node->edges().size() == 1)
- && ( (*_connect_node->edges().begin())->head() ==
- resolved) ) {
+ && (_connect_node->edges().size() == 1)
+ && ((*_connect_node->edges().begin())->head() ==
+ resolved)) {
_connect_node->edges().clear();
assert(_connect_node->edges().empty());
@@ -290,8 +290,8 @@ MachineBuilder::resolve()
const size_t ev_size = action->event_size();
const unsigned char* ev = action->event();
- if (( ev_size == 3)
- && ( (ev[0] & 0xF0) == LV2_MIDI_MSG_NOTE_ON) ) {
+ if (ev_size == 3 &&
+ (ev[0] & 0xF0) == LV2_MIDI_MSG_NOTE_ON) {
unsigned char note_off[3]
= { ((LV2_MIDI_MSG_NOTE_OFF & 0xF0) | (ev[0] & 0x0F)),
ev[1],
diff --git a/src/engine/MidiAction.cpp b/src/engine/MidiAction.cpp
index a646f67..268279f 100644
--- a/src/engine/MidiAction.cpp
+++ b/src/engine/MidiAction.cpp
@@ -62,7 +62,7 @@ MidiAction::set_event(size_t size, const byte* new_event)
byte* const event = _event.load();
if (size <= _max_size) {
_event = NULL;
- if (( size > 0) && new_event) {
+ if (size > 0 && new_event) {
memcpy(event, new_event, size);
}
_size = size;
diff --git a/src/engine/Node.cpp b/src/engine/Node.cpp
index c0e4654..4de00d2 100644
--- a/src/engine/Node.cpp
+++ b/src/engine/Node.cpp
@@ -42,9 +42,8 @@ Node::Node(TimeDuration duration, bool initial)
{}
Node::Node(const Node& copy)
- : Stateful()
- , // don't copy RDF ID
- _enter_time(copy._enter_time)
+ : Stateful() // don't copy RDF ID
+ , _enter_time(copy._enter_time)
, _duration(copy._duration)
, _enter_action(ActionFactory::copy(copy._enter_action))
, _exit_action(ActionFactory::copy(copy._exit_action))
diff --git a/src/engine/Problem.cpp b/src/engine/Problem.cpp
index 5c5992d..2db4f45 100644
--- a/src/engine/Problem.cpp
+++ b/src/engine/Problem.cpp
@@ -357,7 +357,7 @@ Problem::distance(const std::vector<uint8_t>& source,
// Enhanced Dynamic Programming ASM Algorithm"
// (http://www.acm.org/~hlb/publications/asm/asm.html)
- if (( i > 2) && ( j > 2) ) {
+ if (i > 2 && j > 2) {
uint16_t trans = _matrix[i - 2][j - 2] + 1;
if (source[i - 2] != t_j) {
trans++;
diff --git a/src/engine/SMFDriver.cpp b/src/engine/SMFDriver.cpp
index a07f47d..da7fecb 100644
--- a/src/engine/SMFDriver.cpp
+++ b/src/engine/SMFDriver.cpp
@@ -55,7 +55,7 @@ SMFDriver::learn(const string& filename, unsigned track, double q,
//assert(q.unit() == max_duration.unit());
SharedPtr<Machine> m(new Machine(max_duration.unit()));
SharedPtr<MachineBuilder> builder = SharedPtr<MachineBuilder>(
- new MachineBuilder(m, q, false));
+ new MachineBuilder(m, q, false));
SMFReader reader;
if (!reader.open(filename)) {
@@ -87,7 +87,7 @@ 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));
+ new MachineBuilder(m, q, false));
SMFReader reader;
if (!reader.open(filename)) {
@@ -125,16 +125,22 @@ SMFDriver::learn_track(SharedPtr<MachineBuilder> builder,
uint32_t ev_size;
uint32_t ev_delta_time;
- uint64_t t = 0;
- double unquantized_t = 0;
+ Raul::TimeUnit unit = Raul::TimeUnit(TimeUnit::BEATS, MACHINA_PPQN);
+
+ uint64_t 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 += ev_delta_time;
+
+ const uint32_t beats = t / (uint32_t)reader.ppqn();
+ const uint32_t smf_ticks = t % (uint32_t)reader.ppqn();
+ const double frac = smf_ticks / (double)reader.ppqn();
+ const uint32_t ticks = frac * MACHINA_PPQN;
- builder->set_time(TimeStamp(max_duration.unit(), (double)t));
+ // TODO: quantize
+ builder->set_time(TimeStamp(unit, beats, ticks));
- if ((!max_duration.is_zero()) && ( t > max_duration.to_double()) ) {
+ if (!max_duration.is_zero() && t > max_duration.to_double()) {
break;
}
@@ -151,7 +157,7 @@ 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);
+ _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));
diff --git a/src/engine/SMFReader.cpp b/src/engine/SMFReader.cpp
index 62cdd26..d482eb5 100644
--- a/src/engine/SMFReader.cpp
+++ b/src/engine/SMFReader.cpp
@@ -184,7 +184,7 @@ SMFReader::seek_to_track(unsigned track) throw (std::logic_error)
fseek(_fd, chunk_size, SEEK_CUR);
}
- if (!feof(_fd) && ( track_pos == track) ) {
+ if (!feof(_fd) && track_pos == track) {
_track = track;
_track_size = chunk_size;
return true;
@@ -310,7 +310,7 @@ SMFReader::read_var_len(FILE* fd) throw (PrematureEOF)
uint32_t value;
uint8_t c;
- if ( (value = getc(fd)) & 0x80) {
+ if ((value = getc(fd)) & 0x80) {
value &= 0x7F;
do {
if (feof(fd)) {
diff --git a/src/engine/SMFWriter.cpp b/src/engine/SMFWriter.cpp
index 41abfe0..388aa1f 100644
--- a/src/engine/SMFWriter.cpp
+++ b/src/engine/SMFWriter.cpp
@@ -221,7 +221,7 @@ SMFWriter::write_var_len(uint32_t value)
uint32_t buffer = value & 0x7F;
- while ( (value >>= 7) ) {
+ while ((value >>= 7)) {
buffer <<= 8;
buffer |= ((value & 0x7F) | 0x80);
}