Remote control from one instance of Symfonium to another?

Feature description:

Hibymusic has the facility to use the app on the phone to act as a remote (via Bluetooth) while actual playback occurs on another device. This means that I can plug my dap into my amplifier and get lossless playback while the app on my phone can play, pause, next, etc.

Is this something that the API does and I’m missing it or is it an absurd request?

Problem solved:

It enables lossless playback rather than some form of casting.

Brought benefits:

I’m new to this app, so this may be quite “niche” but several people seem to be looking for ways to play music in different places and having remote control of the machine doing the actual playback?

Other application solutions:

 
As stated, HibyMusic uses Bluetooth but only between instances of it’s own app. I have many issues with the app, that I am not having with Symfonium (especially loving implementation of smart playlists!}
 

Additional description and context:

 

 

Screenshots / Mockup:

    

Casting can be high quality too, most people use an rpi with a dac and upnpmdpcli and cast from Symfonium to that.

Full remote control is currently out of scope.

Hi Tolriq

Thanks for the personal response.

I already have a Pi with an Allo HAT and am using Room via RoPieee. Considering the price (and I’ve been paying yearly for about 5 years), I’m not over-happy with Roon and have been using your app on my DAP (HibyR6 III).

I was hoping to be able to connect to my amp and enjoy the mixes. The system for playlists on Roon is atrocious and I’d like to set up a dock/remote setup with my dap.

No problem, tho.

I’ve rarely paid for a piece of software as rapidly as I did yours, it really is that good.

Anyway, thanks, again.

Install An UPnP Audio Media Renderer based on MPD on the rpi and play on it from Symfonium.

Should give all you want.

1 Like

My music is on my NAS and is served via Navudrome (or Roon, obviously). I also have 100-150Gb of local music on phone and dap but using a music negates the need to move files around as I add them.

You don’t need to move the files. You are just adding cast support to your amplifier with high quality.

All is still stored at the same place and you use Symfonium exactly the same, just press the cast button, select the rpi and the sound will go to your amplifier instead of the phone.

Thank you for mentioning that. I have been looking for a solution exactly like this ever since running plexamp on my raspberry pi 3b.
Plex enforcing that only users with a plexpass can “claim” such a device never sat right with me. It basically turned the pi of my sister into a paperweight when they started enforcing that rule as she does not have a plexpass and if I claim her pi, her plays ruin my scrobble statistic since the scrobbling in plex is account bound.

Do you happen to run this yourself? As a docker container maybe?
I tried turning mpd-alsa & upmpdcli into a docker compose stack for 2 hours but could not get it to run. I’d love to see a working compose for these to see what I did wrong.

Here’s the last state mine was in when I stopped trying and went baremetal instead:

version: '3'

services:
  mpd-alsa:
    image: giof71/mpd-alsa:vanilla-bookworm
    container_name: mpd-alsa
    volumes:
      - /opt/mpd-alsa/db:/db
      - /opt/mpd-alsa/playlists:/playlists
      - /opt/mpd-alsa/log:/log
      - /opt/mpd-alsa/config:/user/config
    environment:
      - AUDIO_GID=29
    restart: unless-stopped
    devices:
      - /dev/snd:/dev/snd  # Allow access to the sound device

  upmpdcli:
    image: giof71/upmpdcli:bookworm-renderer
    container_name: upmpdcli
    environment:
    - FRIENDLY_NAME="PiMalte"
    restart: unless-stopped
    network_mode: host  # Use host network mode to avoid UPnP issues
    depends_on:
      - mpd-alsa

What worked for me instead was following this guide. @BossC you might want to try that. Works really well so far.

Starting playback on your pi literally becomes as easy as hitting the cast button in the top right of the cover in Symfonium:


and then selecting the new UPnP player:

I do not use it in docker and no more use it when my pi died.

@splinter use it I think but baremetal.

@medoc that tool author is registered on the forum, maybe be can comment on your config.

Yes, I use it without docker on Raspberry OS (Raspbian), which requires the installation of three packages + dependencies and about 10 lines of configuration to run the basic functions (UPnP playback over the analog output of my RPi 3A+).

