Audio Input and Output
You can acquire and generate audio signals using one or more available channels of a supported audio device. You can also simultaneously operate channels on multiple supported audio devices. Data Acquisition Toolbox™ supports audio channels for devices that work with the DirectSound interface. You can:
Acquire and generate audio signals either in sequence or as separate operations.
Acquire and generate signals simultaneously where the signals may share their start time.
Acquire audio data in the background and filter or process the input data simultaneously. You can generate data immediately in response to the processed input data. In this case, both the acquisition and generation operations start and stop together.
Data Acquisition Toolbox does not read directly from or write directly to audio files using the
multichannel audio feature. Instead, use the MATLAB® functions audioread
and audiowrite
.
Multichannel Audio Scan Rate
The Rate
of an audio DataAcquisition is the scan rate at which
it samples audio data. All channels in a DataAcquisition have the same scan rate.
The default DataAcquisition rate for an audio DataAcquisition is 44100 Hz. If you
have multiple devices in the DataAcquisition, make sure that they can all operate at
a common scan rate.
Audio Measurement Range
Data you acquire or generate using audio channels contains double-precision
values. These values are normalized to the range of -1
to
+1
. The DataAcquisition represents data acquired or generated
in amplitude without units.
Acquire Audio Data
This example shows how to acquire audio data for seven seconds and plot the result.
Discover DirectSound audio devices installed on your system and create a DataAcquisition for these devices.
dev = daqlist;
dev = 4×4 table DeviceID Description Model DeviceInfo ________ ____________________________________________________ ________________________________________ __________________________ "Audio0" "DirectSound Primary Sound Capture Driver" "Primary Sound Capture Driver" [1×1 daq.audio.DeviceInfo] "Audio1" "DirectSound Headset Microphone (Plantronics BT600)" "Headset Microphone (Plantronics BT600)" [1×1 daq.audio.DeviceInfo] "Audio2" "DirectSound Primary Sound Driver" "Primary Sound Driver" [1×1 daq.audio.DeviceInfo] "Audio3" "DirectSound Headset Earphone (Plantronics BT600)" "Headset Earphone (Plantronics BT600)" [1×1 daq.audio.DeviceInfo]
d = daq("directsound")
d = DataAcquisition using DirectSound hardware: Running: 0 Rate: 44100 NumScansAvailable: 0 NumScansAcquired: 0 NumScansQueued: 0 NumScansOutputByHardware: 0 RateLimit: []
Add an audio input channel for the microphone with id
Audio1
. The measurement type is
Audio
.
addinput(d,"Audio1",1,"Audio");
ch = Index Type Device Channel Measurement Type Range Name _____ ______ ________ _______ ________________ ______________ __________ 1 "audi" "Audio1" "1" "Audio" "-1.0 to +1.0" "Audio1_1"
Acquire 7 seconds of data in the foreground and plot the data versus time.
[data,t] = read(d, seconds(7), "OutputFormat","Matrix"); plot(t,data)