Giter VIP home page Giter VIP logo

Comments (12)

kcat avatar kcat commented on July 17, 2024

On Windows, the ambi* channel output modes are unlikely to work. Since the system's audio APIs provide the labels that define what each channel is, OpenAL Soft won't output the ambisonic buffer itself since it won't match what the channels are. It also doesn't make any sense to use if it's not outputting to an ambisonic decoder, the ambisonic channels aren't intended to be played directly on speakers as they don't correlated to physical speaker locations. Instead, OpenAL Soft renders to an ambisonic buffer internally and decodes it to the configured channel output (the ambi* modes essentially just skip the decode step and outputs the internal buffer). You're right that ambi-format doesn't do anything when not outputting one of the ambi* modes.

If the requested output mode can't be used, another one is autoselected instead so the device will still work, which is typically based on what the system reports the device's default format is.

You can set the ALSOFT_LOGLEVEL environment variable to 3 to have OpenAL Soft print a log to stderr, which should provide information about the config settings it sees and what it tries to set and detect from the system. Setting the ALSOFT_LOGFILE environment variable to a path+filename will have it write the log to the named file instead.

from openal-soft.

alex-schroedsen avatar alex-schroedsen commented on July 17, 2024

Thanks for your prompt response and for the explanation of how the format selection works. In the past, I used the "Quadraphonic" configuration for the loopback interface when I was trying to get an ambix configured 4-channel first order B-format signal.

