Launchpad.h 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. protected:
  32. void keyPressed(unsigned char x, unsigned char y);
  33. void keyReleased(unsigned char x, unsigned char y);
  34. private:
  35. static void midiMessageCallback(double timeStamp, MidiMessage &message, void *launchpad);
  36. };