Filter löschen
Filter löschen

Can audioPlayerRecorder system object input stereo audio?

2 Ansichten (letzte 30 Tage)
Gene Goff
Gene Goff am 4 Sep. 2018
Beantwortet: JIAHUI LIAO am 15 Sep. 2021
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.

Antworten (3)

Astha Singh
Astha Singh am 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 am 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 am 15 Sep. 2021
You can try like this
aPR = audioPlayerRecorder('SampleRate',fs);
aPR.RecorderChannelMapping = 1:2;

Kategorien

Mehr zu Audio I/O and Waveform Generation finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by