Advertise here with Carbon Ads

This site is made possible by member support. πŸ’ž

Big thanks to Arcustech for hosting the site and offering amazing tech support.

When you buy through links on kottke.org, I may earn an affiliate commission. Thanks for supporting the site!

kottke.org. home of fine hypertext products since 1998.

Beloved by 86.47% of the web.

πŸ”  πŸ’€  πŸ“Έ  😭  πŸ•³οΈ  🀠  🎬  πŸ₯”

The Underscore Music Player

For the past several months, I’ve been using a web-based music player I built called Underscore. It’s playing music for me right now. I recently revamped & improved it and thought it was time to show it off. Here’s a screenshot:

a screenshot of a music player with almost no interface but with a very bright patterned background

Ok, let me explain. I listen to music all day while I’m working, favoring music without words β€” electronic, classical, soundtracks, ambient, nature sounds, that sort of thing. I listen to whole albums, long mixes, and playlists across several services, including Spotify, YouTube, and Soundcloud. It was becoming a pain in my ass trying to pick something to listen to while working; I’d have to scroll through playlists on all these different services and generally I’d end up listening to the same stuff over and over again, getting sick of it, getting distracted by choosing music, missing some gems buried deep in a list of saved albums, etc.

So, pair programming with Claude, I built Underscore, a “home-cooked meal” app that’s both simple and opinionated. Here’s how it works. You can add links to music from Spotify, YouTube, Soundcloud, Bandcamp, and Apple Music to it β€” just paste their share URLs in. Reloading the page gives you a random piece of music from your collection. You can see a list of the songs, videos, playlists, and albums in your collection and can hide them if you want. That’s it. That’s all it does.

There’s no APIs or authentication or auto-synching playlists. The music is played through embedded players and if it lands on something from Spotify, Apple Music, or Bandcamp, you’re gonna have to click the play button in the embedded player (Soundcloud and YT videos should play automatically (but don’t always for whatever reason)). When your current selection ends, the new random thing doesn’t automatically play…you need to refresh the page.

It’s not ideal, having it be a little bit manual and janky in this way. But oh boy, am I loving this thing. It took me awhile to get everything into the system, but I’ve got almost 300 resources in my collection now β€” probably 300-400 hours of music all told β€” and I listen to it all day while working. I’m listening to stuff from deep in the archives, albums and playlists I just wouldn’t have thought to play, when strapped for time in the rush to get to work. When something new comes along, like NIN’s Tron: Ares soundtrack, I add it in there. I don’t get distracted…I just get good music for flow/coding/writing all the live-long day.

The background animation was adapted and extended from one of the examples in Rick Rubin’s The Way of Code β€” there are a bunch of different patterns and colors that it cycles through. I’m kinda proud of the way the media embeds fade into 1-bit images so you can see the background behind them when they’re playing…dorking around with CSS & web design is still super fun.

And but so anyway, I built Underscore for myself, to scratch an itch, but recently thought that it would be relatively easy to add other users to it. So, if you’re a logged-in member of kottke.org, you can build your own collection and play it with Underscore; just head right this way. If you’re not a KDO member, you can still check it out…but the only thing it does is play my music collection (which has some good stuff in it IMO). Fair warning: aside from this post, there is no onboarding. You may be confused as to how it works. But it’s simple enough that you quickly figure it out. Due to lack of auto-shuffle, it’s not worth using if you’re adding stuff that’s under ~30 minutes in length β€” Underscore is for albums, long tracks, playlists, etc.1 Caveat emptor. You break it, you buy it. Etc. Etc. If you try it out, let me know what you think in the comments below. Suggestions or improvements welcome.

  1. Yes, I finally built my long-wanted shuffle-by-playlist/album music player. And it works with more than just Spotify or Apple Music!

Comments  15

Sort by: thread β€” thread . latest . faves

J
Jason KottkeMOD Edited

Oh was going to add, if you're a logged-in member and want to see the non-member's view of Underscore that just plays my collection, you can just open it in a private/incognito window. (This is good for finding music to add to you own collection. Like this or this or this or this.)

Also: I have no idea what Underscore looks like or if it even works on mobile. I built it for a desktop browser. πŸ€·β€β™‚οΈ

W
Will J. Stewart

