X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=futatabi%2Fmidi_mapper.h;h=b3549feffe54e15cdfa068beb12eb12ab325f455;hb=55bc1e47c47dfdeeec06c55de9a53b95bdbbd326;hp=7b489ab274ca8ffa71db117473889179b67ff612;hpb=ac1f4741a43cd9ab6ff5ff5a6f6bd52f3995a121;p=nageru diff --git a/futatabi/midi_mapper.h b/futatabi/midi_mapper.h index 7b489ab..b3549fe 100644 --- a/futatabi/midi_mapper.h +++ b/futatabi/midi_mapper.h @@ -15,7 +15,6 @@ #include #include #include -#include #include #include @@ -46,6 +45,13 @@ public: class MIDIMapper : public MIDIReceiver { public: + // Converts conveniently from a bool. + enum LightState { + Off = 0, + On = 1, + Blinking = 2 + }; + MIDIMapper(ControllerReceiver *receiver); virtual ~MIDIMapper(); void set_midi_mapping(const MIDIMappingProto &new_mapping); @@ -57,7 +63,7 @@ public: void refresh_lights(); - void set_preview_enabled(bool enabled) { + void set_preview_enabled(LightState enabled) { preview_enabled_light = enabled; refresh_lights(); } @@ -65,11 +71,11 @@ public: queue_enabled_light = enabled; refresh_lights(); } - void set_play_enabled(bool enabled) { + void set_play_enabled(LightState enabled) { play_enabled_light = enabled; refresh_lights(); } - void set_locked(bool locked) { + void set_locked(LightState locked) { locked_light = locked; refresh_lights(); } @@ -77,6 +83,10 @@ public: current_highlighted_camera = stream_idx; refresh_lights(); } + void set_speed_light(float speed) { // Goes from 0.0 to 2.0. + current_speed = speed; + refresh_lights(); + } // MIDIReceiver. void controller_received(int controller, int value) override; @@ -90,10 +100,8 @@ private: bool bank_mismatch(int bank_field_number); void update_lights_lock_held(); - void activate_lights_all_buses(int field_number, std::set *active_lights); std::atomic should_quit{false}; - int should_quit_fd; mutable std::mutex mu; ControllerReceiver *receiver; // Under . @@ -101,11 +109,12 @@ private: int num_controller_banks; // Under . std::atomic current_controller_bank{0}; - std::atomic preview_enabled_light{false}; + std::atomic preview_enabled_light{Off}; std::atomic queue_enabled_light{false}; - std::atomic play_enabled_light{false}; - std::atomic locked_light{true}; + std::atomic play_enabled_light{Off}; + std::atomic locked_light{On}; std::atomic current_highlighted_camera{-1}; + std::atomic current_speed{1.0f}; MIDIDevice midi_device; };