Реферат: Методы и средства мультимедиа Звук

Название: Методы и средства мультимедиа Звук
Раздел: Рефераты по информатике
Тип: реферат

Московский авиационный институт

(государственный T E Xнический университет)

Факультет прикладной математики

Кафедра вычислительной математики и программирования

Методы и средства Мультимедиа. Звук

Преподаватель: О.В. Казанцев

Студент: И.К. Никитин

Москва, 2010

Содержание

1 Основные сведения о звуковых волнах 5

1.1 Характеристики . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.2 Закон Вебера-Фехнера для звука . . . . . . . . . . . . . . . . . . 6

1.3 Логарифмическая шкала . . . . . . . . . . . . . . . . . . . . . . . 6

1.4 Примеры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.5 Спектральное представление звука . . . . . . . . . . . . . . . . . 7

Искажения и эффекты 10

2 Линейные искажения 10

2.1 Линейные искажения . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.2 Искажения в многоканальных системах . . . . . . . . . . . . . . 10

3 Нелинейные искажения. Помехи и шумы 12

3.1 Примеры нелинейных искажений . . . . . . . . . . . . . . . . . . 12

3.1.1 Перегрузка . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.1.2 Интермодуляционные . . . . . . . . . . . . . . . . . . . . . 12

3.1.3 Биение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.2 Помехи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

4 Цифровой способ представления звука 14

4.1 Аналогово-цифровое преобразование . . . . . . . . . . . . . . . . 14

4.1.1 Фильтрация . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4.1.2 Дискретизация . . . . . . . . . . . . . . . . . . . . . . . . . 15

4.1.3 Квантование . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

5 Динамическая обработка звука 17

5.1 Компрессор и лимитер . . . . . . . . . . . . . . . . . . . . . . . . . 18

5.2 Гейт и экспандер . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

6 Частотная коррекция звукового сигнала 21

6.1 Частотные фильтры . . . . . . . . . . . . . . . . . . . . . . . . . . 21

6.1.1 Фильтр низких частот . . . . . . . . . . . . . . . . . . . . . 22

6.1.2 Фильтр высоких частот . . . . . . . . . . . . . . . . . . . . 22

6.1.3 Полосовый фильтр . . . . . . . . . . . . . . . . . . . . . . . 23

6.2 Эквалайзер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

7 Пространственные и модуляционные эффекты 25

7.1 Хорус, Фленджер, Фазер . . . . . . . . . . . . . . . . . . . . . . . . 25

7.2 Эхо . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

7.3 Реверберация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Синтез звука 30

8 Аддитивный синтез звука 31

9 Субтрактивный синтез звука 32

10Частотной модуляция 33

10.1Генератор, управляемый кодом . . . . . . . . . . . . . . . . . . . 33

10.2Частотная модуляция . . . . . . . . . . . . . . . . . . . . . . . . . 34

10.3Синтез . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

11Нелинейный синтез звука 36

12Таблицы волн 37

12.1WT-синтез . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

12.2Сэмплерные синтезаторы . . . . . . . . . . . . . . . . . . . . . . . 38

13Физическое моделирование 39

14Звуковые платы 40

14.1Состав звуковой платы . . . . . . . . . . . . . . . . . . . . . . . . 40

14.2Блок записи и воспроизведения . . . . . . . . . . . . . . . . . . . 41

14.3Блок синтезатора . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

14.4Блок DSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

14.5Блок интерфейсов . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

14.6Блок микшера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

MIDI-интерфейс 44

15MIDI-интерфейс 44

15.1Назначение MIDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

15.2Аппаратная реализация MIDI . . . . . . . . . . . . . . . . . . . . . 45

15.3Разъем DIN-5 (СГ-5) . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

16Протокол MIDI 47

16.1Адресация в MIDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

16.2Типы MIDI-сообщений . . . . . . . . . . . . . . . . . . . . . . . . . 48

16.2.1Канальные сообщения о звуке . . . . . . . . . . . . . . . . 48

16.2.2Канальные сообщения о режиме . . . . . . . . . . . . . . . 49

16.2.3Системные сообщения . . . . . . . . . . . . . . . . . . . . . 49

17Стандарты MIDI-систем 50

17.1General MIDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

17.2General Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

17.3Extended General MIDI (XG) . . . . . . . . . . . . . . . . . . . . . . 51

17.4Все вместе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

Запись и передача 53

18Секвенсоры 53

18.1Простейшая студия . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

18.2Студия для записи «живого» исполнения . . . . . . . . . . . . . . 53

18.3Студия для многоканальной записи . . . . . . . . . . . . . . . . . 54

18.4Студия для многоканальной записи с секвенсором . . . . . . . 55

18.5Секвенсор . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

18.5.1Паттерновые (Шаговые) . . . . . . . . . . . . . . . . . . . . 56

18.5.2Линейные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

19Маскирование 58

19.1Сжатие звука . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

20Формат MP3 60

20.1Алгоритм сжатия MP3 . . . . . . . . . . . . . . . . . . . . . . . . . 60

20.2Схема MP3 кодера . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

20.3Режимы кодирования стерео . . . . . . . . . . . . . . . . . . . . . 61

20.4Психоакустические форматы . . . . . . . . . . . . . . . . . . . . . 62

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

21Основные программные интерфейсы 63

22Программный интерфейс MME 63

22.1Способы кодирования звука . . . . . . . . . . . . . . . . . . . . . 64

22.2Формат потока . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

22.3Структура потока . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

22.4Системные особенности . . . . . . . . . . . . . . . . . . . . . . . . 66

22.4.1Несколько процессов . . . . . . . . . . . . . . . . . . . . . . 66

22.4.2Wave Mapper . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

22.4.3Устройства . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

22.5Алгоритм взаимодействия . . . . . . . . . . . . . . . . . . . . . . . 69

23Программный интерфейс DirectSound 71

23.1Назначение, структура, особенности . . . . . . . . . . . . . . . . 71

23.2Аппаратная поддержка . . . . . . . . . . . . . . . . . . . . . . . . 71

23.3Звуковые буферы . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

23.3.1Аппаратные и программные . . . . . . . . . . . . . . . . . 72

23.3.2Первичный и вторичные . . . . . . . . . . . . . . . . . . . 73

23.4Уровни взаимодействия . . . . . . . . . . . . . . . . . . . . . . . . 77

23.5Наборы свойств . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

23.6Идентификация устройств . . . . . . . . . . . . . . . . . . . . . . 78

23.7Системные особенности . . . . . . . . . . . . . . . . . . . . . . . . 78

23.8Алгоритм взаимодействия . . . . . . . . . . . . . . . . . . . . . . . 79

23.8.1Воспроизведение . . . . . . . . . . . . . . . . . . . . . . . . 79

23.8.2Запись . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

Предметный указатель 81

1. Основные сведения о звуковых волнах

1.1. Характеристики

Звуковая волна — процесс распространения в сплошной среде объемных деформаций.

Забавно, заметить, если длинна волны больше расстояния между ушами человека, то он не сможет определить откуда идет звук.

Порог слышимости — минимальное значение интенсивности звука, воспринимаемым человеческим ухом.

Порог слышимости зависит от частоты звуковой волны. Минимальное значение лежит в частоте 2 кГц и составляет м

Порог болевого ощущения — интенсивность звука вызывающего болевые ощущения.

Порог болевого ощущения не зависит от частоты звуковой волны. Значение составляет 10 [м Вт 2 ]

1.2. Закон Вебера-Фехнера для звука

Теоремма 1 (Закон Вебера-Фехнера). Слух одинаково оценивает равные относительные изменения силы звука.

1.3. Логарифмическая шкала

L — интенсивность в Беллах.

I — интенсивность.

I 0 — порог.

1.4. Примеры

Шум Громкость Фоновый 10 Дб

Транспорт 70 Дб

Оркестр 90 Дб Наушники 100 Дб

Реактивный двигатель 120 Дб

Болевой порог 130 Дб

1.5. Спектральное представление звука

Звук представим в виде спектра:

x (t ) = X · sin(2 · π · f · t + φ );

Даже белый шум представим как сумма гармоник, но не синусоидальных, а интегральных.

A — амплитуда;

f — частота.

Изобразим первый член ряда:

Изобразим два члена ряда:

Изобразим три члена ряда:

.x (t )

Изобразим четыре члена ряда:

Изобразим десять членов ряда:

Наблюдаемые горбы (осциляции) называются эффектом Гиббса .

Таким образом можно изобразить звуковой спектр на графике:

≺ Искажения и эффекты ≻

2. Линейные искажения

Искажение — изменение формы сигнала после прохождения через электроакустические устройства.

2.1. Линейные искажения

Линейное искажение — искажения, которые проявляются в неодинаковом усилении передачи или воспроизведении различных гармоник, составляющих звуковой сигнал, независимо от их уровня

В случае спектра происходит изменение коэффициентов ряда Фурье. Изменяется только амплитуда набора гармоник.

При измерении искажений используется логарифмическая формула:

2.2. Искажения в многоканальных системах

