songToEvents = song => {
let events = []
let gid = 0;
song.tracks.forEach((track, t) => {
let tsTime = 0;
let noteLen = defaultNoteLen;
let bpm = song.bpm;
track.forEach((event, i) => {
if (typeof event == "number") {
const noteLenTime = beatsToSeconds(noteLen * 4, bpm)
if (event >= 0) {
events.push([tsTime, gid++, t, i, noteNumberToFreq(event), noteLenTime])
}
tsTime += noteLenTime
} else {
if (event.len) {
noteLen = event.len
}
};
});
});
return events
}