Roon Extension: Denon/Marantz AV receiver volume control (GitHub)

Wow, now this is what I call extensibility! I love this so much. I’ve always used fixed volume and so never had a use for Roon’s volume slider - always had to have the Harmony remote close by to change volume. This just makes my day!
Beer for you, Boris!

Now to finally mess about with making these extensions a startup service with launchd.

1 Like

@Boris_Pruessmann - this looks very interesting (I have a Denon 3808), but one question: if I’m running my Roon Core on ROCK, is it possible to install this extension, or is ROCK completely locked down, and the extension can’t be installed on a Roon Control device?

I have zero practical ROCK experience, so please take this with a grain of salt:

You probably cannot install this extension on ROCK itself because of the lock-down. You should be able to install it anywhere on your network though, and it should appear under extensions.

works well with my Denon AVC-A1HD
Thank you

but sometimes it loses connection every now and then which is restored by restarting both the mac mini (roon server) and denon amp

Hi Boris, good work. This works with my older AVC-A11XVA! Can you make a single package that could run automatically when starting up Roon or Windows?

Hi @Boudewijn_Tielrooij,

You may have a look at the extension installation guide for Windows that I created. When you follow these steps extensions are automatically started when Windows starts and you can also give other extensions a try.

Hi @Jan_Koudijs

Super, its up and running in no time.

Thx!

1 Like

Wow! Thanks, @Boris_Pruessmann! Installed easily and seems to be working great so far with my Denon AVR-x4100w. This may be the thing that motivates me to stick with Roon.

2 Likes

Hi @Boris_Pruessmann, I want to again say thanks for developing this. Together with the Harmony source extension, you’ve saved me from having to replace my receiver!

That said, I wanted to ask if there was a way to change the volume value range from dB (-79.5 to 18) to numeric (0-98)? I know almost nothing about programming, but I looked around in the code to see if I could figure out a way to do it myself. However, I thought that even if I did figure it out, my changes would be overwritten the next time I updated. Any chance you would add a menu option for this?

Any specific reason you would need that. At least with my Marantz the volume display is in sync with the receiver itself this way, so -15 in Roon is -15 on the AV.

It would be for convenience only. I have six other roon endpoints (nine if you include AirPlay) and all of them use a 0-100 volume scale. It would just be easier to use (especially for my non-audiophile family members) if all the volume displays worked the same.

But just to be clear: Even if the volume were displayed in Roman numerals, I would still love this extension and be thankful to have it! :grinning:

Hi Andy,

I had a closer look at this and made this configurable. Have a look at the the following git branch https://github.com/maru-sama/roon-extension-denon/tree/volume-changes
To check it out just do a

git clone https://github.com/maru-sama/roon-extension-denon -b volume-changes.

There is more in this branch as well (source selection, standby settings etc). While the source selection and standby changes are tested fairly well the volume display change is just a quick first test.

1 Like

Thanks, Michael! I ran the git clone command (without the dot at the end) to download the extension:
git clone https://github.com/maru-sama/roon-extension-denon -b volume-changes

Roon didn’t recognize it at first, so I followed the remainder of the instructions on your github page:

cd roon-extension-denon
npm install
node .

This got it registered with Roon, and it showed up as a second instance of “Denon/Marantz AVR” (same author and version number shown) so I began by stopping the other instance. (It was installed using Roon Extension Manager, so that’s what I used to stop it.) Unfortunately, when I tried to enter the receiver IP address in the new extension, it gave an error: “Cannot read property ‘value’ of undefined.”

The cmd window was still open, and here are the last few lines generated there:

<- REQUEST 822 com.roonlabs.settings:1/subscribe_settings {"subscription_key":"45"}
    -> CONTINUE 822 Subscribed {"settings":{"values":{"hostname":"","setsource":"","volume_type":"relative"},"layout":[{"type":"string","title":"Host name or IP Address","subtitle":"The IP address or hostname of the Denon/Marantz receiver.","maxlength":256,"setting":"hostname"},{"type":"dropdown","title":"Volume Type","subtitle":"Select if you want to have a relative (dB) or absolute (volume) display","values":[{"title":"absolute","value":"absolute"},{"title":"relative","value":"relative"}],"setting":"volume_type"}],"has_error":false}}
    <- REQUEST 831 com.roonlabs.settings:1/save_settings {"settings":{"values":{"hostname":"192.168.1.11","setsource":"","volume_type":"relative"}},"is_dry_run":true}
    -> COMPLETE 831 NotValid {"settings":{"values":{"hostname":"192.168.1.11","setsource":"","volume_type":"relative","err":"Cannot read property 'value' of undefined"},"layout":[{"type":"string","title":"Host name or IP Address","subtitle":"The IP address or hostname of the Denon/Marantz receiver.","maxlength":256,"setting":"hostname"},{"type":"dropdown","title":"Volume Type","subtitle":"Select if you want to have a relative (dB) or absolute (volume) display","values":[{"title":"absolute","value":"absolute"},{"title":"relative","value":"relative"}],"setting":"volume_type"},{"type":"status","title":"Cannot read property 'value' of undefined"}],"has_error":true}}

I have triple-checked to make sure the IP address is correct and even turned the receiver on. I also tried just entering the IP address and not changing the volume setting. Should I have uninstalled or stopped the other instance before installing this one?

Ok, first of all the other instance of the extension should be stopped before trying this one. But the error you get comes up during the configuration phase, so they should not interfere yet. So you enter the IP-address and then hit tab and you get this error, right? Can you see what a call to http://192.168.1.11/goform/formMainZone_MainZoneXml.xml returns in a browser, it should be an xml file.

