Roon-web-stack, a stack to drive roon from a web browser (current version: 0.0.10)

Thanks!
It might be something like that, I’ll wait to gain more street credit around here :innocent:.

2 Likes

It’s already starting to work for many of us.
The Discourse server is a different beast though :grin:

1 Like

Hi,
I tried, but unfortunately on my old iPhone, screen remains desperately black…

Anyway, I have started using it on a more recent iPad and find the combination with iOS’s ‘slide over’ option very handy, making the remote easily accessible from any app.

BTW, some improvements I’ve been thinking of, mainly focusing on making it simpler/faster to find something to play next:

  • quicker access to artists / albums when browsing the library, typically through the first letter of the artist / album name
  • ability to optionally sort by ‘date added’ or ‘frequently/recently played’ (don’t know if you can get this info from Roon’s api)
  • keep some kind of history in the search boxes
  • shortcuts to radios or playlists, maybe even albums, artists or genres… (I found something similar in your feature list)
  • suggestions based on what is currently playing; connecting to some external service…

Access roon-web crashes roon appliance with out of memory error.

System: Debian/stable up to date
Roon server: on latest version according to app

A typical error run is

Apr 01 09:19:35 minisforum start.sh[722]: Started
Apr 01 09:19:35 minisforum start.sh[2863]: aac_fixed decoder found, checking libavcodec version...
Apr 01 09:19:35 minisforum start.sh[2863]: has mp3float: 1, aac_fixed: 1
Apr 01 09:19:36 minisforum start.sh[722]: Not responding
Apr 01 09:19:36 minisforum start.sh[2863]: libpng warning: iCCP: known incorrect sRGB profile
Apr 01 09:19:36 minisforum start.sh[2863]: *** exception: out of memory
Apr 01 09:19:37 minisforum start.sh[722]: Error

Log of the roon-web-stack docker container shows on connection:

{"level":"WARN","time":"2024-04-01T00:27:51.001Z","hostname":"minisforum","msg":"lost roon server: minisforum (v2.0 (build 1388) production - f1e7e188-bcad-4f50-b924-0dd52886138c)"}
{"level":"INFO","time":"2024-04-01T00:27:51.001Z","hostname":"minisforum","msg":"waiting for adoption..."}
{"level":"ERROR","time":"2024-04-01T00:27:51.001Z","hostname":"minisforum","msg":"NetworkError"}

This is 100% reproducible.

These are the docker images that run:

# docker ps
CONTAINER ID   IMAGE                                                 COMMAND                  CREATED         STATUS         PORTS     NAMES
2f200d0f2b3c   nihiluxorg/roon-web-stack:latest                      "docker-entrypoint.s…"   31 hours ago    Up 6 minutes             roon-web-stack
e54c9d36d4cc   theappgineer/roon-extension-manager:v1.x-standalone   "node . /etc/feature…"   2 weeks ago     Up 6 minutes             roon-extension-manager

Thanks for this great interface! Tried it with roon and this stack running on Synology in docker images and everything works smoothly. Also with macvlan for docker.

Will test further and give more feedback if I find something :slight_smile:

1 Like

@nihil run into a slight problem, but not sure if you can fix it. I use another extension called Deep Harmony that allows me to use Harmony Hub based remote to control roon and assign volume control to it so it can adjust via roon ir commands to devices that ydont have device controls in Roon. I use an RME ADI 2 dac and this doesn’t Roon only sees it as fixed volune. So I assign Deep Harmony to control Roons Device control section and Volune control. I use the DA as a Pre direct to my poweramp. In the web stack its not showing up as the volume control like it does in Roon so I cant control it other than mute. Any ways you could get round this? The developer seems to have abondened the extension now the Harmony hub was canned by Logitech but it all works well but wont get updated anymore. I guess it will cease to be when the API changes dramatically I suppose.

Good job. Works well. I got this installed using the Docker approach and loaded it up in my Home Assistant dashboard using the web browser card.

1 Like

Hi, @Sylvain_CHAFER sorry to read that it didn’t work for your old iPhone.
Maybe you’ll have more chance with the upcoming version.

Just out of curiosity, have you an Apple computer on which you could debug your iPhone safari?
I’ve tested it on an old iPad on iOS 12 and the app wasn’t functional, but at least it was displayed. On the other hand, one of my relatives has tested the app with an iPad Air 2 running iPadOS 15 and it was fully functional. I’m curious about what breaks just displaying a black screen in your case and maybe with some logs I could find a workaround.

Regarding your evolution proposition:

  • quicker access: there’s nothing in Roon API for that, only pagination of content, so everything should be done in a loop. Nothing that complicated, but not very clean. I’ve not yet figured out a satisfying design for the UI that could work on every devices. Still in the incubator :wink:
  • sort data in browsing: there’s no information exposed by Roon API about ‘date added’ or ‘frequently/recently played’ and there’s no way to order browsing results in the API neither. It’s not realistic to dump all data and reorder them… this one is not doable.
  • keep some kind of history: Why not, not high in my priority list to be honest, as I’ll have to implement a lot of things under the hood. But if the user base wants it, I could reprioritize :slight_smile:
  • shortcuts: this one is coming. The first step, will be in the next release. Stay tuned, it should be long :wink:
  • suggestions based on what’s playing: my main issue is that the search functionality exposed in the Roon API is limited to what’s in your library (search exposed in Roon App is not available via the API). As there’s no way to filter the results of any suggestion service with this content, you’ll probably have suggestions that you can’t play or do anything with. There’s also actually no way to link anything to a content via the API. All considered, you’ll probably be better using Roon radio functionality.

