Можно получить и сгенерировать звуковые сигналы с помощью одного или нескольких доступных каналов поддерживаемого аудио устройства. Можно также одновременно управлять каналами на нескольких поддерживаемых аудио устройствах. В настоящее время 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