I don’t see any purpose in putting this into a docker image, especially as I use the Pi almost exclusively as a UPnP renderer.

My pi already has docker, portainer and a few containers (pihole + unbound, uptimekuma) running so deploying another stack would’ve been trivial and easy to maintain (if I could’ve figured out a correct compose haha) or carry over to the pi of my sister which has identical hardware. It’s no biggie, I can just ssh into her pi and redo what I did on mine but I’d still like to know what I did wrong in the compose.

Just to to avoid a misunderstanding: I see no purposes for me, of course in other environments it can be different :slight_smile: I cannot help you with the Compose though, not enough experience with that and from a quick review I saw nothing that I knew to be wrong. The main issues I had were always the also output configuration in the mpd.conf which differs for different Pi models (I already had it running on a 1B, Zero 2 and said 3A).

What I really like as a little gizmo is that you can put a custom png image in the upmpd config that appears in the renderer list in Symfonium then. Nice when you have multiple renderers at home.

Hi. I no about nothing about docker, but there is someone maintaining an upmpdcli docker image on github:

The developper has also worked a lot on upmpdcli (its media server plugins), so he should hopefully be able to help.

2 Likes

Hello @655321, developer of those images here.
From what I see from your snippet, that configuration won’t work because upmpdcli cannot connect to mpd, because its 6600 port is not exposed and the container is not using host networking.
Should you want to try again, there is also this resource available, with a simple combination of mpd-alsa and upmpdcli which should work for you.
For any other problem, feel free to open an issue on the github repositories, I will try to help you.

1 Like

After using upmpdcli for almost a month I’ll start off by saying thanks a lot @medoc for creating upmpdcli. It has brought a lot of joy to me, my sister and her boyfriend (so far, I’ll try to convert as many people as I can, same goes for Symfonium).

Thank you for creating the containers and chiming in here. I continued to test a few different configs (including adding the port and host networking) after finding your usage examples which I had previously missed. The last config I tested was this one:

version: '3'

services:
  mpd-alsa:
    image: giof71/mpd-alsa:vanilla-bookworm
    container_name: mpd-alsa
    devices:
      - /dev/snd:/dev/snd  # Allow access to the sound device
    ports:
      - 6600:6600/tcp
    environment:
      - USER_MODE=Y
      - PUID=1000
      - PGID=1000
      - AUDIO_GID=29
      - ALSA_OUTPUT_CREATE=yes
      - ALSA_OUTPUT_NAME=hifiberry-dac-plus-pro
      - ALSA_OUTPUT_DEVICE=hw:CARD=sndrpihifiberry,DEV=0
      - ALSA_OUTPUT_MIXER_TYPE=software
    volumes:
      - /opt/mpd-alsa/db:/db
      - /opt/mpd-alsa/playlists:/playlists
      - /opt/mpd-alsa/log:/log
      - /opt/mpd-alsa/config:/user/config
      - /opt/mpd-alsa/music:/music:ro
    restart: unless-stopped

  upmpdcli:
    image: giof71/upmpdcli:bookworm-renderer
    container_name: upmpdcli
    network_mode: host  # Use host network mode to avoid UPnP issues
    environment:
    - PUID=1000
    - PGID=1000
    - FRIENDLY_NAME="PiMalte"
    volumes:
      - /opt/upmpdcli/cache:/cache
      - /opt/upmpdcli/log:/log
      - /opt/upmpdcli/config/additional-radio-list.txt:/user/config/additional-radio-list.txt:ro
    restart: unless-stopped
    depends_on:
      - mpd-alsa

Which has both the port and the host mode but also did not work (it’s been a while but I think upmpdcli threw errors that it could not connect to mpd).

After adjusting the .env file that worked on the first try. Thank you.

I did remove the yams part tho as I only use symfonium to cast to the pi and have panoscrobbler running on my phone which also scrobbels what I cast. That way the pi itself is neutral and multiple people can cast to it without messing up any one lastfm account.

