Hey all,
I wanted to share an exciting lockdown-project that I’ve been working on called Tempo, an open-source and lightweight music client built specifically for Subsonic servers on Android.
Tempo puts you, the user, at the center of your music listening experience. With a sleek and intuitive interface, Tempo enhances your music journey based on your listening history, randomness, and even integrates with Last.fm for optional scrobbling support.
Key Features of Tempo:
- Seamless integration with your Subsonic server.
- Clean and user-friendly interface.
- Stream music directly from your Subsonic server, with offline mode (actively being developed).
- Create, edit, and manage playlists.
- Gapless playback.
- Rudimentary Chromecast support for streaming to compatible devices.
- Optional Last.fm integration for scrobbling, if supported by your Subsonic server.
- Activate transcoding on your server to optimize streaming with a transcoding profile.
Tempo is currently in the alpha phase of development, and as the sole developer behind the project, I’m actively working on improving the app. Your understanding and patience are greatly appreciated.
If you find Tempo useful, please consider supporting the project by starring it on GitHub. Your stars help promote the app to a wider audience and encourage further development.
Check out some screenshots of Tempo here. I’m excited to hear your thoughts and answer any questions you may have.
Let’s build Tempo into the go-to music client for Subsonic on Android, together!
antoniocappiello
This looks absolutely amazing! Will definitely test it out with my Navidrome server.
Thanks for creating this :)Hi, I’m so glad you like it. Use it, test it, tell me what you think: I’m all ears! If you really like it, share it with those who might be interested and put a star on Github. Let’s grow the project together.
Cool project, thanks for sharing! I wish you were doing iOS, there’s still not a great SubSonic client there.
Out of curiosity, how are you doing the mixes based on a song? Where do you get the list of similar songs from?
Using the Subsonic API with great imagination :D
For the Instant Mix and Radio Stations section I use the getSimilarSongs endpoint to generate a mix starting from an artist, album or song. For the Best Of section I use the endpoint getTopSongs, while for the new releases I take all the albums released during the current year, sorted by date added.
If I had to write APIs from scratch, I wouldn’t have done all this, but having to take advantage of the fame of Subsonic’s APIs, I couldn’t do otherwise.
Early days, but since it’s open source it would be nice to have it available on F-Droid.
Hi, I’m working on it. As for F-Droid, I think I can’t upload the current version because at this moment I include play-services-cast-framework for the cast functionality and in the future Android Auto. I’m studying it, I don’t know what to do yet: I could eventually publish the full version on the Play Store and the version without non-free stuff.
Nice, good to see. I think people not using GApps could benefit from not requiring play services too.
Self hosting music is still on my TODO list, I’ll check this out later. BTW, what is Scrobbling?
I can recommend Navidrome as a server. I’ve had great experience with it.
Scrobbling with Last.FM (or ListenBrainz, depends on the server) means keeping track of the music you listen to by saving your listening session.
In fact, at the end of each track you will tell the server “hey, right now I just finished listening to this song” and it will contact Last.FM to keep track of it. Useful for keeping a history of the music listened to over the years.
And I strongly encourage you to host your own music server, Navidrome and Gonic are my top picks!
I tried it. It is smooth and appealing. Had a couple crash while browsing, but nothing really serious. I’d have to use it a few days for a legit feedback.
I’m missing an app that allows me to browse my music respecting my folder structure. I have a lot of vinyl rips poorly tagged… VLC does this but it is not practical at all.
Is this something easy to implement ?