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
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
ChatRTFMChat with your music gear2025
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

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

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

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.