UNPKG

dxex

Version:

Create and parse sysex for Yamaha DX synthesizers.

38 lines (37 loc) 1.1 kB
"use strict"; 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;