Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

MIDI is Staging a Comeback… in Your Browser!


Published on

Presented at FITC Toronto 2017
More info at

Presented by Jean-Philippe Côté, TangibleJS


If you own an electronic music instrument made in the last 3 decades, it most likely supports the MIDI protocol. What if we told you that it is now possible to interact with your beloved keytar, drum machine or MIDI software directly from your browser? You would go crazy, right? Well, prepare to do so…

With built-in support inside Chrome and Opera, upcoming support in Firefox and plugins for other platforms, this possibility is now a reality. This talk will introduce the audience to the Web MIDI API and to a library that will help you get the most out of it called WebMidi.js.

Web devs, man your synths!


Kickstart the development of web-based, MIDI-driven projects.

Target Audience

Web developers who want to make some noise and musicians paying bills doing front-end dev gigs

Assumed Audience Knowledge

Basic knowledge of the world’s top 4 languages: HTML, CSS, JavaScript and MIDI

Five Things Audience Members Will Learn

What the Web MIDI API is and what it can be used for
What the current support level for MIDI in browsers is
Why the Web MIDI API is too low-level for the average web developer and what can be done about it
How to send MIDI commands to MIDI devices and how to react to incoming MIDI events
How it sounds when a web developer transforms into an electronic musician

Published in: Internet
  • Be the first to comment

  • Be the first to like this

MIDI is Staging a Comeback… in Your Browser!

  1. 1. Original art by Raul Taciu. Used with permission.
  2. 2. WEB MIDI API « the Web-MIDI API is the most significant advancement of MIDI since… MIDI itself! » — Source:
  3. 3. Source:
  4. 4.
  5. 5. Firefox v52+ NPAPI
  6. 6. Sources: and 92%DESKTOP BROWSER COVERAGE
  7. 7. Web MIDI API Polyfill:
  8. 8. Source:
  9. 9. #%?*&$#!
  10. 10.
  11. 11. Web MIDI Library:
  12. 12. • decrementRegisteredParameter • incrementRegisteredParameter • playNote • send • sendActiveSensing • sendChannelAftertouch • sendChannelMode • sendClock • sendContinue • sendControlChange • sendKeyAftertouch • sendPitchBend • sendProgramChange • sendReset • sendSongPosition • sendSongSelect • sendStart • sendStop • sendSysex • sendTimecodeQuarterFrame • sendTuningRequest • setMasterTuning • setModulationRange • setNonRegisteredParameter • setPitchBendRange • setRegisteredParameter • setTuningBank • setTuningProgram • stopNote Functions for outgoing MIDI messages
  13. 13. Events for incoming MIDI messages • activesensing • channelaftertouch • channelmode • clock • continue • controlchange • keyaftertouch • noteoff • noteon • pitchbend • programchange • reset • songposition • songselect • start • stop • sysex • timecode • tuningrequest
  14. 14. What about latency? Native Instruments Battery 4+ VS.
  15. 15. Pad Hit 440Hz Tone LATENCY
  16. 16. 9ms16ms Native Instruments Battery 4+ Numbers reflect the time between hitting a pad on AxiomPro controller and hearing the sound come out of the computer. Tests performed on MacBook Pro (macOS Sierra). Buffer size was 128 samples. VS.
  17. 17. What about latency? Path A Path B
  18. 18. How much slower? 0ms
  19. 19.
  21. 21. 1988 Roland Octapad II (PAD-80)
  22. 22. CODE DEMO
  23. 23. LET’S HEAR IT OUT!
  24. 24. HOMEWORK
  25. 25. QUESTIONS ?
  26. 26. Vote for Web MIDI API Support in Microsoft Edge Follow Web MIDI Development in Firefox Web MIDI API Specification WebMidi Library Web MIDI API Polyfill Web MIDI API Shim for iOS Web MIDI Browser Tone.js Web Audio Framework Source Code From This Talk Jazz-MIDI Extension for Firefox Links from this talk