You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

144 lines
2.9KB

  1. #pragma once
  2. #ifdef LAUNCHPAD
  3. #include "rack.hpp"
  4. #include <map>
  5. #include <list>
  6. //#define DEBUG
  7. /*
  8. R1C1 is UPPER LEFT
  9. R8C8 [R16C16] is LOWER RIGHT
  10. */
  11. #define ALL_LAUNCHPADS (127)
  12. enum LaunchpadKey
  13. {
  14. _NOTAKEY = 0,
  15. RECORD_ARM ,
  16. TRACK_SELECT,
  17. MUTE,
  18. SOLO,
  19. VOLUME,
  20. PAN,
  21. SENDS,
  22. STOP_CLIP,
  23. reserved_unused0 = 9,
  24. RECORD,
  25. R8C1,R8C2,R8C3,R8C4,R8C5,R8C6,R8C7,R8C8, // 11 ...
  26. PLAY8,
  27. kDOUBLE,
  28. R7C1,R7C2,R7C3,R7C4,R7C5,R7C6,R7C7,R7C8, //21 ...
  29. PLAY7,
  30. kDUPLICATE,
  31. R6C1,R6C2,R6C3,R6C4,R6C5,R6C6,R6C7,R6C8,
  32. PLAY6,
  33. QUANTISE,
  34. R5C1,R5C2,R5C3,R5C4,R5C5,R5C6,R5C7,R5C8,
  35. PLAY5,
  36. kDELETE,
  37. R4C1,R4C2,R4C3,R4C4,R4C5,R4C6,R4C7,R4C8,
  38. PLAY4,
  39. UNDO,
  40. R3C1,R3C2,R3C3,R3C4,R3C5,R3C6,R3C7,R3C8,
  41. PLAY3,
  42. CLICK,
  43. R2C1,R2C2,R2C3,R2C4,R2C5,R2C6,R2C7,R2C8,
  44. PLAY2,
  45. SHIFT,
  46. R1C1,R1C2,R1C3,R1C4,R1C5,R1C6,R1C7,R1C8,
  47. PLAY1,
  48. reserved_unused1 = 90,
  49. UP,
  50. DOWN,
  51. LEFT,
  52. RIGHT,
  53. SESSION,
  54. NOTE,
  55. DEVICE,
  56. USER
  57. };
  58. enum LaunchpadCommand
  59. {
  60. _INVALID,
  61. KEYON, // key lit, param0 = color (0 = off)
  62. SET_STANDALONE_MODE, // set standalone LP mode; param0 = LaunchpadMode
  63. SET_LIVE_MODE, // set live LP mode; param0 = LaunchpadLiveMode
  64. LED_ALL, // set all keys to one color; param0 = color (0 = off)
  65. SIDE_LED, // turn on the side led
  66. FLASH_KEY, // led flash
  67. PULSE_KEY, // led pulse
  68. LED_RGB, //led rgb color
  69. SETSTATUS, // param0: ableton or standalone
  70. RESET,
  71. SETSCENE, //currentScene
  72. REGISTERSCENE, // currentScene, param0: 1 = register, 0 =unregister
  73. GETNUMLAUNCHPADS // lpNumber = # di launchpad trovati
  74. };
  75. enum LaunchpadMode {Note = 0, Drum, Fader, Programmer};
  76. enum LaunchpadKeyStatus {keyUp, keyDown, keyPressure, keyChannelPressure, keyNone};
  77. enum LaunchpadScene {SceneAll = 0, Scene1, Scene2, Scene3, Scene4, Scene5, Scene6, Scene7, Scene8};
  78. enum ButtonColorType
  79. {
  80. Normal = 0,
  81. RGB,
  82. Flash,
  83. Pulse,
  84. };
  85. enum LaunchpadLiveMode {Session = 0, DrumRack, ChromaticNote, User, Audio, LiveFader, RecordArm, TrackSelect, Mute, Solo, Volume, Pan, Sends, StopClip};
  86. enum LaunchpadStatus {Ableton = 0, Standalone};
  87. struct LaunchpadMessage
  88. {
  89. LaunchpadKeyStatus status;
  90. LaunchpadCommand cmd;
  91. LaunchpadKey key;
  92. LaunchpadScene currentScene;
  93. short lpNumber;
  94. bool shiftDown;
  95. short param0;
  96. short param1;
  97. };
  98. struct LaunchpadLed
  99. {
  100. ButtonColorType status = Normal;
  101. int r_color = 0;
  102. int g = 0;
  103. int b = 0;
  104. static LaunchpadLed Color(int cr)
  105. {
  106. LaunchpadLed rv;
  107. rv.status = Normal;
  108. rv.r_color = cr;
  109. return rv;
  110. }
  111. static LaunchpadLed Off() {return Color(0);}
  112. static LaunchpadLed Rgb(int c_r, int c_g, int c_b)
  113. {
  114. LaunchpadLed rv;
  115. rv.status = RGB;
  116. rv.r_color = c_r;
  117. rv.g = c_g;
  118. rv.b = c_b;
  119. return rv;
  120. }
  121. };
  122. #endif