christofmuc / JammerNetz

OpenSource internet jam sessions, aka Networked Music Performance software.
GNU Affero General Public License v3.0
51 stars 13 forks source link

cannot connect with Yamaha MG-XU usb mixers on Windows #35

Open iamthechrisb opened 6 months ago

iamthechrisb commented 6 months ago

great project! Been testing with a few people and have not been able to get anyone on that has one of the Yamaha MG-XU usb mixers -- eg the MG10XU and 16. This happened with both the Yamaha/Steinberg Driiver and Asio4all. The device would show as unsupported at times. These messages were seen in the log: 22:29:24: Accessing audio device Yamaha Steinberg USB ASIO 22:29:28: Setup>Inputs>Device updated: Yamaha Steinberg USB ASIO 22:29:31: Device reports no buffer sizes are available!

Any Ideas?

Thank You!

christofmuc commented 6 months ago

Hm, the log file should list the sample rates and buffer sizes reported to be available by the interface. Also, some drivers on Windows do not allow the software to configure the audio device, but only the driver's control panel. So the sample rate needs to be set to 48000 and the buffer size to 128 manually before launching the software.

But first check the output to see which values are reported.

Worst case would be to recompile once you found out which samplerate/buffer size is supprted by the audio interface - try to adjust the buffer and sample rate settings in the BuffersConfig.h - https://github.com/christofmuc/JammerNetz/blob/master/common/BuffersConfig.h.

I have not managed to get a good experience with Asio4all, I would strongly recommend the native driver if one is available.

christofmuc commented 6 months ago

No buffer sizes could actually point to a wrong sample rate. The software is compiled for 48000, and needs to be recompiled for different sample rates.

iamthechrisb commented 6 months ago

No buffer sizes could actually point to a wrong sample rate. The software is compiled for 48000, and needs to be recompiled for different sample rates. Thanks for the reply was compiled with defaults. we want to run at 48, the device supports this and runs fine with Jamulus and Sonobus. If the device is set to 44.1 when not used by say Jamulus, then Jamulus can open it and use it. Is Jamulus telling it to use 48? Feels like something is missing when Jammernetz goes to open the device.

christofmuc commented 6 months ago

Hm, the code is pretty straightforward and in line with the ASIO functions. The problem might lie within the JUCE library used by Jammernetz, there is an additional define possible to turn on ASIO detailed logging.

What library is used by Jamulus and Sonobus? I know JUCE is no longer that well maintained by now.

iamthechrisb commented 6 months ago

Sonobus is Juice as far as I know. Jamulus uses the ASIO SDK? I thought JUICE was pretty active. Is there something that needs updated perhaps? I recall some time ago there were issues with JUICE and yamaha.

christofmuc commented 6 months ago

You might be referring to https://forum.juce.com/t/yamaha-steinberg-usb-asio-problems-since-july-commit/36685/30

What we need to find out is if Jammernetz makes anything funny - I don't think so, but we can investigate when compiling with -DJUCE_ASIO_DEBUGGING=1, e.g. by adding

        JUCE_ASIO_DEBUGGING=1

to line 160 in the CMakeLists.txt file. We should see the full communication and ASIO calls.

iamthechrisb commented 6 months ago

You might be referring to https://forum.juce.com/t/yamaha-steinberg-usb-asio-problems-since-july-commit/36685/30

What we need to find out is if Jammernetz makes anything funny - I don't think so, but we can investigate when compiling with -DJUCE_ASIO_DEBUGGING=1, e.g. by adding

      JUCE_ASIO_DEBUGGING=1

to line 160 in the CMakeLists.txt file. We should see the full communication and ASIO calls.

clarification - would this be for the client build or server?

christofmuc commented 6 months ago

The client. The server contains no ASIO code as it does not need to work with audio devices directly.

iamthechrisb commented 6 months ago

The client. The server contains no ASIO code as it does not need to work with audio devices directly.

makes sense -- just did not want to build the client and wanted to make sure

iamthechrisb commented 6 months ago

The client. The server contains no ASIO code as it does not need to work with audio devices directly.

It could take me a while to get this built. Would you be willing to build a client with this option? it could be a handy command line switch to help troubleshoot other potential ASIO issues.

christofmuc commented 6 months ago

@iamthechrisb I ran the pipeline with the corresponding change, can you try this one: Download artifact

iamthechrisb commented 6 months ago

@iamthechrisb I ran the pipeline with the corresponding change, can you try this one: Download artifact

Error in GUI: Device could not be opened -- error opening audio device.

