Falcosc / enable-loudness-equalisation

automatically adds and enables loudness equalisation to any playback device
GNU General Public License v3.0
43 stars 9 forks source link

Optical Output DAC with realtek audio unlock the enhancements tab but no effects inside #7

Closed ExoZNiK closed 6 months ago

ExoZNiK commented 1 year ago

I have a Dac connected by optical output to pc, with the guide it unlocks the enhancements tab (now it appear) in the sound panel of windows, but the are no enhancements to activate inside that. The devise use Realtek wich doesn't support the enhancements by default like nvidia high definition audio driver do. Is it normal that also with this script you can't use that with realtek device or there is to do something more?

aarony1993 commented 1 year ago

Same here

https://i.imgur.com/ITMg64P.png

Falcosc commented 1 year ago

Interesting, it works on Realtek, Intel iGPU and Intel Arc.

Could you export HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render

Maybe the PreMixEffectClsid and PostMixEffectClsid is different for some driver versions. Are you both on Windows 11?

I hope to find different IDs in your other sound devices because we use the following hardcoded ids:

https://github.com/Falcosc/enable-loudness-equalisation/blob/af818f9f2648c96b07d3c57b8669ed0d239ff70a/EnableLoudness.ps1#L52-L53

ExoZNiK commented 1 year ago

Yea i'm on windows 11 and i take a screenshot of the voices i think you were looking for: image

ExoZNiK commented 1 year ago

i don't have the 2 lines you mentioned so that's probably the problem and you figured out right :) any suggestion for a fix? or you have to implement the code now?

Falcosc commented 1 year ago

i don't have the 2 lines you mentioned so that's probably the problem and you figured out right :) any suggestion for a fix? or you have to implement the code now?

We can look into the 36 audio devices you have installed on your computer. Maybe we find different MixEffectClsids there. But it is unlikely because the options appear even if these are not set. The only effect they have on my device is to actually apply the configured filters.

If you know the name of a device on your computer which has the features, we could try to figure out if there are some additional settings configured in there. But the likelihood that we find the missing piece is very low, since I already know that MixEffectClsids don't change what appears in the UI.

If the export of the whole folder doesn't give us any hints, I will add this "no features in layout" as a known issue for an unknown list of audio drivers. Meanwhile, you could try out some different drivers, maybe there is one which brings these UI options where you only need the script to make the tab accessible.

ExoZNiK commented 1 year ago

How can i export that? i just use 2 device (monitor and optical output), so maybe are very old devices. i don't know how to differentiate them properly. i can give you a screenshot of the device where i want to make loudness equalization work and maybe obtain the id from that? image image image image image

tell me if i can help with something in particular

ExoZNiK commented 1 year ago

if you know of a way (or software) to clear the uninstalled or not connected audio peripherals i can make the folder smaller and then take it out. 36 are too much and i have only 2 active xD

Falcosc commented 1 year ago

How can i export that?

Right-click on the registry folder and export, it will export all subfolders. Each output is a render device in there. So it is normal to have many of them.

But we need one which has enhancement options to compare against it, which audio device name shows at least one enhancement option?

ExoZNiK commented 1 year ago

realtek.zip image image that's the zip with the reg file inside and the screen with the monitor diver (which has the loudness equalization avaible). ask if something is missing

Falcosc commented 1 year ago

2 ideas:

The main problem is that you don't have any device with MixEffects. The trick works on drivers which provide effects for stuff like speakers, but don't expose the feature to other devices. In such a case the feature is there but just hidden.

But if there is no device using this feature, they may crafted a reduced feature driver package where effects are not included at all. In such case, you can't unhide them.

I don't know if "does only work if the driver does provide the functionality for some instead of all outputs" is the correct assumption. But I would like to add this somewhere in the documentation. What do you think, should this go to the known issues or maybe into the introduction?

ExoZNiK commented 1 year ago

