Menu

APO registry entries

anton
2022-02-02
2022-02-03
  • anton

    anton - 2022-02-02

    Ive seen, that apo makes registry entries to reroute the sound. Am i right?
    Can you pls explain how that works in more detail? I want to use that knowledge to maybe reroute another "APO".

     
    • Etienne Dechamps

      The official Microsoft documentation for APOs is here. I suggest you start there and get familiar with the background and various APO concepts.

      When an APO is shipped with an audio driver, the relevant registry entries (INF AddReg sections) are initially written to the driver store. They are then copied to the Windows internal HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio registry location. Specifically, the APO relevant entries are under Render (for playback) or Capture (for record), audio endpoint GUID, FxProperties. (The Audio Endpoint GUID is how Windows uniquely identifies audio endpoints. It is the same GUID you get by clicking "Copy Device command to clipboard" in the Equalizer APO Configurator.)

      The values stored under that registry key are what the Windows audio engine actually uses to determine which APO to load, among a few other things. These are the registry entries that the Equalizer APO Configurator manipulates to make Windows use Equalizer APO on a particular audio endpoint device.

      In practice, under FxProperties, individual entries use a GUID and index as the registry value name to identify the property. For example, according to the Microsoft docs, the property PKEY_FX_StreamEffectClsid, which determines the SFX APO to load, is identified by the GUID {D04E05A6-594B-4fb6-A80D-01AF5EED7D1D},5. It is a string value that contains the GUID of the registered COM class that implements the APO. For example, the GUID of Equalizer APO is {EC1CC9CE-FAED-4822-828A-82A81A6F018F}. So if you see a registry entry with the that name and value, it means Equalizer APO is being used as the SFX APO for that audio endpoint.

      You can make changes to these registry entries, and they will be picked up the next time the Windows audio engine service (audiosrv) is restarted.

       
  • anton

    anton - 2022-02-02

    ok, this might actually make rerouting that apo possible

     
  • anton

    anton - 2022-02-03

    i want to make beamforming work for the microphone.
    Windows does have some built in audio enhancements effects, which some drivers use. It sounds like you could even reroute those built in sound effects, listed as (audio enhancements in audio driver properties) to make them available.

    Another option is that i found a sound effects APO that another driver uses from fortemedia. all you need to do is to make fortemedia sound affects available for my own driver. This sounds quite possible after what you have written.

    i tried to look into the registry entries but its still wild jungle of hard to grasp keys :D

     
  • anton

    anton - 2022-02-03

    HKR,"FX\0","{0C709614-E770-0001-4000-018664542698},2014", %REG_DWORD%, 0x0001 ; Hide SSP Effects List
    HKR,"FX\0","{0C709614-E770-0001-4000-018664542698},1023", %REG_DWORD%, 0x0000 ; Enable SysPb on VoIP
    HKR,"FX\0","{01F0E753-3A7A-4b21-A904-D06826245E43},7015", %REG_DWORD%, 0x0000 ; Disable SSP EQ
    HKR,"FX\0","{0C709614-E770-0001-4000-018664542698},1027", %REG_DWORD%, 0x0001 ; Enable Dolby flag

    this is what i found inside driver.inis

     
  • anton

    anton - 2022-02-03

    which registry key is this? i want to enable ssp effects list

     
    • Etienne Dechamps

      HKR is defined as a reference to a driver-specific registry key that depends on the context. My understanding is that it will be under one of these.

      In my experience this doesn't really matter though: the contents of FX\0 eventually get copied to the FxProperties key I referred to earlier, and the values under FxProperties are what the Windows audio engine actually uses in practice.

      I think you will find it harder to change the values directly inside the driver registry keys because you'd then need to trigger the copy into FxProperties somehow. I haven't looked at what exact mechanism is responsible for keeping the driver FX\0 key in sync with the audio engine FxProperties key.

       

      Last edit: Etienne Dechamps 2022-02-03
      • anton

        anton - 2022-02-03

        i feel like i am almost there:
        [Array.AddReg]
        HKR,%EPattributePath%\EPid1A,IsMicArray,1,01

        HKR,Settings\MicArrayInfo,MicNum,1,02,00,00,00 ;;usNumberOfMicrophones
        HKR,Settings\MicArrayInfo,ArrayType,1,00,00,00,00 ;;usMicArrayType
        HKR,Settings\MicArrayInfo,VerticalAngle,1,a6,ff,5a,00 ;;Low word: Angle Begin, High word: Angle End
        HKR,Settings\MicArrayInfo,HorizontalAngle,1,f1,ff,0f,00 ;;Low word: Angle Begin, High word: Angle End
        HKR,Settings\MicArrayInfo,FrequencyBand,1,14,00,20,4e ;;Low word: Band Lo, High word: Band Hi
        ;;Mic 0
        HKR,Settings\MicArrayInfo,MicType00,1,00,00,00,00 ;;usType for Mic 0
        HKR,Settings\MicArrayInfo,MicCoordXY00,1,00,00,00,00 ;;Low word: Coordinate X, High word: Coordinate Y
        HKR,Settings\MicArrayInfo,MicCoordZ00,1,00,00,00,00 ;;Low word: Coordinate Z, High word: Reserved
        HKR,Settings\MicArrayInfo,MicAngle00,1,00,00,00,00 ;;Low word: Vertical Angle, High word: Horizonal Angle
        ;;Mic 1
        HKR,Settings\MicArrayInfo,MicType01,1,00,00,00,00 ;;usType for Mic 1
        HKR,Settings\MicArrayInfo,MicCoordXY01,1,00,00,36,00 ;;Low word: Coordinate X, High word: Coordinate Y
        HKR,Settings\MicArrayInfo,MicCoordZ01,1,01,00,00,00 ;;Low word: Coordinate Z, High word: Reserved
        HKR,Settings\MicArrayInfo,MicAngle01,1,00,00,00,00 ;;Low word: Vertical Angle, High word: Horizonal Angle

        this is the necessary information for beamforming.

         
      • anton

        anton - 2022-02-03

        fxproperties is what i found, but i dont find the other options. maybe i have to open the registry with full permissions

         
  • anton

    anton - 2022-02-03

    it must be somewhere in the registry, but searching for "micarray" doesnt show anything. headscratch
    searching registry is kinda funny, dont get why i cant search for micarray

     
  • anton

    anton - 2022-02-03

    found a registry editor that supports a proper search

     
  • anton

    anton - 2022-02-03

    ok now that i have a proper registry editor i found ALL the reg setting "hiding ssp effects" i was suspecting those are the hidden sound enhancements. i set the value to zero. i wonder why it isnt a binary variable. but it doesnt show any effect. do i have to remove the entry all together?

     
  • anton

    anton - 2022-02-03

    the micarray coordinates dont make sense. looks like unfinished work, but there is too little information to know for sure :(

     

Log in to post a comment.

MongoDB Logo MongoDB