Поддержка звуковой системы
Этот небольшой урок посвящен довольно экзотической возможности математической системы МАТLАВ – работе со звуком. Стоит напомнить, что для этого компьютер должен быть оснащен звуковой картой и звуковыми колонками. Средства поддержки звука в МАТLАВ имеют рудиментарный характер, но все же они есть и позволяют разнообразить выполнение некоторых примеров.
Средства работы со звуком
Начиная с версии МАТЬАВ 5.0 в системе несколько расширены средства для работы со звуком. До этого система имела единственную звуковую команду:
- sound(Y.Р5) – воспроизводит сигнал из вектора У с частотой дискретизации Р5 с помощью колонок, подключенных к звуковой карте компьютера. Компоненты У могут принимать значения в следующих пределах -1.0<=у<=1.0. Для воспроизведения стереозвука на допускающих это компьютерных платформах У должен быть матрицей размера Мх2;
- sound(Y) – функционирует аналогично, принимая частоту дискретизации по умолчанию равной 8192 Гц;
- sound(Y,РS.ВIТS) – функционирует аналогично с заданием разрядности звуковой карты: ВIТS=8 или ВIТ=16.
Теперь появились дополнительные команды воспроизведения звука:
- sound(Y,…) – масштабирует и воспроизводит сигнал из массива У: По синтаксису команда аналогична – sound(Y,…);
- soundsc(Y,…,SLIМ) – аналогична предшествующей команде, но позволяет задать параметр SLIМ = [MIN(Y) MAX(Y)], определяющий тот диапазон значений Y, который будет соответствовать полному динамическому диапазону звука. По умолчанию SLIМ = [МIN(Y) МАХ(У)].
- Bеер оn или off – соответственно разрешает или запрещает гудок;
- s=bеер – возвращает состояние оn|off
- bеер – при s=оn издает гудок.
Кроме того, введены команды для считывания и записи файлов звукового формата .WAV, стандартного для операционных систем класса Windows:
- wavwrite(Y,WAVEFILE_Е) – записывает файл типа WAVE под именем WAVELIFE. Данные по каждому каналу в случае стерео записываются в разных столбцах массива. Величины должны быть в диапазоне [-1; 1];
- wavwrite(Y.FS.WAVEFILE) – делает то же с заданием частоты дискретизации FS (в герцах);
- wavwrite(Y,FS,NBITS,WAVEFILE) – делает то же с заданием числа бит на отсчет NBITS, причем NBITS<=16;
- Y=wavread(FILE) – считывает файл типа WAVE с именем FILE и возвращает данные в массиве Y;
- [Y,FS,BITS]=wavread(FILE) – считывает файл типа WAVE с именем FILE и возвращает массив данных Y, частоту дискретизации FS (в герцах) и разрядность BITS кодирования звука (в битах);
- […]=wavread(FILE.N) – возвращает только первые N отсчетов из каждого канала файла;
- […]=wavread(FILE, [N1 N2]) – возвращает только отсчеты с номерами от N1 до N2 из каждого канала;
- SIZ=wavread(FILE, 'size') – возвращает объем аудиоданных в виде вектора SIZ=[samples channels] (samples – число отсчетов, channels – число каналов);
- auwrite – записывает файл в соответствии со звуковым форматом фирм Sun и Next; auread воспроизводит файлы в MATLAB 6 на Sun и в MATLAB 5 на Next.