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