PG279Q is the asus monitor and is with "nvidia high definiton audio driver" whihc has all the enchantements by default. i was trying to achieve loudness equalization on my "Realtek Digital Output" which is the one i use (the dac with the headpones connected). g933 was my old gaming set i don't use that anymore. I was hoping that the ssumption you made was correct, if it was so the monitor has it and should unlock also realtek, but for my case seems that realtek is not compatible by default because it hasn't the function at all (not just hidden as you said). Pretty sad ;/

ExoZNiK commented 1 year ago

Maybe in the introduction readme file you can say that realtek is not compatible, as the other person have my problem too, and let this issue open (with some error label marked known) if you have any idea on how to fix that.

Falcosc commented 1 year ago

Maybe in the introduction readme file you can say that realtek is not compatible

Unfortunately, that would be misleading because on some it does work. Maybe there are multiple versions of it? One with reduced features and one with full feature set? For speaker outputs, you get these options by default, but only if you have a realtek driver package with enhancement support. So if you see enhancements for speakers: often you will not see them for headphones, so this script is used to unhide the features available on speaker output for usage on headphones, digital outputs or monitor outputs. Which means step 1 would be finding a driver which includes enhancements (if you don't have 3.5mm jack it is maybe a bit difficult to check. But step 2 would be unhiding the options on any other device if you have them on the 3.5mm jack output

ExoZNiK commented 1 year ago

I tried also to connect the sennheiser hd599 (headphones) directly on the jack 3.5mm but it has the same problem (realtek driver also on that) the dac is connected by optical cable. I didn't find another driver compatibile with these device in te sound panel if i search on my computer, and if a reinstall from zero it intall the realtek. I never find online a person that have these enchantements on the realtek driver. That's why this script sound interesting :)

Falcosc commented 1 year ago

Windows ships a driver which is compatible with Realtek and has the features. But you are likely to lose the digital output there. So yes, it is just a matter of which realtek compatible driver you install. If you find one which is compatible with your realtek configuration (you can have different outputs configured for the same realtek package number)

But even with the enhancement supporting driver, you will only be able to enable them for speakers. All other outputs need the unhide configuration.

Falcosc commented 1 year ago

You can just try any of the many guides which suggest replacing the realtek driver with the more generic Microsoft version of it by manually picking which driver you want to load in the update driver dialog.

ExoZNiK commented 1 year ago

image i have just this compatible by default and the usb 2.0 i think is the generic but never seemed good to me

Simbiat commented 1 year ago

I have similar situation, although I am using onboard audio with external speakers (with 3.5 jack). Digital audio from GPU has the enhancements visible, but the analog speakers - do not. MB is Asus TUF GAMING B650-PLUS and its audio drivers come with DTS, so maybe that is creating a conflict? Attached are extracts from registry for both devices.

Registry extracts.zip

Falcosc commented 1 year ago

No, conflicts are unlikely. It is more likely that your driver package has a reduced feature set. You could try a different one directly from the audio chip producer instead of ASUS. But I can't tell you how to find out which driver packages contain the features you are looking. I only know how to make them visible after they are installed if they are there.

If you found one which ships loudness equalization for Audio Output X, I could try to find out why it isn't showing in your Audio Output Y. If none of all your audio outputs have it, then it is unlikely to be part of the driver.

I copied the parameter from my 3.5 jack output to my HDMI output, but this only worked because it was there in the 3.5mm jack output. And that's what the script is doing

Simbiat commented 1 year ago

My HDMI (and DP) have loudness equalization, and 3.5 does not, that why I attached the registry exports/extracts for both outputs, since the above thread suggested, that you may know why it's not showing. Could you, please, take a look, when you have time?

Falcosc commented 1 year ago

That's sounds promising, exactly the right precondition to get it working. Didn't except that so I didn't have a look until now. How is the Name of the HDMI and DP Port Output and how is the 3.5mm output name?

All 3 using the same audio device? Then it will be easy, likely just the wrong class id since this is one of the points I needed to guess and hard-code because I don't have a way of getting the correct Id.

