I'd like to develop a scrobbler application for Roon

Hello I’m the developer of an open-source, self-hosted application – multi-scrobbler – used for aggregating music listening activity across many (15+) platforms to scrobble to one or more services (Last.fm, Listenbrainz, Maloja). MS has been discussed previously in this forum and had interest from multi-scrobbler users about scrobbling from Roon.

I would very much like to develop an integration for Roon. With the focused effort I have put into MS I believe my app could solve many issues I’ve seen Roon users encountering here: duplicate scrobbles, scrobbling to additional service (Listenbrainz), handling multiple artists from the now playing info in the Roon API…

I could get started developing an intergration using roon-kit or node-roon-api right now but I am not a paying subscriber for Roon (my listening situation does not require multi-zoned audio).

I understand there is a 2-week free trial but after the initial implementation I would still want to be able to support users of my Roon implementation which would likely require being able to reproduce behavior and get real data from a Roon instance which would require me to purchase a subscription. I would be paying Roon to provide free software that they benefit from. This does not sit well with me.

I have previously reached out to Roon via support email and applied to the Roon Partner Program but have not heard back since I applied a month ago.

All I want is a “developer” account (even limited functionality is fine) so that I can develop an integration for Roon. I’m posting this here to try to get more visibility to a Roon employee with the hope they can help me out here, or at least give me an answer one way or the other.

6 Likes

Just to add some more weight to this, I think it would be a fantastic addition to the Roon eco-system. I already use multi-scrobber extensively, it really offers great flexibility and other sites support more data-rich scrobbling than Last.fm

+1 !! It would be a great improvment

Yes Please, RON dev team,
Last FM scrobbler is a mainstay of my audio experience.

+1 — this would be a great addition.

Hi @FoxxMD,
I’m the developer of the rooExtend platform offering a set of easy to install Roon Extensions.

rooExtend – The easy start with Roon Extensions - Audio Gear Talk / rooExtend - Roon Labs Community

Maybe it might be interesting to integrate such a “scrobbler” service in my platform to be used with Roon. At the moment I don’t know:

  • What exactly is scrobbling?
  • What’s the use of it?
  • What the user has to do to use it?
  • What has to be done to integrate a scrobbler into Roon?

Would you please be so kind to explain this to me :pray:

Best DrCWO

EDIT:
As far as I read now the multi-scrobbler reads information of played tracks and send this to a database (e.g. Last.fm). For me it looks easy to build a Roon Extension with a web interface (or websocket) that delivers the Track title, Artist and Album name. Even for Radio Stations delivering meta information this seems to be possible.

Next question:
Is it also necessary to offer the reverse path? This means receiving Track information and play back this in Roon?

Hey DrCWO,

I realize this is a very late reply, I did not see a notification for your reply/mention.

multi-scrobbler reads information of played tracks and send this to a database (e.g. Last.fm). For me it looks easy to build a Roon Extension with a web interface (or websocket) that delivers the Track title, Artist and Album name

This is correct. And since this question was asked multi-scrobbler now supports both active monitoring (polling roon for info) AND passive monitor (receiving scrobble/player activity from roon).

If your extension implemented the standard listenbrainz POST api call for submit-listen and a roon user could specify the listenbrainz server URL to use then they could scrobble both to the official listenbrainz instance and to multi-scrobbler using the Listenbrainz endpoint integration.

___

To expand on the two types of monitoring:

Active – multi-scrobbler polls Roon (or your extension), through some exposed HTTP or websocket endpoint, and gets currently-playing data like track, artist, album, etc… and ideally also player state (stopped, paused, playing, position of player within a track)

  • Advantages
    • No need to implement scrobbling logic in your extension
      • scrobble behavior (when is a track scrobbled?) is configured and handled by multi-scrobbler
    • does not require any HTTP client logic, retrying, network failure handling, etc… by you
  • Disadvantages
    • May not be possible to expose an endpoint this way with your extension?
    • Useful player data (paused, playing, progress…) may not be visible, making multi-scrobbler less accurate
    • May need to handle authentication?

