jbeuckm / sysex

Format MIDI Sysex Messages

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MIDI Sysex Message Transcoder

Sysex implements a two-way mapper from parameters to MIDI sysex message bytes.

Installation

npm i sysex --save

Usage

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]*

About

Format MIDI Sysex Messages


Languages

Language:TypeScript 98.7%Language:JavaScript 1.3%