Hi @Norbert_Preining, sorry for my late reply.

It’s kind of unfortunate and I don’t have a way to reproduce this issue as I’ve only one Roon license that is not running on a debian instance.

Could you restart the extension with debug as log level and provide the logs?
For instance you can update it via roon-extension-manager and provide debug as value for the Log Level option.
This could help to identify what API calls crashes your roon server.

There will be a new release coming soon that will have a different startup sequence. This will maybe fix your situation.

hi @Simon_Arnold3, sadly I don’t think I can do much about your problem.
I can’t connect this extension to the one providing volume control for your RME DAC.

I’d expect Roon API to expose your RME DAC as having volume control, as it is displayed in the Roon App.

I can try to open an issue in the Roon API GitHub project and see if they want to have a look.

Don’t worry it’s fine.

Hi @nihil,
Thanks a lot for your detailed answer!

  • About debugging, I actually tried using web inspector but didn’t manage to connect to the phone; it seems it requires the same safari version on both sides… If you have any suggestion about how I could proceed, I’m ready to try.

  • About quicker access to lists, I had a quick look at the roonAPI, indeed there are no ways to sort, and I understand it’s not practical to fetch all data.
    However, it seems that results are returned alphabetically (from what I see using your extension), and I saw an ‘offset’ parameter in the load() API. Maybe there is a way to leverage on this (with maybe some kind of offset cache for faster access) to provide direct access to parts of the list using alphabetical index (i.e. accessing directly to tracks whose names start with A, B, C…). Compared to letting the user scroll down the whole list manually (which I guess would cause all items to be loaded anyway), it could be a usability improvement… Not sure if what I’m suggesting makes any sense in your implementation though… just thinking…

  • About next track suggestions, being able to access Roon’s own suggestions through an API would be ideal I guess… but I was actually referring to an integration with some external services. I must admit I haven’t dig much, but there might be some sort of auto dj or meta data services out there which could be integrated and may bring some value. Idea would be to be given a list of possible next tracks and be able to queue what you want. Some kind of user assisted Roon Radio which I think is missing in Roon actually… Maybe there could be some connection with the AI guest DJ extension actually (which seems to be around a similar concept, but which I haven’t explored yet)…

HI @Sylvain_CHAFER,

No clue, I actually don’t use Safari debugging that much. I gave it a try with Xcode and iOS simulator. Everything runs smoothly in a simulated iPhone 6 running iOS 15.5. Maybe you could test with the new release or give me more specific characteristic about your device and the iOS you’re running: I could setup a corresponding simulator to test.

We say the same for quick access in list: it can be done by automatically browsing the until getting to the correct page and offset. Nothing complicated, but not the cleanest (but only way to do it with available APIs). My main concern is on the UI/UX part: it might no be that user friendly on phones to have these 26 shortcuts, and the balance with the placement of the scroll bar need to be thought. While thinking about it, I was wondering if a full text filter won’t be a more useable solution. Still in the incubator :wink:

For the suggestion feature, I’d totally understood what your proposition is. My problem is: there’s nothing much that can be done with the suggested tracks:

  • search, via the API, will only search content within your library. So if the suggestion service returns something that’s not already in your library, you’ll never be able to find it via this app.
  • the content browsed via the API has no ID, of any kind. So it’s virtually impossible to make links (as in Roon native App). Hence, the results form the suggestion service, even if representing content form library won’t be easily playable. You’ll have to search for it.
  • these services are rarely (never?) free: someone has to pay for the bandwidth and the compute. It means creating a UI to set a kind of API key, etc.
  • with all theses constraints and limitations, I keep the idea but won’t prioritize it much for now.

Hi everyone, v0.0.7 is available in docker hub (and via the roon-extension-manager).

The main features:

  • zone queue is now available on phone and portrait displays. The organisation of components has been rebuilt. This should let way more flexibility regarding future layout variation
  • new actions, now user configurable: some new shortcuts have been aded to browse content (directly browse artists, albums, radio, composers, genres, etc.). As each one has it’s own usage or preferences, it’s now possible to choose which action are available in the settings. You can specify both which and in which order actions are displayed in the UI. This setting is tight to each browser instance (as every setting).
  • global sound commands have been added to drive sound for all outputs at once on grouped zone
  • library used have been updated to their last released version

I hope you’ll appreciate these new features.

Everything is settled to let the users define their own shortcut/action. I still need to think of a good UI/UX experience to record these custom actions.
On the other hand, everything is also ready to have more customized layout.
Let me know in the comment what you’d like to see implemented first.

3 Likes

I still can’t edit the first post and the thread title…
If someone can be kind enough to do it for me, just to reflect the release of the new version.
Thanks in advance :slight_smile:
Thanks @Michael_Harris !
The time to write this post… and you’ve done it already.
I just keep it there to say thank you :slight_smile:

Ha ha I was editing it while you were typing the message, thinking I would save you the effort

Sorry no :heart: to say thanks for the continuing excellent work :+1:

1 Like

Hi @Norbert_Preining,

The starting sequence has changed with last release (v0.0.7), you might give it another try.

CleanShot 2024-04-14 at 20.04.43

Regarding the customizable actions, here’s a little animation to show how it works.

Thanks @nihil
I will try today with the new version, and if it still crashes will turn on debugging.
Best regards
Norbert

Hi @nihil
I can confirm that with 0.0.7 the crashing is gone. Thanks a lot, much appreciated!