rew excl

Kiptanoi

Registered
Thread Starter
Joined
May 2, 2023
Messages
10
Hi
I just starting to use REW, so I am very new at this.
I have a PC with Windows 11 that is connected to a Sony DH590 with a HDMI at the moment.
Now I did some small testing here one day, and to measure my different speakers I used EXCL in the output device.
Then I could measure all my speakers (Left, Right, Center, Surrounds, LFE)
And I did have a old AMD card then.

But now, I upgraded my graphic card to be able to run 4K movies with the PC.
So I went from a graphic card that is from 2013 to a newer and better one.

And now when I want to do measures and go with the EXCL in output devices.
Then it is complete dead, and I can not hear a sound in my speakers.
I only get sound in my speaker when I change output device to none EXCL.
But when I do that, I can not pick my center speaker, my surround speakers, or LFE channel.

And the only thing I did was change my graphic card from AMD to Nvidia.
Removed the old drivers, and installed new drivers for my graphic card.
Set up my audio inside windows as before when I did have AMD card.
So no different there now either

How can I do so I can use what ever speaker I want in REW again?
(And to change back graphic card is not a option here) :p

I did try to uninstall REW, and delete all files, and registry clean,
Installed REW again, but it did not work.
So I tried to uninstall it again, and install the newest version I find (REW_windows-x64_5_20_14ea57)
But that did not help me either.


I can only measure left, right, and left + right.
Not my center speaker, surrounds or LFE.

Anyone,
How can I do so I can use what ever speaker I want in REW again?
 

thothsong

Member
Joined
Jun 29, 2021
Messages
393
Your post probably hasn't been noticed because you didn't post it in the REW Support forum area.

The output device you want should look like "EXCL: <SOMETHING> (NVIDIA High Definition Audio)" in REW. Is that what you are selecting?

If that isn't working, go to the Windows Sound control panel, Playback tab, right-click on that same device and select Properties, go to Supported Formats tab, and take a screenshot of it and post it here. Also go to the Enhancements tab and select Disable all enhancements, and go to the Advanced tab and select both Allow applications to take exclusive control of this device and Give exclusive mode applications priority.
 

Kiptanoi

Registered
Thread Starter
Joined
May 2, 2023
Messages
10
Thanks for the reply.
Yes I am using EXCL NVIDIA High Definition Audio inside REW on the output.
And I am always disable the enhancements in the Enhancements tab, so that one is ticked.
And my Supported Formats tab is
Channels: 8
HDCP: Supported
16 Bit and 24 Bit
32,0 Khz, 44,1 Khz, 48,0 Khz, 88,2 Khz, 96,0 Khz, 176,4 Khz, 192,0 Khz

Supported Formats:
DTS Audio
Dolby Digital Plus
DTS-HD
Dolby TrueHD
Dolby Digital

In advanced tab
Both checkboxes are ticked.
 

Kiptanoi

Registered
Thread Starter
Joined
May 2, 2023
Messages
10
I was using a old Nvidia GT 710 card, and it was working good with that before I tested my AMD card...
Then I changed to AMD card to see if it worked....
All worked fine in REW....

Got a better Nvidia Card that can handle 4k Movies and so on, installed that, removed my AMD drivers, and installed the new Nvidia drivers....
After that, the EXCL on Java side in REW does not working....
I tried to change drivers, to older one, but still the same.... EXCL in REW does not work.
Tried to replace REW with beta, and older one...
EXCL did not work with anything....

Tomorrow I will try to swap back to my old Nvidia GT 710 card to see if it works.
 

thothsong

Member
Joined
Jun 29, 2021
Messages
393
Strange. Two more tests, both with the EXCL device selected. In the REW Soundcard Preferences, click on Set channel mapping. Do you see 8 channels? Click on Reset channel mapping, and see if that helps at all. If not, go to Soundcard Preferences again, and select "Stereo only", and see if you can get sound from L and R channels that way.
 

Kiptanoi

Registered
Thread Starter
Joined
May 2, 2023
Messages
10
Strange. Two more tests, both with the EXCL device selected. In the REW Soundcard Preferences, click on Set channel mapping. Do you see 8 channels? Click on Reset channel mapping, and see if that helps at all. If not, go to Soundcard Preferences again, and select "Stereo only", and see if you can get sound from L and R channels that way.