Could you enable Loudness Equalization on your HDMI or DP device to have a complete reference in case the configuration isn't showing in the disabled state? If you already had it active for one of your monitors, activate it on the other to make it easier to spot the difference to make sure I got the right one, since I can't trial and error without your system on my hand.

Simbiat commented 1 year ago

HDMI had it enabled, when I exported the registry branch. In the .zip files I shared above amd.reg - is the branch for HDMI (and only the exact output I was using), and speakers.reg - is branch for 3.5 jack (and only it).

Falcosc commented 1 year ago

Did you enable it manually or with the script?

I need an HDMI export manually enabled and an HDMI export manually disabled to confirm my values.

If you already executed the script, you can also use your DP device to make the on vs off difference export.

Simbiat commented 1 year ago

I enabled it manually for HDMI. Technically I did not run the script, I just used the registry values from it to manually add them.

Falcosc commented 1 year ago

@Simbiat found your issues. Your Displays are going over the AMD Driver and the Speaker over the Realtek driver. But the common Realtek driver package is known for not shipping loudness equalization. The generic microsoft driver with supports realtek and ships it.

But maybe we're addressing the realtek driver wrong. You can take a look in your C:\Windows\INF\oem139.inf file (that's the current active copy of the string mappings) and check if your driver uses the same Ids for Key (PKEYFX) and value (FX_)

PKEY_FX_PreMixClsid  = "{D04E05A6-594B-4fb6-A80D-01AF5EED7D1D},1"
PKEY_FX_PostMixClsid = "{D04E05A6-594B-4fb6-A80D-01AF5EED7D1D},2"
PKEY_FX_UiClsid      = "{D04E05A6-594B-4fb6-A80D-01AF5EED7D1D},3"
FX_PREMIX_CLSID  = "{62dc1a93-ae24-464c-a43e-452f824c4250}"
FX_POSTMIX_CLSID = "{637c490d-eee3-4c0a-973f-371958802da2}"
FX_UI_CLSID      = "{5860E1C5-F95C-4a7a-8EC8-8AEF24F379A1}"

But I guess it is just missing in the realtake driver packge. So the most repeated fix on the internet is selecting the generic driver https://www.thewindowsclub.com/loudness-equalization-missing-in-windows-10 https://www.winhelponline.com/blog/get-enhancements-tab-speaker-properties/ https://www.makeuseof.com/enhancement-tab-missing-windows-11/

Please share how you got the generic one if it is missing in your driver store. Because all the guides start with already having one in the driver store.

Simbiat commented 1 year ago

Interesting: I tried reinstalling the drivers from ASUS website (in case something went wrong during setup of the new system and they got replaced by something), and now I see 3 entries in registry, that are called "Speakers" and "Realtek", all 3 referencing different INF files. None of the INF files have FX keys in them though. Makes me wonder, that maybe... Some other renderer needs to be selected?... I've attached registry extracts for each renderer that references speakers and Realtek, their respective INF files and extract of all renderers (just in case).

I can use the "High Definition Audio Device" driver instead of Realtek/ASUS one, it has loudness normalization, as expected, but that breaks DTS which comes with the motherboard. While I can't say for sure if I even need it, I've built my new PC after my Lenovo Legion y740 17irhg burnt, and that one had Dolby Atmos for speakers which made it sound really good for a laptop (and had normalization in Dolby Access app, which worked perfectly). As such I want to give DTS a chance if possible. Generic driver does have Virtual Surround enhancement and has Spatial Sound, too, but Dolby setup definitely doe snot sound as good (can't hear difference compared to Windows Sonic using Edifier R1700BT), but I can't even compare the sound properly, because I can't freely turn DTS on/off.

SO, yeah, this more like a "want", rather than "need", I am just curious if it can be done, and maybe during the process we can find something that will allow you to improve the script, who knows?

RegistryAndINFs.zip

Falcosc commented 6 months ago

Added support for some more driver versions with https://github.com/Falcosc/enable-loudness-equalisation/pull/14