#pragma once #include "Midi.h" #include class LaunchpadColor { public: unsigned char red, green; LaunchpadColor(); LaunchpadColor(unsigned char r, unsigned char g); bool operator==(const LaunchpadColor& color) const; }; class Launchpad { public: typedef void (*KeyEventCallback)(unsigned char x, unsigned char y); static const unsigned char width = 9; static const unsigned char height = 9; private: LaunchpadColor colors[width][height]; bool colorSet[width][height]; protected: MidiIn midiin; MidiOut midiout; public: KeyEventCallback keyPressedCallback; KeyEventCallback keyReleasedCallback; 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, MidiMessage &message, void *launchpad); };