18:31:55: Welcome! 18:31:55: ASIO: found ASIO4ALL v2 18:31:55: ASIO: found AudioBox ASIO Driver 18:31:55: ASIO: found ioStation ASIO Driver 18:31:55: ASIO: found ASIO PreSonus FireStudio 18:31:55: ASIO: found Quantum ASIO driver 18:31:55: ASIO: found Realtek ASIO 18:31:55: ASIO: found ReaRoute ASIO (x64) 18:31:55: ASIO: found Revelator ASIO 18:31:55: ASIO: found Studio 192 ASIO 18:31:55: ASIO: found Studio USB ASIO Driver 18:31:55: ASIO: found StudioLive AR ASIO 18:31:55: ASIO: found StudioLive Classic USB 18:31:55: ASIO: found StudioLive Series III ASIO 18:31:55: ASIO: found Yamaha Steinberg USB ASIO 18:31:55: Accessing audio device ASIO4ALL v2 18:31:55: ASIO: opening device: ASIO4ALL v2 18:31:55: ASIO: 2 in, 8 out 18:31:55: ASIO: 64->2048, 512, 8 18:31:55: ASIO: Rates: 8000 11025 16000 22050 24000 44100 48000 88200 96000 176400 192000 18:31:55: ASIO: Latencies: in = 624, out = 592 18:31:55: ASIO: creating buffers (dummy): 4, 512 18:31:55: ASIO: Latencies: in = 624, out = 592 18:31:55: ASIO: device open 18:31:55: ASIO: closed 18:31:55: Accessing audio device AudioBox ASIO Driver 18:31:55: ASIO: opening device: AudioBox ASIO Driver 18:31:55: ASIO: closed 18:31:55: Accessing audio device ioStation ASIO Driver 18:31:55: ASIO: opening device: ioStation ASIO Driver 18:31:55: ASIO: closed 18:31:55: Accessing audio device ASIO PreSonus FireStudio 18:31:55: ASIO: opening device: ASIO PreSonus FireStudio 18:31:55: ASIO: closed 18:31:55: Accessing audio device Quantum ASIO driver 18:31:55: ASIO: opening device: Quantum ASIO driver 18:31:55: ASIO: closed 18:31:55: Accessing audio device Realtek ASIO 18:31:55: ASIO: opening device: Realtek ASIO 18:31:55: ASIO: 2 in, 8 out 18:31:55: ASIO: 1024->1024, 1024, 0 18:31:55: ASIO: setting default sample rate 18:31:55: ASIO: Rates: 44100 48000 88200 96000 176400 192000 18:31:55: ASIO: getLatencies() failed 18:31:55: ASIO: creating buffers (dummy): 4, 1024 18:31:55: ASIO: error: dummy buffers - Invalid Mode 18:31:55: ASIO: getLatencies() failed 18:31:55: ASIO: error: start - Not Present 18:31:56: ASIO: device open 18:31:56: ASIO: closed 18:31:56: Accessing audio device ReaRoute ASIO (x64) 18:31:56: ASIO: opening device: ReaRoute ASIO (x64) 18:31:56: ASIO: 16 in, 16 out 18:31:56: ASIO: 1024->1024, 1024, 0 18:31:56: ASIO: Rates: 8000 11025 16000 22050 24000 32000 44100 48000 88200 96000 176400 192000 352800 384000 705600 768000 18:31:56: ASIO: Latencies: in = 1024, out = 2048 18:31:56: ASIO: creating buffers (dummy): 4, 1024 18:31:56: ASIO: Latencies: in = 1024, out = 2048 18:31:56: ASIO: device open 18:31:56: ASIO: closed 18:31:56: Accessing audio device Revelator ASIO 18:31:56: ASIO: opening device: Revelator ASIO 18:31:56: ASIO: closed 18:31:56: Accessing audio device Studio 192 ASIO 18:31:56: ASIO: opening device: Studio 192 ASIO 18:31:56: ASIO: closed 18:31:56: Accessing audio device Studio USB ASIO Driver 18:31:56: ASIO: opening device: Studio USB ASIO Driver 18:31:56: ASIO: closed 18:31:56: Accessing audio device StudioLive AR ASIO 18:31:56: ASIO: opening device: StudioLive AR ASIO 18:31:56: ASIO: closed 18:31:56: Accessing audio device StudioLive Classic USB 18:31:56: ASIO: opening device: StudioLive Classic USB 18:31:56: ASIO: closed 18:31:56: Accessing audio device StudioLive Series III ASIO 18:31:56: ASIO: opening device: StudioLive Series III ASIO 18:31:56: ASIO: closed 18:31:56: Accessing audio device Yamaha Steinberg USB ASIO 18:31:56: ASIO: opening device: Yamaha Steinberg USB ASIO 18:31:56: ASIO: 2 in, 2 out 18:31:56: ASIO: 2048->2048, 2048, 0 18:31:56: ASIO: outputReady true 18:31:56: ASIO: Rates: 44100 48000 88200 96000 176400 192000 18:31:56: ASIO: Latencies: in = 2289, out = 2332 18:31:56: ASIO: creating buffers (dummy): 4, 2048 18:31:56: ASIO: Latencies: in = 2289, out = 2332 18:31:56: ASIO: device open 18:31:56: ASIO: closed 18:31:56: ASIO: found ASIO4ALL v2 18:31:56: ASIO: found AudioBox ASIO Driver 18:31:56: ASIO: found ioStation ASIO Driver 18:31:56: ASIO: found ASIO PreSonus FireStudio 18:31:56: ASIO: found Quantum ASIO driver 18:31:56: ASIO: found Realtek ASIO 18:31:56: ASIO: found ReaRoute ASIO (x64) 18:31:56: ASIO: found Revelator ASIO 18:31:56: ASIO: found Studio 192 ASIO 18:31:56: ASIO: found Studio USB ASIO Driver 18:31:56: ASIO: found StudioLive AR ASIO... (10 KB left)

