Documented the midi state

This commit is contained in:
Paul Ferrand 2019-11-30 00:53:09 +01:00
parent 5a62509789
commit f315a75d35

View file

@ -5,8 +5,20 @@
namespace sfz namespace sfz
{ {
/**
* @brief Holds the current "MIDI state", meaning the known state of all CCs
* currently, as well as the note velocities that triggered the currently
* pressed notes.
*
*/
struct MidiState struct MidiState
{ {
/**
* @brief Update the state after a note on event
*
* @param noteNumber
* @param velocity
*/
inline void noteOn(int noteNumber, uint8_t velocity) inline void noteOn(int noteNumber, uint8_t velocity)
{ {
if (noteNumber >= 0 && noteNumber < 128) { if (noteNumber >= 0 && noteNumber < 128) {
@ -15,6 +27,12 @@ struct MidiState
} }
} }
/**
* @brief Register a note off and get the note duration
*
* @param noteNumber
* @return float
*/
inline float getNoteDuration(int noteNumber) const inline float getNoteDuration(int noteNumber) const
{ {
if (noteNumber >= 0 && noteNumber < 128) { if (noteNumber >= 0 && noteNumber < 128) {
@ -26,6 +44,12 @@ struct MidiState
return 0.0f; return 0.0f;
} }
/**
* @brief Get the note on velocity for a given note
*
* @param noteNumber
* @return uint8_t
*/
inline uint8_t getNoteVelocity(int noteNumber) const inline uint8_t getNoteVelocity(int noteNumber) const
{ {
if (noteNumber >= 0 && noteNumber < 128) if (noteNumber >= 0 && noteNumber < 128)
@ -33,8 +57,22 @@ struct MidiState
return 0; return 0;
} }
/**
* @brief Stores the note on times.
*
*/
std::array<std::chrono::steady_clock::time_point, 128> noteOnTimes { }; std::array<std::chrono::steady_clock::time_point, 128> noteOnTimes { };
/**
* @brief Stores the velocity of the note ons for currently
* depressed notes.
*
*/
std::array<uint8_t, 128> lastNoteVelocities { }; std::array<uint8_t, 128> lastNoteVelocities { };
/**
* @brief Current known values for the CCs.
*
*/
CCValueArray cc; CCValueArray cc;
}; };
} }