X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=futatabi%2Fmidi_mapper.cpp;h=1d5d79e4ba85e9d9388f73bd94ecdc60d7840281;hb=3974e42a86665521c477ab0c1dfc0af1a28bede1;hp=3d1f6ec0401e14a5d01ba775a639434ca6a172a3;hpb=3fbdb43f7b184d6805b4fdab070015ee705ab6db;p=nageru diff --git a/futatabi/midi_mapper.cpp b/futatabi/midi_mapper.cpp index 3d1f6ec..1d5d79e 100644 --- a/futatabi/midi_mapper.cpp +++ b/futatabi/midi_mapper.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -206,7 +207,7 @@ void MIDIMapper::refresh_lights() void MIDIMapper::update_lights_lock_held() { - map active_lights; // Desired state. + map active_lights; // Desired state. if (current_controller_bank == 0) { activate_mapped_light(*mapping_proto, MIDIMappingProto::kBank1IsSelectedFieldNumber, &active_lights); } @@ -245,9 +246,18 @@ void MIDIMapper::update_lights_lock_held() activate_mapped_light(camera, CameraMIDIMappingProto::kIsCurrentFieldNumber, &active_lights); } + // Master speed light. + if (mapping_proto->has_master_speed_light()) { + 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) * current_speed / 2.0f) + min; + active_lights[MIDIDevice::LightKey{MIDIDevice::LightKey::CONTROLLER, controller}] = speed_light_value; + } + // These are always enabled right now. - activate_mapped_light(*mapping_proto, MIDIMappingProto::kCueInFieldNumber, &active_lights); - activate_mapped_light(*mapping_proto, MIDIMappingProto::kCueOutFieldNumber, &active_lights); + activate_mapped_light(*mapping_proto, MIDIMappingProto::kCueInEnabledFieldNumber, &active_lights); + activate_mapped_light(*mapping_proto, MIDIMappingProto::kCueOutEnabledFieldNumber, &active_lights); midi_device.update_lights(active_lights); }