From 92634888821b6bd04ae1393712f54869a9e8506f Mon Sep 17 00:00:00 2001 From: Paul Ferrand Date: Sun, 29 Mar 2020 15:52:21 +0200 Subject: [PATCH] Get the event list from the midi state --- src/sfizz/MidiState.cpp | 8 ++++++++ src/sfizz/MidiState.h | 7 ++++--- src/sfizz/SfzHelpers.h | 4 +++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/sfizz/MidiState.cpp b/src/sfizz/MidiState.cpp index d08f7d10..c3f6f6cb 100644 --- a/src/sfizz/MidiState.cpp +++ b/src/sfizz/MidiState.cpp @@ -139,3 +139,11 @@ void sfz::MidiState::resetAllControllers(int delay) noexcept pitchBend = 0; } + +const sfz::EventVector& sfz::MidiState::getEvents(int ccIdx) const noexcept +{ + if (ccIdx < 0 || ccIdx > config::numCCs) + return nullEvent; + + return cc[ccIdx]; +} diff --git a/src/sfizz/MidiState.h b/src/sfizz/MidiState.h index e1183dda..d2f0ff4f 100644 --- a/src/sfizz/MidiState.h +++ b/src/sfizz/MidiState.h @@ -141,10 +141,9 @@ public: return validRange.clamp(value); } + const EventVector& getEvents(int ccIdx) const noexcept; + private: - template - using MidiNoteArray = std::array; - using EventVector = std::vector; int activeNotes { 0 }; /** @@ -168,6 +167,8 @@ private: * */ std::array cc; + + const EventVector nullEvent {{0, 0.0f}}; /** * Pitch bend status */ diff --git a/src/sfizz/SfzHelpers.h b/src/sfizz/SfzHelpers.h index becc30d5..e0a885d0 100644 --- a/src/sfizz/SfzHelpers.h +++ b/src/sfizz/SfzHelpers.h @@ -19,7 +19,8 @@ namespace sfz { using CCNamePair = std::pair; - +template +using MidiNoteArray = std::array; template struct CCValuePair { int cc; @@ -66,6 +67,7 @@ struct MidiEvent { int delay; float value; }; +using EventVector = std::vector; struct MidiEventDelayComparator { bool operator()(const MidiEvent& event, const int& delay)