Can I use two unique ASIO audio devices at once?
16 views (last 30 days)
Show older comments
Michael Sonnenberg
on 24 Oct 2022
Commented: Rich Herr
on 7 Mar 2024
I have a test script in which I am evaluating the spatial audio performance of several MEMS microphones placed around a Head and Torso Simulator (HATS). The MEMS microphones are connected via USB to a miniDSP MCHStreamer Lite (https://www.minidsp.com/products/usb-audio-interface/mchstreamer-lite) and I have an array of speakers at various elevation angles being controlled by an RME Fireface UFX+ and external power amplifier.
My question is, is there a way to simultaneously use a miniDSP ASIO driver for input capture and an RME ASIO driver for output playback? I was using the audioPlayerRecorder function with the RME device connected to the speaker array and a single non-MEMS reference microphone. I briefly attempted to use audioDeviceWriter (RME ASIO driver) and audioDeviceReader (miniDSP ASIO Driver) in the same while loop per the following code but then I received the following error:
Device Writer (Playback only)
deviceWriter = audioDeviceWriter(...
'Driver','ASIO',...
'Device','ASIO MADIface USB',...
'SampleRate',fs,...
'ChannelMappingSource','Property',...
'ChannelMapping',33:34);
Device Reader (Capture only)
deviceReader = audioDeviceReader(...
'Driver','ASIO',...
'Device','miniDSP ASIO Driver',...
'SampleRate',fs,...
'ChannelMappingSource','Property',...
'ChannelMapping',1:2:15);
while ~isDone(fileReader)
audioData = fileReader();
deviceWriter(audioData);
acquiredAudio = deviceReader();
fileWriter(acquiredAudio);
end
release(fileReader)
release(deviceWriter)
Error using audioDeviceReader/setup
PortAudio Error: Device unavailable
Error in audioDeviceReader/setupImpl
The MCHStreamer Lite does have a Toslink Optical out cable, so I'm going to see if I can squeeze that into my current hardware setup and just rely on the RME device, but in the meantime I would appreciate any advice.
0 Comments
Accepted Answer
Jimmy Lapierre
on 24 Oct 2022
Unfortunately, Windows does not allow loading multiple ASIO drivers at the same time, so MATLAB cannot do so. You might be able to get around this limitation using ASIO4ALL if it can be used to specify these devices as input and output. But no guarantee there, and that won't necessarily give you "native" ASIO performance.
8 Comments
Jimmy Lapierre
on 8 Nov 2022
In cases where latency changes every run like that, you need to do something similar to what the Impulse Response Measurer app does, which is measure latency and IR without interruption (one quick sweep to measure latency, silence, a measurement sweep, silence). Probably better to also record all mics at the same time using the same device.
Did you try using ASIO4ALL and setting it up to use your two devices? If that works, you could just use audioPlayerRecorder (ASIO).
Rich Herr
on 7 Mar 2024
Hi Michael...ex-Leaper here. Say hi to Mark and Joel for me.
I've had some luck with Matlab Parallel toolbox for similar stuff, but I'm not sure if it'll get you both cards as ASIO and you'll probably still have some version of varying delay and needing to time sync with xcorr or impulse response.
More Answers (0)
See Also
Categories
Find more on Audio I/O and Waveform Generation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!