-
-
Notifications
You must be signed in to change notification settings - Fork 40
Feat/jukebox control: Add the ability to control the music server as a jukebox #196
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: development
Are you sure you want to change the base?
Conversation
3051d8e to
e186504
Compare
|
This is really neat. My backend does not support jukebox mode at all, IIRC, so this is going to be a challenge to review or work on myself. I will look a little deeper soon and respond to your comments in detail. |
|
Sure! I've noticed a dearth of servers that support jukebox mode, and also (Android) apps that support playback to a server that supports jukebox mode, and thought perhaps it's a cyclical thing of "Well, it doesn't exist so why support it?" That being said, let me know if there's anything I can do to assist :) |
|
I unfortunately have not had time to dig into this, partially because my back end (LMS) does not support the jukebox feature. I would be interested in knowing what other back ends do support it. I would need a working test server to test and validate. |
|
Looks like there are a few options; Supysonic, Airsonic, and Gonic all advertise jukebox mode, though looks like only Gonic is currently under development. I use Navidrome personally because of the smart playlists :) I would definitely agree that jukebox mode isn't widely supported among servers, and don't mind if you would prefer not to integrate any support in Tempus. I will happily keep my fork up to date-ish for as long as I'm using it. |
|
Let's keep it up to date. There is a open issue for LMS for jukebox mode and I would be ok making this a setting if I can test and validate it doesn't cause any major issues when the back end does not support or the setting is disabled. Would you be open to setting up a temp account on your server? |
|
My Navidrome server? What's the purpose there? |
e186504 to
19ca2f5
Compare
I thought you had a server with jukebox support and not navidrome. Sorry! and thanks for keeping the commits coming. |
|
Hi, I'm a Gonic (server) / DSub2000 (android client) user mainly because of their support of jukebox mode. I've installed Tempus and it's looking great but it's missing my to-go feature: jukebox mode. So I'm willing to help develop this feature if I can be of any use. |
It's really more a function of bandwidth for me. I am trying not to turn away PR's but also want to be able to test a little more thoroughly because in the end, I have work on maintaining it when a bug eventually does arise. Of course, if it is something I or others use, it may get more attention so just taking it a little slow. As is the case, I have noticed many bugs arise from a PR doing one thing, inadvertently disrupting functionality somewhere else in the app which is not caught since we don't have any unit tests and no integration tests either. I have a few things I am trying to get in bugs/features before I get around to integrating and testing this feature. If you are up for it, I can compile a debug build to test out and run daily, as I mentioned, using the rest of the app would help surface bugs that are not obvious. |
|
I run gonic because until recently Navidrome didn't have multi-library support. gonic doesn't either, but gonic is simple enough that I just run two instances, one for kid's music and one for adult music. Plus, gonic supports jukebox mode, even though Tempo/Tempus does not (yet). For the time being, I use mpd + M.A.L.P. as my jukebox solution, which works well, but it would be great to just use gonic + Tempus. mpd or gonic's jukebox in conjuction with Snapcast provides multi-room synchronized audio, like Sonos but on generic equipment of any kind. I downloaded and built this PR, installed the APK and ran it against my gonic server. I can see the API calls to jukeboxControl coming through to gonic. I don't actually get sound, but I'm pretty sure that's some issue with gonic and mpv. I'll see if I can fix my gonic/mpv setup and do some more testing and report back. |
|
Hi @langelgjm ! |
|
I can confirm the Tempus jukebox feature in this PR works with gonic's implementation of jukebox. In terms of UI / jukebox queue control, rather than a separate play control (and possibly separate queue sheet), what about offering the jukebox as a "output" choice, and just re-using all the normal controls as-is. E.g. similar to how applications that support casting allow you to either play on your device, or cast to a remote device - you choose a remote output device within the application, and then the application's standard controls now manage playback on the remote device. Currently this PR lets me play music on the jukebox (remote device), but also play entirely different music on the same device I'm using to control the jukebox, at the same time. I struggle to imagine a scenario where that's useful. So I can imagine Tempus detecting whether the logged-in user has jukeboxRole, and if so, displaying a little "cast"-like jukebox icon on relevant pages allowing the user to choose where playback occurs - on the jukebox, or on the local device. |
|
Hi @langelgjm, can you send me the apk so I can test it with my setup ? |
|
@niawag Here's a link where you can download a debug version of the APK that you should be able to install (you'll need to allow installation from unknown sources). |
|
@langelgjm I was just going for "easiest to do" since I'm not much of an Android coder :) feel free to fork my fork if you want to make that change yourself, but I'm not likely to do it myself soon tbh I'm quite glad to see that a couple other people are getting some use out of this! |
Thanks for getting testing on this @langelgjm - I think this is a definite change before we bring it in. I am thinking about adding an option the homepage 3 dot menu, where you get to settings. I am considering that gets expanded for high level changes, for example, for an offline mode: Also, I 100% agree that it should function like the cast feature and be one with the jukebox server. I have not had a chance to spin up an instance but I am wondering what it looks like, in the api, could there be more than one juke box controller and does jukebox controller A see changes if jukebox controller B adds to the queue or changes the queue? Or is that not a thing. As a solo user I don't have that use case but something we would want to consider if that functionality is there. As mentioned by the OP, this PR still needs some refinement
|
My understanding and memory of testing is that anyone can see what is currently on the jukebox queue. My implementation had the jukebox handling the queue, so anyone could see what was on next and change that. For it to function like the cast function, I was planning on implementing queueing on the client side, which would lead to other users not being able to see "what's on next", per se. Again, I'm not an android coder so there may be a way to do it such that it acts like the casting but still allows other users to see the queued playlist. |
|
Great to see that development is going on this feature ! |
|
@niawag Sorry for the confusion, but the current implementation only allows starting music on the jukebox, or replacing the current queue with something else. There are no controls client-side for actually viewing or manipulating the jukebox queue (you would need to use the subsonic api for that). |
As of Oct 27, 2025, this code is a rough draft of what I'd eventually like to see in Tempus. I would appreciate review of the current features and advice on which, if any, of the to dos would be good to implement.
Current features:
(Potential) To dos:
IMPORTANT NOTES: