]> git.sesse.net Git - nageru/blobdiff - futatabi/midi_mapper.cpp
Log a warning when we kill a client that is not keeping up.
[nageru] / futatabi / midi_mapper.cpp
index c675820fb3a40ef3a3244818a0fdb249a5460858..9cfb3be6749e2f9234fe81c2fde5fb6bbd926da1 100644 (file)
@@ -143,6 +143,8 @@ void MIDIMapper::note_on_received(int note)
                bind(&ControllerReceiver::queue, receiver));
        match_button(note, MIDIMappingProto::kPlayFieldNumber, MIDIMappingProto::kPlayBankFieldNumber,
                bind(&ControllerReceiver::play, receiver));
+       match_button(note, MIDIMappingProto::kNextFieldNumber, MIDIMappingProto::kNextButtonBankFieldNumber,
+               bind(&ControllerReceiver::next, receiver));
        match_button(note, MIDIMappingProto::kToggleLockFieldNumber, MIDIMappingProto::kToggleLockBankFieldNumber,
                bind(&ControllerReceiver::toggle_lock, receiver));
 
@@ -236,6 +238,9 @@ void MIDIMapper::update_lights_lock_held()
        } else if (play_enabled_light == Blinking) {  // Play ready.
                activate_mapped_light(*mapping_proto, MIDIMappingProto::kPlayReadyFieldNumber, &active_lights);
        }
+       if (next_ready_light == On) {
+               activate_mapped_light(*mapping_proto, MIDIMappingProto::kNextReadyFieldNumber, &active_lights);
+       }
        if (locked_light == On) {
                activate_mapped_light(*mapping_proto, MIDIMappingProto::kLockedFieldNumber, &active_lights);
        } else if (locked_light == Blinking) {
@@ -251,7 +256,7 @@ void MIDIMapper::update_lights_lock_held()
                unsigned controller = mapping_proto->master_speed_light().controller_number();
                unsigned min = mapping_proto->master_speed_light_min();
                unsigned max = mapping_proto->master_speed_light_max();
-               int speed_light_value = lrintf((max - min - 1) * current_speed / 2.0f) + min;
+               int speed_light_value = lrintf((max - min) * current_speed / 2.0f) + min;
                active_lights[MIDIDevice::LightKey{MIDIDevice::LightKey::CONTROLLER, controller}] = speed_light_value;
        }