Just picked up a Pioneer AVR and got my HTPC set up with HDMI audio and everything is great.
In trying to get the best sound quality from PC to AVR, I set up WASAPI bit-perfect output wherever possible and this works perfectly, but I quickly discovered that my volume controls no longer had any effect, due to the WASAPI exclusive mode. This was particularly annoying as I have a Logitech keyboard with multimedia keys (volume control knob, mute key etc..) and not being able to use these any longer was very inconvenient.
I discovered that you can send commands to the AVR via HTTP requests (from the AVRs builit-in web server under the operations guide section). By discovering the HTTP request url, it became very easy to send the required commands to the AVR directly, and by using AutoHotKey, it was possible to map the commands directly to keyboard input
The format of the HTTP request is as follows:
http://[I]AVR IP Address[/I]/EventHandler.asp?WebToHostItem=command
So, if your AVRs IP address was 192.168.1.100 and you wanted to increase the volume your HTTP query would be:
http://192.168.1.100/EventHandler.asp?WebToHostItem=VU
The command is interpreted as a single remote control key press, so in this instance it would be a volume increase of +0.5dB.
There are a few Pioneer docs online that list a lot of the supported commands, a few of the main ones I was after are listed below:
Volume Controls:
MZ - Mute on/off toggle
VD - Volume down
VU - Volume up
Listening Modes:
0010SR - STANDARD
0006SR - AUTO SURROUND
0151SR - Auto Level Control (A.L.C.)
0007SR - DIRECT
0008SR - PURE DIRECT
0013SR - PRO LOGIC2 MOVIE
0213SR - ECO MODE 2
Inputs:
19FN - HDMI 1
05FN - TV
MCACC Presets:
1MC MCACC Memory 1
2MC MCACC Memory 2
3MC MCACC Memory 3
To map all of this to your keyboard, you use AutoHotKey. I have created a basic script that deals only with the volume controls and maps them to the general Microsoft Windows multimedia key inputs that many keyboards have, but you can edit the script to map to just about any input on your PC. The script is as follows:
Im not a coder and realise there is some repetition/redundancy in the script but its so small and runs so great (really responsive!) that I didn't want to try and use variables etc.. to streamline the code - someone else can do that
Hope someone finds this useful, it has been great for me. Just to mention, It appears possible to get responses from the AVR by sending queries to it asking for things like current volume level, listening mode etc.. and AutoHotKey would most certainly have the ability to show a small OSD graphic to display these returned values - it would be nice to have the AVR volume level temporarily appear on screen when changing volume on the PC for example - unfortunately this is a bit more complex and beyond me at present... perhaps someone more talented in the ways of AutoHotKey might be able to work some magic?
BAM.
In trying to get the best sound quality from PC to AVR, I set up WASAPI bit-perfect output wherever possible and this works perfectly, but I quickly discovered that my volume controls no longer had any effect, due to the WASAPI exclusive mode. This was particularly annoying as I have a Logitech keyboard with multimedia keys (volume control knob, mute key etc..) and not being able to use these any longer was very inconvenient.
I discovered that you can send commands to the AVR via HTTP requests (from the AVRs builit-in web server under the operations guide section). By discovering the HTTP request url, it became very easy to send the required commands to the AVR directly, and by using AutoHotKey, it was possible to map the commands directly to keyboard input
The format of the HTTP request is as follows:
http://[I]AVR IP Address[/I]/EventHandler.asp?WebToHostItem=command
So, if your AVRs IP address was 192.168.1.100 and you wanted to increase the volume your HTTP query would be:
http://192.168.1.100/EventHandler.asp?WebToHostItem=VU
The command is interpreted as a single remote control key press, so in this instance it would be a volume increase of +0.5dB.
There are a few Pioneer docs online that list a lot of the supported commands, a few of the main ones I was after are listed below:
Volume Controls:
MZ - Mute on/off toggle
VD - Volume down
VU - Volume up
Listening Modes:
0010SR - STANDARD
0006SR - AUTO SURROUND
0151SR - Auto Level Control (A.L.C.)
0007SR - DIRECT
0008SR - PURE DIRECT
0013SR - PRO LOGIC2 MOVIE
0213SR - ECO MODE 2
Inputs:
19FN - HDMI 1
05FN - TV
MCACC Presets:
1MC MCACC Memory 1
2MC MCACC Memory 2
3MC MCACC Memory 3
To map all of this to your keyboard, you use AutoHotKey. I have created a basic script that deals only with the volume controls and maps them to the general Microsoft Windows multimedia key inputs that many keyboards have, but you can edit the script to map to just about any input on your PC. The script is as follows:
Code:
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
Volume_Down::
whr.Open("GET", "http://192.168.1.100/EventHandler.asp?WebToHostItem=VD", true)
whr.Send()
whr.WaitForResponse()
return
Volume_Up::
whr.Open("GET", "http://192.168.1.100/EventHandler.asp?WebToHostItem=VU", true)
whr.Send()
whr.WaitForResponse()
return
Volume_Mute::
whr.Open("GET", "http://192.168.1.100/EventHandler.asp?WebToHostItem=MZ", true)
whr.Send()
whr.WaitForResponse()
return
Im not a coder and realise there is some repetition/redundancy in the script but its so small and runs so great (really responsive!) that I didn't want to try and use variables etc.. to streamline the code - someone else can do that
Hope someone finds this useful, it has been great for me. Just to mention, It appears possible to get responses from the AVR by sending queries to it asking for things like current volume level, listening mode etc.. and AutoHotKey would most certainly have the ability to show a small OSD graphic to display these returned values - it would be nice to have the AVR volume level temporarily appear on screen when changing volume on the PC for example - unfortunately this is a bit more complex and beyond me at present... perhaps someone more talented in the ways of AutoHotKey might be able to work some magic?
BAM.