#pragma once #include "Input.h" #include "Output.h" #include "LaunchpadColor.h" #include namespace midi { class Launchpad { public: typedef void (*KeyEventCallback)(unsigned char x, unsigned char y, void* data); static const unsigned char width = 9; static const unsigned char height = 9; private: LaunchpadColor colors[width][height]; bool colorSet[width][height]; protected: Input midiin; Output midiout; public: KeyEventCallback keyPressedCallback; KeyEventCallback keyReleasedCallback; void* keyEventCallbackData; Launchpad(); bool issetColor(unsigned char x, unsigned char y) const; const LaunchpadColor& getColor(unsigned char x, unsigned char y) const; void setColor(unsigned char x, unsigned char y, const LaunchpadColor& color); void setColorAll(const LaunchpadColor& color); protected: void keyPressed(unsigned char x, unsigned char y); void keyReleased(unsigned char x, unsigned char y); private: static void midiMessageCallback(double timeStamp, Message &message, void *launchpad); }; };