Add "audio input" and "audio duck" hooks within the Extensions API

Roon should be the “Master” of the whole home audio network. All audio playback should happen within Roon natively, or through Roon using third party extensions.

The feature: The Extensions API would have additional functions added that would allow an extension to mute or reduce any currently playing audio, and then play audio handed to Roon by that extension. Alternative methods would be to switch Roon to an alternative “input” or “internet radio” station (as an example) that would receive the audio from the extension, and then switch back to the formerly playing list.

The end goal: To allow third party developers to build extensions that can be endpoints for other audio generators on the local network.

Example: SmartThings supports audio output to speakers throughout the home for notifications using TTS/DLNA/UPnP/Sonos, etc. Currently, I am required to have two separate speaker systems in each room if I want audible notifications from SmartThings when certain events happen in my home. One set for those notifications, and one set for Roon. The audio endpoints I’m using for Roon do support DLNA, but if audio is playing from Roon, the source does not automatically switch. Additionally, I do not want to hit the endpoints directly from other audio sources. Everything should go through Roon for zone management, DSP, volume, etc. When the laundry is finished, Samsung SmartThings would send a Text to Speech command to the Roon “Text to Speech Extension” developed by a community member. The extension would duck the audio from 75% to 25% on any existing playing media, announce the message, then turn the volume back up slowly to the former level. This would also work for pre-rendered MP3s, etc.

Alternatives: An extension set up as a Spotify Connect audio sink named “Roon” using libspotify or other library would be able to stop existing playback. Audio playing to the “Spotify Connect” device named “Roon” would then be handed to the Roon software proper, which would then be rendered out to the endpoints.

This would allow the Roon team to continue on its quest for audio perfection as a whole-home audio solution and allow the community to broaden the scope of Roon by a large margin without directly affecting Roon’s end goals. Additionally, support for the extensions would fall squarely on the shoulders of the developers who built them, negating the concerns of the Roon team with regards to supporting “substandard” protocols and the like.

2 Likes

Hear, hear!!