The plugin that has worked for getting positionally accurate audio is Soundfield by RODE (https://rode.com/en-us/apps/soundfield-by-rode) on the NT-SF1 input format. It does not correctly decode the ambix configured first order b-format when set to the FUMA or AMBIX input format settings. I put together a few custom stories in amnesia to test the positional accuracy. While the Soundfield plugin creates a euphonic experience in pretty much all cases, I'm guessing that it is doing UHJ stereo decoding rather than decoding the whole 4-channel B-format.

Other decoders I've tried are

IEM Suite's SimpleDecoder with custom AllRAD profile https://plugins.iem.at/

The ambiX suite https://github.com/kronihias/ambix/releases

ab Decoder Suite by Audio Brewers https://www.audiobrewers.com/plugins/p/ab-dec-suite

HOA Library VST https://github.com/CICM/HoaLibrary/releases/tag/v0.1-beta

These all have the same behavior in audio output. They output audio that is panned to the left. I was able to rotate the output, but the spacial queues were clearly very wrong.

Good to know regarding the system audio APIs labelling the channels and that clashing with OpenAL Soft wanting to output to a certain labelled channel configuration for ambi1. Would it be doable to create a force-channels=true|false entry in alsoft.ini to ignore the system reporting and just output the first 4 channels to the first 4 available channels on the device?

Thank you so much for your time and effort! It is seriously an honor to be able to communicate with you, the creator of this awesome program and learn more about it, make requests.

I may also dig into the logging function to see what is going on, but it seems like it could be futile with the channel labelling you mentioned.

from openal-soft.

alex-schroedsen avatar alex-schroedsen commented on July 17, 2024

I tried the logging that you had talked about and the situation was exactly as you expected. OpenAL Soft tries to open the Windows device as Ambisonic 3D and it fails to open the device with that format, falling back to stereo.

[ALSOFT] (EE) Failed to set Ambisonic 3D, got Stereo instead

I am wondering if you can create a force-channels=true|false function to send the requested channels over the current speaker configuration. I also sent you an email as I am interested in compensating you for adding this function.

In the meantime I have tried using the following windows versions of these audio APIs.

https://jackaudio.org/faq/jack_on_windows.html Including using the JACK_PROMISCUOUS_SERVER environment variable and drivers=jack in alsoft.ini to try to get the jack default device to show. No luck with that so far.

Jack for Windows uses PortAudio to interface with the windows sound system, allowing for DirectSound, WASAPI, ASIO and WDM-KS devices. I noticed that portaudio.dll was the file noted in the source. So I pasted a 32-bit build of portaudio into the system32 and sysWOW64 directories (renamed to portaudio.dll) next to my existing OpenAL Soft installations from here https://github.com/adfernandes/precompiled-portaudio-windows/tree/master. I tried drivers=portaudio in alsoft.ini and no luck with that either.

I know I'm shooting in the dark with these. I just hope that you don't mind helping me out in getting the ambisonic output working with one of these APIs. Portaudio would actually be great. That way I'm guessing I could use 3rd order ambisonics on windows via ASIO into the VST host that I use.

from openal-soft.

kcat avatar kcat commented on July 17, 2024

I'd be interested in seeing the alsoft log when trying to use WASAPI with ambisonic output. If you have a virtual audio device that can accept ambisonic audio and decode it to speaker output, it would be useful to see what it reports for its mix format and channel configuration when OpenAL Soft tries to play on it, so I can try to make it work with it.

As for PortAudio, the drivers name for that is port. Although it won't work either with the current release, the PortAudio backend only supports mono and stereo output. But the good news is the latest Git versions should support ambisonic (and other) output channel configurations with PortAudio.

I'm not familiar with using JACK on Windows, so unfortunately I can't help with that. Make sure you have a build of OpenAL Soft with it enabled. The premade binaries don't support JACK (or PortAudio), you'll need to make a build yourself with the appropriate SDKs installed (cmake will say which backends are enabled when configuring).

from openal-soft.

alex-schroedsen avatar alex-schroedsen commented on July 17, 2024

I have a log file of the main windows Build of OpenAL Soft 1.23.1. I used the launcher for Amensia because it tests that the device is working same as the actual game would. Below that I have exciting news! The version I compiled with JACK is functional for sending Ambisonic 3D audio to Windows. I will post the log of the successful version and a link to the files I used.

###STEREO FALLBACK LOG START###
[ALSOFT] (II) Initializing library v1.23.1-d3875f33 master
[ALSOFT] (II) Supported backends: wasapi, dsound, winmm, null, wave
[ALSOFT] (II) Loading config C:\Users\Alex\AppData\Roaming\alsoft.ini...
[ALSOFT] (II) Got binary: G:\SteamLibrary\steamapps\common\Amnesia The Dark Descent, Launcher.exe
[ALSOFT] (II) Loading config G:\SteamLibrary\steamapps\common\Amnesia The Dark Descent\alsoft.ini...
[ALSOFT] (II) found 'sample-type' = 'float32'
[ALSOFT] (II) found 'channels' = 'ambi1'
[ALSOFT] (II) found 'frequency' = '48000'
[ALSOFT] (II) Key disable-cpu-exts not found
[ALSOFT] (II) Vendor ID: ""
[ALSOFT] (II) Name: "Intel(R) Xeon(R) CPU E5-1630 v4 @ 3.70GHz"
[ALSOFT] (II) Extensions: +SSE +SSE2 +SSE3 +SSE4.1
[ALSOFT] (II) Key rt-prio not found
[ALSOFT] (II) Key rt-time-limit not found
[ALSOFT] (II) Key game_compat/enable-sub-data-ext not found
[ALSOFT] (II) Key game_compat/reverse-x not found
[ALSOFT] (II) Key game_compat/reverse-y not found
[ALSOFT] (II) Key game_compat/reverse-z not found
[ALSOFT] (II) Key game_compat/nfc-scale not found
[ALSOFT] (II) Key resampler not found
[ALSOFT] (II) Key uhj/decode-filter not found
[ALSOFT] (II) Key uhj/filter not found
[ALSOFT] (II) Key uhj/encode-filter not found
[ALSOFT] (II) Key trap-al-error not found
[ALSOFT] (II) Key trap-alc-error not found
[ALSOFT] (II) Key reverb/boost not found
[ALSOFT] (II) Key drivers not found
[ALSOFT] (II) Initialized backend "wasapi"
[ALSOFT] (II) Added "wasapi" for playback
[ALSOFT] (II) Added "wasapi" for capture
[ALSOFT] (II) Key excludefx not found
[ALSOFT] (II) Key default-reverb not found
[ALSOFT] (II) Key eax/enable not found
[ALSOFT] (II) Starting message thread
[ALSOFT] (II) Starting message loop
[ALSOFT] (II) Got message "Enumerate Playback" (0x0005, this=00000000, param=00000000)
[ALSOFT] (II) Got device "CABLE Input (VB-Audio Virtual Cable)", "{37725D8B-CAB5-47DA-BBC3-6784C92B84FA}", "{0.0.0.00000000}.{37725d8b-cab5-47da-bbc3-6784c92b84fa}"
[ALSOFT] (II) Got device "Speakers (USBStreamer Multi-channels)", "{58E5908F-D867-4D75-BED8-24C1EBB23324}", "{0.0.0.00000000}.{58e5908f-d867-4d75-bed8-24c1ebb23324}"
[ALSOFT] (II) Message loop finished
[ALSOFT] (WW) Querying error state on null context (implicitly 0xa004)
[ALSOFT] (II) Opening playback device "OpenAL Soft on CABLE Input (VB-Audio Virtual Cable)"
[ALSOFT] (II) Starting message thread
[ALSOFT] (II) Starting message loop
[ALSOFT] (II) Got message "Open Device" (0x0000, this=00f7ed38, param=06389747)
[ALSOFT] (II) Created device 02f45240, "OpenAL Soft on CABLE Input (VB-Audio Virtual Cable)"
[ALSOFT] (II) Found frequency = "48000"
[ALSOFT] (II) Key period_size not found
[ALSOFT] (II) Key periods not found
[ALSOFT] (II) Found sample-type = "float32"
[ALSOFT] (II) Found channels = "ambi1"
[ALSOFT] (II) Key ambi-format not found
[ALSOFT] (II) Key hrtf not found
[ALSOFT] (II) Key stereo-encoding not found
[ALSOFT] (II) ALC_FREQUENCY = 44100
[ALSOFT] (II) ALC_MONO_SOURCES = 256
[ALSOFT] (II) ALC_STEREO_SOURCES = 0
[ALSOFT] (II) ALC_MAX_AUXILIARY_SENDS = 4
[ALSOFT] (II) Pre-reset: *Ambisonic 3D, *Float32, *44100hz, 882 / 2646 buffer
[ALSOFT] (II) Got message "Reset Device" (0x0001, this=00f7ed38, param=00000000)
[ALSOFT] (II) Device mix format:
FormatTag = 0xfffe
Channels = 4
SamplesPerSec = 48000
AvgBytesPerSec = 768000
BlockAlign = 16
BitsPerSample = 32
Size = 22
Samples = 32
ChannelMask = 0x33
SubFormat = {00000003-0000-0010-8000-00aa00389b71}
[ALSOFT] (II) Requesting playback format:
FormatTag = 0xfffe
Channels = 2
SamplesPerSec = 44100
AvgBytesPerSec = 352800
BlockAlign = 8
BitsPerSample = 32
Size = 22
Samples = 32
ChannelMask = 0x3
SubFormat = {00000003-0000-0010-8000-00aa00389b71}
[ALSOFT] (II) Got playback format:
FormatTag = 0xfffe
Channels = 4
SamplesPerSec = 48000
AvgBytesPerSec = 768000
BlockAlign = 16
BitsPerSample = 32
Size = 22
Samples = 32
ChannelMask = 0x33
SubFormat = {00000003-0000-0010-8000-00aa00389b71}
[ALSOFT] (II) Key wasapi/allow-resampler not found
[ALSOFT] (II) Created converter for Stereo/Float32 format, dst: 48000hz (960), src: 44100hz (882)
[ALSOFT] (EE) Failed to set Ambisonic 3D, got Stereo instead
[ALSOFT] (II) Post-reset: Stereo, Float32, 44100hz, 882 / 2646 buffer
[ALSOFT] (II) Key stereo-mode not found
[ALSOFT] (II) Key cf_level not found
[ALSOFT] (II) Stereo rendering
[ALSOFT] (II) Channel config, Main: 3, Real: 2
[ALSOFT] (II) Allocating 5 channels, 20480 bytes
[ALSOFT] (II) Enabling single-band first-order ambisonic decoder
[ALSOFT] (II) Key sources not found
[ALSOFT] (II) Key sends not found
[ALSOFT] (II) Max sources: 256 (256 + 0), effect slots: 64, sends: 4
[ALSOFT] (II) Key dither not found
[ALSOFT] (II) Key dither-depth not found
[ALSOFT] (II) Dithering disabled
[ALSOFT] (II) Key output-limiter not found
[ALSOFT] (II) Output limiter disabled
[ALSOFT] (II) Fixed device latency: 0ns
[ALSOFT] (II) Got message "Start Device" (0x0002, this=00f7ed38, param=00000000)
[ALSOFT] (II) Post-start: Stereo, Float32, 44100hz, 882 / 2646 buffer
[ALSOFT] (II) Increasing allocated voices to 256
[ALSOFT] (II) Key volume-adjust not found
[ALSOFT] (II) Created context 02f6ca30
[ALSOFT] (II) Got message "Enumerate Playback" (0x0005, this=00000000, param=00000000)
[ALSOFT] (II) Got device "CABLE Input (VB-Audio Virtual Cable)", "{37725D8B-CAB5-47DA-BBC3-6784C92B84FA}", "{0.0.0.00000000}.{37725d8b-cab5-47da-bbc3-6784c92b84fa}"
[ALSOFT] (II) Got device "Speakers (USBStreamer Multi-channels)", "{58E5908F-D867-4D75-BED8-24C1EBB23324}", "{0.0.0.00000000}.{58e5908f-d867-4d75-bed8-24c1ebb23324}"
[ALSOFT] (II) Got message "Stop Device" (0x0003, this=00f7ed38, param=00000000)
[ALSOFT] (II) Freeing context 02f6ca30
[ALSOFT] (II) Freed 2 context property objects
[ALSOFT] (II) Freed 0 AuxiliaryEffectSlot property objects
[ALSOFT] (II) Freeing device 02f45240
[ALSOFT] (II) Got message "Close Device" (0x0004, this=00f7ed38, param=00000000)
[ALSOFT] (II) Message loop finished
###STEREO FALLBACK LOG END###

Next is the log for the version that is currently working for passing first order ambisonics to Windows.

###AMBISONIC LOG START###
[ALSOFT] (II) Initializing library v1.23.1-unknown UNKNOWN
[ALSOFT] (II) Supported backends: jack, null
[ALSOFT] (II) Loading config C:\Users\Alex\AppData\Roaming\alsoft.ini...
[ALSOFT] (II) Got binary: H:\SteamLibrary\steamapps\common\Doom 3, Doom3.exe
[ALSOFT] (II) Loading config H:\SteamLibrary\steamapps\common\Doom 3\alsoft.ini...
[ALSOFT] (II) setting 'sample-type' = 'float32'
[ALSOFT] (II) setting 'channels' = 'ambi1'
[ALSOFT] (II) setting 'frequency' = '48000'
[ALSOFT] (II) setting 'drivers' = 'jack'
[ALSOFT] (II) Vendor ID: ""
[ALSOFT] (II) Name: "Intel(R) Xeon(R) CPU E5-1630 v4 @ 3.70GHz"
[ALSOFT] (II) Extensions: +SSE +SSE2 +SSE3 +SSE4.1
[ALSOFT] (II) Found option drivers = "jack"
[ALSOFT] (II) Initialized backend "jack"
[ALSOFT] (II) Added "jack" for playback
[ALSOFT] (WW) No capture backend available!
[ALSOFT] (II) Opening default playback device
[ALSOFT] (II) Got device: system = system:
[ALSOFT] (II) Created device 080A0070, "system"
[ALSOFT] (II) Found option frequency = "48000"
[ALSOFT] (II) Found option sample-type = "float32"
[ALSOFT] (II) Found option channels = "ambi1"
[ALSOFT] (II) Pre-reset: *Ambisonic 3D, *Float32, *48000hz, 960 / 2880 buffer
[ALSOFT] (II) Post-reset: Ambisonic 3D, Float32, 48000hz, 128 / 256 buffer
[ALSOFT] (II) Channel config, Main: 4, Real: 0
[ALSOFT] (II) Allocating 4 channels, 16384 bytes
[ALSOFT] (II) Max sources: 256 (255 + 1), effect slots: 64, sends: 4
[ALSOFT] (II) Dithering disabled
[ALSOFT] (II) Output limiter disabled
[ALSOFT] (II) Fixed device latency: 0ns
[ALSOFT] (II) Post-start: Ambisonic 3D, Float32, 48000hz, 128 / 256 buffer
[ALSOFT] (II) Increasing allocated voices to 256
[ALSOFT] (II) Created context 04CB0750
[ALSOFT] (II) Increasing allocated context properties to 2
[ALSOFT] (II) Increasing allocated effect slots to 4
[ALSOFT] (II) Increasing allocated voice properties to 32
[ALSOFT] (II) Increasing allocated effect slot properties to 4
[ALSOFT] (II) Increasing allocated effect slot properties to 8
[ALSOFT] (II) Increasing allocated voice properties to 64
[ALSOFT] (II) Freeing context 04CB0750
[ALSOFT] (II) Freeing device 080A0070
###AMBISONIC LOG END###

The files I used are here, including source codes and links to the repositories in the Readme
OpenAL Soft 1.23.1 5b6e0df JACK-release-lib+bin+src.zip

This works reasonably well at low latencies (128 sample buffer in jack) though there is occasional crackling that can be eliminated by giving the jackd.exe process affinity on a different processor thread (I used 7) and setting a higher latency.

The only stopping issue I’ve had is that the DirectSound3D apps I've tried with DSOAL have reported that there is no available sound device or just crashed as soon as they try to play a sound. The games I've tried are Portal 2 with the “snd_legacy_surround 1” command line option and Silent Hill 2, 3, 4 on PC. Anything native OpenAL has worked swimmingly. I can later get the log for the crashing games so we can see when they crashed.

I'm curious to know if OpenAL Soft supports 16 channel output for 3rd order Ambisonics.

from openal-soft.

kcat avatar kcat commented on July 17, 2024

So it seems the device is reported as a standard quad speaker setup, and expects the app to provide a B-Format signal regardless of the specified speaker layout.

What ChannelMask is listed for the device mix format in the log when the virtual device set to accept second-order (9 channels) and third-order (16 channels) ambisonics?

The only stopping issue I’ve had is that the DirectSound3D apps I've tried with DSOAL have reported that there is no available sound device or just crashed as soon as they try to play a sound.

Unfortunately DSOAL relies on being able to specify stingified GUIDs when opening devices, since DSOAL ultimately uses WASAPI to enumerate devices for the app to select from, and passes that to OpenAL to tell it which device to open. That's something the WASAPI backend supports since it needs to know the GUIDs of devices anyway, but other backends like JACK and PortAudio don't recognize GUIDs since they're abstracted away, so will fail to open audio devices.

I'm curious to know if OpenAL Soft supports 16 channel output for 3rd order Ambisonics.

It should yes, by specifying channels=ambi3 (3rd order is currently the highest supported).

from openal-soft.

alex-schroedsen avatar alex-schroedsen commented on July 17, 2024

Unfortunately once we pass first order Ambisonics, WASAPI seems to become useless as it has only revealed 8 channel endpoints even on a 16-channel interface such as the LYNX AES16.

I experimented with the JACK-router ASIO driver and was able to get 3rd order Ambisonics working in DOOM 3 (and Amnesia) no-problem. I think JACK will be my go-to solution on this, ASIO end-to-end outside of the JACK driver connections and a user-definable number of channels available in JACK-router.

OpenAL Soft 1.23.1 5b6e0df JACK-release-lib+bin+src.zip

3rd-order-ambisonics-jack-doom3

Thank you again for teaching me/guiding me to learn so much about audio APIs and for your engagement on this issue. The logs you requested are below. The last thing I'm wondering is if spoofing a generic WASAPI GUID would make the old DirectSound 3D games happy when they access OpenAL Soft through DSOAL. Is there some other solution you can think of for allowing DirectSound 3D applications to work when using DSOAL with OpenAL Soft using the JACK driver?

###START oalsoft_log_wasapi_ambi2.log###
[ALSOFT] (II) Initializing library v1.23.1-d3875f33 master
[ALSOFT] (II) Supported backends: wasapi, dsound, winmm, null, wave
[ALSOFT] (II) Loading config C:\Users\Alex\AppData\Roaming\alsoft.ini...
[ALSOFT] (II) Got binary: G:\SteamLibrary\steamapps\common\Amnesia The Dark Descent, Launcher.exe
[ALSOFT] (II) Loading config G:\SteamLibrary\steamapps\common\Amnesia The Dark Descent\alsoft.ini...
[ALSOFT] (II) found 'sample-type' = 'float32'
[ALSOFT] (II) found 'channels' = 'ambi2'
[ALSOFT] (II) found 'frequency' = '48000'
[ALSOFT] (II) Key disable-cpu-exts not found
[ALSOFT] (II) Vendor ID: ""
[ALSOFT] (II) Name: "Intel(R) Xeon(R) CPU E5-1630 v4 @ 3.70GHz"
[ALSOFT] (II) Extensions: +SSE +SSE2 +SSE3 +SSE4.1
[ALSOFT] (II) Key rt-prio not found
[ALSOFT] (II) Key rt-time-limit not found
[ALSOFT] (II) Key game_compat/enable-sub-data-ext not found
[ALSOFT] (II) Key game_compat/reverse-x not found
[ALSOFT] (II) Key game_compat/reverse-y not found
[ALSOFT] (II) Key game_compat/reverse-z not found
[ALSOFT] (II) Key game_compat/nfc-scale not found
[ALSOFT] (II) Key resampler not found
[ALSOFT] (II) Key uhj/decode-filter not found
[ALSOFT] (II) Key uhj/filter not found
[ALSOFT] (II) Key uhj/encode-filter not found
[ALSOFT] (II) Key trap-al-error not found
[ALSOFT] (II) Key trap-alc-error not found
[ALSOFT] (II) Key reverb/boost not found
[ALSOFT] (II) Key drivers not found
[ALSOFT] (II) Initialized backend "wasapi"
[ALSOFT] (II) Added "wasapi" for playback
[ALSOFT] (II) Added "wasapi" for capture
[ALSOFT] (II) Key excludefx not found
[ALSOFT] (II) Key default-reverb not found
[ALSOFT] (II) Key eax/enable not found
[ALSOFT] (II) Starting message thread
[ALSOFT] (II) Starting message loop
[ALSOFT] (II) Got message "Enumerate Playback" (0x0005, this=00000000, param=00000000)
[ALSOFT] (II) Got device "Speakers (Lynx AES16)", "{9D52251C-1B3D-4B2B-B53D-58B824C8B6D0}", "{0.0.0.00000000}.{9d52251c-1b3d-4b2b-b53d-58b824c8b6d0}"
[ALSOFT] (II) Message loop finished
[ALSOFT] (WW) Querying error state on null context (implicitly 0xa004)
[ALSOFT] (II) Opening playback device "OpenAL Soft on Speakers (Lynx AES16)"
[ALSOFT] (II) Starting message thread
[ALSOFT] (II) Starting message loop
[ALSOFT] (II) Got message "Open Device" (0x0000, this=00caec08, param=083dd42f)
[ALSOFT] (II) Created device 03453f30, "OpenAL Soft on Speakers (Lynx AES16)"
[ALSOFT] (II) Found frequency = "48000"
[ALSOFT] (II) Key period_size not found
[ALSOFT] (II) Key periods not found
[ALSOFT] (II) Found sample-type = "float32"
[ALSOFT] (II) Found channels = "ambi2"
[ALSOFT] (II) Key ambi-format not found
[ALSOFT] (II) Key hrtf not found
[ALSOFT] (II) Key stereo-encoding not found
[ALSOFT] (II) ALC_FREQUENCY = 44100
[ALSOFT] (II) ALC_MONO_SOURCES = 256
[ALSOFT] (II) ALC_STEREO_SOURCES = 0
[ALSOFT] (II) ALC_MAX_AUXILIARY_SENDS = 4
[ALSOFT] (II) Pre-reset: *Ambisonic 3D, *Float32, *44100hz, 882 / 2646 buffer
[ALSOFT] (II) Got message "Reset Device" (0x0001, this=00caec08, param=00000000)
[ALSOFT] (II) Device mix format:
FormatTag = 0xfffe
Channels = 8
SamplesPerSec = 44100
AvgBytesPerSec = 1411200
BlockAlign = 32
BitsPerSample = 32
Size = 22
Samples = 32
ChannelMask = 0x63f
SubFormat = {00000003-0000-0010-8000-00aa00389b71}
[ALSOFT] (II) Requesting playback format:
FormatTag = 0xfffe
Channels = 2
SamplesPerSec = 44100
AvgBytesPerSec = 352800
BlockAlign = 8
BitsPerSample = 32
Size = 22
Samples = 32
ChannelMask = 0x3
SubFormat = {00000003-0000-0010-8000-00aa00389b71}
[ALSOFT] (II) Got playback format:
FormatTag = 0xfffe
Channels = 8
SamplesPerSec = 44100
AvgBytesPerSec = 1411200
BlockAlign = 32
BitsPerSample = 32
Size = 22
Samples = 32
ChannelMask = 0x63f
SubFormat = {00000003-0000-0010-8000-00aa00389b71}
[ALSOFT] (II) Key wasapi/allow-resampler not found
[ALSOFT] (EE) Failed to set Ambisonic 3D, got Stereo instead
[ALSOFT] (II) Post-reset: Stereo, Float32, 44100hz, 1024 / 2646 buffer
[ALSOFT] (II) Key stereo-mode not found
[ALSOFT] (II) Key cf_level not found
[ALSOFT] (II) Stereo rendering
[ALSOFT] (II) Channel config, Main: 3, Real: 2
[ALSOFT] (II) Allocating 5 channels, 20480 bytes
[ALSOFT] (II) Enabling single-band first-order ambisonic decoder
[ALSOFT] (II) Key sources not found
[ALSOFT] (II) Key sends not found
[ALSOFT] (II) Max sources: 256 (256 + 0), effect slots: 64, sends: 4
[ALSOFT] (II) Key dither not found
[ALSOFT] (II) Key dither-depth not found
[ALSOFT] (II) Dithering disabled
[ALSOFT] (II) Key output-limiter not found
[ALSOFT] (II) Output limiter disabled
[ALSOFT] (II) Fixed device latency: 0ns
[ALSOFT] (II) Got message "Start Device" (0x0002, this=00caec08, param=00000000)
[ALSOFT] (II) Post-start: Stereo, Float32, 44100hz, 1024 / 2646 buffer
[ALSOFT] (II) Increasing allocated voices to 256
[ALSOFT] (II) Key volume-adjust not found
[ALSOFT] (II) Created context 03475a70
[ALSOFT] (II) Got message "Enumerate Playback" (0x0005, this=00000000, param=00000000)
[ALSOFT] (II) Got device "Speakers (Lynx AES16)", "{9D52251C-1B3D-4B2B-B53D-58B824C8B6D0}", "{0.0.0.00000000}.{9d52251c-1b3d-4b2b-b53d-58b824c8b6d0}"
[ALSOFT] (II) Got message "Stop Device" (0x0003, this=00caec08, param=00000000)
[ALSOFT] (II) Freeing context 03475a70
[ALSOFT] (II) Freed 2 context property objects
[ALSOFT] (II) Freed 0 AuxiliaryEffectSlot property objects
[ALSOFT] (II) Freeing device 03453f30
[ALSOFT] (II) Got message "Close Device" (0x0004, this=00caec08, param=00000000)
[ALSOFT] (II) Message loop finished
###END oalsoft_log_wasapi_ambi2.log###

###START oalsoft_log_wasapi_ambi3.log###
[ALSOFT] (II) Initializing library v1.23.1-d3875f33 master
[ALSOFT] (II) Supported backends: wasapi, dsound, winmm, null, wave
[ALSOFT] (II) Loading config C:\Users\Alex\AppData\Roaming\alsoft.ini...
[ALSOFT] (II) Got binary: G:\SteamLibrary\steamapps\common\Amnesia The Dark Descent, Launcher.exe
[ALSOFT] (II) Loading config G:\SteamLibrary\steamapps\common\Amnesia The Dark Descent\alsoft.ini...
[ALSOFT] (II) found 'sample-type' = 'float32'
[ALSOFT] (II) found 'channels' = 'ambi3'
[ALSOFT] (II) found 'frequency' = '48000'
[ALSOFT] (II) Key disable-cpu-exts not found
[ALSOFT] (II) Vendor ID: ""
[ALSOFT] (II) Name: "Intel(R) Xeon(R) CPU E5-1630 v4 @ 3.70GHz"
[ALSOFT] (II) Extensions: +SSE +SSE2 +SSE3 +SSE4.1
[ALSOFT] (II) Key rt-prio not found
[ALSOFT] (II) Key rt-time-limit not found
[ALSOFT] (II) Key game_compat/enable-sub-data-ext not found
[ALSOFT] (II) Key game_compat/reverse-x not found
[ALSOFT] (II) Key game_compat/reverse-y not found
[ALSOFT] (II) Key game_compat/reverse-z not found
[ALSOFT] (II) Key game_compat/nfc-scale not found
[ALSOFT] (II) Key resampler not found
[ALSOFT] (II) Key uhj/decode-filter not found
[ALSOFT] (II) Key uhj/filter not found
[ALSOFT] (II) Key uhj/encode-filter not found
[ALSOFT] (II) Key trap-al-error not found
[ALSOFT] (II) Key trap-alc-error not found
[ALSOFT] (II) Key reverb/boost not found
[ALSOFT] (II) Key drivers not found
[ALSOFT] (II) Initialized backend "wasapi"
[ALSOFT] (II) Added "wasapi" for playback
[ALSOFT] (II) Added "wasapi" for capture
[ALSOFT] (II) Key excludefx not found
[ALSOFT] (II) Key default-reverb not found
[ALSOFT] (II) Key eax/enable not found
[ALSOFT] (II) Starting message thread
[ALSOFT] (II) Starting message loop
[ALSOFT] (II) Got message "Enumerate Playback" (0x0005, this=00000000, param=00000000)
[ALSOFT] (II) Got device "Speakers (Lynx AES16)", "{9D52251C-1B3D-4B2B-B53D-58B824C8B6D0}", "{0.0.0.00000000}.{9d52251c-1b3d-4b2b-b53d-58b824c8b6d0}"
[ALSOFT] (II) Message loop finished
[ALSOFT] (WW) Querying error state on null context (implicitly 0xa004)
[ALSOFT] (II) Opening playback device "OpenAL Soft on Speakers (Lynx AES16)"
[ALSOFT] (II) Starting message thread
[ALSOFT] (II) Starting message loop
[ALSOFT] (II) Got message "Open Device" (0x0000, this=01afec08, param=08a2d34f)
[ALSOFT] (II) Created device 03903f30, "OpenAL Soft on Speakers (Lynx AES16)"
[ALSOFT] (II) Found frequency = "48000"
[ALSOFT] (II) Key period_size not found
[ALSOFT] (II) Key periods not found
[ALSOFT] (II) Found sample-type = "float32"
[ALSOFT] (II) Found channels = "ambi3"
[ALSOFT] (II) Key ambi-format not found
[ALSOFT] (II) Key hrtf not found
[ALSOFT] (II) Key stereo-encoding not found
[ALSOFT] (II) ALC_FREQUENCY = 44100
[ALSOFT] (II) ALC_MONO_SOURCES = 256
[ALSOFT] (II) ALC_STEREO_SOURCES = 0
[ALSOFT] (II) ALC_MAX_AUXILIARY_SENDS = 4
[ALSOFT] (II) Pre-reset: *Ambisonic 3D, *Float32, *44100hz, 882 / 2646 buffer
[ALSOFT] (II) Got message "Reset Device" (0x0001, this=01afec08, param=00000000)
[ALSOFT] (II) Device mix format:
FormatTag = 0xfffe
Channels = 8
SamplesPerSec = 44100
AvgBytesPerSec = 1411200
BlockAlign = 32
BitsPerSample = 32
Size = 22
Samples = 32
ChannelMask = 0x63f
SubFormat = {00000003-0000-0010-8000-00aa00389b71}
[ALSOFT] (II) Requesting playback format:
FormatTag = 0xfffe
Channels = 2
SamplesPerSec = 44100
AvgBytesPerSec = 352800
BlockAlign = 8
BitsPerSample = 32
Size = 22
Samples = 32
ChannelMask = 0x3
SubFormat = {00000003-0000-0010-8000-00aa00389b71}
[ALSOFT] (II) Got playback format:
FormatTag = 0xfffe
Channels = 8
SamplesPerSec = 44100
AvgBytesPerSec = 1411200
BlockAlign = 32
BitsPerSample = 32
Size = 22
Samples = 32
ChannelMask = 0x63f
SubFormat = {00000003-0000-0010-8000-00aa00389b71}
[ALSOFT] (II) Key wasapi/allow-resampler not found
[ALSOFT] (EE) Failed to set Ambisonic 3D, got Stereo instead
[ALSOFT] (II) Post-reset: Stereo, Float32, 44100hz, 1024 / 2646 buffer
[ALSOFT] (II) Key stereo-mode not found
[ALSOFT] (II) Key cf_level not found
[ALSOFT] (II) Stereo rendering
[ALSOFT] (II) Channel config, Main: 3, Real: 2
[ALSOFT] (II) Allocating 5 channels, 20480 bytes
[ALSOFT] (II) Enabling single-band first-order ambisonic decoder
[ALSOFT] (II) Key sources not found
[ALSOFT] (II) Key sends not found
[ALSOFT] (II) Max sources: 256 (256 + 0), effect slots: 64, sends: 4
[ALSOFT] (II) Key dither not found
[ALSOFT] (II) Key dither-depth not found
[ALSOFT] (II) Dithering disabled
[ALSOFT] (II) Key output-limiter not found
[ALSOFT] (II) Output limiter disabled
[ALSOFT] (II) Fixed device latency: 0ns
[ALSOFT] (II) Got message "Start Device" (0x0002, this=01afec08, param=00000000)
[ALSOFT] (II) Post-start: Stereo, Float32, 44100hz, 1024 / 2646 buffer
[ALSOFT] (II) Increasing allocated voices to 256
[ALSOFT] (II) Key volume-adjust not found
[ALSOFT] (II) Created context 03925c90
[ALSOFT] (II) Got message "Enumerate Playback" (0x0005, this=00000000, param=00000000)
[ALSOFT] (II) Got device "Speakers (Lynx AES16)", "{9D52251C-1B3D-4B2B-B53D-58B824C8B6D0}", "{0.0.0.00000000}.{9d52251c-1b3d-4b2b-b53d-58b824c8b6d0}"
[ALSOFT] (II) Got message "Stop Device" (0x0003, this=01afec08, param=00000000)
[ALSOFT] (II) Freeing context 03925c90
[ALSOFT] (II) Freed 2 context property objects
[ALSOFT] (II) Freed 0 AuxiliaryEffectSlot property objects
[ALSOFT] (II) Freeing device 03903f30
[ALSOFT] (II) Got message "Close Device" (0x0004, this=01afec08, param=00000000)
[ALSOFT] (II) Message loop finished
###END oalsoft_log_wasapi_ambi3.log###

from openal-soft.

kcat avatar kcat commented on July 17, 2024

The last thing I'm wondering is if spoofing a generic WASAPI GUID would make the old DirectSound 3D games happy when they access OpenAL Soft through DSOAL. Is there some other solution you can think of for allowing DirectSound 3D applications to work when using DSOAL with OpenAL Soft using the JACK driver?

DSOAL gets the GUIDs directly from WASAPI, which the JACK backend can't influence. The best I can think to do would be to have either the JACK backend or DSOAL itself ignore GUIDs it can't recognize or open, and open a default instead. Both options are rather hacky.

Though with the JACK backend, you have the option of making a custom device with a name that matches a GUID. If you make an alsoft.ini and add in something like:

[jack]
custom-devices = {9D52251C-1B3D-4B2B-B53D-58B824C8B6D0}=system:

And place the ini either next to the executable, or in %AppData%. That would add a device named {9D52251C-1B3D-4B2B-B53D-58B824C8B6D0} to JACK's enumerated device list, which connects to port names that start with system:. That should make the stringified GUID be recognized by JACK (the GUID may need to be lower-cased, I'm not sure if the stringified GUID is upper or lower case; and obviously it will need to be changed if the GUID DSOAL tries to use changes).

