aboutsummaryrefslogtreecommitdiff
path: root/src/midi_sequencer.hpp
diff options
context:
space:
mode:
authorJP Cimalando <jpcima@users.noreply.github.com>2018-07-09 20:20:55 +0200
committerJP Cimalando <jpcima@users.noreply.github.com>2018-07-09 20:58:43 +0200
commit9fdaf5361c57438bf7f5bafaf6bb9a79b6bb7493 (patch)
tree5226a20603b6b60ee05dc2d74e7474d62012948b /src/midi_sequencer.hpp
parent2a33defa5770a585f26c35ea731904859afd4ea6 (diff)
downloadlibADLMIDI-9fdaf5361c57438bf7f5bafaf6bb9a79b6bb7493.tar.gz
libADLMIDI-9fdaf5361c57438bf7f5bafaf6bb9a79b6bb7493.tar.bz2
libADLMIDI-9fdaf5361c57438bf7f5bafaf6bb9a79b6bb7493.zip
xmi: handle AIL callback trigger
Diffstat (limited to 'src/midi_sequencer.hpp')
-rw-r--r--src/midi_sequencer.hpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/midi_sequencer.hpp b/src/midi_sequencer.hpp
index 8cb8c6e..2c75da4 100644
--- a/src/midi_sequencer.hpp
+++ b/src/midi_sequencer.hpp
@@ -131,6 +131,8 @@ class BW_MidiSequencer
ST_LOOPSTACK_END = 0xE5,//size == 0 <CUSTOM>
//! [Non-Standard] Loop End point with support of multi-loops
ST_LOOPSTACK_BREAK = 0xE6,//size == 0 <CUSTOM>
+ //! [Non-Standard] Callback Trigger
+ ST_CALLBACK_TRIGGER = 0xE7,//size == 1 <CUSTOM>
};
//! Main type of event
uint8_t type;
@@ -453,6 +455,19 @@ private:
//! Index of solo track, or max for disabled
size_t m_trackSolo;
+ /**
+ * @brief Handler of callback trigger events
+ * @param userData Pointer to user data (usually, context of something)
+ * @param trigger Value of the event which triggered this callback.
+ * @param track Identifier of the track which triggered this callback.
+ */
+ typedef void (*TriggerHandler)(void *userData, unsigned trigger, size_t track);
+
+ //! Handler of callback trigger events
+ TriggerHandler m_triggerHandler;
+ //! User data of callback trigger events
+ void *m_triggerUserData;
+
//! File parsing errors string (adding into m_errorString on aborting of the process)
std::string m_parsingErrorsString;
//! Common error string
@@ -495,6 +510,13 @@ public:
void setSoloTrack(size_t track);
/**
+ * @brief Defines a handler for callback trigger events
+ * @param handler Handler to invoke from the sequencer when triggered, or NULL.
+ * @param userData Instance of the library
+ */
+ void setTriggerHandler(TriggerHandler handler, void *userData);
+
+ /**
* @brief Get the list of CMF instruments (CMF only)
* @return Array of raw CMF instruments entries
*/