]> git.sesse.net Git - nageru/blobdiff - shared/midi_mapper_util.h
Add infrastructure for MIDI lights that are controllers instead of notes.
[nageru] / shared / midi_mapper_util.h
index 07f2a53b4241dd7f69b71b62e12de93e83775659..9120fc8719998f97575193e4e739c25aa7f65f58 100644 (file)
@@ -49,7 +49,7 @@ inline bool match_bank_helper(const Proto &msg, int bank_field_number, int bank)
 
 // Find what MIDI note the given light (as given by field_number) is mapped to, and enable it.
 template <class Proto>
-void activate_mapped_light(const Proto &msg, int field_number, std::map<unsigned, uint8_t> *active_lights)
+void activate_mapped_light(const Proto &msg, int field_number, std::map<MIDIDevice::LightKey, uint8_t> *active_lights)
 {
        using namespace google::protobuf;
        const FieldDescriptor *descriptor = msg.GetDescriptor()->FindFieldByNumber(field_number);
@@ -59,7 +59,8 @@ void activate_mapped_light(const Proto &msg, int field_number, std::map<unsigned
        }
        const MIDILightProto &light_proto =
                static_cast<const MIDILightProto &>(reflection->GetMessage(msg, descriptor));
-       active_lights->emplace(light_proto.note_number(), light_proto.velocity());
+       active_lights->emplace(MIDIDevice::LightKey{MIDIDevice::LightKey::NOTE, unsigned(light_proto.note_number())},
+               light_proto.velocity());
 }
 
 inline double map_controller_to_float(int controller, int val)