christofmuc commented 6 months ago

To compare, this is the log from my successfull Motu M4:

01:00:32: ASIO: opening device: MOTU M Series
01:00:32: ASIO: 8 in, 4 out
01:00:32: ASIO: 32->32, 32, 0
01:00:32: ASIO: Rates: 44100 48000 88200 96000 176400 192000
01:00:32: ASIO: Latencies: in = 59, out = 139
01:00:32: ASIO: creating buffers (dummy): 4, 32
01:00:32: ASIO: Latencies: in = 59, out = 139
01:00:32: ASIO: device open
01:00:32: ASIO: clock: Internal (cur)
01:00:32: ASIO: disposing buffers
01:00:32: ASIO: creating buffers: 4, 32
01:00:32: ASIO: channel format: 18
01:00:32: ASIO: Latencies: in = 59, out = 139
01:00:32: ASIO: 32->32, 32, 0
01:00:32: ASIO: starting

It looks like the Yamaha above is currently configured at a buffer size of 2048, while my Motu does 32. Shorter is better until the computer becomes too slow for it.

What happens when you press the Configure button on the machine with the Yamaha selected - for my Motu it does open the GUI of the driver where I can set the buffer size e.g. to 32, and JammerNetz does take that value.

It might make a difference if this is set before launching JammerNetz or afterwards with the Configure button.

Also, some Audio software might also lock the settings in the device - make sure to test it on a rebooted machine with no other Audio software running (Ableton...).

The GUI error could also indicate that too many or no input channels were selected. Can you attach a screenshot with the setup and the error?

iamthechrisb commented 6 months ago

To compare, this is the log from my successfull Motu M4:

01:00:32: ASIO: opening device: MOTU M Series
01:00:32: ASIO: 8 in, 4 out
01:00:32: ASIO: 32->32, 32, 0
01:00:32: ASIO: Rates: 44100 48000 88200 96000 176400 192000
01:00:32: ASIO: Latencies: in = 59, out = 139
01:00:32: ASIO: creating buffers (dummy): 4, 32
01:00:32: ASIO: Latencies: in = 59, out = 139
01:00:32: ASIO: device open
01:00:32: ASIO: clock: Internal (cur)
01:00:32: ASIO: disposing buffers
01:00:32: ASIO: creating buffers: 4, 32
01:00:32: ASIO: channel format: 18
01:00:32: ASIO: Latencies: in = 59, out = 139
01:00:32: ASIO: 32->32, 32, 0
01:00:32: ASIO: starting

It looks like the Yamaha above is currently configured at a buffer size of 2048, while my Motu does 32. Shorter is better until the computer becomes too slow for it.

What happens when you press the Configure button on the machine with the Yamaha selected - for my Motu it does open the GUI of the driver where I can set the buffer size e.g. to 32, and JammerNetz does take that value.

It might make a difference if this is set before launching JammerNetz or afterwards with the Configure button.

Also, some Audio software might also lock the settings in the device - make sure to test it on a rebooted machine with no other Audio software running (Ableton...).

The GUI error could also indicate that too many or no input channels were selected. Can you attach a screenshot with the setup and the error?

will do. I see the 2048 and the yamaha/steinberg driver control app was set for 128.. strange

iamthechrisb commented 6 months ago

To compare, this is the log from my successfull Motu M4:

01:00:32: ASIO: opening device: MOTU M Series
01:00:32: ASIO: 8 in, 4 out
01:00:32: ASIO: 32->32, 32, 0
01:00:32: ASIO: Rates: 44100 48000 88200 96000 176400 192000
01:00:32: ASIO: Latencies: in = 59, out = 139
01:00:32: ASIO: creating buffers (dummy): 4, 32
01:00:32: ASIO: Latencies: in = 59, out = 139
01:00:32: ASIO: device open
01:00:32: ASIO: clock: Internal (cur)
01:00:32: ASIO: disposing buffers
01:00:32: ASIO: creating buffers: 4, 32
01:00:32: ASIO: channel format: 18
01:00:32: ASIO: Latencies: in = 59, out = 139
01:00:32: ASIO: 32->32, 32, 0
01:00:32: ASIO: starting