Искажения в этих системах чаще всего симметричны. Выделяют 3 вида разбалансировки системы.

Разбалансировка громкости — явление, при котором, какой-то канал многоканальной системы передает звук громче.

Фазовая разбалансировка — явление, при котором, различные каналы многоканальной системы передают сигнал с разной скоростью.

Переходные помехи — явление, при котором, сигнал из одного канала многоканальной системы проникает в другой канал.

3. Нелинейные искажения. Помехи и шумы

Нелинейное искажение — заключается в изменении набора гармоник, обычно выше определенной частоты.

Особенность: степень проявления зависит от амплитуды входного сигнала. Коэффициент гармоник

%

x 0 — амплитуда выходного сигнала;

x 1 ...xn — амплитуды наведенных гармоник.

3.1. Примеры нелинейных искажений

3.1.1. Перегрузка

Это искажение часто используется для «обогащения» звука, например для

электрогитар.

3.1.2. Интермодуляционные

Более мощный низкочастотный сигнал вызывает амплитудную модуляцию у более слабого высокочастотного сигнала

3.1.3. Биение

Появление разностной частоты при воздействии на нелинейную систему двух сигналов с близкими частотами.

3.2. Помехи

Помехи порождают в выходном сигнале гармоники которые не зависят от входного сигнала.

Уровень шумов и наводок можно оценить с помощью формулы:

4. Цифровой способ представления звука

4.1. Аналогово-цифровое преобразование

4.1.1. Фильтрация

Фильтрация — отсечение всех сигналов, частоты которых выше частоты, которая требуется для преобразования.

Граница на которой фильтр срезает частоту чаще всего имеет ширину 2кГц.

Оверсэмплинг — фильтрация на высокой частоте.

.x (t ) .x (t )

.−X ⇒ .−X

4.1.2. Дискретизация

Дискретизация — процесс взятия отсчетов непрерывного во времени сигнала в равно отстоящие друг от друга временных точках. Интервал дискретизации — интервал времени через который производится взятие от-

счетов.

Теоремма 2 (Котельникова-Найквиста-Шенона). Сигнал, спектр частот, которого занимет область частот до F max Может быть полностью представлен дискретными отсчетами с интервалами не привышаюзими

• Частота 44.1 кГц — стандарт для Audio CD;

• Частота 48.0 кГц — профессиональный стандарт.

4.1.3. Квантование

Квантование — процесс измерения мгновенных уровней сигнала полученных в результате дискретизации с точностью, ограниченной количеством разрядов, используемых для записей значений.

Есть 3 стандарта хранения отсчетов:

• 1 бит — 256 уровней сигналов;

• 16 бит — 65536 уровней сигналов;

• 32 бит — 4294967296 уровней сигналов;

C явлением квантование связано понятие шум квантования. Он рассчитывается по формуле

P = −(6N + 1. 8), где N — количество разрядов;

5. Динамическая обработка звука

Динамическая обработка служит для изменения динамического диапазона сигнала .

Динамический диапазон сигнала — разница между самым громким и самым тихим звуком.

Чем шире диапазон, тем больше разница между самым тихим и самым громким звуком и наоборот. Динамические процессоры в основном подключаются «в разрыв».

Основные виды динамических обработок это:

5.1. Компрессор и лимитер

Задача компрессора состоит в том, что бы сжимать динамический диапазон обрабатываемого сигнала. Компрессор понижает уровень громких звуков и повышает уровень тихих.

Лимитер тоже сжимает динамический диапазон, но в отличие от компрессора делает это жестко — не позволяет сигналу превышать определенный уровень.

Основные параметры:

Порог [1] — уровень сигнала, при котором срабатывает обработка.

Отношение [2] — определяет величину уменьшения сигнала при превышения порога.

Например, 2 : 1 означает, что при превышении порога сигнал должен быть уменьшен вдвое. У лимитера этот параметр не регулируется (бескончность). Компрессор с отношением n : 1, n > 10 работает как лимитер.

Атака [3] — скорость срабатывания компрессора.

Затухание [4] — скорость восстановления компрессора.

Усиление [5] — уровень общего усиления сигнала на выходе. Задается в децибелах, отражающих увеличение или ослабление сигнала, который не превышает порог срабатывания.

Жесткое или мягкое колено [6] — определяет жесткость срабатывания (отношение достигает своего значения сразу или плавно).

5.2. Гейт и экспандер

Это обработка, противоположная лимитеру. Если лимитер отсекает самые громкие звуки, то гейт отсекает самые тихие.

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

Основные параметры:

Порог [7] — уровень сигнала, при котором срабатывает обработка.

Отношение [8] — определяет насколько должен уменьшаться сигнал, уровень которого ниже порога. Чаще всего полное ослабление.

Например, 40 Дб — это практически полное ослабление.

Атака [9] — скорость срабатывания компрессора.

Затухание [10] — скорость восстановления компрессора.

Экспандер прибор очень похожий на гейт. Отличие состоит в том, что гейт понижает сигнал ниже порога на определенную величину , а экспандер понижает сигнал в заданном отношении.

То есть если у него задано отношение 2 : 1, то при недостаче 10 Дб, сигнал будет понижении на 20 Дб, а если сигнал недостает 2 Дб, то сигнал будет понижен на 4 дб. Соответственно у экспандера отношение называется ratio.

Представим сказанное в виде mind map.

6. Частотная коррекция звукового сигнала

Основные виды обработок:

• ФНЧ (LPF)

• ФВЧ (HPF)

• Полосовый фильтр(BPF)

• Режекторный (Notch filter) — полосовый фильтр, работающий в минус

• Графический эквалайзер

• Параметрический эквалайзер

• Параграфический эквалайзер — гибрид параметрического и графического эквалайзера

6.1. Частотные фильтры

6.1.1. Фильтр низких частот

Фильтр низких частот[11] — отфильтровывает все ниже заданной частоты.

fc — частота среза

6.1.2. Фильтр высоких частот

Фильтр низких частот[12] — отфильтровывает все выше заданной частоты. Часто используется для подавления частот, которые не воспринимаются человеком. Эти частоты перегревают устройства.

fc — частота среза

6.1.3. Полосовый фильтр

Частотный фильтр, в случае понижения, не срезает полосу до нуля. Он только уменьшает интенсивность определенных частот.

6.2. Эквалайзер

Эквалайзер — устройство или компьютерная программа, позволяющая выравнивать амплитудно-частотную характеристику звукового сигнала, то есть корректировать его (сигнала) амплитуду избирательно, в зависимости от частоты. Эквалайзер обычно используется для частотной компенсации прибора.

Можно воспринимать эквалайзер как совокупность нескольких фильтров.

Графический — эквалайзер с жестко определенным набором фильтров.

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

Параметрический — эквалайзер с кастомизированным набором фильтров. Параметрический эквалайзер удобно использовать для исправления конкретного дефекта.

Каждая полоса параметрического эквалайзера имеет три основных регулируемых параметра:

Центральная [13] частота в герцах (Гц);

Добротность [14] — безразмерная величина;

Уровень усиления или ослабления выбранной полосы в децибелах

(дБ).

Параграфический — эквалайзер графического типа с регулировкой добротности.

7. Пространственные и модуляционные эффекты

7.1. Хорус, Фленджер, Фазер

Модуляционные эффекты основанные на задержке сигнала, вызывающей эффект изменения высоты тона.

Для хоруса, aленджерa, фазерa задержка очень маленькая, порядка десятков миллисекунд. Задержка сигнала может изменяться во времени. Модулируется эта величина при помощи низкочастотного генератора .

Эффект Задержка [мс]

Фазер 1 − 6

Фленджер 7 − 15

Хорус 15 − 90

Основные параметры:

Частота [15] — частота модулирующего генератора.

Глубина [16] — величина отклонения тона

Обратная связь [17] — величина обработанного сигнала, подаваемого на вход. Определяет число повторов.

7.2. Эхо

Эхо (Delay) — задержка исходного сигнала с повтором Существует множество алгоритмов:

• одиночный повтор,

• многократный повтор,

• повтор с изменением панорамы,

• повтор с разными величинами задержки для правого и левого каналов.

Величина задержки очень большая от 200 мс до нескольких секунд.

Основные параметры:

Время [18] — интервал времени между повторами.

Обратная связь [19] — величина обработанного сигнала, подаваемого на вход. Определяет число повторов.

7.3. Реверберация

Реверберация — это имитация естественных отражений звуковых волн в помещении. Реверберация применяется для имитации акустики окружающего пространства. Представляет из себя совокупность большого числа задержек исходного сигнала с разным временем.

Алгоритмы формирования таких задержек достаточно сложны и зависят от того, что моделируется.

Время задержки варьируется от десятком мс до сотен мс. Задержка как таковая на слух не ощущается (в отличие от эха). Воспринимается как придание некоторого объема звуковому сигналу.

Основные параметры:

• Тип и размер помещения[20] — определяет алгоритм реверберации и величину задержек. Основные типы:

I room,

I hall,

I stadium,

I cathedral,

I bathroom,

I plate, I spring и т.д.

• Время[21] – время звучания реверберационного хвоста (не путать с временем задержки как у delay)

• Задержка начала[22] – определяет расстояние от источника звука до ближайшей стены, то есть время, через которое начнется реверберация.

В зависимости от алгоритма могут еще задавать параметры смешивания отраженных сигналов из их деградацию, обусловленную поглощающими материалами помещения.

≺ Синтез звука ≻

Звук любого инструмента имеет вид:

Атака — начальная фаза образования звука.

Поддержка — фаза образования звука, следующая после атаки. Во время поддержки формируется ощущение высоты звука.

Затухание — участок уменьшения сигнала.

• Фаза атаки наиболее ярко выражена для барабанов. Момент удара палочкой как раз и есть фаза атаки.

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

Некоторые фазы могут отсутствовать.

8. Аддитивный синтез звука

Результирующий звук формируется путем сложения нескольких исходных звуковых волн. Формируется N гармоник с частотами f 1 (t )...fn (t ), и амплитудами A 1 (t )...An (t ). Гармоники не обязательно должны быть кратными. И гармоники и амплитуды зависят от времени. Эти гармоники складываются. Получаем синтезируемый сигнал.

Для получения всех точек звукоряда нужно несколько сотен составляющих гармоник.

. Для генерации синусоидального сигнала используются ГУК — генераторы, управляемые кодом.

9. Субтрактивный синтез звука

Метод субтрактивного синтеза звука является вторым по популярности. Синтез состоит из нескольких этапов:

1) Создается сигнал богатый гармониками.

Данный сигнал должен содержать максимальное количество гармоник. Чаще всего в качестве такого сигнала используют последовательность коротких прямоугольных импульсов. Иногда, чтобы еще сильнее обогатить сигнал используют пилообразные и треугольные импульсы.

2) Выбор нужного набора гармоник из исходного сигнала.

Интересно заметить, что подобный механизм «звукообразования» используется при формировании речи человека.

10. Частотной модуляция

10.1. Генератор, управляемый кодом

Напомним, что ГУК 23 — генераторы, управляемые кодом. Он используется для генерации синусоидального сигнала используются Составляющие:

• формирователь фазы;

I сумматор;

I регистр;

• ПЗУ;

В ПЗУ записаны отсчеты функции (sinx ) для одного периода. Точки одинаково удалены по времени.

• перемножатель параллельных кодов;

• ЦАП — цифро-аналоговый преобразователь;

• ФНЧ — фильтр низких частот;

10.2. Частотная модуляция

Частотная модуляция — процесс модуляции при котором мгновенная частота несущего сигнала изменяется под воздействием модулирующего сигнала, а отклонение несущей частоты от среднего значения пропорционально амплитуде модулирующего сигнала.

x (t ) = Ac · sin(2πt [fc + mf · sin(2πfm t )])

Ac — амплитуда несущей частоты;

fc — несущая частота;

mf — индекс частотной модуляции;

fm — модулирующая частота.

Изменяя только mf можно варьировать спектр x (t ) в широких пределах. Это используется для ЧM-синтеза.

10.3. Синтез

Минимальное число ГУК для такой схемы должны равняться 6.

Важно заметить, что на аналоговом механизме такая схема работать не будет.

Достоинство:

Универсальность. Можно получить любое звучание.

Недостаток:

Сложность реализации.

ЧM-синтез был основным методом синтеза в середине 80-х годов XX века.

Это метод реализован в Native Instruments FM8.

11. Нелинейный синтез звука

Нелинейный синтез (и как частный случай, метод волновой формы) часто выступает как дополнение к субтрактивному синтезу.

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

Достоинство:

Простота.

Недостаток:

Нельзя раздельно управлять амплитудой и спектром.

Кольцевая модуляция — умножение сигналов. В данном контексте это сложение генераторов.

12. Таблицы волн

Этот метод синтеза также называют WT-синтез[23] На данный момент наиболее популярен.

12.1. WT-синтез

WT-синтез — метод синтеза, основанный на воспроизведении заранее записанного в цифровом виде звучания инструментов-сэмплов. Для изменения высоты звука сэмпл проигрывается с разной скоростью.

Атака, поддержка, затухание сэмплируются отдельно. Это необходимо чтобы не изменился характер звучания.

В сложных (и дорогих) синтезаторах используется параллельное проигрывание нескольких сэмплов на одну ноту. Обычно такие сэмплы играются на разных уровнях громкости. Такой метод называется — многослойным сэмплированием .

Инструменты с короткой поддержкой семплируются полностью для всех вариантов звучания. Для большинства инструментов семплируется полностью только атака и затухание. Поддержка (вернее даже ее маленькая часть) сэмплируется всего лишь в нескольких наиболее отличимых вариантах, а при воспроизведении проигрывается в цикле и с различным ускорением. Достоинства:

• реалистичность;

• простота.

Недостатки:

• жесткий набор сэмплированных тэмбров;

• большие объемы памяти для храннения сэмплов.

MultiSample — метод сэмплирования, при котором используется не одна волновая таблица, а последовательность в несколько десятков сэмплов.

Такой метод например, реализован в модуле NanoWave. Это модуль для Native Instruments Reactor.

12.2. Сэмплерные синтезаторы

Не надо путать WT-синтез c старым «сэмплерным методом»25 . В сэмплерных синтезаторах атака и затухание реализуются предопределенным сэмплом. Его длительность невозможно изменить. И только поддержка может быть произвольной длинны.

13. Физическое моделирование

Синтез на основе физического моделирования — метод синтеза, использующий математические модели образования звуков реальных музыкальных инструментов, для генерации волновых форм в цифровом виде.

Любой музыкальный инструмент состоит из:

• возбудитель — например, струна;

• резонатор — например, верхняя и нижняя деки гитары.

Достоинство:

Реалистичность.

Недостаток:

В алгоритм вшиваются конкретные инструменты, которые потом невозможно изменить.

Примеры программного обеспечения:

• IK Multimedia Amplitube X-Gear;

• Logana;

14. Звуковые платы

Для звуковых плат есть 2 спецификации:

Речь идет о цифро-аналоговых и аналогово-цифровых спецификациях. 14.1. Состав звуковой платы

Здесь речь идет о наиболее общей структуре звуковой платы. Большинство звуковых плат являются встроенными. Встроенные звуковые платы страдают задержкой звука. Для профессиональной записи используют внешние многоканальные платы.

14.2. Блок записи и воспроизведения

Самый важный блок звуковой платы. Он управляется своим собственным драйвером и не связан с блоком DSP и блоком синтезатора.

Важные части:

• цифро-аналоговый преобразователь (ЦАП);

• аналогово-цифровой преобразователь (АЦП).

Основные характеристики преобразователей:

• тип;

• разрядность.

Важные характеристика самого блока

• частота дискретизации;

• количество входных и выходных каналов.

14.3. Блок синтезатора

Этот блок предназначен для синтеза произвольных звуковых сигналов, в том числе голос и музыкальные инструменты .

В современных звуковых платах этот блок отсутствует. Его поставляет только фирма Creative Technology.

14.4. Блок DSP

Digital signal processor (DSP) — цифровой сигнальный процессор.

Используется для обработки аудиоданных в цифровом виде. Блок DSP разгружает основной процессор во время звуковой обработки.

14.5. Блок интерфейсов

Большинство звуковых плат поддерживают:

• USB;

• FireWire;

• PCI;

• PCI-express;

• MIDI — на встроенной звуковой плате нужны специальные адаптеры;

• S/P-DIF — для передачи данных в цифровом формате непосредственно.

14.6. Блок микшера

Этот блок нужен для сведения входных и выходных аудио-сигналов и регулировки их уровня. Важное свойство — поддержка внутренней коммутации. Таким образом карта может записывать сама на себя.

≺ MIDI-интерфейс ≻

15. MIDI-интерфейс

MIDI [24] — это цифровой интерфейс музыкальных инструментов.

Создан в 1982 г. ведущими фирмами-производителями музыкального оборудования — Yamaha, Roland, Korg, E-mu и др. Изначально был предназначен для замены принятого в то время стандарта управления с помощью аналоговых сигналов. Впоследствии интерфейс MIDI стал стандартом де-факто в области электронных музыкальных инструментов и компьютерных синтезаторов.

15.1. Назначение MIDI

Главное назначение MIDI — хранение и передача информации в нотной записи.

• управление электронными музыкальными инструментами в реальном времени,

• запись MIDI-потока, формируемого при игре исполнителя, на носитель данных с последующим редактированием и воспроизведением,

• синхронизация различной аппаратуры

Существуют устройства, управляемые только через интерфейс MIDI. Наиболее распространенным таким устройством является тон-генератор.

Тон-генератор — это устройство, предназначенное для синтеза и управляемое только через MIDI-интерфейс.

На самом деле это обычный синтезатор, только без клавиатуры.

