Как воспроизвести три разных аудиофайла через три разных динамика?
У меня есть проект, и я должен воспроизвести 3 разных аудиофайла через 3 разных динамика. Время начала файлов важно (я имею в виду, что они должны начать играть одновременно).
Мой первый вариант - использование 3 сетевых компьютеров, по одному файлу на компьютеры и программа, управляющая этими тремя системами (например, одним сервером и двумя клиентами).
Но я думаю, что лучше использовать звуковую карту с 4 каналами, например. После некоторых поисков я обнаружил, что таких звуковых карт много. Я хочу знать, возможно ли управлять каналом с помощью программ Python или Matlab или любым другим способом? Есть ли библиотека?
1 ответ
Функция аудиоплеера в MATLAB поддерживает только 2 канала. Но вы можете использовать функциональность DSP System Toolbox. Фрагмент кода ниже может помочь:
hafr1 = dsp.AudioFileReader('myfile1.wav');% Can be other formats as well
hafr2 = dsp.AudioFileReader('myfile2.wav');
hafr3 = dsp.AudioFileReader('myfile3.wav');
hap = dsp.AudioPlayer;
hap.SampleRate = hafr1.SampleRate; % Assuming that all files have same sample rate or else you have to do some clever mixing.
while ~isDone(hafr1) % assuming same size. You need to add some clever logic to adjust the number of channels if they are of different sizes
data1 = step(hafr1);
data2 = step(hafr2);
data3 = step(hafr3);
step(hap, [data1 data2 data3]);
end
Этот код будет воспроизводить звук на устройстве вывода по умолчанию. Если в нем три или более каналов, вы услышите звук по 3 отдельным каналам. Если нет, в зависимости от платформы, он будет смешан в два канала.
Вы можете обратиться к странице документации для информации.
Динеш