aboutsummaryrefslogtreecommitdiff
path: root/src/adlmidi_private.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/adlmidi_private.hpp')
-rw-r--r--src/adlmidi_private.hpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/adlmidi_private.hpp b/src/adlmidi_private.hpp
index fda629d..4b3ab10 100644
--- a/src/adlmidi_private.hpp
+++ b/src/adlmidi_private.hpp
@@ -108,6 +108,7 @@ typedef int32_t ssize_t;
#include <deque>
#include <algorithm>
+#include <iterator>
/*
* Workaround for some compilers are has no those macros in their headers!
@@ -984,6 +985,7 @@ public:
std::vector<MIDIchannel> Ch;
bool cmf_percussion_mode;
+ uint8_t m_sysExDeviceId;
MIDIEventHooks hooks;
@@ -1198,6 +1200,9 @@ public:
void realTime_BankChangeMSB(uint8_t channel, uint8_t msb);
void realTime_BankChange(uint8_t channel, uint16_t bank);
+ void setDeviceId(uint8_t id);
+ bool realTime_SysEx(const uint8_t *msg, unsigned size);
+
void realTime_panic();
#if defined(ADLMIDI_AUDIO_TICK_HANDLER)
@@ -1208,6 +1213,30 @@ public:
private:
enum
{
+ Manufacturer_Roland = 0x41,
+ Manufacturer_Yamaha = 0x43,
+ Manufacturer_UniversalNonRealtime = 0x7E,
+ Manufacturer_UniversalRealtime = 0x7F
+ };
+ enum
+ {
+ RolandMode_Request = 0x11,
+ RolandMode_Send = 0x12
+ };
+ enum
+ {
+ RolandModel_GS = 0x42,
+ RolandModel_SC55 = 0x45,
+ YamahaModel_XG = 0x4C
+ };
+
+ bool doUniversalSysEx(unsigned dev, bool realtime, const uint8_t *data, unsigned size);
+ bool doRolandSysEx(unsigned dev, const uint8_t *data, unsigned size);
+ bool doYamahaSysEx(unsigned dev, const uint8_t *data, unsigned size);
+
+private:
+ enum
+ {
Upd_Patch = 0x1,
Upd_Pan = 0x2,
Upd_Volume = 0x4,