Тон-генератор с достаточными возможностями управления может очень точно воспроизвести звучание инструмента по заданному MIDI-потоку. формирования MIDI-сообщений используют MIDI-контроллеры:

• клавиатура;

• педаль;

• рукоятка с несколькими степенями свободы; • ударная установка (с датчиками способа и силы удара);

• струнный инструмент;

• духовой инструмент.

В настоящее время эти понятия стали совершенно самостоятельными: по аппаратному интерфейсу могут передаваться данные любого формата, а MIDI-формат может применяться только для обработки партитур, без вывода на устройство синтеза.

15.2. Аппаратная реализация MIDI

Аппаратная реализация интерфейса MIDI представляет собой обычный последовательный асинхронный интерфейс типа «токовая петля» Cкорость передачи данных ≈ 31250 бит/с.

Интерфейс реализуется активным передатчиком с уровнем 5 мА. Для соединения используется двужильный экранированный[25] кабель длиной не более ≈ 15 м, нечувствительный к наводкам извне[26] .

15.3. Разъем DIN-5 (СГ-5)

Разъем для MIDI-устройства:

.- принимающий.+ передающий

.земля

Это разъем типа female DIN-5 (СГ-5) («мама»).

Оставшиеся 2 контакта не используются.

Каждый инструмент имеет три соединительных разъема: • In (вход),

.+ .-

.земля

• Out (выход)

.- .+

.земля

• Thru (копия сигнала с In через буфер)

.- .+

.земля

Один MIDI-передатчик допускает подключение до четырех приемников. Так что можно создавать сеть MlDI-устройств, выстраивая их по цепочке и в нескольких направлениях.

16. Протокол MIDI

MIDI-протокол является событийно-ориентированным.

Обмен данными осуществляется при помощи сообщений. Сообщения — блоки данных произвольной длины. Каждое сообщение является командой для музыкального инструмента.

Стандарт предусматривает 16 независимых и равноправных логических каналов. Внутри канала действуют свои режимы работы.

16.1. Адресация в MIDI

Адресация в MIDI не является однозначной. Несколько инструментов могут быть настроены на один и тот же MIDI-канал. В таком случае канальное сообщение может быть послано группе инструментов.

Изначально технология была предназначена для однотембровых инструментов. Однотембровые инструменты могли воспроизводить звук только одного тембра в каждый момент времени. Каждому инструменту присваивался свой номер канала. Последнее давало возможность многотембрового исполнения. С появлением многотембровых инструментов они стали поддерживать несколько каналов. Современные инструменты поддерживают все 16 каналов и могут иметь более одного MIDI-интерфейса. Сейчас каждому каналу обычно назначается свой тембр, называемый по традиции инструментом, хотя возможна комбинация нескольких тембров в одном канале.

У каждого MIDI устройства есть режим OMNI ON . В этом режиме оно перестает различать каналы.

Канальные сообщения предназначены для передачи команд и параметров отдельным MIDI-устройствам сети в целях управления звучанием музыкального инструмента и определения реакции музыкального инструмента на сообщения.

Системные сообщения — это сообщения предназначенные для управления всеми MIDI-устройствами сети.

16.2.1. Канальные сообщения о звуке

• Note Off (выключение ноты);

• Note On (включение ноты);

В качестве параметров команды передаются номера клавиш и ускорение, с которым была нажата или отжата клавиша.

• Key Pressure (Polyphonic Aftertouch, давление на клавишу);

• Channel Pressure (Channel Aftertouch, давление в канале);

Например, чем сильнее давим на клавишу, чтем громче она звучит.

• Control Change (смена значения контроллера);

• Program Change (смена программы (тембра, инструмента));

• Pitch Bend Change (смена значения Pitch Bend).

16.2.2. Канальные сообщения о режиме

• Omni Off (выключение режима всех сообщений);

• Omni On (включение режима всех сообщений); • Poly/Mono

I в режиме Poly можно брать аккорды;

I в режиме Mono срабатывают самые верхние ноты из нескольких нажатых.

Забавно заметить, но именно режим Mono был долгое время единственным для советских синтезаторов класс «Электроника».

• Local Control Off (выключение режима локального управления);

• Local Control On (включение режима локального управления);

• All Notes Off (сообщение о потери сигнала).

16.2.3. Системные сообщения

• System Exclusive (SysEx, системное исключительное сообщение);

• Song Position Pointer (указатель позиции в партитуре);

• Song Select (выбор партитуры);

• Tune Request (запрос подстройки);

• Timing Clock (синхронизация по времени);

• Start (запуск игры по партитуре);

• Continue (продолжение игры по партитуре);

• Stop (остановка игры по партитуре);

• Active Sensing (проверка соединений MIDI-сети);

• System Reset (сброс всех устройств сети);

• EOX (End Of SysEx, конец системного исключительного сообщения).

17. Стандарты MIDI-систем

MIDI-файл не передает полного оригинального звучания инструментов. MIDIсистемы в основном используются как домашние обучающие системы и для одинакового звучания музыки в играх.

Набор команд синтезаторов в MIDI-системах не переносим.

17.1. General MIDI

Стандарт General MIDI (GM) появился 1991 году.

Стандарт вводит несколько ограничений, благодаря которым MIDI-файл лекче переносить.

• 128 стандартных инструментов

• выделение 10-го канала под ударные инструменты

Основные контроллеры

• (1) модуляция[27] ;

• (7) громкость инструмента[28] ;

• (10) панорама[29] — правый-левый канал.

Изначально этот стандарт был предназначен для узкого круга инструментов (скрипки, пианино, ударные).

Проблема :

Сложно реализовать синтезатор без Wave Table.

17.2. General Synthesis

Стандарт General Synthesis (GS) был предложен фирмой Roland в 1991 году. Он полностью поддерживает General MIDI. Используется банк инстру-

ментов.

Введено дополнительно 98 звуков[30] .

Введены дополнительные контроллеры:

• (91) реверберация ;

• (93) хорус33 .

17.3. Extended General MIDI (XG)

Стандарт был предложен фирмой Yamaha. Это наиболее жесткий стандарт MIDI. Он полностью поддерживает General MIDI и General Synthesis. Особенности:

• 676 инструментов;

• 21 набор ударных инструментов;

• 32 голоса полифония;

• расширенные требования к различным контроллерам;

• есть возможность настройки каждой ноты звукоряда;

• введена типизация банка инструментов:

I (0) normal — мелодичные инструменты;

I (64) SFX — специальные эффекты; I (126) SFX — специальные эффекты; I (127) drums — ударные.

Extended General полностью поддерживается только Yamaha и почти полностью переносим.

17.4. Все вместе

≺ Запись и передача ≻

18. Секвенсоры

Индустрия звукозаписи развивается с 30-х годов XX века. Технологию записи музыкальных произведений можно представить с помощью следующих простых схем:

18.1. Простейшая студия

18.2. Студия для записи «живого» исполнения

18.3. Студия для многоканальной записи

18.4. Студия для многоканальной записи с секвенсором

18.5. Секвенсор

Секвенсор — аппаратное или программное устройство для записи и воспроизведения MIDI-сообщений.

Музыкальный синтезатор 80-х годов имел 3 аналоговых блока:

• генератор;

• фильтр;

• усилитель.

Все они управлялись напряжением. Первые секвенсоры использовались для координации работы этих блоков. Такие аппараты состояли из ряда потенциометров и могли подавать различной напряжение циклически. В простейшем случае секвенсор перебирал одну последовательность из трех (по числу блоков) напряжений. Эта идея идея воплотилась в современных паттерновых секвенсорах. На данный момент для управления музыкальными инструментами используется стандарт DCB-Roland.

18.5.1. Паттерновые (Шаговые)

Особенности:

• управление ручками или тумблерами (для аппаратных);

• наличие паттернов, которые хранятся в банке звуков (эти паттерны программируются, а не записываются);

• не позволяет играть аккорды;

• достаточно громоздки и сложно.

Наиболее яркий представитель — шаговый секвенсор Matrix в ПО Propellerhead Reason.

18.5.2. Линейные

Особенности:

• есть 16 каналов для приема сообщений;

• есть 16 дорожек для записи MIDI сообщений;

Связь дорожек и каналов прямая. В зависимости от того какой канал «играется», запись производится на дорожку с таким же номером. На различные каналы может подаваться информация от различных инструментов.

• позволяет играть аккорды;

Наиболее яркие представители:

• секвенсор в Ableton Live;

• NoteWorthy Composer;

• Steinberg Cubase;

• Cakewalk Sonar.

19. Маскирование

При восприятии звука человеком наблюдается эффект маскирования. Более сильные сигналы преобладают над менее сильные, маскируя тем самым тихие звуки, попадающие в тот же диапазон частот .

Частотное маскирование — эффект, при котором один звук маскирует другие, более слабые, звуки. Диапазон частот, в пределах которого один звук может маскировать другой, в соответствии с концепцией Флетчера, называется критической полосой.

Временное маскирование — эффект, при котором звук большой амплитуды маскирует другие звуки, предшествующие ему во времени или следующие за ним.