It looks like the Yamaha above is currently configured at a buffer size of 2048, while my Motu does 32. Shorter is better until the computer becomes too slow for it. What happens when you press the Configure button on the machine with the Yamaha selected - for my Motu it does open the GUI of the driver where I can set the buffer size e.g. to 32, and JammerNetz does take that value. It might make a difference if this is set before launching JammerNetz or afterwards with the Configure button. Also, some Audio software might also lock the settings in the device - make sure to test it on a rebooted machine with no other Audio software running (Ableton...). The GUI error could also indicate that too many or no input channels were selected. Can you attach a screenshot with the setup and the error?

will do. I see the 2048 and the yamaha/steinberg driver control app was set for 128.. strange

Did this at 64 and 128 changing via the configure button: 22:28:04: Accessing audio device Yamaha Steinberg USB ASIO 22:28:04: ASIO: opening device: Yamaha Steinberg USB ASIO 22:28:04: ASIO: 2 in, 2 out 22:28:04: ASIO: 64->64, 64, 0 22:28:04: ASIO: outputReady true 22:28:04: ASIO: Rates: 44100 48000 88200 96000 176400 192000 22:28:04: ASIO: Latencies: in = 261, out = 304 22:28:04: ASIO: creating buffers (dummy): 4, 64 22:28:04: ASIO: Latencies: in = 261, out = 304 22:28:04: ASIO: device open 22:28:04: ASIO: closed 22:28:04: ASIO: opening device: ASIO4ALL v2 22:28:05: ASIO: 2 in, 2 out 22:28:05: ASIO: 64->2048, 256, 8 22:28:05: ASIO: Rates: 8000 11025 16000 22050 24000 32000 44100 48000 88200 96000 176400 192000 22:28:05: ASIO: Latencies: in = 256, out = 256 22:28:05: ASIO: creating buffers (dummy): 4, 256 22:28:05: ASIO: Latencies: in = 256, out = 256 22:28:05: ASIO: device open

iamthechrisb commented 6 months ago

@christofmuc any thoughts on the output? I notice we never get asio starting..

christofmuc commented 5 months ago

@iamthechrisb Sorry, was on a festival this weekend. True, it looks like the ASIO start function never happens, and that is the JUCE internal code, there should be no JammerNetz code in between...

Some of the devices are extremely timing sensitive, and JammerNetz does multiple open and close commands when starting up. What we could do is write a little program that does only the very necessary steps to see if the JUCE ASIO code can actually use the device.

christofmuc commented 5 months ago

I made a test program, not sure if that will help. I needed to reboot my Motu before it would be recognized.

Input: Exact name of Audio device in quotes. Output: Log

Example:

D:\Development\github\JammerNetz-OS\builds2024\Debug>test_asio.exe "MOTU M Series" ASIO: found ASIO4ALL v2 ASIO: found FL Studio ASIO ASIO: found MOTU M Series ASIO: found Soundcraft USB Audio ASIO ASIO: found ASIO4ALL v2 ASIO: found FL Studio ASIO ASIO: found MOTU M Series ASIO: found Soundcraft USB Audio ASIO ASIO: opening device: MOTU M Series ASIO: 8 in, 4 out ASIO: 32->32, 32, 0 ASIO: Rates: 44100 48000 88200 96000 176400 192000 ASIO: Latencies: in = 59, out = 139 ASIO: creating buffers (dummy): 4, 32 ASIO: Latencies: in = 59, out = 139 ASIO: device open ASIO: clock: Internal (cur) ASIO: Using preferred size for buffer.. ASIO: 32->32, 32, 0 ASIO: disposing buffers ASIO: creating buffers: 2, 32 ASIO: channel format: 18 ASIO: Latencies: in = 59, out = 139 ASIO: 32->32, 32, 0 ASIO: starting ASIO device started successfully!

test_asio.zip

iamthechrisb commented 5 months ago

@christofmuc does anything need to be installed to run this looks like it is looking for some components.

Capture

christofmuc commented 5 months ago

Ah, that is a debug library. Sorry, I need to make you a release build and then it needs to be dropped into the Knobkraft folder where the exe is.

christofmuc commented 5 months ago

Can you try this one? Drop it into the exe directory of the Jammernetz executable.

Run it with test_asio "somedevicename". If the devicename is not known, it outputs the list of known device names.

test_asio.zip

iamthechrisb commented 5 months ago

