Can I use two unique ASIO audio devices at once?

13 views (last 30 days)
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)
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.

Accepted Answer

Jimmy Lapierre
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
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
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.

Sign in to comment.

More Answers (0)

Categories

Find more on Audio I/O and Waveform Generation in Help Center and File Exchange

Products


Release

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!