Маскирование назад — эффект, при котором звук большой амплитуды маскирует другие звуки, только предшествующие ему. Промежуток времени, в пределах которого оно действует, составляет 5-50 миллисекунд.

Маскирование вперед — эффект, при котором звук большой амплитуды маскирует другие звуки, только следующие за ним. Промежуток времени, в пределах которого оно действует, составляет 50-200 миллисекунд.

Заметим, что человеческая система восприятия звука имеет ограниченное разрешение. Это разрешение зависит от частоты звука. Равномерное, с точки зрения восприятия человеком, измерение частоты может быть выражено в единицах ширины критических полос. Их ширина составляет менее 100 Гц для нижних слышимых частот и более 4 кГц — для наиболее высоких. Весь частотный диапазон может быть разделен на 25 критических полос.

19.1. Сжатие звука

При сжатии звука не имеет смысла оставлять в записи звуки, которые находятся ниже порога слышимости, поэтому любые алгоритмы сжатия должны отбрасывать соответствующие данные.

Чтобы реализовать эту идею на практике, алгоритм должен использовать психоакустическую модель.

Психоакустическая модель — математическое описание восприятия звуков ухом и головным мозгом с учетом критических полос.

Алгоритм сжатия получает дополнительную возможность отбросить некоторые данные.

В то же время маскировку можно использовать более эффективно. Поскольку она, кроме некоторых компонентов сигнала, скрывает шум, в ней можно скрыть шум квантования .

Приведем краткое описание алгоритма сжатия:

1: расщепить сигнал на полосы частот; /* блок фильтров */

2: Для каждой полосы выполняем

3: вычислить средний уровень сигнала;

4: подставить значения в психоаккустическую модель;

5: определить порог маскировки;

6: /** Предполагается, что маскирующую кривую в каждой полосе можно аппроксимировать одним значением. **/

7: Если сигнал целиком опускается ниже порога маскировки то

8: отвергнуть полосу;

9: продолжить цикл;

10: иначе

11: квантовать сигнал грубо;

12: /** Сигнал квантуется с использованием меньшего количества битов за счет маскировки шума квантования. **/

Примерно такой алгоритм сжатия используется в формат хранения и передачи аудиосигнала MP3.

20. Формат MP3

MP3 — сокращение от MPEG[31] Layer3. Это формат хранения и передачи аудиосигнала в цифровой форме. В MP3 используется алгоритм сжатия с

потерями.

Формат был разработан компанией Fraunhofer IIS при спонсорстве компании Thomson. Изначально разрабатывался для передачи аудиоданных через Интернет с высокой скоростью и является потоковым. Позднее MP3 был утвержден как часть стандартов сжатого видео и аудио MPEG1 и MPEG2.

20.1. Алгоритм сжатия MP3

Алгоритм сжатия MP3 использует особенности слуха:

• абсолютные ограничения слуха (20 Гц – 20 кГц);

• частоты маскирования и ширину критических полосы;

• последовательное (временное) маскирование;

• воспроизводимую энтропию[32] .

Зачем кодировать звуки, которые все равно не будут услышаны?

20.2. Схема MP3 кодера

MP3-файл состоит из нескольких фрагментов (фреймов) MP3. Такая последовательность фрагментов называется элементарным

потоком .

20.3. Режимы кодирования стерео

Существуют несколько методов кодирования стерео аудио информации[33] .

Dual channel 37 — два абсолютно независимых («совсем разных») канала. Битрейт делится на два канала.

Может использоваться для речевого сопровождения на разных языках.

standard stereo — два независимых канала. Битрейт варьируется в зависимости от сложности сигнала в каждом канале.

Joint stereo [34] — основан на использовании избыточности стерео-информации.

I MS Stereo. Кодируются не левый и правый канал, а их суммарная составляющая и разностная. Разностный канал в некоторых случаях (Lame encoder) кодируется с меньшим битрейтом.

I Intensity Stereo (MS/IS Stereo). Кодируется суммарная составляющая. Вместо разностной составляющей кодируется отношение мощностей сигнала в разных каналах.

Особенность: повышает качество кодирования на особо низких битрейтах, но происходит потеря фазовой информации, и теряется любой противофазный сигнал.

20.4. Психоакустические форматы

AAC [35] — разрабатывался как преемник MP3 компанией Fraunhofer при участии AT&T, Sony, NEC и Dolby. Проект не был доведен до конца. На данный момент существует большое число несовместимых друг с другом форматов на основе AAC[36] .

TwinVQ — формат, разработанный компанией NTT[37] . Считается старейшим «конкурентом» MP3. Лицензией на право распространения этого формата владеет фирма Yamaha.

WMA 42 — формат сжатия аудиоданных от компании Microsoft.

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

21. Основные программные интерфейсы

22. Программный интерфейс MME

Первоначально интерфейс со звуковыми устройствами был введен в Windows 3.x под названием MME[38] . Звуковые устройства в Windows относятся к классу Multimedia/Audio; в этот класс входят два три устройств:

Взаимодействие приложения с драйвером организуется в виде взаимного обмена потоками звуковых данных в реальном времени. Для переноса потоков между приложением и звуковым драйвером используется звуковой буфер . Звуковые буферы создаются приложением и затем передаются драйверу:

пустые — для устройств ввода,

заполненные звуковыми данными — для устройств вывода.

Применяется концепция связанной цепочки программных буферов .

22.1. Способы кодирования звука

При работе со звуковыми адаптерами чаще всего используется традиционный способ цифрового кодирования PCM[39] .

Ряд мгновенных значений звуковой амплитуды, следующих друг за другом с частотой дискретизации, представляется рядом чисел выбранной разрядности . Значения пропорциональны величине амплитуды. Именно в таком виде звуковой поток снимается с выхода АЦП или подается на вход ЦАП.

Однако, наряду с предельной простотой, PCM обладает существенной избыточностью :

Звук передается настолько точно, насколько это возможно при выбранных параметрах оцифровки. На первое место выходит задача минимизации скорости и объема звукового потока, отдельными параметрами точности и качества можно пренебречь.

Обрабатывать звук в PCM способен любой звуковой адаптер!

22.2. Формат потока

Формат потока — cовокупность основных параметров потока.

• способ кодирования — это главный параметр, он же признак формата[40] .;

• частота дискретизации;

• количество каналов;

• разрядность отсчета.

22.3. Структура потока

Блок — наименьшая единица звукового потока . Размер каждого буфера должен быть кратен размеру блока.

В PCM блоком считается набор отсчетов, передаваемых за один период частоты дискретизации, то есть — один отсчет для монофонических потоков, два - для стереофонических, и так далее. Отсчеты могут быть 8-разрядными, 16-разрядными, 32-разрядными.

Современные звуковые адаптеры могут использовать 18-, 20- и 22-разрядные отсчеты. Отсчет выравнивается по старшей границе трех- или четырехбайтового слова, а лишние младшие разряды заполняются нулями. Трехбайтовые слова почти не используются и заменяются четырехбайтовыми.

С момента запуска потока драйвер отслеживает текущую позицию записи или воспроизведения, которая в любой момент может быть запрошена приложением. Для этого адаптеры используют очередь между преобразователями и встроенным процессором.

Драйвер отслеживает позицию путем подсчета количества звуковых блоков потока, переданных от приложения к устройству или наоборот.

22.4. Системные особенности

22.4.1. Несколько процессов

Звуковая подсистема Windows допускает работу с устройством нескольких процессов (клиентов) одновременно . Многие звуковые устройства поддерживают более одного клиента; устройство вывода смешивает проигрываемые клиентами звуковые потоки, а устройство ввода — «тиражирует» записываемый поток для всех подключенных клиентов.

Устройство, драйвер которого поддерживает не более одного клиента , не может быть повторно открыто до тех пор, пока клиент не закроет его. При попытке повторно открыть такое устройство звуковая подсистема возвращает ошибку, сигнализирующую о том, что устройство занято.

22.4.2. Wave Mapper

Для упрощения реализации основных операций со звуком Windows содержит службу переназначения — Wave Mapper. В Windows может быть установлено более одного звукового устройства. Существует понятие стандартного системного устройства ввода и стандартного системного устройства вывода.

В Windows имеется подсистема сжатия звука — ACM[41] . При помощи ACM возможно взаимное преобразование звуковых форматов — как внутри групп, так и между ними. Служба ACM может использоваться как автономно, через собственный отдельный интерфейс, так и автоматически службой

Wave Mapper.

Подсистема сжатия реализована в виде набора кодеков47 , специальных драйверов ACM, которые и занимаются непосредственно переводом звука из одного формата в другой. ACM активизирует нужные кодеки по запрошенным форматам, снабжая их необходимыми параметрами.

При завершении обработки каждого буфера драйвер устанавливает в его заголовке флаг готовности , по которому приложение может определить, что драйвер освободил данный буфер .

Для асинхронных устройств гораздо более эффективным способом возврата буфера является уведомление (notification) . Драйвер:

