MidiList
A MidiList
is an array with 128 numbers that is particularly useful for MIDI processing.
It offers a slight performance advantage as well as some handy methods which makes it the preferred data type when you need to store a list of numbers:
/** MidiList Benchmark
Performs a set of operations to show the performance
benefit of using a MidiList over a standard array.
On my system it's 733ms vs. 4ms. Be aware that this is a
highly artificial benchmark, real world use cases will not
show this kind of performance gain!
*/
// Set this to true to use the MidiList, then run the code again and watch
// the benchmark result.
const var MEASURE_FAST = false;
// Create a (fast) MidiList and a (slow) Javascript array.
const var fast = Engine.createMidiList();
const var slow = [];
// preallocate so that the array has at least a tiny chance (JK, doesn't).
slow.reserve(128);
// Initialise the array and the MidiList with the same values.
for(i = 0; i < 128; i++)
{
var v = Math.random() * 12;
fast.setValue(i, v);
slow[i] = v;
}
// Normal Array
if(!MEASURE_FAST) Console.start();
for(i = 0; i < 10000; i++)
{
// find a item
slow.indexOf(8);
// search number of occurences
var slowCounter = 0;
for(j = 0; j < 128; j++)
{
if(slow[j] == 5)
slowCounter++;
}
// fill with constant
for(j = 0; j < 128; j++)
slow[j] = 12;
}
if(!MEASURE_FAST) Console.stop();
// MidiList
if(MEASURE_FAST) Console.start();
for(i = 0; i < 10000; i++)
{
// find an item
fast.getIndex(8);
// fill with constant
fast.fill(12);
// search number of occurences
var fastCounter = fast.getValueAmount(5);
}
if(MEASURE_FAST) Console.stop();
Class methods
clear
Clears the MidiList to -1. Edit on GitHub
MidiList.clear()
fill
Fills the MidiList with a number specified with valueToFill. Edit on GitHub
MidiList.fill(int valueToFill)
getBase64String
Encodes all values into a base64 encoded string for storage. Edit on GitHub
MidiList.getBase64String()
getIndex
Returns the first index that contains this value. Edit on GitHub
MidiList.getIndex(int value)
getNumSetValues
Returns the number of values that are not -1. Edit on GitHub
MidiList.getNumSetValues()
getValue
Returns the value at the given number. Edit on GitHub
MidiList.getValue(int index)
getValueAmount
Returns the number of occurences of 'valueToCheck' Edit on GitHub
MidiList.getValueAmount(int valueToCheck)
isEmpty
Checks if the list contains any data. Edit on GitHub
MidiList.isEmpty()
restoreFromBase64String
Restore the values from a String that was created with getBase64String(). Edit on GitHub
MidiList.restoreFromBase64String(String base64encodedValues)
setRange
Sets a range of items to the same value. Edit on GitHub
MidiList.setRange(int startIndex, int numToFill, int value)
setValue
Sets the number to something between -127 and 128. Edit on GitHub
MidiList.setValue(int index, int value)