Содержание

Программирование звука

Romtek 2010/08/07 01:04

Pavia

Введение

Оцифровка сигнала включает в себя два процесса: дискретизацию и квантизацию.

После оцифровки (процесс Analog-Digital-Conversion, ADC) непрерывный аналоговый сигнал звука <math>x_a(t)</math> (a-analog) принимает форму <math>x_d[n]</math> (d-digital).

Если аналоговый сигнал может принимать вещественные значения, <math>t \in \mathbb{R}</math>, то оцифрованный сигнал может принимать целочисленные значения, <math>n \in \mathbb{N}</math>. При оцифровке функция аналогового сигнала разбивается на равные промежутки времени (доли секунды), задаваемые частотой дискретизации <math>f_s</math> (s-sample), определяемой как количество семплов (промежутков времени) в секунду.
Часто используется частота дискретизации 44100 герц. Но это зависит от диапазона передаваемых частот. Чем шире диапазон передаваемых частот, тем выше должна быть частота дискретизации <math>f_s</math>.

Для синтеза (см. ниже) звукового сигнала с частотой <math>f_0</math> необходимо задать частоту дискретизации не менее <math>f_s = 2 f_0</math> согласно теореме Найквиста-Котельникова 1).

При оцифровке сигнала учитывается и уровень квантизации амплитуды, задаваемый в битах (N бит).
Таким образом, амплитуда звуковой волны задаётся числами в диапазоне <math>-2^N .. 2^{N-1}</math>. Как правило, для оцифровки звука используют 16 бит и, реже, 32 бита. Для оцифровки сигналов с микрофона достаточно 8 бит.

Генерация примитивных звуковых сигналов

Любой звуковой сигнал может быть представлен в виде суммы колебаний (волн) разных частот и амплитуд. Накладываясь одна на другую, вместе они составляют сложный звук.

Каждая волна задана формулой <math>x(t)=A \cos (2 \pi f t)</math> для аналогового сигнала и <math>x_n=A \cos (2 \pi f n)</math> - для цифрового. A - амплитуда волны, а f - частота волны. t и n - текущий отсчёт во времени времени или семпл.

Составляющие (колебания) звукового сигнала называют гармониками.

Синусоида

Прямоугольный

Треугольный

Пилообразный