1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

Modified MidiMessageSequence::createControllerUpdatesForTime() to use an Array<MidiMessage> instead of an OwnedArray. There are almost no situations where you'd get better performance out of an OwnedArray so if this change broke your code, it's a good idea to have a re-think!

This commit is contained in:
jules 2015-03-02 17:55:45 +00:00
parent bbc3a56b84
commit 968a9eb392
2 changed files with 17 additions and 23 deletions

View file

@ -276,14 +276,11 @@ void MidiMessageSequence::deleteSysExMessages()
}
//==============================================================================
void MidiMessageSequence::createControllerUpdatesForTime (const int channelNumber,
const double time,
OwnedArray<MidiMessage>& dest)
void MidiMessageSequence::createControllerUpdatesForTime (const int channelNumber, const double time, Array<MidiMessage>& dest)
{
bool doneProg = false;
bool donePitchWheel = false;
Array<int> doneControllers;
doneControllers.ensureStorageAllocated (32);
bool doneControllers[128] = { 0 };
for (int i = list.size(); --i >= 0;)
{
@ -291,28 +288,25 @@ void MidiMessageSequence::createControllerUpdatesForTime (const int channelNumbe
if (mm.isForChannel (channelNumber) && mm.getTimeStamp() <= time)
{
if (mm.isProgramChange())
if (mm.isProgramChange() && ! doneProg)
{
if (! doneProg)
{
dest.add (new MidiMessage (mm, 0.0));
doneProg = true;
}
doneProg = true;
dest.add (MidiMessage (mm, 0.0));
}
else if (mm.isPitchWheel() && ! donePitchWheel)
{
donePitchWheel = true;
dest.add (MidiMessage (mm, 0.0));
}
else if (mm.isController())
{
if (! doneControllers.contains (mm.getControllerNumber()))
const int controllerNumber = mm.getControllerNumber();
jassert (isPositiveAndBelow (controllerNumber, 128));
if (! doneControllers[controllerNumber])
{
dest.add (new MidiMessage (mm, 0.0));
doneControllers.add (mm.getControllerNumber());
}
}
else if (mm.isPitchWheel())
{
if (! donePitchWheel)
{
dest.add (new MidiMessage (mm, 0.0));
donePitchWheel = true;
doneControllers[controllerNumber] = true;
dest.add (MidiMessage (mm, 0.0));
}
}
}

View file

@ -247,7 +247,7 @@ public:
state at the required time.
*/
void createControllerUpdatesForTime (int channelNumber, double time,
OwnedArray<MidiMessage>& resultMessages);
Array<MidiMessage>& resultMessages);
//==============================================================================
/** Swaps this sequence with another one. */