Sysex implements a two-way mapper from parameters to MIDI sysex message bytes.
npm i sysex --save
Configure simple messages with a string of space-delimited hexadecimal bytes and parameter names.
import Sentence from 'sysex'
const simple = '43 deviceId 00 7a' // message format specification
const sysex = new Sentence(simple)
sysex.encode({ deviceId: 1 }) // [0x43, 0x01, 0x00, 0x7a]
To provide default parameter values, use an object to construct the Sentence.
const sysex = new Sentence({
sentence: ['12 paramValue 34'],
defaults: {
paramValue: [0x55]
}
})
sysex.encode() // [0x12, 0x55, 0x34]
Repeated bytes can be described with a shorthand square-bracket notation.
const sysex = new Sentence('42 00[4] 76')
sysex.encode() // [0x42, 0x00, 0x00, 0x00, 0x00, 0x76]
Terms with custom Transcoders map raw values to bytes in the Sentence.
import Sentence, { Ascii } from 'sysex'
const sysex = new Sentence({
sentence: [ '33 name[6] 66' ],
transcoders: {
name: Ascii,
},
})
sysex.encode({ name: 'bass' }) // [0x33, 0x62, 0x61, 0x73, 0x73, 0x00, 0x00, 0x66 ]
These transcoders can be described by adding a symbol to the term string:
Most significant to least significant 7-bit chunks: \
- Example:
freq[3]\
Least to most significant 7-bit chunks: /
- Example:
resonance[2]/
Ascii bytes: *
- Example:
patchName[8]*