1 Like

Here’s the XML file:

<?xml version="1.0" encoding="UTF-8"?>

-<item>


-<FriendlyName>

<value>Denon AVR-X4100W</value>

</FriendlyName>


-<Power>

<value>ON</value>

</Power>


-<ZonePower>

<value>ON</value>

</ZonePower>


-<RenameZone>

<value>LivingRoom </value>

</RenameZone>


-<TopMenuLink>

<value>ON</value>

</TopMenuLink>


-<VideoSelectDisp>

<value>OFF</value>

</VideoSelectDisp>


-<VideoSelect>

<value/>

</VideoSelect>


-<VideoSelectOnOff>

<value>OFF</value>

</VideoSelectOnOff>


-<VideoSelectLists>

<value param="" table="On" index="ON"/>

<value param="" table="Off" index="OFF"/>

<value param="" table="Xfinity X1 " index="SAT/CBL"/>

<value param="" table="Oppo Blu-ray" index="BD"/>

<value param="" table="Front AUX1 " index="AUX1"/>

<value param="" table="AUX2 " index="AUX2"/>

<value param="" table="AppleTV " index="MPLAY"/>

</VideoSelectLists>


-<ECOModeDisp>

<value>ON</value>

</ECOModeDisp>


-<ECOMode>

<value>ON</value>

</ECOMode>


-<ECOModeLists>

<value param="" table="On" index="ON"/>

<value param="" table="Off" index="OFF"/>

<value param="" table="Auto" index="AUTO"/>

</ECOModeLists>


-<AddSourceDisplay>

<value>FALSE</value>

</AddSourceDisplay>


-<ModelId>

<value>4</value>

</ModelId>


-<BrandId>

<value>DENON_MODEL</value>

</BrandId>


-<SalesArea>

<value>0</value>

</SalesArea>


-<InputFuncSelect>

<value>Roon</value>

</InputFuncSelect>


-<NetFuncSelect>

<value>NET</value>

</NetFuncSelect>


-<selectSurround>

<value>Direct </value>

</selectSurround>


-<VolumeDisplay>

<value>Absolute</value>

</VolumeDisplay>


-<MasterVolume>

<value>-47.0</value>

</MasterVolume>


-<Mute>

<value>off</value>

</Mute>


-<RemoteMaintenance>

<value>OFF</value>

</RemoteMaintenance>


-<SubwooferDisplay>

<value>FALSE</value>

</SubwooferDisplay>


-<Zone2VolDisp>

<value>TRUE</value>

</Zone2VolDisp>

</item>

Yes well ****, that’s the reason it is not working. The xml output is totally different from my Receiver (Marantz). Looking at the input I guess you renamed one of your inputs to “Roon”, right?

1 Like

Can you please give me the output of

http://192.168.1.11/goform/formMainZone_MainZoneXmlStatus.xml

as well. I just want to make sure that it is the same I found via google.

1 Like

Here’s the status XML:

<?xml version="1.0" encoding="UTF-8"?>

-<item>


-<Zone>

<value>LivingRoom </value>

</Zone>


-<Power>

<value>ON</value>

</Power>


-<InputFuncList>

<value>CBL/SAT</value>

<value>DVD</value>

<value>Blu-ray</value>

<value>GAME</value>

<value>AUX1</value>

<value>AUX2</value>

<value>Media Player</value>

<value>iPod/USB</value>

<value>CD</value>

<value>TUNER</value>

<value>NETWORK</value>

<value>TV AUDIO</value>

<value>Bluetooth</value>

<value>PHONO</value>

</InputFuncList>


-<RenameSource>


-<value>

<value>Xfinity X1 </value>

</value>


-<value>

<value>Roon </value>

</value>


-<value>

<value>Oppo Blu-ray</value>

</value>


-<value>

<value>Game </value>

</value>


-<value>

<value>Front AUX1 </value>

</value>


-<value>

<value>AUX2 </value>

</value>


-<value>

<value>AppleTV </value>

</value>


-<value>

<value>iPod/USB</value>

</value>


-<value>

<value>Turntable </value>

</value>


-<value>

<value>Tuner</value>

</value>


-<value>

<value>Online Music</value>

</value>


-<value>

<value>SonyTV ARC </value>

</value>


-<value>

<value>Bluetooth</value>

</value>


-<value>

<value>Ohno </value>

</value>

</RenameSource>


-<SourceDelete>

<value>USE</value>

<value>USE</value>

<value>USE</value>

<value>USE</value>

<value>USE</value>

<value>USE</value>

<value>USE</value>

<value>USE</value>

<value>USE</value>

<value>USE</value>

<value/>

<value>USE</value>

<value>USE</value>

<value>DEL</value>

</SourceDelete>


-<InputFuncSelect>

<value>DVD</value>

</InputFuncSelect>


-<VolumeDisplay>

<value>Absolute</value>

</VolumeDisplay>


-<RestorerMode>

<value>----</value>

</RestorerMode>


-<SurrMode>

<value>Direct </value>

</SurrMode>


-<MasterVolume>

<value>-47.0</value>

</MasterVolume>


-<Mute>

<value>off</value>

</Mute>


-<Model>

<value/>

</Model>

</item>

Yes, I renamed the DVD input to “Roon.”

Ok, I made a quick hack to work around this issue. Can you please do a

git pull

to get the latest commit and try again? Depending on the version of the receiver the disabled inputs are stored in different xml files and this tripped up the code.

1 Like