C:\Users\Mike\AppData\Local\Programs\JammerNetz 2>test_asio "Yamaha Steinberg USB ASIO" ASIO: found ASIO4ALL v2 ASIO: found ASIO PreSonus FireStudio ASIO: found Realtek ASIO ASIO: found ReaRoute ASIO (x64) ASIO: found Yamaha Steinberg USB ASIO ASIO: found ASIO4ALL v2 ASIO: found ASIO PreSonus FireStudio ASIO: found Realtek ASIO ASIO: found ReaRoute ASIO (x64) ASIO: found Yamaha Steinberg USB ASIO ASIO: opening device: Yamaha Steinberg USB ASIO ASIO: 2 in, 2 out ASIO: 512->512, 512, 0 ASIO: outputReady true ASIO: Rates: 44100 48000 88200 96000 176400 192000 ASIO: Latencies: in = 797, out = 928 ASIO: creating buffers (dummy): 4, 512 ASIO: Latencies: in = 797, out = 928 ASIO: device open ASIO: clock: Internal (cur) ASIO: rate change: 44100 to 48000 WASAPI error: AUDCLNT_E_DEVICE_INVALIDATED WASAPI error: AUDCLNT_E_DEVICE_INVALIDATED ASIO: kAsioResetRequest ASIO: Using preferred size for buffer.. ASIO: 512->512, 512, 0 ASIO: disposing buffers ASIO: creating buffers: 2, 512 ASIO: error: create buffers 2 - Invalid Mode ASIO: error: Can't create i/o buffers - Invalid Mode Failed to open ASIO device: Can't create i/o buffers

iamthechrisb commented 5 months ago

after setting buffer to 128...

C:\Users\Mike\AppData\Local\Programs\JammerNetz 2>test_asio "Yamaha Steinberg USB ASIO" ASIO: found ASIO4ALL v2 ASIO: found ASIO PreSonus FireStudio ASIO: found Realtek ASIO ASIO: found ReaRoute ASIO (x64) ASIO: found Yamaha Steinberg USB ASIO ASIO: found ASIO4ALL v2 ASIO: found ASIO PreSonus FireStudio ASIO: found Realtek ASIO ASIO: found ReaRoute ASIO (x64) ASIO: found Yamaha Steinberg USB ASIO ASIO: opening device: Yamaha Steinberg USB ASIO ASIO: 2 in, 2 out ASIO: 128->128, 128, 0 ASIO: outputReady true ASIO: Rates: 44100 48000 88200 96000 176400 192000 ASIO: Latencies: in = 392, out = 439 ASIO: creating buffers (dummy): 4, 128 ASIO: Latencies: in = 392, out = 439 ASIO: device open ASIO: clock: Internal (cur) ASIO: disposing buffers ASIO: creating buffers: 2, 128 ASIO: channel format: 18 ASIO: Latencies: in = 392, out = 439 ASIO: 128->128, 128, 0 ASIO: starting ASIO device started successfully!

This looks better, but still get error opening device when running client -- here is the client log

