WebAudioAPI

Javascript library to generate music using the Web Audio API

Current Library

  • Single-file ECMAScript module: https://hedgecrw.github.io/WebAudioAPI/lib/webAudioAPI.js
  • Minified single-file ECMAScript module: https://hedgecrw.github.io/WebAudioAPI/lib/webAudioAPI.min.js
  • Full instrument library: https://hedgecrw.github.io/WebAudioAPI/lib/webAudioAPI-instruments.tgz

API Documentation

  • https://hedgecrw.github.io/WebAudioAPI/WebAudioAPI.html

Demos

  • Live piano demo: https://hedgecrw.github.io/WebAudioAPI/piano
  • Score creation demo: https://hedgecrw.github.io/WebAudioAPI/score
  • NetsBlox emulation demo: https://hedgecrw.github.io/WebAudioAPI/netsblox
  • Live external device demo: https://hedgecrw.github.io/WebAudioAPI/external
  • Effects manipulation demo: https://hedgecrw.github.io/WebAudioAPI/effects
  • Note modifications demo: https://hedgecrw.github.io/WebAudioAPI/modifications
  • Live analysis demo: https://hedgecrw.github.io/WebAudioAPI/analysis

Tools

  • Instrument creator: https://hedgecrw.github.io/WebAudioAPI/instrumentcreator
  • Instrument decompiler: https://hedgecrw.github.io/WebAudioAPI/instrumentdecompiler

Future Work

  • [ ] Allow for nested sequences (function to generate sequences with mods)
  • [ ] Fix sustained/looping instrument audio clips to have no silence at end
  • [ ] Allow importing Sf2, Sf3, Sfz, or raw audio (WAV, OGG, MP3, etc.) formats for instrument creation
  • [ ] Import good quality SoundFonts from https://sites.google.com/site/soundfonts4u/
  • [ ] See what other effects can be added from https://github.com/jonathanneels/Audio-Input-Effects and from https://alemangui.github.io/pizzicato/
  • [ ] Make library fully General MIDI 2 compliant