Skip to content

Expose audio signal information #363

Description

@klada

It would be great if the library could expose the audio signal information from the current source. Knowing the current sound mode (e.g. "PCM") and channel count is quite useful for automations (automatically switch to suitable output mode).

Sound and video information can be queried through the AppCommand0300.xml interface with the following XML:

<?xml version="1.0" encoding="utf-8"?>
<tx>
 <cmd id="3">
  <name>GetInputSignal</name>
  <list>
   <param name="inputsigall"></param>
  </list>
 </cmd>
 <cmd id="3">
  <name>GetActiveSpeaker</name>
  <list>
   <param name="activespall"></param>
  </list>
 </cmd>
 <cmd id="3">
  <name>GetVideoInfo</name>
  <list>
   <param name="videooutput"></param>
   <param name="hdmisigin"></param>
   <param name="hdmisigout"></param>
  </list>
 </cmd>
 <cmd id="3">
  <name>GetAudioInfo</name>
  <list>
   <param name="inputmode"></param>
   <param name="output"></param>
   <param name="signal"></param>
   <param name="sound"></param>
   <param name="fs"></param>
  </list>
 </cmd>
 <cmd id="3">
  <name>GetAudyssyInfo</name>
  <list>
   <param name="eqname"></param>
   <param name="eqvalue"></param>
   <param name="dynamiceq"></param>
   <param name="dynamicvol"></param>
  </list>
 </cmd>
</tx>

Command to query:

curl -X POST -H "Content-Type: application/xml"  --data-binary @foo.xml http://192.168.20.22:8080/goform/AppCommand0300.xml

Output (for PCM 2.0):

<?xml version="1.0" encoding="utf-8" ?>
<rx>
<cmd>
<name>GetInputSignal</name>
<list>
<param name="inputsiga1" control="1">FHL</param>
<param name="inputsigb1" control="1">LFE</param>
<param name="inputsigc1" control="0"></param>
<param name="inputsigd1" control="1">EXT</param>
<param name="inputsige1" control="1">FHR</param>
<param name="inputsiga2" control="1">FWL</param>
<param name="inputsigb2" control="2">FL</param>
<param name="inputsigc2" control="1">C</param>
<param name="inputsigd2" control="2">FR</param>
<param name="inputsige2" control="1">FWR</param>
<param name="inputsiga3" control="0">SHL</param>
<param name="inputsigb3" control="1">SL</param>
<param name="inputsigc3" control="0">TS</param>
<param name="inputsigd3" control="1">SR</param>
<param name="inputsige3" control="0">SHR</param>
<param name="inputsiga4" control="0"></param>
<param name="inputsigb4" control="1">SBL</param>
<param name="inputsigc4" control="1">SB</param>
<param name="inputsigd4" control="1">SBR</param>
<param name="inputsige4" control="0"></param>
</list>
</cmd>
<cmd>
<name>GetActiveSpeaker</name>
<list>
<param name="activespa1" control="1">TFL</param>
<param name="activespb1" control="2">SW</param>
<param name="activespc1" control="0"></param>
<param name="activespd1" control="0"></param>
<param name="activespe1" control="1">TFR</param>
<param name="activespa2" control="0"></param>
<param name="activespb2" control="2">FL</param>
<param name="activespc2" control="1">C</param>
<param name="activespd2" control="2">FR</param>
<param name="activespe2" control="0"></param>
<param name="activespa3" control="0"></param>
<param name="activespb3" control="1">SL</param>
<param name="activespc3" control="0"></param>
<param name="activespd3" control="1">SR</param>
<param name="activespe3" control="0"></param>
<param name="activespa4" control="1">TRL</param>
<param name="activespb4" control="1">SBL</param>
<param name="activespc4" control="0"></param>
<param name="activespd4" control="1">SBR</param>
<param name="activespe4" control="1">TRR</param>
</list>
</cmd>
<cmd>
<name>GetVideoInfo</name>
<list>
<param name="videooutput" control="1">Monitor 1</param>
<param name="hdmisigin" control="1">4K50</param>
<param name="hdmisigout" control="1">--- </param>
</list>
</cmd>
<cmd>
<name>GetAudioInfo</name>
<list>
<param name="inputmode" control="1">HDMI</param>
<param name="output" control="1">Speaker</param>
<param name="signal" control="1">PCM                  </param>
<param name="sound" control="1">Stereo</param>
<param name="fs" control="1">48 kHz</param>
</list>
</cmd>
<cmd>
<name>GetAudyssyInfo</name>
<list>
<param name="eqname" control="0">MultEQ XT32</param>
<param name="eqvalue" control="0">Off</param>
<param name="dynamiceq" control="0">Off</param>
<param name="dynamicvol" control="0">Off</param>
</list>
</cmd>
</rx>

Regarding speaker/channel config: the speakers/channels with the control="2" attribute are the ones which are active. control="1" are the channels which are available on the device (the ones with speakers connected).

The above example is from a Denon AVR X4800H.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions