From 050e9c91605c83a326310f9da34a6832b4dfe524 Mon Sep 17 00:00:00 2001 From: lathoub Date: Sun, 22 Mar 2020 23:03:39 +0100 Subject: [PATCH] added Tick (0xF9) --- src/MIDI.h | 3 +++ src/MIDI.hpp | 4 ++++ src/midi_Defs.h | 17 +++++++++-------- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/MIDI.h b/src/MIDI.h index c5d40fe..706d46a 100644 --- a/src/MIDI.h +++ b/src/MIDI.h @@ -113,6 +113,7 @@ public: inline void sendClock() { sendRealTime(Clock); }; inline void sendStart() { sendRealTime(Start); }; inline void sendStop() { sendRealTime(Stop); }; + inline void sendTick() { sendRealTime(Tick); }; inline void sendContinue() { sendRealTime(Continue); }; inline void sendActiveSensing() { sendRealTime(ActiveSensing); }; inline void sendSystemReset() { sendRealTime(SystemReset); }; @@ -198,6 +199,7 @@ public: inline void setHandleTuneRequest(TuneRequestCallback fptr) { mTuneRequestCallback = fptr; } inline void setHandleClock(ClockCallback fptr) { mClockCallback = fptr; } inline void setHandleStart(StartCallback fptr) { mStartCallback = fptr; } + inline void setHandleTick(TickCallback fptr) { mTickCallback = fptr; } inline void setHandleContinue(ContinueCallback fptr) { mContinueCallback = fptr; } inline void setHandleStop(StopCallback fptr) { mStopCallback = fptr; } inline void setHandleActiveSensing(ActiveSensingCallback fptr) { mActiveSensingCallback = fptr; } @@ -224,6 +226,7 @@ private: TuneRequestCallback mTuneRequestCallback = nullptr; ClockCallback mClockCallback = nullptr; StartCallback mStartCallback = nullptr; + TickCallback mTickCallback = nullptr; ContinueCallback mContinueCallback = nullptr; StopCallback mStopCallback = nullptr; ActiveSensingCallback mActiveSensingCallback = nullptr; diff --git a/src/MIDI.hpp b/src/MIDI.hpp index 7a23c53..169e119 100644 --- a/src/MIDI.hpp +++ b/src/MIDI.hpp @@ -831,6 +831,7 @@ bool MidiInterface::parse() case Continue: case Stop: case Clock: + case Tick: case ActiveSensing: case SystemReset: case TuneRequest: @@ -922,6 +923,7 @@ bool MidiInterface::parse() { case Clock: case Start: + case Tick: case Continue: case Stop: case ActiveSensing: @@ -1280,6 +1282,7 @@ void MidiInterface::disconnectCallbackFromType(Mi case TuneRequest: mTuneRequestCallback = nullptr; break; case Clock: mClockCallback = nullptr; break; case Start: mStartCallback = nullptr; break; + case Tick: mTickCallback = nullptr; break; case Continue: mContinueCallback = nullptr; break; case Stop: mStopCallback = nullptr; break; case ActiveSensing: mActiveSensingCallback = nullptr; break; @@ -1307,6 +1310,7 @@ void MidiInterface::launchCallback() // Real-time messages case Clock: if (mClockCallback != nullptr) mClockCallback(); break; case Start: if (mStartCallback != nullptr) mStartCallback(); break; + case Tick: if (mTickCallback != nullptr) mTickCallback(); break; case Continue: if (mContinueCallback != nullptr) mContinueCallback(); break; case Stop: if (mStopCallback != nullptr) mStopCallback(); break; case ActiveSensing: if (mActiveSensingCallback != nullptr) mActiveSensingCallback(); break; diff --git a/src/midi_Defs.h b/src/midi_Defs.h index efba4f4..f37ee56 100644 --- a/src/midi_Defs.h +++ b/src/midi_Defs.h @@ -81,6 +81,7 @@ using SongSelectCallback = void (*)(byte songnumber); using TuneRequestCallback = void (*)(void); using ClockCallback = void (*)(void); using StartCallback = void (*)(void); +using TickCallback = void (*)(void); using ContinueCallback = void (*)(void); using StopCallback = void (*)(void); using ActiveSensingCallback = void (*)(void); @@ -92,13 +93,13 @@ using SystemResetCallback = void (*)(void); enum MidiType: uint8_t { InvalidType = 0x00, ///< For notifying errors - NoteOff = 0x80, ///< Note Off - NoteOn = 0x90, ///< Note On - AfterTouchPoly = 0xA0, ///< Polyphonic AfterTouch - ControlChange = 0xB0, ///< Control Change / Channel Mode - ProgramChange = 0xC0, ///< Program Change - AfterTouchChannel = 0xD0, ///< Channel (monophonic) AfterTouch - PitchBend = 0xE0, ///< Pitch Bend + NoteOff = 0x80, ///< Channel Message - Note Off + NoteOn = 0x90, ///< Channel Message - Note On + AfterTouchPoly = 0xA0, ///< Channel Message - Polyphonic AfterTouch + ControlChange = 0xB0, ///< Channel Message - Control Change / Channel Mode + ProgramChange = 0xC0, ///< Channel Message - Program Change + AfterTouchChannel = 0xD0, ///< Channel Message - Channel (monophonic) AfterTouch + PitchBend = 0xE0, ///< Channel Message - Pitch Bend SystemExclusive = 0xF0, ///< System Exclusive SystemExclusiveStart = SystemExclusive, ///< System Exclusive Start TimeCodeQuarterFrame = 0xF1, ///< System Common - MIDI Time Code Quarter Frame @@ -110,7 +111,7 @@ enum MidiType: uint8_t SystemExclusiveEnd = 0xF7, ///< System Exclusive End Clock = 0xF8, ///< System Real Time - Timing Clock Undefined_F9 = 0xF9, - Tick = Undefined_F9, + Tick = Undefined_F9, ///< System Real Time - Timing Tick (1 tick = 10 milliseconds) Start = 0xFA, ///< System Real Time - Start Continue = 0xFB, ///< System Real Time - Continue Stop = 0xFC, ///< System Real Time - Stop