I have done some more testing now....
In REW, I can see 8 channels in the mapping, I tested to reset to.
Even when I changed the soundcard to stereo, it did not work.

And this test I did now, is with my GT 710 card.
And I have found that in somehow, EXCL does not work together with my Sony STR DH590 receiver .
But if I change to my older Pioneer VSX 824, with the same computer as before.
Then the EXCL does working good.

Yesterday I used my Pioneer VSX 824 with my computer and REW worked with EXCL.
Today I switched the receiver to my Sony STR DH590, and EXCL does not working in REW.

How that is possible or not possible I don't know....
But it seems like the Sony cant handle it in somehow.
 

thothsong

Member
Joined
Jun 29, 2021
Messages
393
One or two other people have reported a similar kind of problem using EXCL. Cause is so far unknown. See that post for instructions on how to create a debug audio log file that may provide more clues about the problem. And you might try FlexASIO as an alternative to the Java driver.
 

Kiptanoi

Registered
Thread Starter
Joined
May 2, 2023
Messages
10
FlexASIO works fine on all devices I have tested.
AMD card, Nvidia card, and on both Pioneer and Sony receiver.

I am just confused on why Java driver works with one receiver and not the other...
But thanks for answers anyway.
I am happy for your support.
 

thothsong

Member
Joined
Jun 29, 2021
Messages
393
It is odd that the Java driver doesn't work. If you're willing to generate the debug log, it might provide a clue.
 

Kiptanoi

Registered
Thread Starter
Joined
May 2, 2023
Messages
10
Thanks, and here is my log file
 

Attachments

  • csjsound-lib.log.txt
    1.7 MB · Views: 13

thothsong

Member
Joined
Jun 29, 2021
Messages
393
Hmm, I'm not that familiar with FlexASIO, but from the log file, it looks like only stereo output was checked/used, not 7.1. Are you sure you successfully generated 7.1 output while the logging was enabled?
 

thothsong

Member
Joined
Jun 29, 2021
Messages
393
@phofman perhaps you will notice this thread. Unfortunately I don't think the FlexASIO log is useful to compare, but looking at the csjsound-lib log in that post, it looks to me like the problem is that the following combination never gets tested:

{ nAvgBytesPerSec: 1536000, cbSize: 22, nBlockAlign: 32, wBitsPerSample: 32, nSamplesPerSec: 48000, wFormatTag: 65534, wValidBitsPerSample: 24, SubFormat: 00000001-0000-0010-8000-00AA00389B71, nChannel: 8, dwChannelMask: 1599 }

Only the less common channel mask of 255 gets tested, and for some reason it is claimed as supported, but appears to produce no sound. I suspect that the more typical 1599 channel mask would be the correct one in this case.
 

phofman

Member
Joined
Jun 26, 2019
Messages
137
@thothsong : Thanks a lot for your help. I really do not follow sections about gaming :-)

I re-checked the Portaudio source code which served as my guide in the jungle of the channel mask parameter of the Microsoft WAVEFORMATEXTENSIBLE format. Portaudio indeed prefers PAWIN_SPEAKER_7POINT1_SURROUND to PAWIN_SPEAKER_7POINT1 https://github.com/PortAudio/portau...d6a7f6e43/src/os/win/pa_win_waveformat.c#L136 .

The csjsound wasapi dll stops checking when it finds the first format supported by the device. Since this NVIDIA sound device reports that it accepts the channel mask SPEAKER_7POINT1, the existing code had no reason to check for the subsequent SPEAKER_7POINT1_SURROUND (logically it cannot know that the accepted format actually does not work, that the audio device is just teasing :-) ). Based on that Portaudio comment I changed the order of testing the two 8-channel masks in https://github.com/pavhofman/csjsound-wasapi/commit/67c2cbbc6902ca8fa307c8ede190134f5f1bac14

@Kiptanoi : please try replacing csjsound_amd64.dll file in your REW installation directory with the file in the attached zip.

Cc: @John Mulcahy
 

Attachments

  • csjsound_amd64.dll.zip
    300.2 KB · Views: 25

phofman

Member
Joined
Jun 26, 2019
Messages
137
IMO if a mask is accepted and the difference is only in two back channels, there is no logical reason why all channels should be gone. But as there are no detailed specs for the channel mask parameter of the WAVEFORMATEXTENSIBLE format, every vendor handles it differently. IMO making the precise channel mask compulsory, not just a hint, is a major design flaw of Windows audio APIs.
 

