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".
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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".
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
AddRegsections) are initially written to the driver store. They are then copied to the Windows internalHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audioregistry location. Specifically, the APO relevant entries are underRender(for playback) orCapture(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 propertyPKEY_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.ok, this might actually make rerouting that apo possible
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
i think i found it:
https://docs.microsoft.com/en-us/windows-hardware/drivers/audio/pkey-compositefx-modeeffectclsid
editing this should make it possible to enable windows own audio enhancements
https://nopaste.ml/#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
thats an ini file from the audio driver. it has all the options inside. i guess you cant change the options beforehand, but maybe afterwards.
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
which registry key is this? i want to enable ssp effects list
HKRis 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\0eventually get copied to theFxPropertieskey I referred to earlier, and the values underFxPropertiesare 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
FxPropertiessomehow. I haven't looked at what exact mechanism is responsible for keeping the driverFX\0key in sync with the audio engineFxPropertieskey.Last edit: Etienne Dechamps 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.
fxproperties is what i found, but i dont find the other options. maybe i have to open the registry with full permissions
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
found a registry editor that supports a proper search
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?
the micarray coordinates dont make sense. looks like unfinished work, but there is too little information to know for sure :(