Многоканальный аудиовход и Вывод

Можно получить и сгенерировать звуковые сигналы с помощью одного или нескольких доступных каналов поддерживаемого аудио устройства. Можно также одновременно управлять каналами на нескольких поддерживаемых аудио устройствах. В настоящее время Data Acquisition Toolbox™ поддерживает звуковые каналы для устройств, которые работают с интерфейсом DirectSound. Используя основанный на сеансе интерфейс, вы можете:

  • Получите и сгенерируйте звуковые сигналы или в последовательности или как отдельные операции.

  • Получите и сгенерируйте сигналы параллельно, где сигналы могут совместно использовать время начала.

  • Получите данные в фоновом режиме и фильтр или обработайте входные данные одновременно. Можно сразу сгенерировать данные в ответ на обработанные входные данные. В этом случае и операции приобретения и генерации запускаются и останавливаются вместе.

Вы не можете читать непосредственно из или записать непосредственно в файлы, использующие многоканальную функцию аудио. Используйте audioread и audiowrite.

Многоканальный аудио уровень сеанса

Уровень сеанса на аудио сеансе является уровнем в который демонстрационные аудиоданные сеанса. Все каналы на сеансе имеют тот же уровень сеанса. Уровень сеанса по умолчанию для аудио сеанса составляет 44 100 Гц. Если у вас есть несколько устройств на сеансе, убедитесь, что они могут все действовать на общем уровне сеанса. Для стандартных частот дискретизации смотрите свойство StandardSampleRates.

Можно выбрать значение, которое промежуточно стандартные значения. Тулбокс квантует уровень набора к самому близкому стандартному уровню. Если вы выбираете уровень вне областей значений стандартных уровней, сеанс может использовать его, если устройство, которое вы используете, поддерживает его. Чтобы использовать нестандартные уровни, необходимо установить UseStandardSampleRates на false. Вы не можете установить уровень ниже стандартного минимального уровня или выше стандартного максимального уровня.

Многоканальный диапазон звуковых частот

Данные вы получаете или генерируете звуковые каналы использования, содержит значения с двойной точностью. Эти значения нормированы к области значений -1 к +1. Сеанс представляет данные, полученные или сгенерированные в амплитуде без модулей. Аудио свойство Range сеанса только для чтения и установлено в [-1 1].

Получите многоканальные аудиоданные

Этот пример показывает, как получить аудиоданные в течение семи секунд и отобразить данные на графике.

Узнайте аудио устройства, установленные в вашей системе, и создайте сеанс для устройств DirectSound.

d = daq.getDevices
s = daq.createSession('directsound')

Добавьте два канала аудиовхода для микрофона с ID Audio1. Убедитесь, что микрофон включается в соответствующий разъем.

addAudioInputChannel(s,'Audio1', 1:2);

Установите сеанс запускаться в течение 7 секунд и проигрывать аудио сегмент для микрофона, чтобы взять.

s.DurationInSeconds = 7

Получите данные на переднем плане и отобразите данные на графике по сравнению со временем.

[data,t] = startForeground(s);
plot(t, data);

Сгенерируйте звуковые сигналы

Этот пример показывает, как сгенерировать звуковые сигналы с помощью Сеанса. Этот пример использует, но не требует, 5,1 аудиосистем канала.

В этом примере вы генерируете звуковой сигнал с помощью звуковой карты на использующем компьютеры 5,1 настроек динамика канала. Прежде чем вы начнете, проверите, что ваша среда настраивается так, чтобы можно было сгенерировать данные со звуковой картой. Для получения дополнительной информации обратитесь к "Поиску и устранению проблем в Data Acquisition Toolbox".

Загрузите звуковой сигнал

Загрузите звуковой файл, содержащий выборку "Хора Аллилуйи Генделя".

load handel;

Постройте звуковой сигнал

Отобразите данные на графике в порядке идентифицировать пять отличных сегментов. Каждый сегмент представляет "Аллилуйю" в хоре. Сегменты аннотируются как 1 - 5.

ly = length(y);
lspan = 1:ly;
t = lspan/Fs;

hf = figure;
plot(t,y./max(y))
axis tight;
title('Signal (Handel''s Hallelujah Chorus) vs Time');
xlabel('Time (s)');
ylabel('Amplitude');

markers = struct('xpos',[0.2,0.4,0.55,0.65,0.8],'string',num2str([1:5]'));
for i = 1:5,
    annotation(hf,'textbox',[markers.xpos(i) 0.48 0.048 0.080],'String', markers.string(i),'BackgroundColor','w','FontSize',16);
end

Просмотрите все доступные аудио устройства

d = daq.getDevices
d = 

Data acquisition devices:

index   Vendor    Device ID                            Description                           
----- ----------- --------- -----------------------------------------------------------------
1     directsound Audio0    DirectSound Primary Sound Capture Driver
2     directsound Audio1    DirectSound Microphone (High Definition Audio Device)
3     directsound Audio2    DirectSound HP 4120 Microphone (2- HP 4120)
4     directsound Audio3    DirectSound Microphone (Plantronics .Audio 400 DSP)
5     directsound Audio4    DirectSound Digital Audio (S/PDIF) (High Definition Audio Device)
6     directsound Audio5    DirectSound Primary Sound Driver
7     directsound Audio6    DirectSound Speakers (Plantronics .Audio 400 DSP)
8     directsound Audio7    DirectSound HP 4120 (2- HP 4120)
9     directsound Audio8    DirectSound Speakers (High Definition Audio Device):1
10    directsound Audio9    DirectSound Speakers (High Definition Audio Device):2

Этот пример использует 5,1 аудиосистем канала с устройством ID 'Audio8'.

dev = d(9)
dev = 

directsound: DirectSound Speakers (High Definition Audio Device):1 (Device ID: 'Audio8')
   Audio output subsystem supports:
      -1.0 to +1.0  range
      Rates from 80.0 to 1000000.0 scans/sec
      8 channels ('1' - '8')
      'Audio' measurement type
   


Создайте аудио сеанс

1. Создайте сеанс с directsound как поставщик и добавьте канал аудиовыхода в него.

s = daq.createSession('directsound');
noutchan = 6;
addAudioOutputChannel(s, dev.ID, 1:noutchan);

2. Обновите уровень сеанса, чтобы совпадать с уровнем выборки аудио.

s.Rate = Fs

3. Поставьте ту же форму волны в очередь ко всем доступным каналам/динамикам. Если дополнительный, различная речь доступна, они должны быть поставлены в очередь к соответствующим каналам.

queueOutputData(s,repmat(y,1,noutchan));

4. Запустите приоритетную генерацию. Необходимо услышать выборку "Хора Аллилуйи Генделя". "Аллилуйя" должна быть озвучена пять раз, один для каждого сегмента, изображенного в фигуре по всем каналам акустической системы.

startForeground(s);

5. Закройте фигуру.

close(hf);
s = 

Data acquisition session using DirectSound hardware:
   No data queued.  Will run at 8192 scans/second.
   Number of channels: 6
      index Type Device Channel MeasurementType     Range     Name
      ----- ---- ------ ------- --------------- ------------- ----
      1     audo Audio8 1       Audio           -1.0 to +1.0
      2     audo Audio8 2       Audio           -1.0 to +1.0
      3     audo Audio8 3       Audio           -1.0 to +1.0
      4     audo Audio8 4       Audio           -1.0 to +1.0
      5     audo Audio8 5       Audio           -1.0 to +1.0
      6     audo Audio8 6       Audio           -1.0 to +1.0
   
Для просмотра документации необходимо авторизоваться на сайте