My sister and her boyfriend for example have 2 pis in use and depending on who’s home at the time either of them casts to either of the pis. With panoscrobbler and symfonium whoever casts is the one whose account is scrobbled to. I think that’s very neat.

Once I set up my sisters pi with upmpdcli she and her boyfriend were so excited and happy that he bought a pi zero + hifiberry dac+ zero to create this lovely abomination:


That’s a 50+ years old (I think) tube amplified mono radio that can (thanks to the pi, upmpdcli and Symfonium) play my 861k song strong library as well as internet radios with no sweat (except for 24/96 flac songs with max compression which abort playback after a couple of seconds - 1 core 1 thread 1 GHz might not be enough to decode that in real time on the pi zero).
Being able to cast both my library as well as internet radios to the pi was also the reason why my sister’s boyfriend finally caved and bought Symfonium (it was the 2nd app he has ever bought on his phone).
He plans to permanently install the pi (with extra ventilation) in the radio to improve the overall look and style.

Now that they have 2 pis they’re interested in songcast, do your docker containers support that as well? Otherwise they’ll have to stick to a bare metal install. I haven’t tested songcast at all as I only have one pi.

@medoc do you think using the pi zero as a receiver and the pi 3b+ as the sender would allow the pi zero to play 24/96 flac files as the 3b+ would decode them and send the decoded data to the zero (if I have understood the process correctly)?
My pi 3b+ can play 24/192 flac with max compression after all.

1 Like

Hello, I am happy to read the container now work for you!
About songcast, no the images don’t support the feature.
One day I remembered that I had used songcast in the past and thought to add support for it to my upmpdcli docker image.
Then I went to the linn site searching for the binaries, and unfortunately they seem now discontinued. So I thought that it wasn’t worth even looking for old binaries.
Linn themselves seem to indicate AirPlay as an alternative. If you want to play from your desktop computer, there are other solutions, more current. I am saying nothing wrong about songcast, only noticing it seems to be on its way out.

If you want to play for your phone, you might want to install shairport-sync. Here the docker image. Ask me if you want to use it with a docker compose file. I am also working on a guided example in the same audio-tools repository, got it working on one of my private branches, but the README is missing so I don’t feel like publishing it yet.
With shairport (image tag “classic” → AirPlay 1, “latest” → AirPlay 2), you can use your pi as a playback device from Apple mobile phones and computers.
With the help of TuneBlade and Virtual Audio Cable you can get pretty much the same on a windows pc.

Let me know if this helps!

1 Like

That’s unfortunate, it sounds like a cool feature.

On my windows desktops I use a shared portable install of MusicBee to play music, I only use the pi to play when my PC is off (when I’m reading for example).

The only apple devices in the house are ancient iPod nanos and iPod classics from when I was a kid, so that won’t be of much use to me, but thanks anyhow. :smiley:

The current solution with Symfonium and upmpdcli works really well, being able to play on both their main stereo and on the tampered tube radio in sync would simply be a fun gimmick for my sis and her boyfriend. Thanks for your help!
I’ll report back if they manage to get it running bare metal.

1 Like

Then you are still a kid :wink: SCNR

Glad that the upmpdcli setup works for you as well, and the old radio is beautiful!

1 Like

About songcast: what is discontinued is the Windows capture driver. Songcast can still be used to synchronize multiple upmpdcli/mpd instances to a master one. You can use upplay on Linux or Bubble DS on Android to control the associations. In theory it should then be possible to control the playing from a non-songcast-aware control point, but I doubt that this would work in practise. I’ll admit that it’s a bit niche anyway.

About performance on the pi zero, It depends a lot if it’s a zero or zero two, not the same cpu at all.

I think that the PI zero was like a Pi 1 ? This used to do songcast at 44.1 just fine, but I’m not sure about 24/96
The upmpdcli songcast implementation has a non-standard option to use FLAC on the network, and, intuitively, I think that doing this and uncompressing on the zero might actually be better, but testing would be needed.

I just tried, and the rpi zero 2 seems to be able to decompress 24/96 flac at about 30X real time.

1 Like

Yes, Zero is like Pi 1, Zero 2 like Pi 3.