Love this! happened to not be logged in on desktop and it started Imitation Game from your list. i trust your taste ;-) Thnx for sharing with all of us. Have a chill wkend.

W
Will J. Stewart

Landscape in safari on iPhone looks ok! It’s useable.

Reply in this thread

B
Ben Sargent

As an incorrigible album-tracks-in-sequence listener, I love this. And it’s in the inimitable Kottke style too. Nicely done.
I been using this Shortcut for years to shuffle albums in Apple Music, others might find it useful: https://routinehub.co/shortcut/4389/

A
Akshay Jain

This is pretty cool. I am also listing to non-word music these days and also don't like finding what to play early in the morning.

I have been scratching my own itch to better manage and play my own library by vibe coding this app for iPhone, if anyone would like to try: https://github.com/robetraks/SmartShuffle

The main idea was a way to shuffle music in a probabilistic way. But have been adding some more features to it. I use on iPhone 15 pro so not sure how it would work on other models. But I use it every day.

B
Bob Walicki

This is super cool. Nice work!

I stumbled upon an Apple TV app called Coax yesterday. It connects to your Plex server and recreates a late 90s/early-aughts-style channel guide where your collection is smartly arrayed in the old Channel-Time viewing guide. Some movies are halfway through, some near the end credits, some 5 minutes in. With channels like "Animation" or "20th Century Fox Classics". It's super fun and if you just want to watch a movie for a little bit, you can just scroll through and eliminate analysis paralysis.

L
Lorelei Sabin

I am very interested in trying this! Buuut I use Tidal, so my links don't work... maybe I can grab my spouse's Spotify account for a trial.
I use Mopidy MPD server for much of my home listening, and it doesn't have "shuffle albums" but it does allow you to add albums and songs to a running playlist and shuffle those songs in without restarting the playlist, which is something most streaming services I've seen don't do. There are a lot of ways of listening to music and I am interested to see what your optimal experience is like!

D
Dave Sandell

There's a pretty great iOS app for album shuffling and sorting, though it's exclusive to Apple Music.

https://apps.apple.com/us/app/albums-music-library-player/id1469948986

A
Ajay Pillarisetti

This is really cool. Thanks for sharing with us.

A good friend of mine passed away a couple of weeks ago. I've been finding some solace in the truly incredible amount of (wordless) music he and his brother recorded and shared on Soundcloud and Youtube as "The New Motor City Train Wreck Dance Team." A little bit funky, a little bit twangy.

Their description from Soundcloud: "two man band from the deep south recording improvised instrumental music since around 2002 or so. best listened to while vacuuming in the other room."

Enjoy!

M
Marc B.

Ooh, this is right up my alley! I adore listening to music from many different sources and I have to admit here that I've written a very complex Apple shortcut that helps me choose from random Apple Music playlists, radio stations, SomaFM, Poolsuite.fm, and others. But I've never been able to capture the full mixes that you and others share so this is so cool. Kudos on the coding and design - it looks super cool too.

G
Gina Trapani

Neat! Thanks for sharing this!

G
Gregor Gilliom

Is there a way to simply listen to your selections? I like everything you typically reference here.

J
Jason KottkeMOD

You can open it in a browser where you're not logged into (incognito, private tab, etc.)

Reply in this thread

D
Dalton

Fantastic, I just set this up with a bunch of my favorite YouTube playlists. YouTube premium is 100% worth it to me just so I can listen to hour long DJ sets with no breaks all day long.

I hope you consider continuing to build this out and promoting it on the membership page! I can already think of a bunch of ways this could add to the Kottke community experience.

K
Kiara Grant

As someone whose listening habits are basically identical to the ones you've described here, I very much appreciate this creation. The only sad thing is, I use Tidal, not Spotify or Apple Music. It does occur to me, I used to work in tech, so if you let me fork the repo (or whatever equivalent for whatever version control you're using) I could add in Tidal support...

Hello! In order to leave a comment, you need to be a current kottke.org member. If you'd like to sign up for a membership to support the site and join the conversation, you can explore your options here.

Existing members can sign in here. If you're a former member, you can renew your membership.

Note: If you are a member and tried to log in, it didn't work, and now you're stuck in a neverending login loop of death, try disabling any ad blockers or extensions. Or try logging out and then back in. Still having trouble? Email me!