Use vectors of events in the midi state
This commit is contained in:
parent
27ceeb8e1a
commit
1215067dcf
2 changed files with 13 additions and 7 deletions
|
|
@ -95,14 +95,14 @@ void sfz::MidiState::ccEvent(int delay, int ccNumber, float ccValue) noexcept
|
||||||
{
|
{
|
||||||
ASSERT(ccValue >= 0.0 && ccValue <= 1.0);
|
ASSERT(ccValue >= 0.0 && ccValue <= 1.0);
|
||||||
|
|
||||||
cc[ccNumber] = ccValue;
|
cc[ccNumber].emplace_back(delay, ccValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
float sfz::MidiState::getCCValue(int ccNumber) const noexcept
|
float sfz::MidiState::getCCValue(int ccNumber) const noexcept
|
||||||
{
|
{
|
||||||
ASSERT(ccNumber >= 0 && ccNumber < config::numCCs);
|
ASSERT(ccNumber >= 0 && ccNumber < config::numCCs);
|
||||||
|
|
||||||
return cc[ccNumber];
|
return cc[ccNumber].back().second;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sfz::MidiState::reset(int delay) noexcept
|
void sfz::MidiState::reset(int delay) noexcept
|
||||||
|
|
@ -110,8 +110,10 @@ void sfz::MidiState::reset(int delay) noexcept
|
||||||
for (auto& velocity: lastNoteVelocities)
|
for (auto& velocity: lastNoteVelocities)
|
||||||
velocity = 0;
|
velocity = 0;
|
||||||
|
|
||||||
for (auto& ccValue: cc)
|
for (auto& ccEvents: cc) {
|
||||||
ccValue = 0;
|
ccEvents.clear();
|
||||||
|
ccEvents.emplace_back(0, 0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
pitchBend = 0;
|
pitchBend = 0;
|
||||||
activeNotes = 0;
|
activeNotes = 0;
|
||||||
|
|
@ -122,8 +124,10 @@ void sfz::MidiState::reset(int delay) noexcept
|
||||||
|
|
||||||
void sfz::MidiState::resetAllControllers(int delay) noexcept
|
void sfz::MidiState::resetAllControllers(int delay) noexcept
|
||||||
{
|
{
|
||||||
for (unsigned idx = 0; idx < config::numCCs; idx++)
|
for (auto& ccEvents: cc) {
|
||||||
cc[idx] = 0;
|
ccEvents.clear();
|
||||||
|
ccEvents.emplace_back(0, 0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
pitchBend = 0;
|
pitchBend = 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -143,6 +143,8 @@ public:
|
||||||
private:
|
private:
|
||||||
template<class T>
|
template<class T>
|
||||||
using MidiNoteArray = std::array<T, 128>;
|
using MidiNoteArray = std::array<T, 128>;
|
||||||
|
using MidiEvent = std::pair<int, float>;
|
||||||
|
using EventVector = std::vector<MidiEvent>;
|
||||||
int activeNotes { 0 };
|
int activeNotes { 0 };
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -165,7 +167,7 @@ private:
|
||||||
* @brief Current known values for the CCs.
|
* @brief Current known values for the CCs.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
std::array<float, config::numCCs> cc;
|
std::array<EventVector, config::numCCs> cc;
|
||||||
/**
|
/**
|
||||||
* Pitch bend status
|
* Pitch bend status
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue