1
Fork 0

added tempo command (T)

This commit is contained in:
Leonard Ritter 2010-03-21 16:37:03 +01:00
parent 1ee424c467
commit 0398c8aaa2
3 changed files with 12 additions and 5 deletions

View File

@ -2,4 +2,5 @@
Jacker Pattern Channel Commands
===============================
V xx: change channel volume to xx
V xx: change channel volume to xx (00-7F)
T xx: change tempo to xx BPM (01-FF)

View File

@ -235,13 +235,12 @@ void Player::mix_events(MessageQueue &queue, int samples) {
assert(model);
long long target = queue.read_samples + ((long long)samples<<32);
long long framesize = get_frame_size();
while (queue.write_samples < target)
{
// send status package
queue.status_msg();
mix_frame(queue);
long long framesize = get_frame_size();
queue.write_samples += framesize;
queue.position++;
if (model->enable_loop && (queue.position == model->loop.get_end())) {
@ -278,8 +277,14 @@ void Player::mix_frame(MessageQueue &queue) {
int ccindex = row.get_value(channel, ParamCCIndex);
int ccvalue = row.get_value(channel, ParamCCValue);
if (command != ValueNone) {
queue.on_command(event.track, (Message::Type)command,
row.get_value(channel, ParamValue), ccindex, ccvalue);
int value = row.get_value(channel, ParamValue);
if (command == Message::TypeCommandTempo) {
if (value != ValueNone)
model->beats_per_minute = std::max(1,value);
} else {
queue.on_command(event.track, (Message::Type)command,
value, ccindex, ccvalue);
}
}
queue.on_cc(event.track, ccindex, ccvalue);
}

View File

@ -17,6 +17,7 @@ struct Message : MIDI::Message {
// command
TypeCommandChannelVolume = 'V',
TypeCommandTempo = 'T',
};
Type type;