• либо вызывает заданную функцию приложения,

• либо активизирует событие (event),

• либо передает сообщение заданному окну или задаче (thread) приложения.

В параметрах функции или сообщения передается также указатель заголовка буфера.

Звуковая подсистема нумерует установленные устройства, начиная с 0. При установке нового устройства или удалении существующего нумерация изменяется. Во время работы программы в системе могут появиться или исчезнуть звуковые устройства. Вместо номера звукового устройства может использоваться ключ (handle) ранее открытого устройства. Система автоматически определяет, какое именно значение передано интерфейсной функции.

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

• HWAVEIN;

• HWAVEOUT.

Оба они эквивалентны типу HWAVE, который может использоваться для создания универсальных функций, не зависящих от типа устройства.

Ключи звуковых устройств не имеют ничего общего с ключами файлов, событий, окон, задач и т.п.

Если программе безразлично, с каким конкретно устройством она будет работать, либо работа ведется только со стандартным системным устройством, программа может ориентироваться только на службу переназначения. В противном случае программа определяет количество имеющихся в системе устройств ввода и/или вывода при помощи функций GetNumDevs .

При необходимости программа может запросить параметры и имена звуковых устройств при помощи функций GetDevCaps - например, чтобы сформировать меню доступных устройств для пользователя или найти устройство, удовлетворяющее заданным требованиям.

22.5. Алгоритм взаимодействия

Рассмотрим упрощенный алгоритм взаимодействия программы и звуковой подсистемы:

1: открыть (

2: < устройство > ,

3: < формат звукового потока > ,

4: < способуведомленияовыполнениизапрошенныхопераций >

5: );

6: буферы ← создать( < количество > );

7: заполнить_заголовки( < буферы > );

8: Если < сразу подготовить к передаче >

то

9: подготовить_к_передаче( < буферы > );

10: Если < цикл записи > то

11: Пока < запись > выполняем

/* Prepare */

12: заполнить очередь драйвера буферами /* AddBuffer */

13: записать поток /* Start */

14: /** В этот момент драйвер запускает АЦП адаптера, и звуковые отсчеты начинают поступать в первый буфер из очереди. **/

15: получить уведомление от драйвера;

16: определить размер данных; /* dwBytesRecorded */

17: обработать записанные данные;

18: освободить буфер;

19: передать буферы приложению;

20: Если < цикл воспроизведения > то

21: Пока < воспроизведение > выполняем

22: заполнить буферы звуковыми данными;

23: передать буферы драйверу устройства вывода; /* Write */

24: /** После получения первого же буфера драйвер запускает ЦАП адаптера, который начинает извлекать звуковые отсчеты. **/

25: воспроизвести буфер полностью; /* dwBufferLength */

26: освободить буфер;

27: передать буферы приложению;

28: освободить буферы; /* Unprepare */

29: закрыть устройство; /* Close */

При необходимости приостановить движение потока вызывается функция Stop/Pause . При этом устройство ввода сразу же возвращает очередной буфер приложению — возможно, заполненный лишь частично. Не полностью проигранный буфер устройства вывода остается в очереди. Остальные буферы устройств обоих типов также остаются в очереди и включаются в работу только после перезапуска потока функциями Start/Restart .

Для устройств вывода, поддерживающих расширенные функции управления, программа может регулировать громкость звука функцией SetVolume , а также изменять высоту тона и скорость воспроизведения функциями SetPitch или SetPlaybackRate . Более общим способом регулировки громкости является обращение к микшеру (mixer), который является устройством класса Aux .

Для аварийного прерывания обработки потока используется функция Reset , немедленно останавливающая процесс записи или воспроизведения и возвращающая все буферы из очереди приложению.

23. Программный интерфейс DirectSound

23.1. Назначение, структура, особенности

Подсистема DirectSound обеспечивает приложениям практически непосредственный доступ к аппаратуре звукового адаптера. Предоставляется модель современного звукового адаптера, предельно приближенная к реальности, с минимальным уровнем абстракции.

Подсистема DirectSound построена по объектно-ориентированному принципу в соответствии с моделью COM[42] и состоит из набора интерфейсов.

Каждый интерфейс отвечает за объект определенного типа:

• устройство,

• буфер,

• службу уведомления и т.п.

Интерфейс — набор управляющих функций, или методов, организованных в класс объектно-ориентированного языка.

DirectSound не поддерживает звуковые форматы, отличные от PCM. Назначение DirectSound — исключительно эффективный вывод звука.

Основные преимущества DirectSound:

• задание несколько источников звука;

• объемный звук (в DirectSound3D это преимущество усилено).

23.2. Аппаратная поддержка

DirectSound всю возможную работу старается переложить на аппаратуру адаптера.

Однако, строит заметить, что приложениям, использующим большое количество одновременно звучащих источников или сложную трехмерную картину, имеет смысл упрощать свою модель при отсутствии средств аппаратного ускорения, иначе накладные расходы могут существенно снизить общую производительность системы.

При отсутствии каких любо звуков у адаптера DirectSound эмулирует их на синтезаторе адаптера. Для создания реалистичной звуковой картины DirectSound нуждается в информации о расположении звукоизлучателей — громкоговорителей или наушников — относительно слушателя.

23.3. Звуковые буферы

Большинство существующих звуковых адаптеров использует для обмена звуком с центральным процессором звуковые буферы, представляющие собой участок памяти, в который заносятся звуковые данные.

Обычно буфер — кольцевой.

Адаптер и его драйвер работают параллельно с разными частями буфера, стараясь следовать друг за другом и не создавать конфликтов. Если их работа согласованна — получается непрерывное движение сколь угодно длительного звукового потока.

DirectSound предоставляет приложению почти прямой доступ к аппаратным буферам адаптера.

В отличие от модели MME: вывод коротких и повторяющихся звуков значительно упрощается, а вывод длительных непрерывных звучаний несколько усложняется.

23.3.1. Аппаратные и программные

Различные адаптеры используют буферы разного типа:

• Классические адаптеры типа Sound Blaster, Windows Sound System и совместимые с ними используют буфер в основной памяти компьютера с доступом через DMA[43] .

• Адаптеры архитектуры Hurricane (Turtle Beach Tahiti, Fiji и совместимые) используют буфер в собственной (on-board) памяти, который доступен в виде «окна» в диапазоне адресов внешних устройств.

• Существуют также адаптеры со встроенным буфером, доступ к которому осуществляется через порты ввода-вывода; обычно так работают таблично-волновые синтезаторы.

В зависимости от размещения и способа управления различают аппаратные и программные буферы.

Аппаратным буфер — буфер, к которому адаптер имеет прямой доступ. Такой буфер располагается либо в памяти самого адаптера, либо в основной памяти с обращением через DMA.

Программный буфер — буфер, к которому адаптер имеет доступ через процессор. Программные буферы всегда располагаются в основной памяти.

В документации по DirectSound аппаратными называют только те буферы, которые находятся в памяти адаптера, и нередко путают термин «hardware» в отношении размещения буфера и способа смешивания звука.

23.3.2. Первичный и вторичные

Если в архитектуре адаптера один из аппаратных буферов является основным, его называют первичным (primary). Остальные буферы, занимающие подчиненное положение, называются вторичными (secondary).

Обычно звуки из вторичных буферов смешиваются воедино в первичном буфере, откуда и поступают на ЦАП адаптера.

Для адаптеров, работающих только с одним буфером, он и является первичным. Вторичные буферы могут быть только программными и управляются самой подсистемой DirectSound.

Для современных многоканальных адаптеров PCI, имеющих несколько равноправных каналов вывода звука, первичный буфер недоступен, зато некоторое количество вторичных может быть аппаратными, и управление звуками в них осуществляет непосредственно сам адаптер. Чаще всего приложению не требуется использовать первичный буфер.

В типовой схеме взаимодействия для каждого источника звука создается свой вторичный буфер (в DirectSound часто отождествляются понятия «источник звука» и «вторичный звуковой буфер»). Впоследствии приложение в нужные моменты включает и выключает звучание источников, меняет текущую позицию в звуке, параметры звучания и т.п.

Вторичные буферы могут иметь произвольные размеры, которые задаются приложением при их создании. Даже если смешивание выполняет DirectSound — оно осуществляется на уровне ядра.

Прямой доступ к первичному буферу возможен только в исключительных случаях. При этом запрещается использование вторичных буферов — то есть приложение теряет возможность описывать независимые источники звука. Зато наличие доступа к первичному буферу гарантирует, что все изменения в звуковых данных будут услышаны максимально быстро. Однако первичный буфер имеет фиксированный размер,выбираемый драйвером DirectSound, и размер этот достаточно мал.

Для того чтобы успевать вписывать звук в первичный буфер, приложение должно иметь высокий уровень приоритета. Но даже в этом случае Windows не гарантирует нужной скорости.

Вторичный буфер может быть статическим (static) и потоковым (streaming). Статические буферы предназначены для постоянных звуков, цифровое представление которых не меняется либо меняется достаточно редко. Потоковые буферы ориентированы на часто изменяемые звуки, как правило — на представление длительного звукового потока, который по частям «прогоняется» через буфер.

Статические и потоковые буферы различаются только тем, что подсистема старается в первую очередь делать аппаратными статические буферы, загружая их в память адаптера.

Таким образом, постоянные и короткие звуки оказываются в распоряжении адаптера, и достаточно лишь дать команду, чтобы они включились в общее звучание.

Приложение может явно указывать при создании буфера тип памяти для его размещения.

DirectSound оптимизирует использование вторичных буферов в порядке их создания приложением. Источники звука, созданные в первую очередь, имеют приоритет в использовании аппаратных средств. Буферы, созданные первыми, подсистема старается по возможности загружать в память адаптера, предоставлять им каналы DMA. При исчерпании аппаратных ресурсов DirectSound переходит на самостоятельную, программную обработку оставшихся буферов.

Поскольку каждый вторичный буфер описывает независимый источник звука, подсистема предоставляет средства управления режимами звучания источника.

• Для базовых источников DirectSound доступно управление

I громкостью,

I панорамой,

I частотой дискретизации;

• для источников DirectSound3D еще

I пространственными координатами, I направленностью, I скоростью движения.

Набор необходимых для источника методов управления задается при создании буфера и позволяет подсистеме оптимально связывать буферы с аппаратными ресурсами. Впоследствии доступны только заказанные методы управления; для изменения набора необходимо уничтожить буфер и создать его заново.

DirectSound использует для адресации в звуковых буферах понятие текущих позиций , или курсоров.

Позиция воспроизведения (play) следует за позицией записи (write) в буфер, а позиция чтения (read) — за позицией захвата (capture). Достижение позицией воспроизведения позиции записи означает полное проигрывание буфера воспроизведения, при этом начинают воспроизводиться «старые» данные, которые приложение не успело перезаписать. Достижение позицией захвата позиции чтения означает переполнение буфера захвата, и последующие данные накладываются на «старые», которые приложение не успело извлечь из буфера.

. . .

Достижение одной из заданных позиций в звуковом буфере считается событием в подсистеме DirectSound. Для запроса уведомления о наступлении таких событий приложение может использовать специальный интерфейс IDirectSoundNotify, создавая соответствующие ему следящие объекты.

При достижении указанных позиций следящий объект активизирует (set) заданные объекты события (event objects), которые могут быть опрошены приложением непосредственно, либо может быть создана отдельная задача (thread), ожидающая активизации одного или нескольких объектов событий.

23.4. Уровни взаимодействия

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

1) Обычный (normal) уровень фиксирует формат первичного буфера адаптера:

• 22050 Гц;

• стерео;

• 8-разрядные отсчеты.

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

На этом уровне достигается наибольшая универсальность и эффективность. Качество звука в таком формате посредственно и не допускается уплотнение внутренней памяти адаптера.

2) Приоритетный (priority) уровень позволяет приложению устанавливать формат первичного буфера и уплотнять внутреннюю память адаптера. Предоставляет приоритетный доступ к аппаратным ресурсам , когда окно приложения становится активным (foreground).

Если происходит переключение между приложениями этого уровня, установившими различные форматы первичного буфера — подсистема вынуждена переключать форматы, для чего необходим перезапуск адаптера, нередко порождающий щелчки и тому подобные помехи.

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

4) Уровень доступа к первичному буферу (write-primary) разрешает приложению прямую запись в первичный буфер адаптера. На этом уровне приложение может работать только с первичным буфером, активизация вторичных буферов запрещена.

Этот уровень доступен только для устройств, имеющих специализированный DirectSound-драйвер.

23.5. Наборы свойств

DirectSound вводит понятие набора свойств (property set) — параметров, описывающих виды обработки звука. При помощи набора свойств можно описать

• параметры зала,

• голоса исполнителя,

• манеры пения,

• звучания инструментов и т.п.

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

В данное время эти виды обработки почти не поддерживаются; наборы свойств введены в основном на будущее.

23.6. Идентификация устройств

В отличие от подсистем MME, идентификация устройств в DirectSound следует правилам COM и использует GUID (Globally Unique IDentifier — идентификатор, уникальный в мировом масштабе). Любой объект COM имеет свой идентификатор, по которому приложения могут обращаться к нему. Идентификаторы доступных устройств приложение получает в процессе перебора (enumeration) устройств заданного класса.

23.7. Системные особенности

Интерфейсы DirecSound доступны для платформ Windows 98 или 2000 и

выше.

Стоит заметить, что интерфейсы DirecSound и его модификации ддя Windows Vista являются базовыми. Поддержки MME в Vista уже нет.

Очевидно, нет ее и в Windows 7.

23.8. Алгоритм взаимодействия

Рассмотрим упрощенный алгоритм взаимодействия программы и звуковой подсистемы:

23.8.1. Воспроизведение

1: идентификатор ← «устройство по умолчанию»;

2: Если < конкретное устройство > то

3: идентификатор ← перебор; /* DirectSoundEnumerate */

4: устройство /* IDirectSound */ ← создать( < идентификатор > );

5: /** Созданный объект устройства может быть опрошен методом GetCaps, возвращающим его характеристики и возможности. Таким образом может быть, например, найдено минимально и оптимально подходящее для целей приложения устройство из всех имеющихся в системе. **/

6: установить уровень взаимодействия; /* SetCooperativeLevel */

7: Если < уровень != normal > то

8: создать первичный буфер; /* CreateSoundBuffer */

9: задать его формат; /* SetFormat */

10: /** На обычном уровне взаимодействия формат первичного буфера фиксирован

— 22 050 Гц, стерео, восемь разрядов. **/

11: Для всех < источники звука > выполняем

12: создать вторичные буферы; /* CreateSoundBuffer */

13: Пока заполнение данными выполняем

14: указатели доступных участков буфера ←Lock;

15: Пока < есть потерянный буфер > /* от методов Lock или Play */

выполняем

16: Restore;

17: заполнить участки данными;

18: UnLock;

19: /** При желании приложение может разделить один и тот же экземпляр звучания между несколькими объектами буферов, создавая объекты-копии методом DuplicateSoundBuffer. **/

20: Если < определить звучащий фрагмент > то

21: GetCurrentPosition;

22: Если < запуск воспроизведения > то

23: Play;

24: Если < запуск с фрагмента > то

25: SetCurrentPosition;

26: Если < остановка воспроизведения > то

27: Stop;

28: Если < изменить частоту дискретизации >

29: SetFrequency( < частота > );

30: Если < изменить громкость > то

31: SetVolume( < громкость > );

то

32: Если < изменить положение на панораме >

то

33: SetPan( < координаты > , < ориентация > ,

< скорость > );

34: уничтожить объекты буферов; /* Release */

35: уничтожить объекты устройств;

23.8.2. Запись

1: идентификатор ← «устройство по умолчанию»;

2: Если < конкретное устройство > то

3: идентификатор ← перебор; /* DirectSoundCaptureEnumerate */

4: устройство /* IDirectSoundCapture */ ←создать(< идентификатор >

);

5: создать буфер захвата; /* CreateCaptureBuffer */

6: задать его формат; /* CreateCaptureBuffer */

7: Пока заполнение данными выполняем

8: указатели доступных участков буфера ← Lock;

9: Пока < есть потерянный буфер > выполняем

10: Restore;

11: заполнить участки данными;

12: UnLock;

13: Если < запуск записи > то

14: запустить захват звука; /* Start */

15: Если < остановка записи > то

16: остановить запись; /* Stop */

17: уничтожить объекты буферов; /* Release */

18: уничтожить объекты устройств;

Функции перебора требуют указания локальной перебирающей функции приложения (callback), которая будет вызываться для каждого доступного устройства. Перебирающая функция может либо самостоятельно выбрать подходящее устройство, либо сформировать полный список устройств, из которого пользователь сделает выбор по своему усмотрению.

Приложение может разделить один и тот же экземпляр звучания между несколькими объектами буферов, создавая объекты-копии методом DuplicateSoundBuffer . Изменяя параметры звучания, можно получать различные звуки на основе одной и той же оцифровки, не расходуя дополнительную память.

Приложение может воспользоваться интерфейсом уведомления

IDirectSoundNotify , запрашивая его у объектов тех буферов, для которых требуются уведомления, и заказывая установку заданных объектов программных событий (event objects) по достижении определенных позиций в буфере


Предметный указатель

44.1 кГц 15

48.0 кГц 15

A

AAC 62

Ableton Live 57

ACM 66

ACM Codec 66

Advanced Audio Coding 62

ALSA 63

Amplitube X-Gear 39

ASIO 63 AT&T 62

attack 18, 19

Audio CD 15

B

BPF 21, 23

C

Cakewalk Sonar 57 chorus 25, 50 COM 71

Core Audio 63

Creative 41

Creative Technology 41 Cubase 57

D

DCB-Roland 56 delay 27

c деградацией 27

digital delay 27