from openal-soft.

alex-schroedsen avatar alex-schroedsen commented on July 17, 2024

Exciting news! Your suggestion worked and I was able to get Silent Hill 4 working with the setup! I decided to use VB Audio Cable as the decoy sound interface because I’m guessing that its GUID will be replicable on other machines for other users. I have included for curiosity and anyone following this path, the log used for grabbing VB Cable’s GUID and the log of Silent Hill 4 successfully working with OpenAL Soft and DSOAL to output a 3rd order ambisonic signal.

I also want to note that for anyone following this path and wanting a free alternative to Blue Cat's Patchwork, vsthost is available here https://www.hermannseib.com/english/vsthost.htm

ambisonics-directsound3d-working

My next goal is to cross-compile the old XACT libraries (xaudio2_7.dll etc.) from Wine 4.20 using mingw-w64 hopefully allowing OpenAL Soft to mix for compatible XAudio2 games alike how it works with DSOAL. I am also working on researching how/when FMOD and WWISE might fall back to XAudio2 for mixing, further expanding the list of supported games.

Article on cross-compiling WINE binaries to Windows https://wiki.winehq.org/Cygwin_and_More#Cross-compiling_with_mingw-w64

Article announcing XAudio2 implementation via OpenAL Soft
https://news.softpedia.com/news/wine-1-7-51-adds-xaudio2-implementation-via-openal-soft-sonic-generations-bugfixes-490932.shtml

