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)