James Hurlbut
Music projects · San Francisco

Music software, instruments and rooms built out of chord petals

I make things that let people play with sound: iPhone apps, web instruments, fine-tuned music models, and installations for festivals and museums. Most of it is built in the open and shipped small.

ProjectWhat it isYear
Aloha Got Soul, virtuallyWalk a scanned record shop and play the wall2026
ChordBloomChord explorer for iOS and the web2026
No Bars GivenOff-grid festival app, OutsideLLMs grand prize2026
Phone experimentsSeven small instruments and visualizers2026
Spreadsheets Synth303-style acid synth, standalone and AUv32025–26
AIgoraveAI live-coded dub techno with reactive visuals2026
Tempo TapTap a tempo on your phone, read the BPM2026
BuyMusicTurn your streaming history into purchases from artists2025–26
ChatRTFMChat with your music gear2025
Alesis HD24 toolsReading a 2001 24-track recorder's drives on Apple Silicon2025
Fine-tuning MusicGenDeep Learning House, a model trained on records2024
DJ Shadow show visualsAudio-reactive worm nervous system, Our Pathetic Age tour2019–20
Google Play Music BlockPhysics simulation on a two-story LED cube2016
OrbigonHand-tracked spherical Simon Says on the first Rift2014
Sound Lab: Bird BrainThree-player birdsong game at the Smithsonian2014
Chromebook Pixel TreeSixty-screen musical ring for Google I/O2013

Aloha Got Soul, virtually

2026

A walk through the Aloha Got Soul record shop in Honolulu, in the browser. The store was captured on an iPhone with LiDAR, 1,154 frames in seven minutes, and rebuilt as a Gaussian splat of 5.7 million points that PlayCanvas renders on WebGPU, with lighter copies for tablets and phones. Drag to look, walk with the keys or tap the floor, and hover a sleeve on the record wall to see what it is. All 48 are identified, and clicking most of them plays the record. Press D for disco.

Scan to site in ten days: splat conversion, first-person controls clamped to the shop floor, hit-testing against the wall, a catalogue matched to the label's shop and Discogs, and a short tour on the first visit.

Live app

ChordBloom

2026
Video slot: media/chordbloom.mp4
Borrowed chords and inversions

A chord progression explorer where every chord is a petal. Tap a petal to hear it, double-tap to move into that key, long-press to stack sevenths, ninths and thirteenths. Views for the diatonic set, the circle of fifths, relative and parallel keys, tritone substitutions and modal interchange, so the theory is something you can walk around in rather than read about.

Sound comes from built-in Web Audio synths or from SuperCollider's scsynth compiled to WebAssembly. Magenta.js improvises melodies over the changes. MIDI goes out over CoreMIDI and Bluetooth LE to hardware synths and DAWs. The whole app is one HTML file wrapped in a native Swift shell.

  • iOS and web
  • SuperCollider WASM
  • Magenta.js
  • BLE and CoreMIDI
  • Free, MIDI output unlock

No Bars Given

2026
Video slot: media/nobarsgiven.mp4
One-minute trailer

A festival companion built for Outside Lands 2026. When 80,000 phones melt the cell towers, it still finds your crew: group chat, live friend locations on the map and raise-to-AR 3D totems all travel over a Bluetooth LE mesh between phones, with no signal at all.

Won the grand prize at OutsideLLMs, the festival's official hackathon, sponsored by OpenAI. Built with Lindo Akkarach, then shipped as a public TestFlight beta during the festival weekend and on to the App Store. Built on a fork of the public-domain openllmdigitotem mesh; the encrypted location beacons, crew sync, stage overlays and the RealityKit totem view are new.

  • iOS
  • Swift and RealityKit
  • BLE mesh
  • Grand prize, OutsideLLMs 2026
Video slot: media/outsidellms-recap.mp4
Hackathon recap by OpenAI for Startups

Phone experiments

2026

Seven small instruments and visualizers, each built in an evening and recorded straight off the phone. Sound on.

Video slot: media/experiment-1.mp4

Orbits

Tap to place a note. Rotate the structure to change the pitch of the sequence.

Video slot: media/experiment-2.mp4

Scan

Pixel drum machine. Take a photo, then move the box over it to make bass drum, snare and hi-hat patterns from the image.

Video slot: media/experiment-3.mp4

Fridge

Lyrics land as word magnets while the song plays.

Video slot: media/experiment-4.mp4

Letterfield

A 2D design collage built in real time from the music's metadata.

Video slot: media/experiment-5.mp4

Vapor