depth 26 DirectSound 63, 71 GUID 78

курсоры 75

capture 75 play 75 read 75 write 75 помехи 77 уровни 77

щелчки 77

Dolby 62 DSP 42 dual channel 61

E

E-mu 44

Extended General MIDI 51

F

feedback 26, 27

Fiji 72

FireWire 42 flanger 25

FM-синтез 34

FM8 35

Fraunhofer IIS 60, 62

G

gain 18 General MIDI 50

General Synthesis 50

H

hard knee 18 HPF 21, 22 Hurricane 72

I

IDirectSoundNotify 76

IK Multimedia Amplitube 39

J

joint stereo 61

intensity 61

ms 61

ms/is 61

K

knee

hard 18 soft 18 Korg 44

L

Logana 39 LPF 21, 22, 33

M

Microsoft 62

MIDI 42, 44, 50 chorus 50 Extended General 51

General 50

General Synthesis 50

GS 50

Modulation 50

Pan 50

Volume 50 XG 51

протокол 47 реверберация 50 системы 50 файл 50

MIDI-GS 50

MIDI-контроллеры 44 MIDI-системы 50

MME 63 HWAVE 68

HWAVEIN 68 HWAVEOUT 68

блок 65 формат потока 65

MP3 60

dual channel 61 joint stereo 61 intensity 61 ms 61 ms/is 61

standard stereo 61

поток 60 файл 60 MPEG 60

1 60

2 60

N

NanoWave 37

Native Instruments 35, 37

NCO 33

NEC 62

Notch filter 21

NoteWorthy 57

NTT 62 NWC 57

O

OSS 63

P

PCI 42 PCM 64, 71

phaser 25 predelay 28

Propellerhead Reason 56

R

range 19 rate 26 ratio 18, 19 Reactor 37 release 18, 19 Roland 44, 50, 56 Roland Sonar 57

room size 28 room type 28

S

S/P-DIF 42

S/PDIF 42 Sample Based синтез 38 soft knee 18 Sonar 57 Sound Blaster 72

standard stereo 61

Steinberg Cubase 57

T

Thomson 60 threshold 18, 19 time 27, 28 Turtle Beach Tahiti 72

TwinVQ 62

U

USB 42

V

VA 39

Virtual Analog 39 VQF 62

W

Wave Mapper 66 wave shaper 36

Windows 78

7 78

Vista 78

Windows Media Audio 62

Windows Sound System 72

WMA 62

WT-синтез 37, 50

Y

Yamaha 44, 51, 62

А

АЦП 14, 64

В

Вебер 6

Г

ГУК 31, 33 Гиббс 9

И

ИКМ 64

К

Котельников 15

Н

Найквист 15

Ф

ФВЧ 21, 22

ФНЧ 21, 22, 33

Фехнер 6 Флетчер 58

Х

Хаффман 60

Ц

ЦАП 33, 64

Ч

ЧМ-синтез 34

Ш

Шенон 15

А

алгоритм Хаффмана 60 аппаратный буфер 73 атака 18, 19, 30, 37

Б

банк инструментов 50, 51

биение 13 блок 65

блок синтезатора 41 буфер 64, 72 аппаратный 73 вторичный 73 первичный 73 потоковый 74 программный 64, 73 статический 74

буфера воспроизведения 75 захвата 75

В

волна звуковая 5

время 27, 28 вторичный буфер 73

Г

гейт 19 глубина 26 графический эквалайзер 21, 24

Д

давление звуковое 6

диапазон

динамический 17

динамический диапазон 17

дискретизация 15

интервал 15

Ж

жесткое колено 18

З

задержка начала 28

закон

Вебера-Фехнера 6 затухание 18, 19, 30, 37 зв-блок 41

звук

давление 6 интенсивность 6

звуковая волна 5 звуковая плата

DSP 42

FireWire 42

MIDI 42

PCI 42

S/P-DIF 42

S/PDIF 42

USB 42

АЦП 41

ЦАП 41

зв-блок 41 синтезатор 41

звуковое давление 6

И

интенсивность звука 6 интервал дискретизации 15

искажение 10

биение 13 интермодуляционное 12 линейное 10 наводки 13 нелинейное 12 перегрузка 12 помехи 11, 13

разбалансировка 11

шумы 13

К

квантование 16 шум 16

колено жесткое 18 мягкое 18

кольцевая модуляция 36 кольцевой буфер 72

компрессор 18 критическая полоса 58, 60

Л

лимитер 18

М

маскирование 58, 60

вперед 58

временное 58

назад 58

частотное 58

метод волновой формы 36 модуляция кольцевая 36 частотная 34

мягкое колено 18

Н

нелинейный синтез 36

О

обратная связь 26, 27 оверсэмплинг 15 отношение 18, 19

П

параграфический эквалайзер 21, 24 параметрический эквалайзер 21, 24 паттерновый секвенсор 56 первичный буфер 73

перегрузка 12 переходные помехи 11 поддержка 30, 37 подключение «в разрыв» 17 полоса

критическая 58

полосовый фильтр 21, 23 помехи 13 наводки 13 переходные 11

шумы 13 порог 18, 19

слышимости 6

болевой 6

потоковый буфер 74 преобразование

аналогово-цифровое 14

программный буфер 73 психоакустическая модель 59 психоакустическая таблица 60

Р

разбалансировка

громкости 11

помехи 11

фазовая 11

реверберация 28, 50 режекторный фильтр 21

С

секвенсор 56

паттерновый 56

синтез 30

FM 34

Sample Based 38 VA 39

WT 37, 50 ЧМ 34

нелинейный 36 субтрактивный 32 физическое моделирование 39

синтез звука 30 синтезатор 50

статический буфер 74


субтрактивный синтез 32 сэмпл 37 aтака 37 multi 37 затухание 37 многослойный 37 поддержка 37

Т

теорема

Котельникова-Найквиста-Шенона 15

Котельникова-Шенона-Найквиста 15 токовая петля 45

У

усиление 18

Ф

фазер 25 фильтр 21

высоких частот 21, 22 низких частот 21, 22, 33

полосовый 21, 23 режекторный 21 частотный 21

фильтрация 15 фленджер 25 формат потока 65 формирователь фазы 33

Х

хорус 25

Ц

цепочка буферов 64

Ч

частота 26 частотная модуляция 34 частотное маскирование 58

Ш

шаговый секвенсор 56 шум квантования 16, 59

Э

эквалайзер 24

графический 21, 24 параграфический 21, 24 параметрический 21, 24

экспандер 19 эффект chorus 25 delay 27 flanger 25 phaser 25 xорус 25 модуляционный 25 реверберация 28 фазер 25 фленджер 25 эхо 27

эффект Гиббса 9 эхо 27

c деградацией 27 digital delay 27

Список литературы

[1] Крапивенко А.В., «Технологии мультимедиа и восприятие ощущений», Москва М:. БИНОМ. Лаборатория знаний, 2009;

[2] Крапивенко А.В., «Методы и средства обработки аудио- и видеоданных», Москва М:. «Вузовская книга», 2010;

[3] Психоакустика: материалы с сайта websound.ru;

[4] Программный интерфейс MME: материалы с сайта rsdn.ru;

[5] Программный интерфейс DirectSound: Журнал «Компьютер Пресс», сайт: compress.ru.

[6] Протокол MIDI: Евгений Музыченко, «Описание интерфейса MIDI», сайт: opennet.ru


[1] Threshold.

[2] Ratio.

[3] Attack.

[4] Release.

[5] Gain.

[6] Hard knee, soft knee.

[7] Threshold.

[8] Range.

[9] Attack.

[10] Release.

[11] LPF — Low Path Filter.

[12] HPF — High Path Filter.

[13] Рабочая.

[14] Ширина рабочей полосы вокруг центральной частоты, обозначается буквой «Q».

[15] Rate.

[16] Depth.

[17] Feedback.

[18] Time.

[19] Feedback.

[20] Room size/type.

[21] Time.

[22] Predelay.

[23] Wave Table.

[24] Musical Instrument Digital Interface.

[25] Экран необходим только для защиты от излучаемых помех.

[26] Это потому, что «токовая петля», наводки просто гасят друг друга.

[27] Modulation.

[28] Volume.

[29] Pan.

[30] Все из того что производила фирма. 33 Chorus.

[31] Moving Pictures Expert Group

[32] Степень информационной значимости гармоник.

[33] В стандарте ISO11172-3 (MPEG-1 Layer 1,2,3). 37 Двухканальное стерео.

[34] Объединенное стерео

[35] Advanced Audio Coding.

[36] «Семейство форматов AAC».

[37] Nippon Telegraph and Telephone. 42 Windows Media Audio.

[38] MultiMedia Extension — мультимедийное расширение.

[39] Pulse Code Modulation - импульсно-кодовая модуляция, ИКМ.

[40] format tag

[41] Audio Compression Manager. 47 ACM Codec

[42] Component Object Model — модель объектов-компонентов, или составных объектов.

[43] Обмен информации между устройствами, без использования ЦП.