#pragma once #ifdef LAUNCHPAD #include "rack.hpp" #include #include //#define DEBUG /* R1C1 is UPPER LEFT R8C8 [R16C16] is LOWER RIGHT */ #define ALL_LAUNCHPADS (127) enum LaunchpadKey { _NOTAKEY = 0, RECORD_ARM , TRACK_SELECT, MUTE, SOLO, VOLUME, PAN, SENDS, STOP_CLIP, reserved_unused0 = 9, RECORD, R8C1,R8C2,R8C3,R8C4,R8C5,R8C6,R8C7,R8C8, // 11 ... PLAY8, kDOUBLE, R7C1,R7C2,R7C3,R7C4,R7C5,R7C6,R7C7,R7C8, //21 ... PLAY7, kDUPLICATE, R6C1,R6C2,R6C3,R6C4,R6C5,R6C6,R6C7,R6C8, PLAY6, QUANTISE, R5C1,R5C2,R5C3,R5C4,R5C5,R5C6,R5C7,R5C8, PLAY5, kDELETE, R4C1,R4C2,R4C3,R4C4,R4C5,R4C6,R4C7,R4C8, PLAY4, UNDO, R3C1,R3C2,R3C3,R3C4,R3C5,R3C6,R3C7,R3C8, PLAY3, CLICK, R2C1,R2C2,R2C3,R2C4,R2C5,R2C6,R2C7,R2C8, PLAY2, SHIFT, R1C1,R1C2,R1C3,R1C4,R1C5,R1C6,R1C7,R1C8, PLAY1, reserved_unused1 = 90, UP, DOWN, LEFT, RIGHT, SESSION, NOTE, DEVICE, USER }; enum LaunchpadCommand { _INVALID, KEYON, // key lit, param0 = color (0 = off) SET_STANDALONE_MODE, // set standalone LP mode; param0 = LaunchpadMode SET_LIVE_MODE, // set live LP mode; param0 = LaunchpadLiveMode LED_ALL, // set all keys to one color; param0 = color (0 = off) SIDE_LED, // turn on the side led FLASH_KEY, // led flash PULSE_KEY, // led pulse LED_RGB, //led rgb color SETSTATUS, // param0: ableton or standalone RESET, SETSCENE, //currentScene REGISTERSCENE, // currentScene, param0: 1 = register, 0 =unregister GETNUMLAUNCHPADS // lpNumber = # di launchpad trovati }; enum LaunchpadMode {Note = 0, Drum, Fader, Programmer}; enum LaunchpadKeyStatus {keyUp, keyDown, keyPressure, keyChannelPressure, keyNone}; enum LaunchpadScene {SceneAll = 0, Scene1, Scene2, Scene3, Scene4, Scene5, Scene6, Scene7, Scene8}; enum ButtonColorType { Normal = 0, RGB, Flash, Pulse, }; enum LaunchpadLiveMode {Session = 0, DrumRack, ChromaticNote, User, Audio, LiveFader, RecordArm, TrackSelect, Mute, Solo, Volume, Pan, Sends, StopClip}; enum LaunchpadStatus {Ableton = 0, Standalone}; struct LaunchpadMessage { LaunchpadKeyStatus status; LaunchpadCommand cmd; LaunchpadKey key; LaunchpadScene currentScene; short lpNumber; bool shiftDown; short param0; short param1; }; struct LaunchpadLed { ButtonColorType status = Normal; int r_color = 0; int g = 0; int b = 0; static LaunchpadLed Color(int cr) { LaunchpadLed rv; rv.status = Normal; rv.r_color = cr; return rv; } static LaunchpadLed Off() {return Color(0);} static LaunchpadLed Rgb(int c_r, int c_g, int c_b) { LaunchpadLed rv; rv.status = RGB; rv.r_color = c_r; rv.g = c_g; rv.b = c_b; return rv; } }; #endif