aboutsummaryrefslogtreecommitdiff
path: root/src/adlmidi_private.hpp
diff options
context:
space:
mode:
authorVitaly Novichkov <admin@wohlnet.ru>2018-06-22 23:39:30 +0300
committerVitaly Novichkov <admin@wohlnet.ru>2018-06-22 23:39:30 +0300
commit9c69b10a7a7e7de196db45ab8f39e8be014e2fba (patch)
tree1ec5a2991af8ee08619a9765d3d516f88bdb09ba /src/adlmidi_private.hpp
parentb12d83a20db8c3b7bcf5d94d0ae19ab28df3ca82 (diff)
parentde7550a4cc643b37449eb791f09b625bf1af17fb (diff)
downloadlibADLMIDI-9c69b10a7a7e7de196db45ab8f39e8be014e2fba.tar.gz
libADLMIDI-9c69b10a7a7e7de196db45ab8f39e8be014e2fba.tar.bz2
libADLMIDI-9c69b10a7a7e7de196db45ab8f39e8be014e2fba.zip
Merge SysEx support branch and now we have experimental SysEx support!
Diffstat (limited to 'src/adlmidi_private.hpp')
-rw-r--r--src/adlmidi_private.hpp51
1 files changed, 50 insertions, 1 deletions
diff --git a/src/adlmidi_private.hpp b/src/adlmidi_private.hpp
index 058a431..ec194c6 100644
--- a/src/adlmidi_private.hpp
+++ b/src/adlmidi_private.hpp
@@ -723,6 +723,17 @@ public:
std::vector<MIDIchannel> Ch;
bool cmf_percussion_mode;
+ uint8_t m_masterVolume;
+ uint8_t m_sysExDeviceId;
+
+ enum SynthMode
+ {
+ Mode_GM = 0x00,
+ Mode_GS = 0x01,
+ Mode_XG = 0x02,
+ Mode_GM2 = 0x04,
+ };
+ uint32_t m_synthMode;
MIDIEventHooks hooks;
@@ -901,6 +912,20 @@ public:
void realTime_BankChange(uint8_t channel, uint16_t bank);
/**
+ * @brief Sets the Device identifier
+ * @param id 7-bit Device identifier
+ */
+ void setDeviceId(uint8_t id);
+
+ /**
+ * @brief System Exclusive message
+ * @param msg Raw SysEx Message
+ * @param size Length of SysEx message
+ * @return true if message was passed successfully. False on any errors
+ */
+ bool realTime_SysEx(const uint8_t *msg, size_t size);
+
+ /**
* @brief Turn off all notes and mute the sound of releasing notes
*/
void realTime_panic();
@@ -934,6 +959,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, size_t size);
+ bool doRolandSysEx(unsigned dev, const uint8_t *data, size_t size);
+ bool doYamahaSysEx(unsigned dev, const uint8_t *data, size_t size);
+
+private:
+ enum
+ {
Upd_Patch = 0x1,
Upd_Pan = 0x2,
Upd_Volume = 0x4,
@@ -941,7 +990,7 @@ private:
Upd_All = Upd_Pan + Upd_Volume + Upd_Pitch,
Upd_Off = 0x20,
Upd_Mute = 0x40,
- Upt_OffMute = Upd_Off + Upd_Mute
+ Upd_OffMute = Upd_Off + Upd_Mute
};
void NoteUpdate(uint16_t MidCh,