thothsong

Member
Joined
Jun 29, 2021
Messages
393
Just FYI, I tried the new dll with both Intel and Nvidia audio drivers to my sound system, and it's (still) working for me.
 

thothsong

Member
Joined
Jun 29, 2021
Messages
393
IMO making the precise channel mask compulsory, not just a hint, is a major design flaw of Windows audio APIs.
The channel mask is not a hint with HDMI.

When sending multichannel LPCM over HDMI, the Audio InfoFrame is required to specify the channel-to-speaker mapping. The way it's normally done is that there are 50 standard mappings defined in the specification, and a 1-byte field in the InfoFrame specifies which mapping is used.

The EDID coming from the sound system is required to specify the set of speakers that are usable for multichannel LPCM. In theory, any valid channel-to-speaker mapping that contains only speakers from that set and that does not exceed the max channels supported, could be supported by the sound system. So (ignoring Top/Bottom speakers), a sound system could support all three 7.1 configurations from the standard mappings, although only two of those are representable with the WASAPI channel mask. [And in that case, IMO, ideally REW would allow the user to choose which mapping to use.]

I'd argue an audio driver should limit its support to channel masks that only contain speakers from the set specified in the EDID. From my testing, the Intel Display Audio driver correctly does that, but the Nvidia High Definition Audio driver does not, so I'd argue the Nvidia driver is at fault. For my sound system, the speakers in the EDID are exactly equal to the speakers in the 1599 channel mask, and the Intel driver correctly rejects the 255 channel mask, but the Nvidia driver blindly accepts the 255 channel mask, and the mapping specified in the Audio InfoFrame mirrors the 255 channel mask in that case (x1F mapping code), not the 1599 channel mask (x13 mapping code). The Intel driver accepts the 255 channel mask if I hack the EDID to alter the speaker set to support it.

There's no guarantee what a sound system does when it receives an Audio InfoFrame with a channel-to-speaker mapping that's inconsistent with the EDID. My sound system happens to treat 0x1F the same as 0x13, which is why I never perceived a problem in past testing with the Nvidia driver, but I suppose other sound systems could drop channels or downmix or be silent altogether.

@John Mulcahy I would say there's a bug in REW, in that when the 255 channel mask does get used, the default channel labels shown in REW should be FLC/FRC, not SL/SR. Correct labeling would have provided a clue as to what was going on.
 

John Mulcahy

REW Author
Joined
Apr 3, 2017
Messages
7,296
All REW knows is how many channels there are, it has no access to any other information.
 

thothsong

Member
Joined
Jun 29, 2021
Messages
393
OK, I only know barely enough about the Java Sound API to be dangerous, but since a custom provider is being used, why can't that provider provide AudioFormats with a custom property that specifies the channel mask?
 

phofman

Member
Joined
Jun 26, 2019
Messages
137
@thothsong : Thanks for the details. The problem is the channel mask is part of the WAVEFORMATEXTENSIBLE format which gets used for all audio devices, not only for HDMI. When testing the WASAPI connector John happened to have a stereo USB capture device which accepted only zeros in the channel mask https://github.com/pavhofman/csjsou...fa307c8ede190134f5f1bac14/src/formats.rs#L132 . A format with the most logical channel mask 3 (i.e. FL, FR) was refused as unsupported. It took trial/error to find out - not how an efficient development should look like. Drivers expect some combination which works for them, but the calling client has no idea what that is and must resort to trying many combinations. IMO that's not how a proper API should be designed.

In fact the IAudioClient::IsFormatSupported method can return the closest supported format. It would be a reasonable way for the feedback from the driver https://learn.microsoft.com/en-us/w...t-iaudioclient-isformatsupported#return-value . Yet the WASAPI specs forbid this for the exclusive mode (no idea why). The WASAPI connector still tries to use it, should the driver hint back https://github.com/pavhofman/csjsou...7c8ede190134f5f1bac14/src/wasapi_impl.rs#L182

In linux alsa there is a channels API separate from the audio format, allowing the client to set what's required https://www.kernel.org/doc/html/v6.3/sound/designs/channel-mapping-api.html . If the client does not set specific channels mapping, some working default is applied by the (HDMI) driver, not that a misfit (undocumented) in two back channels results in no channel being rendered or a misfit for a stereo USB device prevents capturing.
 
Last edited:
Top Bottom