Blog

Recent Tinkerings

wasm-audio-worklet

  • A template/to-be-tutorial/package for writing audio DSP in Rust, compiled to WASM for use with the Web Audio API as an AudioWorkletNode
  • Quickly getting side-tracked into a granular synthesizer npm package because I can’t help it
  • Maybe one day spun off as a wasm polyfill/alternative to AudioBufferSourceNode to account for some of its less-than ideal quirks? e.g. limitation around re-using nodes leading to lots of JS object instantiation/GC in the main thread if you’re trying to do something like granular synthesis

this tiny bug fix for python keyring

  • WinVaultKeyring.get_credential("service", "<username_dne>") with a non-existent username would in some cases return credentials of another username.

Published Open Source

react-auto-scroll-table (npm)

  • A React component for airport-style infinite smooth-scrolling displays
  • demo site

Estuary (contributor)

  • Available here
  • Web-based environment for programming music and visuals.

Inner Ear (contributor)

  • Web-based ear training exercises
  • Developed in Haskell (Reflex, Relfex-DOM) and JS (Web Audio API)

Web Dirt (contributor)

  • JS (Web Audio API) implementation of the Dirt/SuperDirt sound sampler.

Past Projects/Maintenance

MIDIPlex

  • React Native mobile application sends MIDI messages over Bluetooth Low Energy to an Adafruit microprocessor mounted in a 3D-printed euro-rack module.
  • A work in progress - development paused when I fried my microprocessor while soldering…

DeadCode (short demo)

  • Web-based music performance interface written in React/Redux (frontend) and Node.js (backend).
  • Organization of live-coded musical and visual code snippets into a performance-oriented UI.
  • Synchronized state over websockets for collaborative performances and suppporting different form-factors (tablet, desktop, hardware MIDI controller)
  • Unfortunately deprecated! Would live to revive this some day, probably as a fresh rewrite in typescript and implementing server synchronization more intelligently…

Other Things

MIDISynthDef

  • Small extension for SuperCollider for authoring audio synthesis patches (SynthDef’s) that are responsive to MIDI messages (without all the boilerplate of writing MIDIDefs)

Seventeen

  • Silly, rough, and experimental web audio drum machine designed for tablet
  • Sounds fetch from freesound.org, forward/backward/sped/slowed-down sequencer, infinite seq duration, etc…

Pi-Sound Patches

  • SuperCollider effects patches for the Pisound

Surfeur Chrome Extension

  • Prototype Chrome plugin that augments web browsing with mindful and playful audio-visual experiences. Inspired by slowness and the ‘flâneur’
  • JavaScript (p5.js, Web Audio API, Jquery), HTML, CSS.