19:03:15: Welcome! 19:03:15: ASIO: found ASIO4ALL v2 19:03:15: ASIO: found ASIO PreSonus FireStudio 19:03:15: ASIO: found Realtek ASIO 19:03:15: ASIO: found ReaRoute ASIO (x64) 19:03:15: ASIO: found Yamaha Steinberg USB ASIO 19:03:15: Accessing audio device ASIO4ALL v2 19:03:15: ASIO: opening device: ASIO4ALL v2 19:03:15: ASIO: 2 in, 2 out 19:03:15: ASIO: 64->2048, 512, 8 19:03:15: ASIO: Rates: 8000 16000 24000 44100 48000 96000 192000 19:03:15: ASIO: Latencies: in = 544, out = 544 19:03:15: ASIO: creating buffers (dummy): 4, 512 19:03:15: ASIO: Latencies: in = 544, out = 544 19:03:16: ASIO: device open 19:03:16: ASIO: closed 19:03:16: Accessing audio device ASIO PreSonus FireStudio 19:03:16: ASIO: opening device: ASIO PreSonus FireStudio 19:03:16: ASIO: closed 19:03:16: Accessing audio device Realtek ASIO 19:03:16: ASIO: opening device: Realtek ASIO 19:03:16: ASIO: 2 in, 8 out 19:03:16: ASIO: 1024->1024, 1024, 0 19:03:16: ASIO: setting default sample rate 19:03:16: ASIO: error: setting sample rate - Not Present 19:03:16: ASIO: Rates: 44100 48000 88200 96000 176400 192000 19:03:16: ASIO: getLatencies() failed 19:03:16: ASIO: creating buffers (dummy): 4, 1024 19:03:16: ASIO: Latencies: in = 882, out = 882 19:03:16: ASIO: device open 19:03:16: ASIO: closed 19:03:16: Accessing audio device ReaRoute ASIO (x64) 19:03:16: ASIO: opening device: ReaRoute ASIO (x64) 19:03:16: ASIO: 16 in, 16 out 19:03:16: ASIO: 1024->1024, 1024, 0 19:03:16: ASIO: Rates: 8000 11025 16000 22050 24000 32000 44100 48000 88200 96000 176400 192000 352800 384000 705600 768000 19:03:16: ASIO: Latencies: in = 1024, out = 2048 19:03:16: ASIO: creating buffers (dummy): 4, 1024 19:03:16: ASIO: Latencies: in = 1024, out = 2048 19:03:16: ASIO: device open 19:03:16: ASIO: closed 19:03:16: Accessing audio device Yamaha Steinberg USB ASIO 19:03:16: ASIO: opening device: Yamaha Steinberg USB ASIO 19:03:17: ASIO: 2 in, 2 out 19:03:17: ASIO: 128->128, 128, 0 19:03:17: ASIO: outputReady true 19:03:17: ASIO: Rates: 44100 48000 88200 96000 176400 192000 19:03:17: ASIO: Latencies: in = 392, out = 439 19:03:17: ASIO: creating buffers (dummy): 4, 128 19:03:17: ASIO: Latencies: in = 392, out = 439 19:03:17: ASIO: device open 19:03:17: ASIO: closed 19:03:17: ASIO: opening device: Yamaha Steinberg USB ASIO 19:03:17: ASIO: 2 in, 2 out 19:03:17: ASIO: 128->128, 128, 0 19:03:17: ASIO: outputReady true 19:03:17: ASIO: Rates: 44100 48000 88200 96000 176400 192000 19:03:17: ASIO: Latencies: in = 392, out = 439 19:03:17: ASIO: creating buffers (dummy): 4, 128 19:03:18: ASIO: Latencies: in = 392, out = 439 19:03:18: ASIO: device open 19:03:18: Setup>Inputs>Channels>ChannelCount updated: 2 19:03:18: Setup>Mixer>Input0>Target updated: 2 19:03:18: Setup>Mixer>Input1>Target updated: 3 19:03:18: ASIO: found ASIO4ALL v2 19:03:18: ASIO: found ASIO PreSonus FireStudio 19:03:18: ASIO: found Realtek ASIO 19:03:18: ASIO: found ReaRoute ASIO (x64) 19:03:18: ASIO: found Yamaha Steinberg USB ASIO 19:03:18: Accessing audio device ASIO4ALL v2 19:03:18: ASIO: opening device: ASIO4ALL v2 19:03:18: ASIO: 2 in, 2 out 19:03:18: ASIO: 64->2048, 512, 8 19:03:18: ASIO: Rates: 8000 16000 24000 44100 48000 96000 192000 19:03:18: ASIO: Latencies: in = 544, out = 544 19:03:18: ASIO: creating buffers (dummy): 4, 512 19:03:18: ASIO: Latencies: in = 544, out = 544 19:03:18: ASIO: device open 19:03:18: ASIO: closed 19:03:18: Accessing audio device ASIO PreSonus FireStudio 19:03:18: ASIO: opening device: ASIO PreSonus FireStudio 19:03:18: ASIO: closed 19:03:18: Accessing audio device Realtek ASIO 19:03:18: ASIO: opening device: Realtek ASIO 19:03:18: ASIO: 2 in, 8 out 19:03:18: ASIO: 1024->1024, 1024, 0 19:03:18: ASIO: setting default sample rate 19:03:18: ASIO: error: setting sample rate - Not Present 19:03:18: ASIO: Rates: 44100 48000 88200 96000 176400 192000 19:03:18: ASIO: getLatencies() failed 19:03:18: ASIO: creating buffers (dummy): 4, 1024 19:03:18: ASIO: Latencies: in = 882, out = 882 19:03:18: ASIO: device open 19:03:18: ASIO: closed 19:03:18: Accessing audio device ReaRoute ASIO (x64) 19:03:18: ASIO: opening device: ReaRoute ASIO (x64) 19:03:18: ASIO: 16 in, 16 out 19:03:18: ASIO: 1024->1024, 1024, 0 19:03:18: ASIO: Rates: 8000 11025 16000 22050 24000 32000 44100 48000 88200 96000 176400 192000 352800 384000 705600 768000 19:03:18: ASIO: Latencies: in = 1024, out = 2048 19:03:18: ASIO: creating buffers (dummy): 4, 1024 19:03:18: ASIO: Latencies: in = 1024, out = 2048 19:03:18: ASIO: device open 19:03:18: ASIO: closed 19:03:18: Accessing audio device Yamaha Steinberg USB ASIO 19:03:18: ASIO: opening device: Yamaha Steinberg USB ASIO 19:03:21: ASIO: closed 19:03:21: ASIO: opening device: Yamaha Steinberg USB ASIO 19:03:23: Setup>Outputs>Channels>ChannelCount updated: 0 19:03:24: ASIO: opening device: Yamaha Steinberg USB ASIO 19:03:26: Device reports no buffer sizes are available! 19:03:26: ASIO: opening device: Yamaha Steinberg USB ASIO

christofmuc commented 5 months ago

Ok, good to know the ASIO drivers and JUCE can actually open the device successfully. So this looks like the typical case of the JUCE state machine getting out of sync with ASIO, and not being able to recover.

This was a very similar post in the forums: https://forum.juce.com/t/asio-failure-on-windows-10-thunderbolt-3/37953/12

I think what we need to do is to disable the auto-detection of compatible devices altogether, it probably kicks the ASIO state machine out of sync opening and closing all devices querying for supported sample rates and buffer sizes.

Idealy, the JammerNetz code then only runs the commands the successful test_asio code ran.

