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:
parent
bbc3a56b84
commit
968a9eb392
2 changed files with 17 additions and 23 deletions
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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. */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue