Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FlexASIO not showing the correct amount of channels #262

Closed
JomerDev opened this issue Feb 12, 2025 · 11 comments
Closed

FlexASIO not showing the correct amount of channels #262

JomerDev opened this issue Feb 12, 2025 · 11 comments

Comments

@JomerDev
Copy link

Hello,

I'm trying to use FlexASIO with a device that has 36 channels in each direction. When I set the backend to Windows WDM-KS, the log shows that all 36 Channels get detected successfully. However, FlexASIO only shows up with two channels in each direction. I've tried different backends as well as setting the channel count explicitly in the config. Seeing as this works with ASIO4All and all 36 channels show up in the same program I want to use FlexASIO with this seems to me like an issue with FlexASIO (I only had either ASIO4All or FlexASIO installed at any point in time)

I've attached the log here:
FlexASIO.log

@dechamps
Copy link
Owner

dechamps commented Feb 13, 2025

I don't see anything wrong in your log:

2025-02-12T23:38:05.8260823+01:00 16396 16400 --- ENTERING CONTEXT: getChannels() on 0D046598
2025-02-12T23:38:05.8260963+01:00 16396 16400 Returning 36 input channels and 36 output channels

FlexASIO is correctly telling the ASIO host application that there are 36+36 channels. According to your log the ASIO host application then proceeded to successfully query the properties of all 72 channels. It is clearly able to see them. If your host application then only shows you 2 channels, that sounds like a strange host app bug.

Two questions:

  • Which host application are you using? (Normally I'd be able to find out from your log but oddly it's not there, possibly because you started logging after the application started)
  • What do you mean exactly by "FlexASIO only shows up with two channels in each direction"?

@JomerDev
Copy link
Author

I'm using Dante Via, with Dante Controller showing me the channels. If it helps I can provide screenshots tomorrow.
With FlexASIO Dante Controller shows me two channels in (L+R) and two channels out (L+R) for the device I set FlexASIO up for.
With ASIO4All Dante Controller shows me 32 channels in and 32 channels out for the same device. (It should be 36, but afaik Dante Controller/Via only support 32 channels in ceach direction)

Using both Dante Via and Dante Controller I can map applications/audio sources to different channels. With ASIO4All it will correctly allow me to map each new audio source to the next channel pair, where with FlexASIO it will mix them together onto the only two stereo channels (L+R) it seems to find for the device

@dechamps
Copy link
Owner

dechamps commented Feb 13, 2025

Okay. Well, as I said, all I see in the log is an app (I can't tell if it's Dante or something else) asking FlexASIO "how many channels do you have" and FlexASIO correctly responding "36+36". The only explanation I can think of for what you're describing is either an extremely subtle bug in Dante (I say "subtle" because other ASIO drivers don't seem to trigger it), or the log you sent did not actually come from a run of Dante.

@JomerDev
Copy link
Author

Alright. Can you tell me how I can make sure a log is written, or rather, how often the log file is written to?
I tried to create a fresh log by removing everything in the log file, restarting the computer, starting FlexASIO GUI to make sure all settings were correct, saved the config to make sure FlexASIO was restarted and then opened both Dante programs and confirmed that the issues stayed the same. I then closed everything down again in the opposite order. But no log was written. I opened the programs again and opened FlexASIO GUI multiple times, after some time the log was filled. But the timestamps showed that it was only the second or third time I started FlexASIO GUI that something was written to the log and everything I did before was not logged at all

@dechamps
Copy link
Owner

Could the Dante ASIO host be running under some other user by any chance? For example, a Windows service (instead of a normal user app)?

Here's an experiment you may want to try: make the configuration file invalid (e.g. a syntax error, or selecting a device that doesn't exist). Then see if Dante can still load FlexASIO. It if it still can, it means Dante is not using your configuration file, and therefore it's not using WDM-KS, and that likely explains why it's only seeing two channels.

@JomerDev
Copy link
Author

Hmm. You might be on to something here. I unplugged the device I set FlexASIO up with and started Dante Via. It still shows FlexASIO in there with two channels and I can still assign audio sources to it. It has, however, a right click option to open the "ASIO Device Control Panel", (I assume there is a ASIO SDK call for that, ASIO4ALL had the same option) and that fails to open FlexASIO GUI, probably because the device is unplugged and the config is therefore invalid.
I also checked the task manager, and it shows some processes by Dante that have no user name associated with them. Stuff like "DanteViaAudioHelper", which very much is a sign that your theory is correct.
Is there anything that I can do on FlexASIOs side to make the config file apply globaly?

@dechamps
Copy link
Owner

dechamps commented Feb 14, 2025

Is there anything that I can do on FlexASIOs side to make the config file apply globaly?

No, but here's what I would do. Use procmon to discover any attempts to open a file with a path that ends with \FlexASIO.toml. This should tell you which process is loading FlexASIO, and it will also tell you which path it's looking for (and therefore where you should put the configuration file). You can also use this technique to know where to create the logfile.

@JomerDev
Copy link
Author

That worked, FlexASIO is now showing up with all channels separately and not just two. Thank you so much!
I still have a separate issue where I get no audio back through the device I'm using FlexASIO for, but I very much doubt that that has anything with FlexASIO (ASIO4ALL had the same issue, I can only assume that something else in my setup is broken)

@JomerDev
Copy link
Author

Hey @dechamps could I ask you to take a look at this log?
Can you see if there is audio incoming from the device? As I wrote in my earlier comment, I still have an issue where it seems that while output through the device connected via FlexASIO works fine, I never seem to get any input. I don't think FlexASIO is at fault here, but it would be great to know if the device itself isn't passing the audio along or if the Dante software isn't picking it up for whatever reason. I know that the device receives the audio it should pass along as input

FlexASIO.log

@dechamps
Copy link
Owner

Your log shows streaming is running with 32+32 channels. Unfortunately, FlexASIO does not log any information about the audio signal itself, so it's not possible to tell from the log if there is an actual signal or if it's just silence.

@JomerDev
Copy link
Author

Fair enough, thank you very much!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants