Launchpad.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #pragma once
  2. #include "Midi.h"
  3. #include <utility>
  4. class LaunchpadColor
  5. {
  6. public:
  7. unsigned char red, green;
  8. LaunchpadColor();
  9. LaunchpadColor(unsigned char r, unsigned char g);
  10. bool operator==(const LaunchpadColor& color) const;
  11. };
  12. class Launchpad
  13. {
  14. public:
  15. typedef void (*KeyEventCallback)(unsigned char x, unsigned char y);
  16. static const unsigned char width = 9;
  17. static const unsigned char height = 9;
  18. private:
  19. LaunchpadColor colors[width][height];
  20. bool colorSet[width][height];
  21. protected:
  22. MidiIn midiin;
  23. MidiOut midiout;
  24. public:
  25. KeyEventCallback keyPressedCallback;
  26. KeyEventCallback keyReleasedCallback;
  27. Launchpad();
  28. bool issetColor(unsigned char x, unsigned char y) const;
  29. const LaunchpadColor& getColor(unsigned char x, unsigned char y) const;
  30. void setColor(unsigned char x, unsigned char y, const LaunchpadColor& color);
  31. void setColorAll(const LaunchpadColor& color);
  32. protected:
  33. void keyPressed(unsigned char x, unsigned char y);
  34. void keyReleased(unsigned char x, unsigned char y);
  35. private:
  36. static void midiMessageCallback(double timeStamp, MidiMessage &message, void *launchpad);
  37. };