Can the audiostreamer buffer size be read when it is set to Auto with an ASIO driver?
Afficher commentaires plus anciens
In the new 'audiostreamer' object (introduced in R2025a), the DeviceBufferSize can be set to "auto", for which the documentation says "For ASIO, it is generally fixed by the device (see asiosettings)". Is there any way of reading back what buffer size it has gotten from the ASIO driver? That would be very useful in optimizing my code
Réponses (1)
Hi Glenn,
I understand you want to know how to determine the actual buffer size being used by the "audiostreamer" object when set to "auto" with an ASIO driver.
To do this, you should first check which ASIO devices are available on your system by running the following command:
>> devices = audiostreamer.getAudioDevices()
Once you know the exact device name, you can use MATLAB’s ASIO settings functionality to query the current buffer size that the device is using. This buffer size is determined by the ASIO driver and is what audiostreamer will use in "auto" mode. The buffer size information can be accessed through the "asiosettings" command interface in MATLAB.
You can refer the following document to know more about audio I/O buffering:
Hope this helps!
5 commentaires
Jimmy Lapierre
le 15 Déc 2025
Modifié(e) : Jimmy Lapierre
le 15 Déc 2025
Ayush is correct. For ASIO, the frame size in "auto" mode is specified by the ASIO device driver. Here's how I'd do it (at least with the latest version) :
>> as = audiostreamer(Driver="ASIO")
>> asiosettings(as)
I'm curious to know if there's a use-case for doing this entirely programmatically, but I don't think we know the "auto" frame size until the device has started playing and/or recording. Also, some drivers like DirectSound have buffer sizes that change every frame when set to "auto" mode.
Glenn Kubota
le 15 Déc 2025
Jimmy Lapierre
le 17 Déc 2025
Have you looked into the callback options? You could process audio the moment it becomes available, and this also keeps the Command Window unblocked. RecorderFcn can be any matlab function that takes two inputs, the audiostreamer object and the event description struct. That function can process the recorded and play the result. Just for illustration, the following displays how many samples were read in the callback.
as = audiostreamer(Mode="full-duplex",Driver="ASIO")
as.RecorderFcn = @(obj,ev)disp(size(read(as),1)) % display how many samples were read
record(as)
...
stop(as)
Glenn Kubota
le 18 Déc 2025
Jimmy Lapierre
le 18 Déc 2025
Hi Glenn, I have recently seen the doubling issue. It happens with some brands but not others, so I suspect it's a device driver issue, but we found a way to avoid the problem with a change on our end. This will ship in 26a and a 25b update.
Catégories
En savoir plus sur Audio I/O and Waveform Generation dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!