I need to rework the UI a little bit to not react immediately on drop down and checkbox changes, but rather to offer a "start audio button" that needs to be pressed by the user.

christofmuc commented 5 months ago

@iamthechrisb I made a new release candidate for the 2.3.0, this has a new button you need to press to get the Audio thread spinning. Also, when you change input or output channels you need to stop the audio and start it again using this button. This is less convenient but this version does not mess with the ASIO devices you do not intent to use. Let me know if that makes any sense!

iamthechrisb commented 5 months ago

Still getting an error when starting. I do notice that no ouput channels show up on the right side - not sure if that is significant. Interestingly, it now will work with asio4all and the Yamaha (and it shows 2 output channels..)-- this would not work in the other version.. Capture : 22:05:59: Welcome! 22:05:59: ASIO: found ASIO4ALL v2 22:05:59: ASIO: found ASIO PreSonus FireStudio 22:05:59: ASIO: found Realtek ASIO 22:05:59: ASIO: found ReaRoute ASIO (x64) 22:05:59: ASIO: found Yamaha Steinberg USB ASIO 22:05:59: ASIO: opening device: Yamaha Steinberg USB ASIO 22:06:00: ASIO: 2 in, 2 out 22:06:00: ASIO: 128->128, 128, 0 22:06:00: ASIO: outputReady true 22:06:00: ASIO: Rates: 44100 48000 88200 96000 176400 192000 22:06:00: ASIO: Latencies: in = 392, out = 439 22:06:00: ASIO: creating buffers (dummy): 4, 128 22:06:00: ASIO: Latencies: in = 392, out = 439 22:06:00: ASIO: device open 22:06:00: Setup>Inputs>Channels>ChannelCount updated: 2 22:06:00: ASIO: found ASIO4ALL v2 22:06:00: ASIO: found ASIO PreSonus FireStudio 22:06:00: ASIO: found Realtek ASIO 22:06:00: ASIO: found ReaRoute ASIO (x64) 22:06:00: ASIO: found Yamaha Steinberg USB ASIO 22:06:00: ASIO: opening device: Yamaha Steinberg USB ASIO 22:06:03: Setup>Outputs>Channels>ChannelCount updated: 0 22:06:10: Setup>Inputs>Channels>Channel0>ChannelActive updated: 1 22:06:10: Setup>Mixer>Input0>Target updated: 2 22:06:10: Setup>Inputs updated: 22:06:11: Setup>Inputs>Channels>Channel1>ChannelActive updated: 1 22:06:11: Setup>Mixer>Input1>Target updated: 3 22:06:11: Setup>Inputs updated: 22:06:14: ASIO: showing control panel 22:06:14: ASIO: spent: 72 22:06:40: ASIO: opening device: Yamaha Steinberg USB ASIO 22:06:43: Device reports no buffer sizes are available! 22:06:43: ASIO: opening device: Yamaha Steinberg USB ASIO

christofmuc commented 5 months ago

Hm, the output devices should be listed. I will check, there is still a bug. When this is fixed, you'd probably need to remove the JammerNetz.settings file from %APPDATA%\JammerNetz.

Will need another round.

christofmuc commented 5 months ago

The output channels definitely are a problem. Can you try to first select the Output device and then the Input device? I would be interested to see if the device can list its output channels at all.

christofmuc commented 5 months ago

Here is a new build that should work with the output channels. Try moving the settings file in %APPDATA%\JammerNetz file away to a different name to test a fresh start: https://artprodsu6weu.artifacts.visualstudio.com/A6d66facc-b722-4445-8f4b-4d54ba6a54ea/83c86e0a-cd61-4c8f-b24b-53955eb614ac/_apis/artifact/cGlwZWxpbmVhcnRpZmFjdDovL2NocmlzdG9mMDc1OS9wcm9qZWN0SWQvODNjODZlMGEtY2Q2MS00YzhmLWIyNGItNTM5NTVlYjYxNGFjL2J1aWxkSWQvNTk2L2FydGlmYWN0TmFtZS9XaW5kb3dzSW5zdGFsbGVy0/content?format=zip

iamthechrisb commented 5 months ago

