I’ve always felt there that there is opportunity hidden in the feeling of connectivity when listening to music with others, even when not physically close to each other. turntable.fm and others have validated that tons of other music listeners love the synchronized music listening experience, but no one has offered this experience in a standalone replacement music client, making the barrier to start a listening session with friends too high to become a habit. Spotify and Apple Music have failed to prioritize social features in their apps, and have completely ignored synchronized listening and presence.
alto.fm explores what it would be like if your music client was social by default. To make drop-in synchronized listening sessions with friends a habit, I think it's important that this functionality exists within your everyday music client — the one you use while working, commuting, and at social events. Otherwise, the process is too cumbersome as specialized apps lack the same music selection and playlists, and friends need to be onboarded first.
To use alto.fm, there's no need to make the monetary switch to a different music streaming platform. alto.fm allows you to sign in with your existing Spotify or Apple Music account, and uses their APIs for playback. I wrote a web library to normalize the APIs of Spotify, Apple Music, and Soundcloud into a single internal API allowing for a wider music selection and cross-service listening sessions.
alto.fm is like Houseparty for music. Here Adrian is logged in listening to music and three friends decided to join his listening session, allowing them to hear what he's playing in sync. No invitation to join the session is required.
Adrian can decide to take his session private if he doesn't want his friends to see what he's listening to. He can also see what all his friends are currently listening to in the sidebar, and bring himself and everyone in his session with him to one of theirs by clicking on their photo. The Friend Activity section is like a less latent version of Spotify's friend sidebar, and it's the entrypoint for joining a synchronized listening session.
Profile pages display what users are currently listening to, and who they're listening with. From here you can join their session, look through their listening stats, and recommend music.
Inspired by Spotify's yearly Wrapped release, alto.fm provides the same stats year-round, giving you the ability to continuously show off your taste by customizing what cards are shown on your profile.
I wanted alto.fm to give you a strong sense of ownership over your library. I dislike the lack of seperation between liking a track and adding it to your library in Spotify, and from my user research, this is a very common complaint. alto.fm provides a library more closely resembling iTunes than other streaming apps with the ability to edit metadata. Playlists can be imported from other streaming apps (part of the onboarding flow).
I’ve had the privilege of working alongside very talented people across disciplines while working on this app. I was originally approached by my friend Stefano Savvidis to build this project together in Summer 2019. Over the next year, Stefano would build the backend while I built the brand, app design, and desktop client.
The app uses React, GraphQL, and Electron. Electron served our app's relatively lightweight needs well and would allow us to later reuse code for React Native mobile apps. Huge credits to Hugh Xie and Nicholas Ellul for their contributions to the app's development, and Emma Orhun for the constant product input.
In Winter 2021, I decided to end my work on alto.fm to work on new, smaller-scoped projects. The team has continued to work on the app and is planning on launching a desktop version in the coming months. You can keep up with their development progress by signing up for early access at alto.fm.
- Landing page (your computer might overheat) (gone wrong)
- Some of the Figma file
- Very old demo of web client Missing backend so no data/playback. Some data mocked. Will replace this soon.
- Some promos I made in AE, used in IG ads to generate beta signups: