I Turned Live MARTA + other transit Bus Data Into Generative Music (Vibe Coding the ATL Bus Sonifier)

STATUS: COMPLETE

I Turned Live MARTA Bus Data Into Generative Music

The ATL Bus Sonifier takes real-time MARTA bus positions and turns them into generative ambient music, live, in your browser, at sonifier.sarahclawrence.com. No dataset, no download, just whatever the buses are doing right now translated into sound. I vibe-coded the whole thing, and this is the first post in a series where I'm documenting the weird, useful, and occasionally cursed things I've built by talking to an AI instead of starting from a blank file.

What is the ATL Bus Sonifier, exactly?

It's a small web app that pulls live position data from MARTA and partner agencies' public feeds and maps bus movement, like speed, density, how many buses are clustered on a route, whatever signal I decided was musically interesting, onto a generative audio engine. The result isn't a song you'd necessarily choose to listen to on purpose (though, weirdly, sometimes it is). It's more like ambient civic infrastructure you can hear. I love that it's tangible in a way that a spreadsheet of transit data never is.

Why build this at all?

Honestly? Because I could, and because I'd been sitting on the idea for a while and vibe coding finally made it possible without needing to be, like, a real audio engineer first. I could have: kept it as a fun idea I mention at parties, OR actually build it and see if MARTA data has any rhythm to it. I built it.

There's also a smaller, more personal reason. I spend a lot of my design practice thinking about civic engagement and how people notice (or don't notice) the systems running underneath a city. A transit system humming along in the background is exactly that kind of invisible infrastructure. Sonifying it is a pretty direct way of saying "hey, this is happening right now, and it's kind of beautiful."

ATL Bus Sonifier interface showing a dark map of Atlanta with MARTA bus positions rendered as glowing dots, next to a waveform visualizer.

What I'd tell someone trying this themselves

If you're picturing "real-time data plus generative audio" and thinking that sounds like a moonshot, it isn't anymore. The hardest part was never the code. It was deciding what a bus should sound like.

The MARTA API sends updates in 20 second intervals, which I didn't fully appreciate until I heard it: silence, silence, silence, then BWOMMMMM, then silence again. Technically accurate, completely unlistenable. I had to figure out how to space those updates out while still keeping something that felt like a rhythm instead of a jump scare every twenty seconds.

Then there was the sound library problem. I built in the ability to upload your own sounds on the admin side, which felt like a fun feature right up until I made every single line a clap sample and it sounded like a party of people who had lost their minds. Not the ambient civic hum I was going for.

From there it became a tuning exercise more than a coding one. MARTA runs a lot of routes. The other agency partners run far fewer. So I ended up managing that imbalance by tone, giving each agency its own sonic character, and color coding them on the map so you could actually see what you were hearing. I also added the ability to zoom around the map itself, see individual bus speed, and hear the tone shift by agency as you move through it.

None of that is a coding problem, exactly. It's a listening problem. The AI could build whatever mapping logic I described, but it couldn't tell me that a clap sample times forty buses sounds like a nervous breakdown. That part was just me, hitting play, wincing, and trying again.

Where does the data actually come from?

The transit data is public, but "public" and "easy to get to" are two different things. I remember hitting a lot of auth limits along the way, and a good chunk of the early effort went into just finding the right API for each agency and teasing out the individual lines from it. Every agency structures and gates its data a little differently, so "pull in some bus data" turned out to be less of a single step and more of a small research project on its own.

Would I have built this before AI?

No, not really. This wasn't a "it would've taken three weeks instead of three days" situation. It's more that a side project like this was never going to justify hiring a developer. I'd rather spend that budget and that trust on the projects that actually need a professional's care, the client work, the civic installations, the things where getting it right matters more than getting it built. The Sonifier existed in the "fun idea I mention at parties" category for a long time because there was no version of hiring someone for it that made sense. AI is what moved it out of that category.

Try it yourself

The Sonifier is live at sonifier.sarahclawrence.com. It works best with sound on and zero expectations. Let it run in a tab while you work. Come back to it at a weird hour and see what the night buses sound like.

FAQ

What data does the ATL Bus Sonifier use? Live position data from Atlanta's transit agencies, MARTA and several smaller partner agencies, pulled from their public real-time feeds.

Is the ATL Bus Sonifier open source? Not something I'm pointing people to right now. This one's staying a "go play with the live version" project rather than a "go read my code" project.

What tools were used to build it? It was vibe-coded, built by working with AI rather than hand-writing the app from scratch.

Next
Next

I Brought a Dead App Back From the Grave With AI-Assisted Development