Clouds that flash with the beat.

Video slot: media/experiment-6.mp4

Quasicrystal

A Penrose lattice that breathes with the music.

Video slot: media/experiment-7.mp4

Shout

Lyrics in a slab of caps, one line lit at a time.

Spreadsheets Synth

2025–26
Video slot: media/spreadsheets-synth.mp4

A 303-style acid synth with a step sequencer, built in JUCE. Runs standalone on iPhone and as an AUv3 plugin inside other music apps, and talks Bluetooth MIDI to hardware. A cultural product of the band Spreadsheets.

  • iOS
  • JUCE and C++
  • AUv3
  • Bluetooth MIDI

AIgorave

2026

An audiovisual live-coding environment that plays itself. Gemini writes Strudel patterns for 128 BPM dub techno, the code types itself into a real live-coding editor and starts playing, and Hydra visuals react to the music through an FFT split into bass, mids and treble. Every sixteen bars the model evolves the set.

Live app

Tempo Tap

2026

Tap along to a track and read its tempo. One page that times your taps, shows the BPM with a graph of how steady the last few seconds were so you know when it has settled, and hands off to Shazam when you want the song named too.

Made for the booth: open it on a phone, tap on the edge of the deck. An earlier version listened through the microphone and found the beat itself; tapping was faster and more reliable, so the microphone went.

  • Web
  • One HTML file
  • Shazam handoff

BuyMusic

2025–26
Video slot: media/buymusic.mp4
Connect, scan, buy

Buy the music you stream. Connect Spotify or YouTube and BuyMusic reads your listening history, then finds where each track can be bought, with the purchases that reach the artist first: downloads, vinyl and CD from the artist's or label's own Bandcamp page, the matching vinyl pressing on Discogs, then iTunes. Every track gets price bubbles by store and format, each one a link straight to the checkout.

The reason it exists: a stream pays an artist a fraction of a cent, after a platform and usually a label have taken their share. A download bought on Bandcamp pays them most of the price, and a record bought from an independent shop keeps a shop open too. People find music by streaming now, so the app meets them there and turns the history they already have into a shopping list for the artists in it.

A static front end with serverless OAuth and history endpoints on Vercel. An early version drove a headless browser through a dozen record shops' search pages, and most of them now answer bots with a Cloudflare challenge. The current one asks only sources that publish their data: Bandcamp's search API and the structured data on its track pages, the Discogs API and the iTunes Search API, all in parallel from one function in about a second. The matching does the real work. It drops remixes and fan uploads posted under an artist's name, and scores Discogs pressings by album and by how many collectors own each one, so a track lands on the standard LP rather than a rare promo.

  • Web
  • Spotify and YouTube OAuth
  • Bandcamp, Discogs and iTunes
  • No scraping

ChatRTFM

2025
Video slot: media/chatrtfm.mp4
Promo

Chat with your music gear. Pick the synth, drum machine or pedal you own and ask it questions in plain language: how do I set up a sidechain, what does this button do, why is the arpeggiator not latching. Answers come out of the actual manual instead of a forum thread.

Built with Next.js and deployed on Vercel. Manuals are cached at the model layer so long documents stay fast and cheap to query.

  • Web
  • Next.js
  • LLM over manuals

Alesis HD24 tools on a modern Mac

2025
The Alesis HD24 recorder: a three-unit rack box with 24 level meters, a drive caddy and a transport display
Alesis HD24, 24 tracks on a removable IDE drive

The Alesis HD24 is a 24-track hard-disk recorder from 2001 that writes its own file system to plain IDE drives, so the only way to get sessions off a drive without the machine is software that understands that format. HD24tools, Marc Brevoort's reverse-engineered open-source suite, had not been touched since 2019 and would not build on Apple Silicon.

This fork brings it to current macOS: fixes for the modern toolchain and raw disk access, an interactive browser for walking a drive's projects, songs and tracks from the terminal, and an FLTK front end on top of it, so a drive in a USB dock can be read and its 24-bit tracks exported on a 2025 Mac.

  • macOS
  • C++
  • Apple Silicon
  • FLTK
  • Alesis HD24
HD24 Connect icon: the letters HD24 in white with Connect in orange

HD24 Connect

The suite's icon, inherited from the original project.

The HD24 front panel display showing a song name, timecode and 24 tracks at 48 kHz

The display

What the drive's file system has to reproduce: song, position, track count, sample rate.

Fine-tuning MusicGen

2024

