Page tree
Skip to end of metadata
Go to start of metadata
sortEvents(eventsTable)

Description

Function to sort the events of the specified events table according to their PPQ position. The function sorts the events from first to last PPQ position. The events table is part of a tracks table which is part of the MIDI sequence table. See MIDI Sequence Table for details.

Available in: Controller

Arguments

eventsTableThe table record referencing the events table.table

Example

-- produce a minor scale with reverse PPQ positions, then sort it

-- create MIDI sequence table
midiSequence = { tracks = { { events = {} } } }

-- initialize variables
minorScaleIntervals = { 0, 2, 3, 5, 7, 8, 10, 12 }
root = 60  -- C3
ppqPosition = 7

-- produce a minor scale with reverse PPQ positions
for i, interval in ipairs(minorScaleIntervals) do

    local note = root + interval

    -- create note-on event
    local noteOn = Event(EventType.noteOn)
    noteOn.note = note
    noteOn.velocity = 100
    noteOn.ppqPosition = ppqPosition

    -- create note-off event
    local noteOff = Event(EventType.noteOff)
    noteOff.note = note
    noteOff.ppqPosition = ppqPosition + 1

    -- insert the events in the MIDI sequence table with Lua's table.insert function
    table.insert(midiSequence.tracks[1].events, noteOn)
    table.insert(midiSequence.tracks[1].events, noteOff)

    ppqPosition = ppqPosition -1

end

print("Sorting before sortEvents:")

for i, event in ipairs(midiSequence.tracks[1].events) do
    print(i, event)
end

print() -- empty line

sortEvents(midiSequence.tracks[1].events)

print("Sorting after sortEvents:")

for i, event in ipairs(midiSequence.tracks[1].events) do
    print(i, event)
end

print() -- empty line

1 Comment