What is a roon extension?How different is it from a roon remote and roon core?

Basically what is the roon extension that is mentioned in the github page of node-api for roon.

Is it like a roon remote or something else?

I think it’s a 3rd party written piece of code that uses the roon API to achieve a function that isn’t in roon. So a web player, alarm clock etc.
You need to run a computer to host the extension(s) but not on a ROCK I believe. Don’t actually know about nucleus.

1 Like

Check out the Tinkering category in the forum:

3 Likes

A Roon extension is not like a Roon remote.

A Roon remote is the term used when the Roon program is pointed to and controls a Core on another computer.

In my main setup, for example, I have a music server that runs Roon Server and a number of control devices that control that Core. One of those devices is a desktop computer that is running the Roon program. When I initially installed that software I was running a Core on the desktop, so I chose to have the Roon program control the Core on the desktop computer it was running on. Later I built a music server to run my Core. When I wanted to use the desktop Roon to control my server I logged out of the desktop Core and pointed the desktop Roon to the server Core. When my desktop Roon program is pointing at my server Core then we say my desktop Roon is operating as a Roon remote.

A Roon extension is a Javascript that automates part of the Roon functionality using the Roon API (Application Programming Interface). The type of things that can be automated are set out in the desciption of Services:

Services

Roon extensions can use and/or provide services . This works a bit differently than most APIs out there.

Using a service is probably what one first thinks of when using the Roon API. If an extension wants to tell Roon to change the volume or pause the music, it will use the transport service that Roon provides.

Providing a service is when an extension tells Roon that it has some functionality it can provide, and if Roon desires, it can use it.

Services provided by Roon, and used by an extension include:

  • browsing This service let’s an extension browse Roon’s music library (and more) in a simple list orient manner, and even do common actions like play music.
  • image downloading This service let’s an extension download an image related to artist photos, album artwork, or other images in the Roon databases.
  • transport This service let’s an extension manage and control zones. This includes actions such as zone grouping, transport controls (play, pause, next, prev, etc…), volume control, standby, etc…
  • more…

Services provided by an extension and used by Roon:

  • ping The Node.js Roon API automatically provides this API. Roon will notice this and periodically ping the extension over the network to make sure the extension is available. This helps Roon provide a better experience on less than ideal networks.
  • status Implementing this service in an extension enables it to be able to provide a small status message to Roon about the status of the extension.Roon will display this status along with the information about the extension in the extensions listing inside Roon Settings.For example, the Roon extension for the Griffin Powermate USB knob will let Roon know if the USB device is plugged in or not plugged in using this service.
  • settings Many extensions will want to have some simple actions and/or configuration. Roon can use a settings service provided by an extension to display a UI inside the Roon Settings screens that is defined by the extension.
  • volume control and source control Audio devices that are Roon Ready, allow Roon’s user interface on all remotes to send volume commands directly to the hardware, for the most accurate and high quality volume control. Roon will also convenience switch the inputs of Roon Ready devices with multiple source inputs, and support standby functionality in-app.However, if you have a device that is not Roon Ready, then providing these two services in your extension can allow you to enable this functionality to Roon via Serial/RS232, Infrared, network, or some other mechanism, without hardware Roon support.

You can find Roon extensions and discussions about extensions in the Tinkering/Roon API Forum category.

3 Likes

Can you please add information related to Extensions to the KB? What Extension is used for, where to find it, how to install it, how to remove it and what “Authorizations” are used for?