|
@@ -3,12 +3,14 @@
|
|
#include "Output.h"
|
|
#include "Output.h"
|
|
#include "LaunchpadColor.h"
|
|
#include "LaunchpadColor.h"
|
|
#include <utility>
|
|
#include <utility>
|
|
|
|
+#include <atomic>
|
|
|
|
|
|
namespace midi {
|
|
namespace midi {
|
|
|
|
|
|
class Launchpad
|
|
class Launchpad
|
|
{
|
|
{
|
|
public:
|
|
public:
|
|
|
|
+ typedef unsigned char KeyCoordinate;
|
|
typedef void (*KeyEventCallback)(unsigned char x, unsigned char y, void* data);
|
|
typedef void (*KeyEventCallback)(unsigned char x, unsigned char y, void* data);
|
|
|
|
|
|
static const unsigned char width = 9;
|
|
static const unsigned char width = 9;
|
|
@@ -17,6 +19,7 @@ public:
|
|
private:
|
|
private:
|
|
LaunchpadColor colors[width][height];
|
|
LaunchpadColor colors[width][height];
|
|
bool colorSet[width][height];
|
|
bool colorSet[width][height];
|
|
|
|
+ std::atomic<bool> keyBeingPressed[width][height];
|
|
|
|
|
|
protected:
|
|
protected:
|
|
Input midiin;
|
|
Input midiin;
|
|
@@ -33,6 +36,7 @@ public:
|
|
const LaunchpadColor& getColor(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 setColor(unsigned char x, unsigned char y, const LaunchpadColor& color);
|
|
void setColorAll(const LaunchpadColor& color);
|
|
void setColorAll(const LaunchpadColor& color);
|
|
|
|
+ bool getKeyPressed(KeyCoordinate x, KeyCoordinate y);
|
|
|
|
|
|
protected:
|
|
protected:
|
|
void keyPressed(unsigned char x, unsigned char y);
|
|
void keyPressed(unsigned char x, unsigned char y);
|
|
@@ -40,6 +44,7 @@ protected:
|
|
|
|
|
|
private:
|
|
private:
|
|
static void midiMessageCallback(double timeStamp, Message &message, void *launchpad);
|
|
static void midiMessageCallback(double timeStamp, Message &message, void *launchpad);
|
|
|
|
+ void setKeyPressed(KeyCoordinate x, KeyCoordinate y, bool pressed);
|
|
};
|
|
};
|
|
|
|
|
|
};
|
|
};
|