Fine-tuning Meta's open-source MusicGen model on a hand-picked set of house, disco and techno records, then releasing the results as Deep Learning House. An acid model went through five versions on its own; the renders were cut into one-minute videos with generated cover art.

Video slot: media/acid-model.mp4

Acid model, version 4

Video slot: media/deep-learning-house-20.mp4

Deep Learning House 20

Video slot: media/deep-learning-house-21.mp4

Deep Learning House 21

Video slot: media/deep-learning-house-22.mp4

Deep Learning House 22

DJ Shadow show visuals

2019–20

Projected visuals for DJ Shadow's Our Pathetic Age tour. The imagery is a real-time simulation of the nervous system of C. elegans, the one-millimetre worm whose 302 neurons are the only complete connectome science has, built on the OpenWorm project's model. Every neuron and muscle in the render fires in response to the audio, so the worm twitches, coils and lights up with the set.

Video slot: media/dj-shadow.mp4

The simulation

Silent capture of the visuals, from the studio rather than the show.

DJ Shadow on stage in front of a wide screen of red and blue neuron renders

Le Trianon, Paris, 2020

Audience photo from the show.

Google Play Music Block

2016
Video slot: media/google-play-music-block.mp4
Panorama Festival, New York. Video by Matte Projects.

A real-time physics simulation, built in TouchDesigner, shown on a two-story LED cube at Panorama Festival in New York to promote Google Play Music.

  • Installation
  • TouchDesigner
  • Real-time physics
  • Panorama Festival 2016

Orbigon

2014
Video slot: media/orbigon.mp4
Gameplay teaser

An early prototype of a hand-tracked music puzzle game: a spherical Simon Says with a procedural, reactive soundtrack. A faceted orb flashes a pattern in time with the music and you play it back, one hand rotating the orb while the other selects the sections. Built for the Leap Motion 3D Jam on the original Oculus Rift with a Leap Motion sensor strapped to the front, before VR headsets had controllers or hand tracking of their own. Music by Cherushii.

Written in C++ on the Cinder library: a custom Oculus Rift interface that merges the Leap Motion's hand tracking and camera feed with the stereoscopic world, a post-processing shader stack for depth of field, transparency and glow, and a glTF pipeline for bringing in animated 3D assets.

  • VR and AR
  • C++ and Cinder
  • Oculus Rift and Leap Motion
  • glTF
  • Leap Motion 3D Jam 2014

Sound Lab: Bird Brain

2014
A child in headphones at the Sound Lab cart, hand on the arcade buttons, scoreboard on the screen above
Sound Lab in Q?rius, 2014

A listening game for Sound Lab in Q?rius, the education center at the Smithsonian's National Museum of Natural History. Two or three players are songbirds with headphones and arcade-button controllers. Real bird recordings play in their ears: hear a predator and take cover, hear a worm and eat it, hear a mate and answer in the right pitch range. Round two adds city noise, so players have to find the open range, the way urban songbirds do.

I wrote the audio software in C++ on FMOD and did the hardware integration: three screens, three headphone mixes and three Midi Fighter controllers off one Mac Mini. Built with Jimmy Garver, JD Madsen, John Kaufmann and Rebecca Bray. Opened February 2014.

  • Museum exhibit
  • C++ and FMOD
  • Midi Fighter Spectra
  • Smithsonian NMNH
Video slot: media/birdbrain-floor-upright.mp4

On the floor

Phone video, January 2014.

Fabrication drawing of the triangular Audio Lab kiosk with three monitors on a truss

The cart

Triangular kiosk on a truss: three screens, three controllers, the computer and audio interface inside. Drawing by Explus for NMNH, October 2013.

Google Chromebook Pixel Tree

2013
Video slot: media/chromebook-pixel-tree.mp4
Obscura Digital case study

Sixty Chromebook Pixels arranged in a ring, playing one synchronized panoramic video across every screen. Visitors draw musical gestures on any laptop and watch and hear them travel around the ring. Built at Obscura Digital to launch the Pixel and shown at Google I/O 2013 and other Google events.

I wrote the software that kept video in sync across all sixty devices and designed and built the interactive music mode.

  • Installation
  • Node.js, HTML, JavaScript
  • Obscura Digital for Google

About

James Hurlbut builds interactive things with sound and light in San Francisco. For the last seven years he has been prototyping new experiences at Adobe, focused on music, 3D graphics and immersive apps. Before that he made large-scale installations for Google, Facebook, Twitter, Microsoft and the San Francisco Public Utilities Commission. Most of the work here is music: apps, instruments, models and the occasional room. He studied Experimental Animation at CalArts under Jules Engel.