]> git.sesse.net Git - nageru/blobdiff - futatabi/midi_mapper.cpp
Support changing overall playing speed at runtime, using a slider or a MIDI controller.
[nageru] / futatabi / midi_mapper.cpp
index a76e36cb04f83c96ed5c49149078115c23a2cd13..1e26985a01537e226f21cedb7f9e789698648be6 100644 (file)
@@ -78,11 +78,16 @@ ControllerReceiver *MIDIMapper::set_receiver(ControllerReceiver *new_receiver)
 void MIDIMapper::controller_received(int controller, int value_int)
 {
        int delta_value = value_int - 64;  // For infinite controllers such as jog.
+       float value = map_controller_to_float(controller, value_int);
 
        receiver->controller_changed(controller);
 
        match_controller(controller, MIDIMappingProto::kJogFieldNumber, MIDIMappingProto::kJogBankFieldNumber,
                delta_value, bind(&ControllerReceiver::jog, receiver, _1));
+
+       // Speed goes from 0.0 to 2.0 (the receiver will clamp).
+       match_controller(controller, MIDIMappingProto::kMasterSpeedFieldNumber, MIDIMappingProto::kMasterSpeedBankFieldNumber,
+               value * 2.0, bind(&ControllerReceiver::set_master_speed, receiver, _1));
 }
 
 void MIDIMapper::note_on_received(int note)