Multi-user control

I am not sure if my use case is already covered, but this is probably the best place to ask about it.

Feature description:

I would like to be able to use multiple different Symphonium controllers (multiple phones from family members) for controlling playback on a single remote device. The phones would show a synchronized “now playing” screen for the same remote player. Ideally, they would also show the same (full) playlist - but that might not be doable.

Problem solved:

I currently use jellyfin as a media provider and cast to Kodi on a RaspberryPi (both remote play, having the Yatse add-on installed on Kodi, and UPnP). At the moment, if I start playback on a remote from phone A and connect to the same remote on phone B, then phone B is not aware of any playback happening on the remote.

I cannot tell if this is a limitation of the remote protocol (Kodi remote, UPnP), or Symfonium itself.

Brought benefits:

Very useful for any multi-user environment.

Other application solutions:

  • Using spotify connect and librespot on the playback device, playback state is shared across all clients.
  • Using Yatse and triggering playback on the Kodi player, this is also the case.

Additional description and context:

If a different remote protocol (in case any are supported) handles this better, I would be happy to switch away from Kodi to something else.

I am currently exploring Upmpdcli as a renderer, which supports openhome. Is that supported by Symfonium? It says:

Principally, the OpenHome playlist lives on the Renderer. It will continue playing if the Control Points goes to sleep, and it can be shared. This is a compelling advantage and most well-known Control Points (e.g. BubbleUPnP, Kazoo, PlugPlayer…​) support OpenHome.

which sounds exactly like what I want.

Edit: No, it does not seem like that is supported when using Upmpdcli with two copies of Symfonium.

Thanks in advance!

This is a duplicate, and sorry but this is not possible due to the multi provider complex system inside Symfonium.

Symfonium is the master of the queue and there’s no way around that to support everything.

It would require that a master Symfonium act as a server and other Symfonium connect to it and it’s way too much work for the moment.

Not sure if it satisfies your use case entirely, but you you may be interested in Navidrome’s new jukebox feature: Jukebox mode | Navidrome if the device you want everyone to control would be the server itself or something you can easily pipe the server’s audio output into.

I don’t know the technical details, but I imagine it would be much easier to implement support for this build-in feature rather than have Symfonium do everything from scratch. Play:sub (IOS) already supports it and the feature was introduced like a month ago.

As said the issue is not about solutions for specific providers, it’s that Symfonium is multi provider, you can have a queue that contains media from Navidrome, your phone and Plex. There’s no solution to handle a queue of all that anywhere else than in Symfonium.

I understand, thanks for the explanation.

Since your playlist format can only be handled by a copy of Symfonium, would you consider supporting a small Symfonium server application that runs on a network node? It could hold the playlists for a set of clients that connect to it.

In case your playlist API (maybe some serialization language schema definitions?) were open, I would be interested in contributing a server application. I don’t think it would have to be very feature-rich at first - just store one or more playlists and synchronize them with clients.

In the future, that Symfonium server could be extended to operate as a network streamer (e.g. play audio via mpd).

The problem is not the playlist itself it’s the actual media preparation at the playback moment as it’s not possible to do it before hand (you can’t start hundreds of transcoding sessions) and specially if you want to be able to migrate the Playback from renderer to renderer.

A server application would basically be something able to talk securely to all supported providers and do most of the things Symfonium do. So basically a Symfonium :slight_smile:

That’s why I said the only solution is to make Symfonium also a server but a ton of work for not that much benefits while it’s only a phone app.

Ok, I see. Anyway, I keep on hoping that you decide to implement a command-line version of your application at some point in the future, so that I can cast to it directly.