Skip to content
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

Consider adding support for Logitechmediaserver's streaming protocol #6

Open
audiomuze opened this issue Dec 31, 2022 · 8 comments
Open

Comments

@audiomuze
Copy link

One thing most music servers lack is an ability to easily stream audio to various endpoints independent of the server itself. Incorporating support for Logitechmediaserver's streaming protocol means that Deaftone would readily be able to stream to any device/endpoint running Squeezelite and thus not have to reinvent the wheel to move beyond playback from a desktop PC or on a mobile device.

The protocol is stable and highly robust, having has been around since 2000 when first implemented in Slimserver (now Logitechmediaserver) and Squeezelite has been around since 2016, replacing the need for Squeezebox hardware. Both are still actively in use by 1000's of users and supported today.

As a former Logitechmediaserver user turned to Roon and recently reverted to LMS your project and goals are interesting to me. I'd happily share ideas and help with testing.

@audiomuze audiomuze changed the title Consider adding support for SlimProto TCP Protocol Consider adding support for Logitechmediaserver's streaming protocol Dec 31, 2022
@112RG
Copy link
Contributor

112RG commented Jan 1, 2023

The seems like something really interesting and also would set apart Deaftone from the rest. From my understanding you want me to implement the protocol LMS uses to stream to players https://wiki.slimdevices.com/index.php/SlimProto_TCP_protocol.html. Rather than implement a plugin for Deaftone to talk to LMS? such as https://github.com/foobarjo/SqueezeSonic

@audiomuze
Copy link
Author

audiomuze commented Jan 1, 2023

From my understanding you want me to implement the protocol LMS uses to stream to players

Yes. By incorporating the SlimProto you open the ability to stream to any PC or SOC that has Squeezelite running on it, meaning you can send the audio on to any DAC and listen without being tethered to a PC or having to listen via a smartphone/tablet (which provides the UI/UX instread).

@112RG
Copy link
Contributor

112RG commented Jan 2, 2023

But you would still require a PC or Mobile to initiate the playing of songs etc?

@audiomuze
Copy link
Author

But you would still require a PC or Mobile to initiate the playing of songs etc?

Yes, if one were listening via a networked endpoint e.g. a RPi4 running Squeezelite hooked up to a DAC the PC or phone would act as remote control. Equally the PC could be serving as a playback device if it were running Squeezelite. Mobiles and tablets should also have local playback capability e.g. listening to music on home server via internet.

@112RG
Copy link
Contributor

112RG commented Jan 2, 2023

Okay, this sounds like something I need to wrap my head around first and play with. But this is low on the priority list of things. But I really like the idea of this

@audiomuze
Copy link
Author

audiomuze commented Jan 2, 2023

This may help convey things clearly:

https://roonlabs.com/howroonworks
https://help.roonlabs.com/portal/en/kb/articles/architecture

Incorporating SlimProto would take care of playback to any audio device that accepts audio via USB (including simultaneous playback of the same content to multiple devices). This is achieved by running a Squeezelite enabled endpoint and connecting to the audio device via USB. That pretty much leaves only mobiles and tablets needing to have playback enabled locally via other means.

@audiomuze
Copy link
Author

audiomuze commented Jun 24, 2023

Looks like the hard yakka has already been done. https://docs.rs/slimproto/latest/slimproto/index.html

@wez
Copy link

wez commented May 17, 2024

FWIW, I'm here because Sonos are making life bleak for self-hosted music libraries (simojenki/bonob#205).

What I'm looking for is:

  • A media server than can ingest my library
  • A controller that can tell my existing hardware (mostly Sonos) to play stuff from my library.
  • The controller needs to run "headless" (not require a long-running client app or an active browser tab) so that I can initiate playback and close the tab/window and it will continue to follow my directions.
  • The controller needs to accessible via a browser (eg: not require a dedicated client app) and ideally an API so that I can ultimately plug it up into eg: home assistant where I can drive it from a dashboard.

I looked at Roon and conceptually this does what I want, except for its controller situation: there is no browser based way to control it, which makes it a huge PITA to enjoy my music while I'm working from my linux system, because they also do not support linux for their remote controller applications. I find it hard to justify paying for something that doesn't really work for me.

I'm semi-seriously considering sitting down to hack something together to scratch my itch and I found this project, which sounds like it has most of the really finicky tagging/media management side of what I'm looking for done, and it is "just" this streaming-to-a-device feature that is missing.

What I think would be good here is to implement broadly what I listed above, with support for:

  • DLNA/uPNP casting, which scratches my sonos itch.
  • AirPlay casting as an alternative path. I think AirPlay 1 is open and implementable, but AirPlay 2 is more encumbered and difficult for OSS to implement.

From a product perspective, I think that supporting these would also be good, although I have no hardware that supports these, so no/low motivation to work on them directly:

  • SlimProto per the comments above. I have an eye on the WIIM streamer as a relatively inexpensive but very capable fallback in case Sonos completely breaks me, and I believe that those support this protocol.
  • ChromeCast (unsure if the protocol is open enough to build into this project)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants