-
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
178d1f2
commit e701b07
Showing
2 changed files
with
66 additions
and
18 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,23 +1,25 @@ | ||
/*****************************************************************//** | ||
/*****************************************************************//** | ||
* \file MackieControl.h | ||
* \brief A compact Mackie Control library on JUCE. | ||
* | ||
* \author WuChang | ||
* \email [email protected] | ||
* \date July 2023 | ||
* \version 1.0.2 | ||
* \date Jan 2024 | ||
* \version 1.0.3 | ||
* \license MIT License | ||
*********************************************************************/ | ||
|
||
#pragma once | ||
|
||
#include <JuceHeader.h> | ||
|
||
#include "Macros.h" | ||
|
||
namespace mackieControl { | ||
/** | ||
* Mackie Control messages via MIDI system exclusive message. | ||
*/ | ||
enum class SysExMessage : uint8_t { | ||
enum class MACKIE_API SysExMessage : uint8_t { | ||
DeviceQuery = 0, | ||
HostConnectionQuery, | ||
HostConnectionReply, | ||
|
@@ -41,33 +43,33 @@ namespace mackieControl { | |
/** | ||
* Check if the message is valid. | ||
*/ | ||
constexpr bool isValidSysExMessage(SysExMessage mes); | ||
constexpr bool MACKIE_API isValidSysExMessage(SysExMessage mes); | ||
/** | ||
* Check if the message is valid. | ||
*/ | ||
constexpr bool isValidSysExMessage(int mes); | ||
constexpr bool MACKIE_API isValidSysExMessage(int mes); | ||
|
||
/** | ||
* Mackie Control messages via MIDI note message velocity data. | ||
*/ | ||
enum class VelocityMessage : uint8_t { | ||
enum class MACKIE_API VelocityMessage : uint8_t { | ||
Off = 0, | ||
Flashing, | ||
On = 127 | ||
}; | ||
/** | ||
* Check if the message is valid. | ||
*/ | ||
constexpr bool isValidVelocityMessage(VelocityMessage mes); | ||
constexpr bool MACKIE_API isValidVelocityMessage(VelocityMessage mes); | ||
/** | ||
* Check if the message is valid. | ||
*/ | ||
constexpr bool isValidVelocityMessage(int mes); | ||
constexpr bool MACKIE_API isValidVelocityMessage(int mes); | ||
|
||
/** | ||
* Mackie Control messages via MIDI note message note number data. | ||
*/ | ||
enum class NoteMessage { | ||
enum class MACKIE_API NoteMessage { | ||
RECRDYCh1, RECRDYCh2, RECRDYCh3, RECRDYCh4, RECRDYCh5, RECRDYCh6, RECRDYCh7, RECRDYCh8, | ||
SOLOCh1, SOLOCh2, SOLOCh3, SOLOCh4, SOLOCh5, SOLOCh6, SOLOCh7, SOLOCh8, | ||
MUTECh1, MUTECh2, MUTECh3, MUTECh4, MUTECh5, MUTECh6, MUTECh7, MUTECh8, | ||
|
@@ -109,16 +111,16 @@ namespace mackieControl { | |
/** | ||
* Check if the message is valid. | ||
*/ | ||
constexpr bool isValidNoteMessage(NoteMessage mes); | ||
constexpr bool MACKIE_API isValidNoteMessage(NoteMessage mes); | ||
/** | ||
* Check if the message is valid. | ||
*/ | ||
constexpr bool isValidNoteMessage(int mes); | ||
constexpr bool MACKIE_API isValidNoteMessage(int mes); | ||
|
||
/** | ||
* Mackie Control messages via MIDI controller message controller number data. | ||
*/ | ||
enum class CCMessage { | ||
enum class MACKIE_API CCMessage { | ||
VPot1 = 16, VPot2, VPot3, VPot4, VPot5, VPot6, VPot7, VPot8, | ||
ExternalController = 46, | ||
VPotLEDRing1 = 48, VPotLEDRing2, VPotLEDRing3, VPotLEDRing4, | ||
|
@@ -132,23 +134,23 @@ namespace mackieControl { | |
/** | ||
* Check if the message is valid. | ||
*/ | ||
constexpr bool isValidCCMessage(CCMessage mes); | ||
constexpr bool MACKIE_API isValidCCMessage(CCMessage mes); | ||
/** | ||
* Check if the message is valid. | ||
*/ | ||
constexpr bool isValidCCMessage(int mes); | ||
constexpr bool MACKIE_API isValidCCMessage(int mes); | ||
|
||
/** | ||
* Rotation direction of wheel messages. | ||
*/ | ||
enum class WheelType { | ||
enum class MACKIE_API WheelType { | ||
CW, CCW | ||
}; | ||
|
||
/** | ||
* LED ring mode of V-Pot on Mackie Control devices. | ||
*/ | ||
enum class VPotLEDRingMode { | ||
enum class MACKIE_API VPotLEDRingMode { | ||
SingleDotMode, | ||
BoostCutMode, | ||
WrapMode, | ||
|
@@ -158,7 +160,7 @@ namespace mackieControl { | |
/** | ||
* Mackie Control Message class. | ||
*/ | ||
class Message final { | ||
class MACKIE_API Message final { | ||
public: | ||
/** | ||
* Create an empty Mackie Control message. An empty message is an invalid Mackie Control message. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
#pragma once | ||
|
||
#if defined (__clang__) | ||
#define MACKIE_CLANG 1 | ||
|
||
#elif defined (__GNUC__) | ||
#define MACKIE_GCC 1 | ||
|
||
#elif defined (_MSC_VER) | ||
#define MACKIE_MSVC 1 | ||
|
||
#else | ||
#error Unknown cpp compiler | ||
#endif | ||
|
||
#if MACKIE_MSVC | ||
#define MACKIE_EXPORT __declspec(dllexport) | ||
#define MACKIE_IMPORT __declspec(dllimport) | ||
#define MACKIE_CALL _cdecl | ||
#endif | ||
|
||
#if MACKIE_CLANG | ||
#define MACKIE_EXPORT __attribute__((visibility("default"))) | ||
#define MACKIE_IMPORT __attribute__((visibility("default"))) | ||
#define MACKIE_CALL | ||
#endif | ||
|
||
#if MACKIE_GCC | ||
#define MACKIE_EXPORT __attribute__((visibility("default"))) | ||
#define MACKIE_IMPORT __attribute__((visibility("default"))) | ||
#define MACKIE_CALL | ||
#endif | ||
|
||
#if !(MACKIE_MSVC || MACKIE_CLANG || MACKIE_GCC) | ||
#define MACKIE_EXPORT | ||
#define MACKIE_IMPORT | ||
#define MACKIE_CALL | ||
#endif | ||
|
||
#if MACKIE_DLL_BUILD | ||
#define MACKIE_API MACKIE_EXPORT | ||
#elif MACKIE_DLL | ||
#define MACKIE_API MACKIE_IMPORT | ||
#else | ||
#define MACKIE_API | ||
#endif // MACKIE_DLL_BUILD |