Clear Filters
Clear Filters

Can audioPlayerRecorder system object input stereo audio?

2 views (last 30 days)
Can the audioPlayerRecorder system object input stereo audio? I know it can output stereo audio, but looking at the diagrams and code examples for the audioPlayerRecorder system object it appears it can only input one channel at a time. Testing my code, when I output stereo audio, audioPlayerRecorder still only inputs a one-channel vector.

Answers (3)

Astha Singh
Astha Singh on 11 Sep 2018
Essentially, once you have created an audioPlayerRecorder System Object (here ‘playRec’)
playRec = audioPlayerRecorder
the audio signal read from the device (‘audioFromDevice’) depends on size and data type of the data being written (‘audioToDevice’) to the audio device selected
audioFromDevice = playRec(audioToDevice)
Thus if you are sending a two channel stereo audio data to be played, a two-channel audio data only will be read through the sound card.

Gene Goff
Gene Goff on 13 Sep 2018
Thank you, but this is incorrect. The Matlab test file attached demonstrates that the audioFromDevice is always mono (one channel) regardless if the audioToDevice is mono or stereo (two channel). Please provide a remedy for this problem because I need to output and input stereo audio simultaneously. The audioDeviceReader and audioDeviceWriter objects cannot be used simultaneously and therefore is not a solution. Thank you for your help.
clc fprintf('Working....\n')
frameLength = 2048; Fs = 44100; osc = audioOscillator('SignalType','sine','Frequency',400,'SamplesPerFrame',frameLength,'SampleRate',Fs);
% instantiate the audioPlayerRecorder object with your particular sound card here playRecObj = audioPlayerRecorder('SampleRate',Fs,'Device','US-2x2 & US-4x4','BitDepth','32-bit float');
frameCtr = 1; tic; while toc < 2 % play for 2 seconds monoSinewave = 0.1 * osc(); stereoSinewave = [monoSinewave monoSinewave]; audioToDevice = stereoSinewave;
audioFromDevice = playRecObj(audioToDevice);
% display in the command window the number of output and input channels
if frameCtr==1
audioToDeviceSize = size(audioToDevice)
audioFromDeviceSize = size(audioFromDevice)
end
frameCtr = frameCtr + 1;
end
release(audioFileReaderObj); release(audioFileWriterObj); release(playRecObj); fprintf('Done!.\n')

JIAHUI LIAO
JIAHUI LIAO on 15 Sep 2021
You can try like this
aPR = audioPlayerRecorder('SampleRate',fs);
aPR.RecorderChannelMapping = 1:2;

Categories

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

Products

Community Treasure Hunt

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

Start Hunting!