Title:
JZZ.js - a unified API for MIDI applications
JZZ.js - a unified API for MIDI applications
Author(s)
Kachalo, Sema
Advisor(s)
Editor(s)
Collections
Supplementary to
Permanent Link
Abstract
There are multiple ways to access and emulate MIDI devices in JavaScript. This includes real MIDI access like Web-MIDI API or Jazz-Plugin, Web-Audio synths like MIDI.js or Timbre.js, or HTML gadgets for MIDI input like Qwerty-Hancock. When used all together, these methods allow good OS/browser coverage; however, it is cumbersome to use them all in the same project because of their API differences.
We introduce JZZ.js - a JavaScript library that provides unified interface for all possible MIDI implementations and has the following key features:
- Hiding the details of asynchronous calls behind the developer-friendly chaining syntax.
e.g. JZZ().openMidiOut(/Yamaha/).send(0x90,60,127).wait(500).send(0x80,60,127);
- Treating MIDI inputs and outputs as graph nodes that can be directly connected (inspired by the Web-Audio API design).
e.g. JZZ().openMidiIn().connect(JZZ().openMidiOut('Microsoft GS Wavetable Synth'));
- Numerous helpers for converting MIDI messages to/from the human-readable form.
e.g. console.log(JZZ.MIDI.aftertouch(0,'D#5',127).toString());
- Extensibility. We provide examples how to adapt the developers’ own libraries and gadgets into the framework.
JZZ.js works with Node.js and all major browsers in Windows, MacOS, and Linux. Limited support is available for Android and iOS.
Sponsor
Date Issued
2016-04
Extent
Resource Type
Text
Moving Image
Moving Image
Resource Subtype
Abstract
Proceedings
Presentation
Proceedings
Presentation
Rights Statement
Licensed under a Creative Commons Attribution 4.0 International License (CC BY 4.0).