Launchpad.h 1.0 KB

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