From 9fdaf5361c57438bf7f5bafaf6bb9a79b6bb7493 Mon Sep 17 00:00:00 2001 From: JP Cimalando Date: Mon, 9 Jul 2018 20:20:55 +0200 Subject: xmi: handle AIL callback trigger --- src/midi_sequencer.hpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/midi_sequencer.hpp') 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 //! [Non-Standard] Loop End point with support of multi-loops ST_LOOPSTACK_BREAK = 0xE6,//size == 0 + //! [Non-Standard] Callback Trigger + ST_CALLBACK_TRIGGER = 0xE7,//size == 1 }; //! 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 @@ -494,6 +509,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 -- cgit v1.2.3