still getting cannot connect -- it does show outputs now.. 20:10:23: Welcome! 20:10:23: ASIO: found ASIO4ALL v2 20:10:23: ASIO: found ASIO PreSonus FireStudio 20:10:23: ASIO: found Realtek ASIO 20:10:23: ASIO: found ReaRoute ASIO (x64) 20:10:23: ASIO: found Yamaha Steinberg USB ASIO 20:10:23: ASIO: opening device: Yamaha Steinberg USB ASIO 20:10:24: ASIO: 2 in, 2 out 20:10:24: ASIO: 128->128, 128, 0 20:10:24: ASIO: outputReady true 20:10:24: ASIO: Rates: 44100 48000 88200 96000 176400 192000 20:10:24: ASIO: Latencies: in = 369, out = 412 20:10:24: ASIO: creating buffers (dummy): 4, 128 20:10:24: ASIO: Latencies: in = 369, out = 412 20:10:24: ASIO: device open 20:10:24: Setup>Inputs>Channels>ChannelCount updated: 2 20:10:24: ASIO: found ASIO4ALL v2 20:10:24: ASIO: found ASIO PreSonus FireStudio 20:10:24: ASIO: found Realtek ASIO 20:10:24: ASIO: found ReaRoute ASIO (x64) 20:10:24: ASIO: found Yamaha Steinberg USB ASIO 20:10:24: ASIO: opening device: Yamaha Steinberg USB ASIO 20:10:26: Setup>Outputs>Channels>ChannelCount updated: 0 20:10:29: ASIO: opening device: Yamaha Steinberg USB ASIO 20:10:32: Device reports no buffer sizes are available! 20:10:32: ASIO: opening device: Yamaha Steinberg USB ASIO

christofmuc commented 4 months ago

This looks still wrong, it has an Output channel count of 0. Did you select two outputs?

iamthechrisb commented 4 months ago

This looks still wrong, it has an Output channel count of 0. Did you select two outputs?

Sorry, had to go back and check this again. the outputs are not appearing. The user had selected a different driver apparently when they saw the outputs...

iamthechrisb commented 1 month ago

had yamaha test user load rc4 client and still not seeing outputs. JammerNetzClient_2 3 0_10_15_2024_11_45_16_PM

23:40:13: Welcome! 23:40:13: ASIO: found ASIO4ALL v2 23:40:13: ASIO: found ASIO PreSonus FireStudio 23:40:13: ASIO: found Realtek ASIO 23:40:13: ASIO: found ReaRoute ASIO (x64) 23:40:13: ASIO: found Yamaha Steinberg USB ASIO 23:40:13: ASIO: opening device: Yamaha Steinberg USB ASIO 23:40:14: ASIO: 2 in, 2 out 23:40:14: ASIO: 128->128, 128, 0 23:40:14: ASIO: outputReady true 23:40:14: ASIO: Rates: 44100 48000 88200 96000 176400 192000 23:40:14: ASIO: Latencies: in = 369, out = 412 23:40:14: ASIO: creating buffers (dummy): 4, 128 23:40:14: ASIO: Latencies: in = 369, out = 412 23:40:14: ASIO: device open 23:40:14: Setup>Inputs>Channels>ChannelCount updated: 2 23:40:14: Setup>Mixer>Input0>Target updated: 2 23:40:14: Setup>Mixer>Input1>Target updated: 3 23:40:14: ASIO: found ASIO4ALL v2 23:40:14: ASIO: found ASIO PreSonus FireStudio 23:40:14: ASIO: found Realtek ASIO 23:40:14: ASIO: found ReaRoute ASIO (x64) 23:40:14: ASIO: found Yamaha Steinberg USB ASIO 23:40:14: ASIO: opening device: Yamaha Steinberg USB ASIO 23:40:17: Setup>Outputs>Channels>ChannelCount updated: 0 23:41:23: ASIO: opening device: Yamaha Steinberg USB ASIO 23:41:26: Device reports no buffer sizes are available! 23:41:26: ASIO: opening device: Yamaha Steinberg USB ASIO

christofmuc commented 1 month ago

Disappointing. I guess the output from the testasio program is the same?

christofmuc commented 1 month ago

Googling this device a bit more leads to several pages of people not being able to use it as an input device. Some suggest to setup the routing in the OS, maybe Windows audio setup interferes and it needs to be setup to be the default Windows device? https://obsproject.com/forum/threads/audio-issue-yamaha-mixer.121358/

iamthechrisb commented 4 weeks ago

Disappointing. I guess the output from the testasio program is the same?

will check, I need to get more time lined up with the test user -- thanks again for the update

iamthechrisb commented 4 weeks ago

Googling this device a bit more leads to several pages of people not being able to use it as an input device. Some suggest to setup the routing in the OS, maybe Windows audio setup interferes and it needs to be setup to be the default Windows device? https://obsproject.com/forum/threads/audio-issue-yamaha-mixer.121358/

can check this too. PS - I know these devices work without these issues on Jamulus and Sonobus - and not selected as default. Is the device support the same as Sonobus as they are both JUCE? We had been them to help windows Jamulus users a while back to deal with only 2 in/out issues.. and have quite a few of them out there.

christofmuc commented 3 weeks ago

Jamulus does not use Juce, it is build on Qt and Jack.

Sonobus uses Juce (an old, modified branch of JUCE 6), but it does not seem to have Asio specific changes in that branch of JUCE. From what I understand the architecture is very different from JammerNetz, it is actually using Audio plugins and a head less plugin host. Sadly that makes the whole audio path not very comparable with my solution.

I still think the issue must be something simple, like the audio device resetting its buffers on its own or something similar, which prevents the open call to report the output devices.

iamthechrisb commented 3 weeks ago

side note: MG mixer tested on linux with pipewire and working.