Генерация Многоканального Аудио

В этом примере показано, как настроить непрерывную аудио генерацию с помощью нескольких звуковых каналов на сеансе. Сигнал, выборка "Хора Аллилуйи Генделя" разбита в непрерывные сегменты и воспроизведена в двух частях. Первая часть примера проигрывает каждый сегмент на одном динамике и сабвуфере. Вторая часть проигрывает каждый сегмент на различном наборе динамиков (хор речи).

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

Загрузите аудиоданные

Загрузите "Аллилуйю" Генделя.

Переменные загрузки:

  • y представление формы волны Аллилуйи

  • Фс представляя частоту дискретизации

load handel;

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

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

d = daq.getDevices
%
% Create a data acquisition session using |directSound| as the vendor ID.
% DirectSound sound cards are available on all windows platforms.
%
s = daq.createSession('directsound')
d = 

Data acquisition devices:

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

s = 

Data acquisition session using DirectSound hardware:
   Will run for 1 second (44100 scans) at 44100 scans/second.
   No channels have been added.
   

Добавьте каналы и настройте уровень, чтобы совпадать с аудио частотой дискретизации.

Add six audio output channels and set the session rate to the audio
sampling rate.
addAudioOutputChannel(s, 'Audio7', 1:6);
s.Rate = Fs
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 Audio7 1       Audio           -1.0 to +1.0
      2     audo Audio7 2       Audio           -1.0 to +1.0
      3     audo Audio7 3       Audio           -1.0 to +1.0
      4     audo Audio7 4       Audio           -1.0 to +1.0
      5     audo Audio7 5       Audio           -1.0 to +1.0
      6     audo Audio7 6       Audio           -1.0 to +1.0
   

Графическое изображение аудиоданных

Визуально Идентифицируйте аудио сегменты, которые соответствуют каждой "Аллилуйе" в хоре и выбирают демонстрационные числа, в которых эти сегменты запускаются и останавливаются. Каждый раскрашивает график, соответствует различному сегменту хора.

Создайте (или метка) конец каждого сегмента

Визуально идентифицируйте узлы сегментов и отметьте их.

segmentEnd = [20000, 36000, 45000, 55000, length(y)];

Задайте параметры динамика

Настройте выбор названного speakerselection динамиков, чтобы проигрывать пять сегментов "Аллилуйи" на шести различных динамиках.

nspeakers = 6;
nspeakergroups = 5;
speakerselection = cell(1, nspeakergroups);

Присвойте динамики группам для первой части примера

Каждый выбор динамика задает, какие докладчики от 5,1 Акустических систем канала должны проигрывать каждый аудио сегмент (эти присвоения могут варьироваться для вашей акустической системы). Для первой части примера мы используем один динамики, соединенные с сабвуфером (4).

  • Динамик 1: Левый фронт

  • Динамик 2: Правильная Передняя сторона

  • Динамик 3: Центр

  • Динамик 4: сабвуфер

  • Динамик 5: лево-задняя часть

  • Динамик 6: Правильная Задняя часть

speakerselection{1} = [4, 6]; % Segment 1; speakers 4 and 6
speakerselection{2} = [4, 5]; % Segment 2; speakers 4 and 5
speakerselection{3} = [1, 4]; % Segment 3; speakers 1 and 4
speakerselection{4} = [2, 4]; % Segment 4; speakers 2 and 4
speakerselection{5} = [3, 4]; % Segment 5; speakers 3 and 4

[singleChannelOutputs] = ...
    helper_surround_sound_single_voices(y, segmentEnd, nspeakers, nspeakergroups, speakerselection);

Данные очереди

Ставьте в очередь данные о выходе динамика

queueOutputData(s, singleChannelOutputs);

Запустите генерацию

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

startForeground(s);
pause(3);

Присвойте динамики группам для второй части примера

Каждый выбор динамика задает, какие докладчики от 5,1 Акустических систем канала должны проигрывать каждый аудио сегмент (эти присвоения могут варьироваться для вашей акустической системы). Для второй части примера мы используем группы динамиков. Обратите внимание на то, что сабвуфер (4) включен во все выборы динамика

  • Динамик 1: Левый фронт

  • Динамик 2: Правильная Передняя сторона

  • Динамик 3: Центр

  • Динамик 4: сабвуфер

  • Динамик 5: лево-задняя часть

  • Динамик 6: Правильная Задняя часть

speakerselection{1} = [4, 5, 6];          % Segment 1; speakers 4, 5, 6
speakerselection{2} = [1, 2, 4];          % Segment 2; speakers 1, 2, 4
speakerselection{3} = [3, 4];             % Segment 3; speakers 3, 4
speakerselection{4} = [1, 2, 3, 4];       % Segment 4; speakers 1, 2, 3, 4
speakerselection{5} = [1, 2, 3, 4, 5, 6]; % Segment 5; all speakers

[multiChannelOutput] = ...
    helper_surround_sound_single_voices(y, segmentEnd, nspeakers, nspeakergroups, speakerselection);

Данные очереди

queueOutputData(s, multiChannelOutput);

Запустите генерацию

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

startForeground(s);