dechamps / FlexASIO

A flexible universal ASIO driver that uses the PortAudio sound I/O library. Supports WASAPI (shared and exclusive), KS, DirectSound and MME.
Other
1.29k stars 70 forks source link

Failed FlexASIOTest, failed to open in ableton #228

Open rafa3lico opened 1 month ago

rafa3lico commented 1 month ago

Hi, I installed FlexASIO GUI to make the device identification easier. Selecting the "FlexASIO" audio device in ableton 10 gives the error "failed to open the audio device "FlexASIO.""

I checked some of the other posts, so I attempted for example to edit the .TOML file to just

[input]
device = "Microfone (UMC202HD 192k)"
[output]
device = "Altifalantes (UMC202HD 192k)

And this allows ableton to select the device, but it says that the audio engine is still off.

I ran the FlexASIOTest just to check and indeed it also fails. Any ideas?

FlexASIOTest console output.txt FlexASIO_trying to open in ableton.log

Here I attach the console log of the test result and the logs i get while trying to open in ableton. Thanks a lot in advance!

rafa3lico commented 1 month ago

Perhaps this can ease some analysis, perhaps not, but here are some lines of the logs which seem relevant:

Using the full toml generated with FlexASIOGUI:

backend = "Windows WASAPI"
bufferSizeSamples = 256

[input]
channels = 2
device = "Microfone (UMC202HD 192k)"

[output]
channels = 1
device = "Altifalantes (UMC202HD 192k)"

It's finding the devices:

2024-05-12T03:03:37.8432414+01:00 12632 12712 Selecting input device
2024-05-12T03:03:37.8432528+01:00 12632 12712 Selecting PortAudio device with host API index 2, minimum channel counts: 1 input, 0 output
2024-05-12T03:03:37.8432653+01:00 12632 12712 Searching for a PortAudio device named `Microfone (UMC202HD 192k)`
2024-05-12T03:03:37.8432772+01:00 12632 12712 Found a match with device 17
(...)
2024-05-12T03:03:37.8433047+01:00 12632 12712 Selecting output device
2024-05-12T03:03:37.8433160+01:00 12632 12712 Selecting PortAudio device with host API index 2, minimum channel counts: 0 input, 1 output
2024-05-12T03:03:37.8433281+01:00 12632 12712 Searching for a PortAudio device named `Altifalantes (UMC202HD 192k)`
2024-05-12T03:03:37.8433394+01:00 12632 12712 Found a match with device 15

Errors found in the end:

2024-05-12T03:03:37.8807320+01:00 12632 12712 [PortAudio] WASAPI ERROR HRESULT: 0x88890008 : AUDCLNT_E_UNSUPPORTED_FORMAT
 [FUNCTION: CreateAudioClient FILE: D:\a\FlexASIO\FlexASIO\src\portaudio\src\hostapi\wasapi\pa_win_wasapi.c {LINE: 3731}]
2024-05-12T03:03:37.8807633+01:00 12632 12712 [PortAudio] WASAPI ERROR PAERROR: -9996 : Invalid device
 [FUNCTION: ActivateAudioClientOutput FILE: D:\a\FlexASIO\FlexASIO\src\portaudio\src\hostapi\wasapi\pa_win_wasapi.c {LINE: 3765}]
2024-05-12T03:03:37.8807783+01:00 12632 12712 [PortAudio] WASAPI ERROR PAERROR: -9996 : Invalid device
rafa3lico commented 1 month ago

I Noticed issue #94 had the same error as me but I checked that the number of channels in my input is correct.

rafa3lico commented 1 month ago

using "KoordASIO" worked. I figure this is relevant since it uses FlexASIO. Let me know if there is any way to get logs from KoordASIO which may help here

dechamps commented 1 month ago

Mmm yeah I'm not sure what's going on here. DirectSound fails to start with a cryptic error:

2024-05-12T03:02:34.4421399+01:00 12632 12712 --- ENTERING CONTEXT: createBuffers()
2024-05-12T03:02:34.4421513+01:00 12632 12712 Request to create buffers for 4 channels, size 1024 samples
2024-05-12T03:02:34.4421700+01:00 12632 12712 Allocated 2 buffer sets, 2/2 (I/O) channels per buffer set, 1024 samples per channel, 4/4 (I/O) bytes per sample, memory range: 000000002ABDF020-000000002ABE7020
2024-05-12T03:02:34.4421855+01:00 12632 12712 ASIO buffer #0 is input channel 0 - first half: 000000002ABDF020-000000002ABE0020 - second half: 000000002ABE3020-000000002ABE4020
2024-05-12T03:02:34.4421994+01:00 12632 12712 ASIO buffer #1 is input channel 1 - first half: 000000002ABE0020-000000002ABE1020 - second half: 000000002ABE4020-000000002ABE5020
2024-05-12T03:02:34.4422127+01:00 12632 12712 ASIO buffer #2 is output channel 0 - first half: 000000002ABE1020-000000002ABE2020 - second half: 000000002ABE5020-000000002ABE6020
2024-05-12T03:02:34.4422258+01:00 12632 12712 ASIO buffer #3 is output channel 1 - first half: 000000002ABE2020-000000002ABE3020 - second half: 000000002ABE6020-000000002ABE7020
2024-05-12T03:02:34.4422391+01:00 12632 12712 CFlexASIO::OpenStream(inputEnabled = 1, outputEnabled = 1, sampleRate = 44100, framesPerBuffer = 1024, callback = 00007FFF7AE33A71, callbackUserData = 000000001970E320)
2024-05-12T03:02:34.4422543+01:00 12632 12712 Opening PortAudio stream with...
2024-05-12T03:02:34.4422656+01:00 12632 12712 ...input parameters: PortAudio stream parameters for device index 8, 2 channels, sample format 2147483649 [Float32, NonInterleaved], suggested latency 0.0696599s
2024-05-12T03:02:34.4422879+01:00 12632 12712 ...output parameters: PortAudio stream parameters for device index 12, 2 channels, sample format 2147483649 [Float32, NonInterleaved], suggested latency 0.0696599s
2024-05-12T03:02:34.4423028+01:00 12632 12712 ...sample rate: 44100 Hz
2024-05-12T03:02:34.4423152+01:00 12632 12712 ...frames per buffer: 1024
2024-05-12T03:02:34.4423266+01:00 12632 12712 ...stream flags: 8 [PrimeOutputBuffersUsingStreamCallback]
2024-05-12T03:02:34.4423388+01:00 12632 12712 ...stream callback: 00007FFF7AE33A71 (user data 000000001970E320)
2024-05-12T03:02:34.4423614+01:00 12632 12712 [PortAudio] DirectSound host buffer size frames: 4096, polling period seconds: 0.005805, @ sr: 44100.000000
2024-05-12T03:02:34.4808563+01:00 12632 12712 [PortAudio] DirectSoundFullDuplexCreate succeeded!
2024-05-12T03:02:34.4809197+01:00 12632 12712 [PortAudio] InitFullDuplexInputOutputBuffers() returns 0
2024-05-12T03:02:34.4809349+01:00 12632 12712 PortAudio stream opened: 0000000028219E90
…
2024-05-12T03:02:34.5563787+01:00 12632 12712 --- ENTERING CONTEXT: start()
2024-05-12T03:02:34.5563976+01:00 12632 12712 Checking if the host supports time info
2024-05-12T03:02:34.5564093+01:00 12632 12712 Sending message: selector = 1 [kAsioSelectorSupported], value = 7, message = 0000000000000000, opt = 0000000000000000
2024-05-12T03:02:34.5564279+01:00 12632 12712 Result: 1
2024-05-12T03:02:34.5564392+01:00 12632 12712 Sending message: selector = 7 [kAsioSupportsTimeInfo], value = 0, message = 0000000000000000, opt = 0000000000000000
2024-05-12T03:02:34.5564526+01:00 12632 12712 Result: 1
2024-05-12T03:02:34.5564661+01:00 12632 12712 The host supports time info
2024-05-12T03:02:34.5564832+01:00 12632 12712 Starting high resolution timer
2024-05-12T03:02:34.5564959+01:00 12632 12712 Starting PortAudio stream 0000000028219E90
2024-05-12T03:02:34.5566988+01:00 12632 12712 [PortAudio] StartStream: DSW_StartInput returned = 0x0.
2024-05-12T03:02:34.5571773+01:00 12632 12712 [PortAudio] PaHost_ClearOutputBuffer: IDirectSoundBuffer_SetCurrentPosition returned = 0x0.
2024-05-12T03:02:34.5672533+01:00 12632 12712 [PortAudio] PaHost_StartOutput: IDirectSoundBuffer_Play returned = 0x88890008.
2024-05-12T03:02:34.5673274+01:00 12632 12712 Stopping high resolution timer
2024-05-12T03:02:34.5673523+01:00 12632 12712 --- EXITING CONTEXT: start() (-999 [ASE_HWMalfunction] unable to start PortAudio stream: Unanticipated host error)

