added tempo command (T)
This commit is contained in:
parent
1ee424c467
commit
0398c8aaa2
|
@ -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)
|
||||
|
|
13
player.cpp
13
player.cpp
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -17,6 +17,7 @@ struct Message : MIDI::Message {
|
|||
|
||||
// command
|
||||
TypeCommandChannelVolume = 'V',
|
||||
TypeCommandTempo = 'T',
|
||||
};
|
||||
|
||||
Type type;
|
||||
|
|
Loading…
Reference in New Issue