Passive – Your extension handles all of the internal logic for deciding if a user’s listening activity is scrobbleable. Then, your extension makes a client HTTP call to a multi-scrobbler endpoint like http://myMultiScrobblerIP:9078/1/submit-listens with a json payload containing title, artists, album, duration listened, track length, and a timestamp of when it was listened to.

  • Advantages
    • Do not need to expose HTTP/websocket endpoints in your own extension
    • Does not require parsing or keeping track of all that internal state for player data (playing, stopped, progress, etc…) and exposing that
  • Disadvantages
    • Need to implement your own scrobble logic
      • When is listening ready to scrobble? Will it be configurable?
      • Need to parse data into a listenbrainz payload before sending
    • May need to handle HTTP client issues and error reporting
    • Need to handle user configuration for listenbrainz token and custom url for listenbrainz server

___

As I alluded to before the break, I think implementing listenbrainz submit-listen (passive monitoring) would be the most productive use of effort since it would keep functionality within the community (dogfooding) and make the official Listenbrainz an alternative to multi-scrobbler (one implementation usable for two different services). But either monitoring path would work for me.

Is it also necessary to offer the reverse path? This means receiving Track information and play back this in Roon?

This is not necessary. multi-scrobbler only monitors listening activity, regardless of active/passive. It does not need to update roon state in any way.

Thanks’ for your reply :slight_smile:

You should find more supporters for this project before I will think about implementing it. It will be time consuming for me and I have no idea if I will be able to get enough Customers/Subscribers to make sense for me.

This is an open thread and there is not much traffic here until now.

Best DrCWO

Understood. And that’s perfectly reasonable. Here are some other threads related to scrobbling beyond the capability built in to roon:

And there are several users on the roon issue for multi-scrobbler: Implement Roon as a source · Issue #83 · FoxxMD/multi-scrobbler · GitHub

This may also be a chicken-and-egg problem where users don’t know there is an alternative they should be pushing for until someone presents it to them. Listenbrainz (official instance) has 1.7 billion total scrobbles and 100k users, it’s certainly not a niche community.

To quote Field of Dreams (a decidedly American movie): “If you build it, they will come”

Sure, but as I don’t use it there is no intrinsic motivation only extrinsic for money :sleepy_face:
So maybe you find some more people who whish to have this in rooExtend and them post here. If you a certain amount of users interested I’ll think re-think it.

Best DrCWO

Great to see enthusiasm around improving and expanding Roon’s scrobbling support, but just in case anyone is not aware, Roon already supports scrobbling to Last.FM – you can find the details here.

I know there have been some complaints about duplicate plays getting logged (in Roon history, and subsequently in Last.FM scrobbles) and I can confirm this is something we are actively thinking about.

I don’t have any news to share about official Listenbrainz support, but if it’s important to you, please vote for the aforementioned feature suggestion here.

2 Likes

Yeah, the reason I’m interested is primarily due to aggressive duplicate scrobbling from Roon ARC.

I worked on creating an extension that would work with multi-scrobbler, and was relatively successful for normal Roon sources.

Unfortunately, I’ve hit a brick wall with Roon ARC listens. Because Roon ARC isn’t a normal source, those listens are not exposed via the transport API. And the API has no ability to look at listen history, as far as I can find, so I can’t detect those listens via history, either.

@mike Am I missing anything that I could try? Are there plans to bring Roon ARC more in line with Roon Remote in terms of API access and so forth?

I wish I could just use Roon Remote, but even when I’m home, it’s incredibly buggy on my iPhone. I can’t resume playback from my AirPods, the source often disappears and gets stuck in “enabling”, etc. Roon ARC is a much better playback experience, but the scrobbling is much worse, and I can’t share queues with other sources. (I need to make a separate thread in feedback or support for these issues at some point.)