As for WASAPI, it fails with AUDCLNT_E_UNSUPPORTED_FORMAT for a boring format it should clearly be able to support (2/1 channels, 48 kHz, shared mode, autoconvert on):

2024-05-12T03:03:37.8826159+01:00 12632 12712 --- ENTERING CONTEXT: createBuffers()
2024-05-12T03:03:37.8826708+01:00 12632 12712 Request to create buffers for 3 channels, size 256 samples
2024-05-12T03:03:37.8826878+01:00 12632 12712 Allocated 2 buffer sets, 2/1 (I/O) channels per buffer set, 256 samples per channel, 4/4 (I/O) bytes per sample, memory range: 000000002AFF7BA0-000000002AFF93A0
2024-05-12T03:03:37.8827048+01:00 12632 12712 ASIO buffer #0 is input channel 0 - first half: 000000002AFF7BA0-000000002AFF7FA0 - second half: 000000002AFF87A0-000000002AFF8BA0
2024-05-12T03:03:37.8827194+01:00 12632 12712 ASIO buffer #1 is input channel 1 - first half: 000000002AFF7FA0-000000002AFF83A0 - second half: 000000002AFF8BA0-000000002AFF8FA0
2024-05-12T03:03:37.8827330+01:00 12632 12712 ASIO buffer #2 is output channel 0 - first half: 000000002AFF83A0-000000002AFF87A0 - second half: 000000002AFF8FA0-000000002AFF93A0
2024-05-12T03:03:37.8827463+01:00 12632 12712 CFlexASIO::OpenStream(inputEnabled = 1, outputEnabled = 1, sampleRate = 48000, framesPerBuffer = 256, callback = 00007FFF7AE33A71, callbackUserData = 000000002B0052D0)
2024-05-12T03:03:37.8827647+01:00 12632 12712 Using shared mode for input WASAPI stream
2024-05-12T03:03:37.8827761+01:00 12632 12712 Enabling auto-conversion for input WASAPI stream
2024-05-12T03:03:37.8827873+01:00 12632 12712 Enabling explicit sample format for input WASAPI stream
2024-05-12T03:03:37.8827985+01:00 12632 12712 Using shared mode for output WASAPI stream
2024-05-12T03:03:37.8828097+01:00 12632 12712 Enabling auto-conversion for output WASAPI stream
2024-05-12T03:03:37.8828207+01:00 12632 12712 Enabling explicit sample format for output WASAPI stream
2024-05-12T03:03:37.8828321+01:00 12632 12712 Opening PortAudio stream with...
2024-05-12T03:03:37.8828435+01:00 12632 12712 ...input parameters: PortAudio stream parameters for device index 17, 2 channels, sample format 2147483649 [Float32, NonInterleaved], suggested latency 0.016s, host API specific: 56 bytes structure, type 13 [WASAPI], version 1, WASAPI specific: flags 96 [ExplicitSampleFormat, AutoConvert], channel mask 0, host processor output 0000000000000000, host processor input 0000000000000000, thread priority 0 [None], stream category 0 [Other], stream option 0 [None]
2024-05-12T03:03:37.8828695+01:00 12632 12712 ...output parameters: PortAudio stream parameters for device index 15, 1 channels, sample format 2147483649 [Float32, NonInterleaved], suggested latency 0.016s, host API specific: 56 bytes structure, type 13 [WASAPI], version 1, WASAPI specific: flags 96 [ExplicitSampleFormat, AutoConvert], channel mask 0, host processor output 0000000000000000, host processor input 0000000000000000, thread priority 0 [None], stream category 0 [Other], stream option 0 [None]
2024-05-12T03:03:37.8828906+01:00 12632 12712 ...sample rate: 48000 Hz
2024-05-12T03:03:37.8829033+01:00 12632 12712 ...frames per buffer: 256
2024-05-12T03:03:37.8829149+01:00 12632 12712 ...stream flags: 8 [PrimeOutputBuffersUsingStreamCallback]
2024-05-12T03:03:37.8829272+01:00 12632 12712 ...stream callback: 00007FFF7AE33A71 (user data 000000002B0052D0)
2024-05-12T03:03:37.8831573+01:00 12632 12712 [PortAudio] WASAPI: IAudioClient2 set properties: IsOffload = 0, Category = 0, Options = 0
2024-05-12T03:03:37.9103762+01:00 12632 12712 [PortAudio] wFormatTag     =WAVE_FORMAT_EXTENSIBLE
2024-05-12T03:03:37.9104221+01:00 12632 12712 [PortAudio] SubFormat      =KSDATAFORMAT_SUBTYPE_IEEE_FLOAT
2024-05-12T03:03:37.9104410+01:00 12632 12712 [PortAudio] Samples.wValidBitsPerSample =32
2024-05-12T03:03:37.9104567+01:00 12632 12712 [PortAudio] dwChannelMask  =0x3
2024-05-12T03:03:37.9104719+01:00 12632 12712 [PortAudio] nChannels      =2
2024-05-12T03:03:37.9104865+01:00 12632 12712 [PortAudio] nSamplesPerSec =48000
2024-05-12T03:03:37.9105011+01:00 12632 12712 [PortAudio] nAvgBytesPerSec=384000
2024-05-12T03:03:37.9105155+01:00 12632 12712 [PortAudio] nBlockAlign    =8
2024-05-12T03:03:37.9105298+01:00 12632 12712 [PortAudio] wBitsPerSample =32
2024-05-12T03:03:37.9105441+01:00 12632 12712 [PortAudio] cbSize         =22
2024-05-12T03:03:37.9106038+01:00 12632 12712 [PortAudio] WASAPI::OpenStream(input): framesPerUser[ 256 ] framesPerHost[ 1058 ] latency[ 22.04ms ] exclusive[ NO ] wow64_fix[ NO ] mode[ POLL ]
2024-05-12T03:03:37.9109031+01:00 12632 12712 [PortAudio] WASAPI: IAudioClient2 set properties: IsOffload = 0, Category = 0, Options = 0
2024-05-12T03:03:37.9166344+01:00 12632 12712 [PortAudio] WASAPI ERROR HRESULT: 0x88890008 : AUDCLNT_E_UNSUPPORTED_FORMAT
 [FUNCTION: CreateAudioClient FILE: D:\a\FlexASIO\FlexASIO\src\portaudio\src\hostapi\wasapi\pa_win_wasapi.c {LINE: 3731}]
