Skip to main content

launchkey_sdk/launchkey/
constants.rs

1// DAW Mode Constants
2pub const ENABLE_DAW_MODE: [u8; 3] = [0x9F, 0x0C, 0x7F];
3pub const DISABLE_DAW_MODE: [u8; 3] = [0x9F, 0x0C, 0x00];
4pub const ENABLE_DRUM_DAW_MODE: [u8; 3] = [CC_CH7, 0x54, 0x01]; // Channel 7, CC 84, Value 1
5pub const DISABLE_DRUM_DAW_MODE: [u8; 3] = [CC_CH7, 0x54, 0x00]; // Channel 7, CC 84, Value 0
6                                                                 // MIDI Control Change Constants
7pub const CC_CH7: u8 = 0xB6;
8pub const PAD_MODE_CC: u8 = 0x1D;
9pub const ENCODER_MODE_CC: u8 = 0x1E;
10pub const FADER_MODE_CC: u8 = 0x1F;
11// Button Brightness Constants
12pub const BUTTON_BRIGHTNESS_OVERRIDE_CHANNEL: u8 = 0xB3;
13// SysEx Constants
14pub const SYSEX_TERMINATOR: u8 = 0xF7;
15pub const CUSTOM_COLOR_COMMAND: (u8, u8) = (0x01, 0x43);
16pub const CONFIGURE_DISPLAY_COMMAND: u8 = 0x04;
17pub const SET_SCREEN_TEXT_COMMAND: u8 = 0x06;
18pub const BITMAP_HEADER_BYTE: u8 = 0x09;
19
20/// Represents different hardware SKUs (models) for Launchkey devices.
21#[derive(Debug, Clone)]
22pub enum LaunchKeySku {
23    Regular,
24    Mini,
25}
26
27impl LaunchKeySku {
28    /// Returns the SysEx header required for communication with this SKU.
29    pub fn sys_ex_header(&self) -> [u8; 6] {
30        let model_identifier = match self {
31            LaunchKeySku::Regular => 0x14,
32            LaunchKeySku::Mini => 0x13,
33        };
34
35        [0xF0, 0x00, 0x20, 0x29, 0x02, model_identifier]
36    }
37}