HISE Docs

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)