83 static constexpr uint16_t lumiKeysVendorProductPairs[MIDI_DEVICE_LUMI_KEYS_VP_COUNT][2] = {{0x2af4, 0xe00}};
85 static constexpr uint8_t sysexManufacturer[3] = {0x00, 0x21, 0x10};
87 enum class MIDIMode { MULTI = 0, MPE, SINGLE };
89 enum class MPEZone { LOWER = 0, UPPER };
113 static constexpr uint16_t scaleNotes[MIDI_DEVICE_LUMI_KEYS_SCALE_COUNT] = {
114 MIDI_DEVICE_LUMI_SCALE_MAJOR,
115 MIDI_DEVICE_LUMI_SCALE_MINOR,
116 MIDI_DEVICE_LUMI_SCALE_HARMONIC_MINOR,
117 MIDI_DEVICE_LUMI_SCALE_PENTATONIC_NEUTRAL,
118 MIDI_DEVICE_LUMI_SCALE_PENTATONIC_MAJOR,
119 MIDI_DEVICE_LUMI_SCALE_PENTATONIC_MINOR,
120 MIDI_DEVICE_LUMI_SCALE_BLUES,
121 MIDI_DEVICE_LUMI_SCALE_DORIAN,
122 MIDI_DEVICE_LUMI_SCALE_PHRYGIAN,
123 MIDI_DEVICE_LUMI_SCALE_LYDIAN,
124 MIDI_DEVICE_LUMI_SCALE_MIXOLYDIAN,
125 MIDI_DEVICE_LUMI_SCALE_LOCRIAN,
126 MIDI_DEVICE_LUMI_SCALE_WHOLE_TONE,
127 MIDI_DEVICE_LUMI_SCALE_ARABIC_A,
128 MIDI_DEVICE_LUMI_SCALE_ARABIC_B,
129 MIDI_DEVICE_LUMI_SCALE_JAPANESE,
130 MIDI_DEVICE_LUMI_SCALE_RYUKYU,
131 MIDI_DEVICE_LUMI_SCALE_8TONE_SPANISH,
132 MIDI_DEVICE_LUMI_SCALE_CHROMATIC};
134 enum class ColourZone { ROOT = 0, GLOBAL };
136 static bool matchesVendorProduct(uint16_t vendorId, uint16_t productId);
137 void hookOnConnected()
override;
138 void hookOnChangeRootNote()
override;
139 void hookOnChangeScale()
override;
140 void hookOnEnterScaleMode()
override;
141 void hookOnExitScaleMode()
override;
142 void hookOnMIDILearn()
override;
143 void hookOnRecalculateColour()
override;
144 void hookOnTransitionToSessionView()
override;
145 void hookOnTransitionToClipView()
override;
146 void hookOnTransitionToArrangerView()
override;
147 void hookOnWriteHostedDeviceToFile()
override;
150 uint8_t sysexChecksum(uint8_t* chkBytes, uint8_t size);
151 void sendLumiCommand(uint8_t* command, uint8_t length);
154 void getCounterCodes(uint8_t* destination, int32_t index, uint8_t valueOffset = 0);
158 void setMIDIMode(MIDIMode midiMode);
159 void setMPEZone(MPEZone mpeZone);
160 void setMPENumChannels(uint8_t numChannels);
161 void setRootNote(int16_t rootNote);
162 Scale determineScaleAndRootNoteOffsetFromNotes(
NoteSet& modeNotes);
163 void setScale(Scale scale);
164 void setColour(ColourZone zone,
RGB rgb);
void getCounterCodes(uint8_t *destination, int32_t index, uint8_t valueOffset=0)
Fills the first 6 values at the pointer location with a 7-bit, offset representation of the 32-bit si...
Definition midi_device_lumi_keys.cpp:186