TheAppgineer / roon-entrypoints

A collection of Roon Extensions that let audio enter into your Roon system
Other
26 stars 2 forks source link

similar project for endpoints? #1

Open GeraldLoeffler opened 2 years ago

GeraldLoeffler commented 2 years ago

hi Jan, sorry for this mode of getting in touch, but i thought it's the most direct. Anyway, i saw your excellent work on Roon entrypoints and the Entrypoint Gateway and was wondering: looking at the node-roon-api i wouldn't have thought it possible to develop these entrypoints with that API, so i thought you might be using a different integration mechanism with Roon than that API? I'm asking because what i'm interested in developing, if at all possible, is a Roon endpoint: software that Roon recognizes as an endpoint (potentially because it speaks RAAT, but there might other ways). This, also, is not something that i see the node-roon-api supporting. Hence my request to you: can you think of any way of developing software that exposes a Roon endpoint, similar to how your Entrypoint Gateway acts as a Roon entrypoint? Thank you very much.

JanKoudijs commented 2 years ago

It is the move to running extensions in Docker containers that make the Entrypoints extensions possible. With this each extension has its own file system with its own applications.

So for the Entrypoint Gateway the file system contains Icecast, which takes care of serving the radio streams, and a small extension that makes it discoverable by the Roon core and reports the IP address in the status line. This extension uses the Roon API for discovery and status reporting. The only purpose of the extension is to inform the user that Icecast is running, and if a user stops the extension then the whole container stops running and therefor also the Icecast server stops.

This approach could also be used to containerize the Roon Bridge application. At first startup the Roon bridge can be installed (Roon Labs doesn't allow redistribution of their applications) and the extension part can e.g. provide the interface for selecting the soundcard that is used by Roon Bridge.

I hope that this explains the used approach. It you are not familiar with Docker, then reading one of the many online tutorials would be a good starting point.

GeraldLoeffler commented 2 years ago

thanks a lot @JanKoudijs for explaining the crucial role that Docker containers play in enabling your approach. (I regularly develop apps distributed as container images.) Let me try and think through how your proposal with a containerised Roon Bridge would work... Thanks again!