###START oalsoft_log_DS3D_SH4.log###
[ALSOFT] (II) Initializing library v1.23.1-unknown UNKNOWN
[ALSOFT] (II) Supported backends: jack, null
[ALSOFT] (II) Loading config C:\Users\Alex\AppData\Roaming\alsoft.ini...
[ALSOFT] (II) Got binary: H:\GOG Games\Silent Hill 4, SILENT HILL 4.exe
[ALSOFT] (II) Loading config H:\GOG Games\Silent Hill 4\alsoft.ini...
[ALSOFT] (II) setting 'sample-type' = 'float32'
[ALSOFT] (II) setting 'channels' = 'ambi3'
[ALSOFT] (II) setting 'frequency' = '48000'
[ALSOFT] (II) setting 'drivers' = 'jack'
[ALSOFT] (II) setting 'jack/custom-devices' = '{37725D8B-CAB5-47DA-BBC3-6784C92B84FA}=system:'
[ALSOFT] (II) Vendor ID: ""
[ALSOFT] (II) Name: "Intel(R) Xeon(R) CPU E5-1630 v4 @ 3.70GHz"
[ALSOFT] (II) Extensions: +SSE +SSE2 +SSE3 +SSE4.1
[ALSOFT] (II) Found option drivers = "jack"
[ALSOFT] (II) Initialized backend "jack"
[ALSOFT] (II) Added "jack" for playback
[ALSOFT] (WW) No capture backend available!
[ALSOFT] (II) Opening playback device "{37725D8B-CAB5-47DA-BBC3-6784C92B84FA}"
[ALSOFT] (II) Got device: system = system:
[ALSOFT] (II) Got device: Blue Cat's PatchWork = Blue Cat's PatchWork:
[ALSOFT] (II) Found option jack/custom-devices = "{37725D8B-CAB5-47DA-BBC3-6784C92B84FA}=system:"
[ALSOFT] (II) Customized device name: {37725D8B-CAB5-47DA-BBC3-6784C92B84FA} = system:
[ALSOFT] (II) Created device 1122DC40, "{37725D8B-CAB5-47DA-BBC3-6784C92B84FA}"
[ALSOFT] (II) Found option frequency = "48000"
[ALSOFT] (II) Found option sample-type = "float32"
[ALSOFT] (II) Found option channels = "ambi3"
[ALSOFT] (II) ALC_MONO_SOURCES = 1024
[ALSOFT] (II) ALC_STEREO_SOURCES = 0
[ALSOFT] (II) Pre-reset: *Ambisonic 3D, *Float32, *48000hz, 960 / 2880 buffer
[ALSOFT] (II) Post-reset: Ambisonic 3D, Float32, 48000hz, 128 / 256 buffer
[ALSOFT] (II) Channel config, Main: 16, Real: 0
[ALSOFT] (II) Allocating 16 channels, 65536 bytes
[ALSOFT] (II) Max sources: 1024 (1024 + 0), effect slots: 64, sends: 4
[ALSOFT] (II) Dithering disabled
[ALSOFT] (II) Output limiter disabled
[ALSOFT] (II) Fixed device latency: 0ns
[ALSOFT] (EE) No physical playback port for "SILENT HILL 4.exe:channel_9"
[ALSOFT] (II) Post-start: Ambisonic 3D, Float32, 48000hz, 128 / 256 buffer
[ALSOFT] (II) Increasing allocated voices to 256
[ALSOFT] (II) Created context 04E907B0
[ALSOFT] (II) Increasing allocated context properties to 2
[ALSOFT] (II) Increasing allocated effect slots to 4
[ALSOFT] (II) Increasing allocated effect slot properties to 4
[ALSOFT] (II) Increasing allocated voice properties to 32
[ALSOFT] (II) Freeing context 04E907B0
[ALSOFT] (II) Freeing device 1122DC40
###END oalsoft_log_DS3D_SH4.log###

