Skip to content
Jean-Philippe Côté edited this page Nov 19, 2021 · 212 revisions

WebMidi.js Wiki

This page is being retired. For upcoming enhancements, check out the new website.

Questions

  • Should parameters (e.g. velocity) be specified and reported as 7bit values (0-127) or as normalized floats (0-1) ? See forum discussion and GitHub Discussion.

    These are the methods where the problem surfaces (by default, they expect a float):

    • Output.setKeyAftertouch() (pressure)
    • Output.setChannelAftertouch() (aftertouch)

    Currently, these methods accept a 7bit value directly, through the rawValue option parameter or by specifying a pair of [msb, lsb]

    • Note() constructor (attack, release)

    • OutputChannel.playNote() (note number, attack, release)

    • OutputChannel.sendNoteOff() (release)

    • OutputChannel.sendNoteOn() (attack)

    • OutputChannel.setMasterTuning() (msb/lsb)

    • OutputChannel.setPitchBend() (msb/lsb)

    • OutputChannel.setPitchBendRange() (msb/lsb)

    • OutputChannel.setModulationRange() (msb/lsb)

    • Output.setSongPosition() (value: 1-16383)

    • OutputChannel.setTuningBank() (value: 0-127)

    • OutputChannel.setTuningProgram() (value: 0-127)

    • OutputChannel.setProgram() (value: 0-127)

    • OutputChannel.sendControlChange() (value: 0-127)

    • Output.setSong() (value: 0-127)

    We also need to look at methods of the Output object

  • What should be the default channel value for listening and sending? I think listening on all channels will help beginners and doesn't risk clogging the system. Sending to all channels by default is kinda weird, though.

  • Should all values be zero-indexed (MIDI channels, bank numbers, etc.)

Enhancements for the website and documentation

  • Add several usage examples:

    • Vanilla JS
    • React/Next.js/Svelte/etc.
    • How to interface with other MIDI software on macOS, Windows and Linux
    • Typescript, with examples such import and bundling (see Issue #82)
    • Electron/NW.js
  • Add a CONTRIBUTING.md file

Clone this wiki locally