2024-05-12T03:03:37.9166717+01:00 12632 12712 [PortAudio] WASAPI ERROR PAERROR: -9996 : Invalid device
 [FUNCTION: ActivateAudioClientOutput FILE: D:\a\FlexASIO\FlexASIO\src\portaudio\src\hostapi\wasapi\pa_win_wasapi.c {LINE: 3765}]
2024-05-12T03:03:37.9166876+01:00 12632 12712 [PortAudio] WASAPI ERROR PAERROR: -9996 : Invalid device
 [FUNCTION: OpenStream FILE: D:\a\FlexASIO\FlexASIO\src\portaudio\src\hostapi\wasapi\pa_win_wasapi.c {LINE: 4162}]

There is nothing "weird" about the devices:

2024-05-12T03:02:34.4415277+01:00 12632 12712 Selected input device: PortAudio device index 8 (name: 'Microfone (UMC202HD 192k)', host API: 1, default sample rate: 44100, max input channels: 2, max output channels: 0, input latency: 0.12 (low) 0.24 (high), output latency: 0 (low) 0 (high))
2024-05-12T03:02:34.4415913+01:00 12632 12712 Selected output device: PortAudio device index 12 (name: 'Altifalantes (UMC202HD 192k)', host API: 1, default sample rate: 44100, max input channels: 0, max output channels: 2, input latency: 0 (low) 0 (high), output latency: 0.12 (low) 0.24 (high))
2024-05-12T03:03:37.8432891+01:00 12632 12712 Selected input device: PortAudio device index 17 (name: 'Microfone (UMC202HD 192k)', host API: 2, default sample rate: 44100, max input channels: 2, max output channels: 0, input latency: 0.003 (low) 0.01 (high), output latency: 0 (low) 0 (high))
2024-05-12T03:03:37.8433510+01:00 12632 12712 Selected output device: PortAudio device index 15 (name: 'Altifalantes (UMC202HD 192k)', host API: 2, default sample rate: 48000, max input channels: 0, max output channels: 2, input latency: 0 (low) 0 (high), output latency: 0.003 (low) 0.01 (high))

using "KoordASIO" worked

It is extremely surprising that KoordASIO would work where FlexASIO would fail, on two different backends no less, including DirectSound (which should always work).

Does it work if you try to use different devices? E.g. if you just use an empty configuration?