###START oalsoft_log_VBCABLE_GUID.log###
[ALSOFT] (II) Initializing library v1.23.1-d3875f3 HEAD
[ALSOFT] (II) Supported backends: wasapi, dsound, winmm, null, wave
[ALSOFT] (II) Loading config C:\Users\Alex\AppData\Roaming\alsoft.ini...
[ALSOFT] (II) Got binary: H:\GOG Games\Silent Hill 4, SILENT HILL 4.exe
[ALSOFT] (II) Loading config H:\GOG Games\Silent Hill 4\alsoft.ini...
[ALSOFT] (II) Key disable-cpu-exts not found
[ALSOFT] (II) Vendor ID: ""
[ALSOFT] (II) Name: "Intel(R) Xeon(R) CPU E5-1630 v4 @ 3.70GHz"
[ALSOFT] (II) Extensions: +SSE +SSE2 +SSE3 +SSE4.1
[ALSOFT] (II) Key rt-prio not found
[ALSOFT] (II) Key rt-time-limit not found
[ALSOFT] (II) Key game_compat/enable-sub-data-ext not found
[ALSOFT] (II) Key game_compat/reverse-x not found
[ALSOFT] (II) Key game_compat/reverse-y not found
[ALSOFT] (II) Key game_compat/reverse-z not found
[ALSOFT] (II) Key game_compat/nfc-scale not found
[ALSOFT] (II) Key resampler not found
[ALSOFT] (II) Key uhj/decode-filter not found
[ALSOFT] (II) Key uhj/filter not found
[ALSOFT] (II) Key uhj/encode-filter not found
[ALSOFT] (II) Key trap-al-error not found
[ALSOFT] (II) Key trap-alc-error not found
[ALSOFT] (II) Key reverb/boost not found
[ALSOFT] (II) Key drivers not found
[ALSOFT] (II) Initialized backend "wasapi"
[ALSOFT] (II) Added "wasapi" for playback
[ALSOFT] (II) Added "wasapi" for capture
[ALSOFT] (II) Key excludefx not found
[ALSOFT] (II) Key default-reverb not found
[ALSOFT] (II) Key eax/enable not found
[ALSOFT] (II) Opening playback device "{37725D8B-CAB5-47DA-BBC3-6784C92B84FA}"
[ALSOFT] (II) Starting message thread
[ALSOFT] (II) Starting message loop
[ALSOFT] (II) Got message "Enumerate Playback" (0x0005, this=048A3B78, param=00000000)
[ALSOFT] (II) Got device "CABLE Input (VB-Audio Virtual Cable)", "{37725D8B-CAB5-47DA-BBC3-6784C92B84FA}", "{0.0.0.00000000}.{37725d8b-cab5-47da-bbc3-6784c92b84fa}"
[ALSOFT] (II) Got message "Open Device" (0x0000, this=048A3B78, param=0018FC90)
[ALSOFT] (II) Created device 074C0050, "OpenAL Soft on CABLE Input (VB-Audio Virtual Cable)"
[ALSOFT] (II) Key frequency not found
[ALSOFT] (II) Key period_size not found
[ALSOFT] (II) Key periods not found
[ALSOFT] (II) Key sample-type not found
[ALSOFT] (II) Key channels not found
[ALSOFT] (II) Key ambi-format not found
[ALSOFT] (II) Key hrtf not found
[ALSOFT] (II) Key stereo-encoding not found
[ALSOFT] (II) ALC_MONO_SOURCES = 1024
[ALSOFT] (II) ALC_STEREO_SOURCES = 0
[ALSOFT] (II) Pre-reset: Stereo, Float32, 48000hz, 960 / 2880 buffer
[ALSOFT] (II) Got message "Reset Device" (0x0001, this=048A3B78, param=00000000)
[ALSOFT] (II) Device mix format:
FormatTag = 0xfffe
Channels = 8
SamplesPerSec = 48000
AvgBytesPerSec = 1536000
BlockAlign = 32
BitsPerSample = 32
Size = 22
Samples = 32
ChannelMask = 0x63f
SubFormat = {00000003-0000-0010-8000-00aa00389b71}
[ALSOFT] (II) Requesting playback format:
FormatTag = 0xfffe
Channels = 8
SamplesPerSec = 48000
AvgBytesPerSec = 1536000
BlockAlign = 32
BitsPerSample = 32
Size = 22
Samples = 32
ChannelMask = 0x63f
SubFormat = {00000003-0000-0010-8000-00aa00389b71}
[ALSOFT] (II) Post-reset: 7.1 Surround, Float32, 48000hz, 960 / 2880 buffer
[ALSOFT] (II) Key stereo-mode not found
[ALSOFT] (II) Key decoder/surround71 not found
[ALSOFT] (II) Key front-stablizer not found
[ALSOFT] (II) Key decoder/hq-mode not found
[ALSOFT] (II) Channel config, Main: 5, Real: 8
[ALSOFT] (II) Allocating 13 channels, 53248 bytes
[ALSOFT] (II) Enabling dual-band second-order ambisonic decoder
[ALSOFT] (II) Key sources not found
[ALSOFT] (II) Key sends not found
[ALSOFT] (II) Max sources: 1024 (1024 + 0), effect slots: 64, sends: 4
[ALSOFT] (II) Key dither not found
[ALSOFT] (II) Key dither-depth not found
[ALSOFT] (II) Dithering disabled
[ALSOFT] (II) Key output-limiter not found
[ALSOFT] (II) Output limiter disabled
[ALSOFT] (II) Fixed device latency: 0ns
[ALSOFT] (II) Got message "Start Device" (0x0002, this=048A3B78, param=00000000)
[ALSOFT] (II) Post-start: 7.1 Surround, Float32, 48000hz, 960 / 2880 buffer
[ALSOFT] (II) Increasing allocated voices to 256
[ALSOFT] (II) Key volume-adjust not found
[ALSOFT] (II) Created context 06A9D370
[ALSOFT] (II) Increasing allocated effect slots to 4
[ALSOFT] (II) Increasing allocated voice properties to 32
[ALSOFT] (II) Got message "Stop Device" (0x0003, this=048A3B78, param=00000000)
[ALSOFT] (II) Freeing context 06A9D370
[ALSOFT] (II) Freed unapplied AuxiliaryEffectSlot update 0752F340
[ALSOFT] (II) Freed unapplied AuxiliaryEffectSlot update 069EC638
[ALSOFT] (II) Freed unapplied AuxiliaryEffectSlot update 0686A528
[ALSOFT] (II) Freed unapplied AuxiliaryEffectSlot update 0691F748
[ALSOFT] (II) Freed 2 context property objects
[ALSOFT] (II) Freed 0 AuxiliaryEffectSlot property objects
[ALSOFT] (II) Freeing device 074C0050
[ALSOFT] (II) Got message "Close Device" (0x0004, this=048A3B78, param=00000000)
[ALSOFT] (II) Message loop finished
###END oalsoft_log_VBCABLE_GUID.log###

