-
Notifications
You must be signed in to change notification settings - Fork 89
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
Examples don't work on Windows with ASIO #133
Comments
I came across this guide for building portaudio for windows (with some specifics for ASIO use) - not sure if it helps? It seems strange that processes would give up on accessing ASIO if already in use - shouldn't it be ASIOs job to manage signals from multiple processes (or at least invoke the OS to do so)? I.e. Reaper and Ableton should be able to play back simultaneously right? |
So I'm just having a closer look at the
|
Note that none of the above are listed as duplex devices, i.e. each of them claim to only offer either input channels or output channels (not both). Strangely, the last two devices ( |
The
It seems that the default devices used are Oh also, it looks like it is choosing for (_idx, info) in pa.host_apis() {
println!("{:#?}", info);
} Edit: It looks like this might indeed be the case - see the bottom of this stackoverflow answer by Bencina himself (creator of PortAudio). |
I just added an example for displaying the default host API and enumerating all available host APIs. |
Hey, I found out what was wrong. Even though I had set Anyway, so I corrected it and rebuilt the dll and changed the saw example to use ASIO specifically (required another struct, AsioStreamInfo, based on this), but it still doesn't work, it opens the audio interface but I still hear no saw wave! Why can this be? This is the code and output: |
Related - #22 is the tracking issue for supporting the PortAudio extension headers. |
I built portaudio from the latest SVN snapshot with ASIO support (no other API) and debugging enabled for win32.
(I have an ASIO compatible audio interface (Steinberg UR22) that works with ASIO usually, which portaudio correctly identifies as the default device.)
Then tried to run the examples (also win32), but they don't work as they should.
What they have in common is this output from portaudio:
So for some reason it can't open the audio interface.
The blocking example crashes sometimes (sometimes not), the others run but there is no sound coming out.
Maybe the issue is with the access to the audio interface?
I noticed that some DAWs that support ASIO as a backend will give up if the audio interface is already in use, and others will "steal" the access from the existing owner. How can I force portaudio to steal the access? (Even though in this case I think the audio interface shouldn't have been in use.)
See debug output in the attachments:
blocking.txt
devices.txt
non_blocking.txt
saw.txt
sine.txt
I tried to debug the examples using Visual Studio but it only shows asm, not very helpful:
The point of failure is apparently in wdmaud.drv. But my audio interface works with ASIO in other Software like Reaper, Ableton etc. so somehow portaudio must be causing it..
Maybe portaudio is trying to open the device using the wrong parameters?
The text was updated successfully, but these errors were encountered: