Синтез звуков — Audio
Подпакет Audio служит для генерации стандартных звуковых сигналов разной формы, частоты и длительности, модуляции сигналов по амплитуде и по частоте и считывания звуковых файлов с дисков. Для создания звуковых объектов служит функция Waveform:
-
Waveform [type, freq, dur] — создает звуковой сигнал формы type с частотой freq (в герцах) и длительностью dur (в секундах). Возможны следующие формы сигнала: Sinusoid — синусоидальный, Triangle — треугольный, Square — прямоугольный и Sawtooth — пилообразный;
-
Waveform [type, freq, dur, Overtones->n] — создает звуковой сигнал формы type с частотой freq (в герцах) и длительностью dur (в секундах), имеющий п гармоник.
Приведенный на рис. 13.1 пример дает генерацию прямоугольного сигнала частотой 1000 Гц и длительностью 0.5 с. Следует обратить внимание.на то, что созданный звуковой объект проигрывается и показывается после команды Show.
Звуковой объект, как отмечалось, ассоциируется с графическим объектом. К сожалению, явной связи между осциллограммой звукового сигнала и его графическим образом нет. Более того, вид графического объекта сильно зависит от компьютерной платформы, на которой установлена система Mathematica. Так что графический звуковой объект — это просто некий условный графический образ звукового сигнала.
Рисунок 13.2 показывает генерацию прямоугольного сигнала с двумя гармониками. Здесь используется опция Overtones->2. Ее нельзя применять к синусоидальному сигналу, поскольку он принципиально не имеет гармоник.
Рис. 13.1.
Создание и просмотр звукового объекта — синусоидального сигнала
Рис. 13.2.
Генерация прямоугольного сигнала с двумя гармониками
Когда указана опция Overtones, функция Waveform использует ряд Фурье для создания высших гармоник, обогащающих тембр звука. При этом возможно изменение числа гармоник. Возможно также создание сигнала с заданными номерами и амплитудами гармоник. Для этого служит функция ListWaveform:
-
ListWaveform[ { {nl, al}, {n2, a2 },...}, freq, dir] — создает звуковой объект с частотой основной гармоники f req и длительностью dir, содержащий дополнительные частоты с кратностями ni и амплитудами ai.
На рис. 13.3 представлен пример создания звукового объекта сложного типа, содержащего ряд частотных составляющих.
Данные представлены списком partial-List. С помощью функции Table подготовлен объект, содержащий шесть звуковых подобъектов.
Рис. 13.3.
Генерация многочастотного сигнала
Для создания звуковых объектов, порождающих звук с амплитудной и частотной модуляцией, служат следующие функции:
-
AmplitudeModulation [f
c
, f
m
,m
t
,dur] — создает амплитудно-модулирован-ный синусоидальный сигнал с несущей частотой f
c
, частотой модуляции f
m
, коэффициентом модуляции m. и длительностью dur. Опция RingModula-tion->True позволяет получить амплитудную модуляцию с подавленной несущей;
-
FrequencyModulation [f
c
, {{f
m
,pd}, dur] — создает частотно-модулированный синусоидальный сигнал с несущей частотой f
c
, модулированный по частоте сигналом с частотой модуляции f
m
, с девиацией частоты pd (в герцах) и длительностью dur.
Рисунок 13.4 демонстрирует создание звукового объекта с амплитудной и частотной модуляцией. Обратите внимание на то, что объект показывается сразу, поскольку в состав его выражения включена команда //Show.
Для создания сложных сигналов с частотной модуляцией функция Frequency-Modulation используется в следующем виде:
-
FrequencyModulation [fc, {{f l,pdl}, (f2,pd2 },...}, dur] — создает частотно-модулированный синусоидальный сигнал длительностью dur с несущей частотой f с и каскадом частот модуляции fmi с девиациями pdi. Опция ModulationType->Parallel создает сигнал, независимо промодулированнып всеми указанными частотами, а опция ModulationType->Cascade включает режим, при котором перечисленные частоты последовательно модулируют друг друга.
Рисунок 13.5 показывает создание и воспроизведение композитного звуковок сигнала. Он представлен списком объектов {s 1, s 2, s 3}.
Рис. 13.4.
Генерация звуковых объектов с амплитудной (сверху) и частотной (снизу) модуляцией
Рис. 13.5.
Генерация композитного звукового сигнала
Для считывания звуковых файлов с магнитного диска служит функция Read-Soundfile:
-
ReadSoundf ile [ "soundfile" ] — опознает файлы разного формата и конвертирует их в список, содержащий целые числа в диапазоне от -32 768 до +32 767.Опция PrintHeader->True позволяет вывести отчет о звуковом файле. Поддерживаются следующие форматы звуковых файлов: NeXT/Sun, WAVE и AIFF.
Разумеется, считываемый звуковой файл должен быть расположён в текущей директории или его имя должно точно указывать местоположение файла. Файлы отображаются соответствующим графическим образом (как описывалось выше).
Содержание раздела