from openal-soft.

kcat avatar kcat commented on July 17, 2024

If you want DSOAL to connect to a different device when using the GUIDs, you can set a different target for the custom device:

custom-devices = {37725D8B-CAB5-47DA-BBC3-6784C92B84FA}=Blue Cat's PatchWork:

will make it connect to the input ports of Blue Cat's PatchWork, instead of system for the system audio output (so you won't have to do any manual reconnections to feed OpenAL Soft's ambisonic output to the decoder).

from openal-soft.

alex-schroedsen avatar alex-schroedsen commented on July 17, 2024

I'm am excited to say that your suggestion worked perfectly for getting DSOAL to grab the Blue Cat's Patchwork JACK device automatically. Thank you for bringing that to attention!

Now I'm wondering if you can think of a solution for native OpenAL applications to auto-select a device other than "system:".

In other news, progress is being made in crosscompiling the wine-4.2 DLLs for XAudio2 to OpenAL Soft translation. I've successfully configured for make compilation. New topic here #997

One more topic, I'm very excited to see your new spatial-api flag under the wasapi backend config. I'll give it a try and report back. I have a Dolby Atmos capable processor as well as the discrete 5.1.2 signal path.

from openal-soft.

kcat avatar kcat commented on July 17, 2024

Now I'm wondering if you can think of a solution for native OpenAL applications to auto-select a device other than "system:".

Not currently. OpenAL Soft gets a list of devices from JACK by checking the names of all available ports that take audio samples. Whichever is listed first ends up as the default device, since JACK doesn't otherwise specify a default. If the app doesn't have an option to select a device, that's what will get used. I would have to add an option to the JACK backend to manually specify a different default.

One more topic, I'm very excited to see your new spatial-api flag under the wasapi backend config. I'll give it a try and report back. I have a Dolby Atmos capable processor as well as the discrete 5.1.2 signal path.

Be aware the spatial-api option doesn't currently support ambisonic output (I've noticed references to it in the API, but I haven't found enough information about how to use it, yet), so it outputs discrete channel feeds that get virtualized/downmixed as needed by the processor. To make use of a with-height setup, you'll need to use the surround714 configuration for 7.1.4, which hopefully the processor can downmix to 5.1.2. OpenAL Soft's 7.1.4 output is also somewhat "raw"; it's basically the result of the Ambisonic Decoder Toolbox's "AllRad" decoder generator, which has some odd minor asymmetry in the speaker responses and lacks the shelf filters. It should be an okay starting point, but it definitely has room to improve.

from openal-soft.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.