dxex
Version:
Create and parse sysex for Yamaha DX synthesizers.
38 lines (37 loc) • 1.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseSysex = void 0;
const DX_1 = require("./DX");
/**
* Parse sysex data.
* @param {number[]} data The sysex data to parse.
* @return {DX21Voice[] | DX21Voice}
*/
function parseSysex(data) {
if (data[0] !== 0xF0 || data[data.length - 1] !== 0xF7) {
throw new Error('Data isn\'t sysex');
}
if (data[1] !== 0x43) {
throw new Error('Incorrect manufacturer ID');
}
// DX7
if (data[3] === 0x00 && data[4] === 0x00 && data[5] === 0x9B) {
// 1 voice DX7
}
else if (data[3] === 0x09 && data[4] === 0xFF && data[5] === 0x00) {
// 32 voice DX7
}
// DX21
if (data[3] === 0x03 && data[4] === 0x00 && data[5] === 0x5D) {
// 1 voice DX21
const dx = new DX_1.DX21(1);
return dx.parse(data);
}
else if (data[3] === 0x04 && data[4] === 0x20 && data[5] === 0x00) {
// 32 voice DX21
const dx = new DX_1.DX21(32);
return dx.parse(data);
}
return null;
}
exports.parseSysex = parseSysex;