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

Загрузить архив:
Файл: ref-31028.zip (812kb [zip], Скачиваний: 166) скачать

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

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

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

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

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

x(t)

t

Преподаватель: О. В. Казанцев Студент: И. К. Никитин

Москва, 2010

Содержание

1 Основные сведения о звуковых волнах 5 Характеристики ............................. 5 ЗаконВебера-Фехнерадлязвука .................. 6 Логарифмическаяшкала ....................... 6 Примеры ................................. 7 Спектральноепредставлениезвука ................. 7 Искажения и эффекты 10 2 Линейные искажения 10 Линейныеискажения ......................... 10 Искажениявмногоканальныхсистемах .............. 10 3 Нелинейные искажения. Помехи и шумы 12 Примерынелинейныхискажений .................. 12 Перегрузка ............................ 12 Интермодуляционные ..................... 12 Биение .............................. 13 Помехи .................................. 13 4 Цифровой способ представления звука 14 Аналогово-цифровоепреобразование ................ 14 Фильтрация ........................... 15 Дискретизация ......................... 15 Квантование ........................... 16 5 Динамическая обработка звука 17 Компрессорилимитер ......................... 18 Гейтиэкспандер ............................ 19 6 Частотная коррекция звукового сигнала 21 Частотныефильтры .......................... 21 Фильтрнизкихчастот ..................... 22 Фильтрвысокихчастот .................... 22 Полосовыйфильтр ....................... 23 Эквалайзер ................................ 24 7 Пространственные и модуляционные эффекты 25 Хорус,Фленджер,Фазер ........................ 25 Эхо ..................................... 27 Реверберация .............................. 28 Синтез звука 30 8 Аддитивный синтез звука 31 9 Субтрактивный синтез звука 32 10 Частотной модуляция 33 ................... 33 ......................... 34 10.3Синтез ................................... 34 11 Нелинейный синтез звука 36 12 Таблицы волн 37 ................................ 37 12.2Сэмплерныесинтезаторы ....................... 38 13 Физическое моделирование 39 14 Звуковые платы 40 ........................ 40 14.2Блокзаписиивоспроизведения ................... 41 14.3Блоксинтезатора ............................ 41 14.4БлокDSP ................................. 42 ........................... 42 14.6Блокмикшера .............................. 43 MIDI-интерфейс 44 15 MIDI-интерфейс 44 ............................ 44 15.2АппаратнаяреализацияMIDI ..................... 45 15.3РазъемDIN-5(СГ-5) ........................... 46 16 Протокол MIDI 47 16.1АдресациявMIDI ............................ 47 16.2ТипыMIDI-сообщений ......................... 48 ................ 48 16.2.2Канальныесообщенияорежиме ............... 49 16.2.3Системныесообщения ..................... 49 17 Стандарты MIDI-систем 50 17.1GeneralMIDI ............................... 50 ............................ 50 17.3ExtendedGeneralMIDI(XG) ...................... 51 ................................ 52 Запись и передача 53 18 Секвенсоры 53 18.1Простейшаястудия ........................... 53 18.2Студиядлязаписи«живого»исполнения .............. 53 18.3Студиядлямногоканальнойзаписи ................. 54 ....... 55 ................................ 56 .................... 56 18.5.2Линейные ............................. 57 19 Маскирование 58 .............................. 59 20 Формат MP3 60 ......................... 60 ........................... 60 20.3Режимыкодированиястерео ..................... 61 20.4Психоакустическиеформаты ..................... 62 Программирование звука 63 21 Основные программные интерфейсы 63 22 Программный интерфейс MME 63 ..................... 64 22.2Форматпотока .............................. 65 22.3Структурапотока ............................ 65 22.4Системныеособенности ........................ 66 22.4.1Несколькопроцессов ...................... 66 22.4.2WaveMapper ........................... 66 22.4.3Устройства ............................ 67 22.5Алгоритмвзаимодействия ....................... 69 23 Программный интерфейс DirectSound 71 ................ 71 ........................ 71 23.3Звуковыебуферы ............................ 72 ................. 72 ................... 73 23.4Уровнивзаимодействия ........................ 77 23.5Наборысвойств ............................. 78 ...................... 78 23.7Системныеособенности ........................ 78 23.8Алгоритмвзаимодействия ....................... 79 ........................ 79 23.8.2Запись ............................... 80 Предметный указатель 81

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

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

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

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

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

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

м2

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

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

м2

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

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

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

I

L = log

I0

  • L — интенсивность в Беллах.
  • I — интенсивность.
  • I0 — порог.

1.4. Примеры

Шум Громкость
Фоновый 10 Дб
Транспорт 70 Дб
Оркестр 90 Дб
Наушники 100 Дб
Реактивный двигатель 120 Дб
Болевой порог 130 Дб

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

Звук представим в виде спектра: x(t) = X · sin (2 · t + φ) ;

π · f · x(t)

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

x(t)

1 Y (x) = sin (2 · (2n + 1) · πF x)

A ·

2k + 1 ·

n=0

  • A — амплитуда;
  • f — частота.

7

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

x(t)

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

x(t)

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

x(t)

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

x(t)

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

x(t)

Наблюдаемые горбы (осциляции) называются эффектом Гиббса. Таким образом можно изобразить звуковой спектр на графике:

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

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

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

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

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

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

Xf

Y (f)=20lg

Xf0

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

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

Разбалансировка громкости явление, при котором, какой-то канал

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

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

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

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

21

+ x

22

+ ... + x

2 n

x

100%

K =

x0 ·

  • x0 — амплитуда выходного сигнала;
  • x1...xn — амплитуды наведенных гармоник.

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

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

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

x(t)

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

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

3.1.3. Биение

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

3.2. Помехи

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

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

U = 20 · log Un

Umax

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

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

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

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

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

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

x(t) x(t)

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

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

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

1 2Fmax

  • Частота 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 определяет жесткость срабатыва-ния (отношение достигает своего значения сразу или плавно).

Threshold. Ratio. Attack. Release. Gain. Hard knee, soft knee.

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

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

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

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

  • Порог7 уровень сигнала, при котором срабатывает обработка.
    • Отношение8 определяет насколько должен уменьшаться сигнал, уровень которого ниже порога. Чаще всего полное ослабление.
    • Например, 40 Дб — это практически полное ослабление.
  • Атака9 скорость срабатывания компрессора.
  • Затухание10 — скорость восстановления компрессора.

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

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

7Threshold.

8Range. 9Attack. 10Release.

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

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

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

  • ФНЧ (LPF)
  • ФВЧ (HPF)
  • Полосовый фильтр(BPF)
  • Режекторный (Notch filter) — полосовый фильтр, работающий в минус
  • Графический эквалайзер
  • Параметрический эквалайзер
  • Параграфический эквалайзер — гибрид параметрического и графи-ческого эквалайзера

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

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

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

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

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

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

11LPF — Low Path Filter. 12HPF — High Path Filter.

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

  1. Полосовый фильтр
  2. Эквалайзер

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

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

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

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

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

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

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

  • Центральная13 частота в герцах (Гц);
  • Добротность14 — безразмерная величина;
  • Уровень усиления или ослабления выбранной полосы в децибелах (дБ).

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

13Рабочая. 14Ширина рабочей полосы вокруг центральной частоты, обозначается буквой «Q».

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

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

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

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

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

Фазер 1 6 Фленджер 7 15 Хорус 15 90

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

  • Частота15 — частота модулирующего генератора.
  • Глубина16 — величина отклонения тона
  • Обратная связь17 — величина обработанного сигнала, подаваемого на вход. Определяет число повторов.

15Rate. 16Depth. 17Feedback.

7.2. Эхо

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

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

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

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

  • Время18 — интервал времени между повторами.
  • Обратная связь19 — величина обработанного сигнала, подаваемого на вход. Определяет число повторов.

18Time. 19Feedback.

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

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

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

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

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

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

room,

hall,

stadium,

cathedral,

bathroom,

plate,

spring и т.д.

  • Время21 – время звучания реверберационного хвоста (не путать с вре-менем задержки как у delay)
  • Задержка начала22 – определяет расстояние от источника звука до ближайшей стены, то есть время, через которое начнется ревербера-ция.

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

20Room size/type. 21Time. 22Predelay.

Синтез звука

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • формирователь фазы;
    • сумматор; регистр;
    • ПЗУ;
    • В ПЗУ записаны отсчеты функции (sin x) для одного периода. Точки одинаково удалены по времени.
  • перемножатель параллельных кодов;
  • ЦАП — цифро-аналоговый преобразователь;
  • ФНЧ — фильтр низких частот;

Код амплитуды

23NCO — Numeric Controlled Oscilator.

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

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

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

·

  • Ac — амплитуда несущей частоты;
  • fc — несущая частота;
  • mf — индекс частотной модуляции;
  • fm — модулирующая частота.

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

10.3. Синтез

fm fc

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

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

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

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

Недостаток:

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

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

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

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

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

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

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

Простота.

Недостаток:

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

A2

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

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

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

12.1. WT-синтез

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

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

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

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

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

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

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

Недостатки:

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

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

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

24Wave Table.

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

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

25Его еще называют Sample Based синтез.

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-интерфейс

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

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

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

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

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

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

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

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

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

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

26Musical Instrument Digital Interface.

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

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

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

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

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

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

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. В этом режиме оно пе-рестает различать каналы.

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

Канальные сообщения предназначены для передачи команд и парамет-ров отдельным 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 в режиме Poly можно брать аккорды;

в режиме 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) модуляция29;
  • (7) громкость инструмента30;
  • (10) панорама31 — правый-левый канал.

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

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

17.2. General Synthesis

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

Введено дополнительно 98 звуков32. Введены дополнительные контроллеры:

  • (91) реверберация ;
  • (93) хорус33.

29Modulation. 30Volume. 31Pan. 32Все из того что производила фирма. 33Chorus.

17.3. Extended General MIDI (XG)

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

  • 676 инструментов;
  • 21 набор ударных инструментов;
  • 32 голоса полифония;
  • расширенные требования к различным контроллерам;
  • есть возможность настройки каждой ноты звукоряда;
  • введена типизация банка инструментов: (0) normal — мелодичные инструменты; (64) SFX — специальные эффекты;

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

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

17.4. Все вместе

mod. volume

контрол-

pan

леры

128 инстру-ментов

GM

10-й поддержка

канал GM ревер-берация

+ контрол-

MIDI GS

леры

поддержка

GS хорус

676 + 98 инстру-

инстру- ментов

ментов

XG 0 21 normal

ударный банк типизация

банка

64

32 голоса настройка

SFX нот 126

127 drums

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

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

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

  1. Простейшая студия
  2. Студия для записи «живого» исполнения
  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 сокращение от MPEG34 Layer3. Это формат хранения и передачи аудиосигнала в цифровой форме. В MP3 используется алгоритм сжатия с потерями.

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

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

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

  • абсолютные ограничения слуха (20 Гц – 20 кГц);
  • частоты маскирования и ширину критических полосы;
  • последовательное (временное) маскирование;
  • воспроизводимую энтропию35.

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

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

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

34Moving Pictures Expert Group 35Степень информационной значимости гармоник.

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

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

    • Dual channel37 — два абсолютно независимых («совсем разных») ка- нала. Битрейт делится на два канала.
    • Может использоваться для речевого сопровождения на раз-ных языках.
  • standard stereo два независимых канала. Битрейт варьируется в зависимости от сложности сигнала в каждом канале.
  • Joint stereo38 — основан на использовании избыточности стерео-информации.

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

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

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

36В стандарте ISO11172-3 (MPEG-1 Layer 1,2,3). 37Двухканальное стерео. 38Объединенное стерео

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

  • AAC39 — разрабатывался как преемник MP3 компанией Fraunhofer при участии AT&T, Sony, NEC и Dolby. Проект не был доведен до кон-ца. На данный момент существует большое число несовместимых друг с другом форматов на основе AAC40.
  • TwinVQ формат, разработанный компанией NTT41. Считается ста-рейшим «конкурентом» MP3. Лицензией на право распространения этого формата владеет фирма Yamaha.
  • WMA42 — формат сжатия аудиоданных от компании Microsoft.

39Advanced Audio Coding. 40«Семейство форматов AAC». 41Nippon Telegraph and Telephone. 42Windows Media Audio.

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

  1. Основные программные интерфейсы
  2. Программный интерфейс MME

Первоначально интерфейс со звуковыми устройствами был введен в Windows

3.x под названием MME43. Звуковые устройства в Windows относятся к классу Multimedia/Audio; в этот класс входят два три устройств:

43MultiMedia Extension — мультимедийное расширение.

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

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

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

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

При работе со звуковыми адаптерами чаще всего используется традици-

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

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

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

44Pulse Code Modulation -импульсно-кодовая модуляция, ИКМ.

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

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

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

  • способ кодирования — это главный параметр, он же признак форма-та45.;
  • частота дискретизации;
  • количество каналов;
  • разрядность отсчета.

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

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

В PCM блоком считается набор отсчетов, передаваемых за один

период частоты дискретизации, то есть — один отсчет для мо-

нофонических потоков, два -для стереофонических, и так далее.

Отсчеты могут быть 8-разрядными, 16-разрядными, 32-разрядными.

Современные звуковые адаптеры могут использовать 18-, 20-и

22-разрядные отсчеты. Отсчет выравнивается по старшей гра-

нице трех-или четырехбайтового слова, а лишние младшие раз-

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

зуются и заменяются четырехбайтовыми.

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

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

45format tag

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

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

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

Устройство, драйвер которого поддерживает не более одного

клиента, не может быть повторно открыто до тех пор, пока кли-

ент не закроет его. При попытке повторно открыть такое устрой-

ство звуковая подсистема возвращает ошибку, сигнализирующую

о том, что устройство занято.

22.4.2. Wave Mapper

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

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

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

46Audio Compression Manager. 47ACM Codec

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

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

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

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

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

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

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

  • HWAVEIN;
  • HWAVEOUT.

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

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

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

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

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

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

1: открыть (

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

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

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

5: );

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

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

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

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

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

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

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 построена по объектно-ориентированному прин-ципу в соответствии с моделью COM48 и состоит из набора интерфейсов. Каждый интерфейс отвечает за объект определенного типа:

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

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

DirectSound не поддерживает звуковые форматы, отличные от

PCM. Назначение DirectSound — исключительно эффективный

вывод звука.

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

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

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

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

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

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

48Component Object Model — модель объектов-компонентов, или составных объектов.

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

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

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

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

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

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

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

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

  • Классические адаптеры типа Sound Blaster, Windows Sound System и совместимые с ними используют буфер в основной памяти компью-тера с доступом через DMA49.
  • Адаптеры архитектуры Hurricane (Turtle Beach Tahiti, Fiji и совмести-мые) используют буфер в собственной (on-board) памяти, который до-ступен в виде «окна» в диапазоне адресов внешних устройств.
  • Существуют также адаптеры со встроенным буфером, доступ к кото-рому осуществляется через порты ввода-вывода; обычно так работа-ют таблично-волновые синтезаторы.

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

49Обмен информации между устройствами, без использования ЦП.

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

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

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

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

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

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

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

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

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

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

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

Для того чтобы успевать вписывать звук в первичный буфер,

приложение должно иметь высокий уровень приоритета. Но да-

же в этом случае Windows не гарантирует нужной скорости.

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

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

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

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

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

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

    • Для базовых источников DirectSound доступно управление
    • громкостью, панорамой, частотой дискретизации;
  • для источников DirectSound3D еще

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

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

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

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

81

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

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 маскирование 58 , 60 глубина 26 вперед 58 графический эквалайзер 21 , 24 временное 58

назад 58 частотное 58 метод волновой формы 36

давление

модуляция

звуковое 6

кольцевая 36

диапазон

частотная 34

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

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

динамический диапазон 17 дискретизация 15 интервал 15 Н нелинейный синтез 36

Ж

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

задержка начала 28 отношение 18 , 19 закон

Вебера-Фехнера 6 П затухание 18 , 19 , 30 , 37 параграфический эквалайзер 21, 24 зв-блок 41 параметрический эквалайзер 21, 24 звук паттерновый секвенсор 56

давление 6 первичный буфер 73

интенсивность 6 перегрузка 12 звуковая волна 5 переходные помехи 11 звуковая плата поддержка 30 , 37

DSP 42 подключение «в разрыв» 17 FireWire 42 полоса MIDI 42 критическая 58 PCI 42 полосовый фильтр 21 , 23 S/P-DIF 42 помехи 13 S/PDIF 42 наводки 13 USB 42 переходные 11 АЦП 41 шумы 13 ЦАП 41 порог 18, 19 зв-блок 41 слышимости 6 синтезатор 41 болевой 6

звуковое давление 6 потоковый буфер 74 преобразование аналогово-цифровое 14

программный буфер 73

интенсивность звука 6

психоакустическая модель 59

интервал дискретизации 15

психоакустическая таблица 60

искажение 10 биение 13 интермодуляционное 12 Р линейное 10 разбалансировка наводки 13 громкости 11 нелинейное 12 помехи 11 перегрузка 12 фазовая 11 помехи 11 , 13 реверберация 28 , 50 разбалансировка 11 режекторный фильтр 21 шумы 13

С

К секвенсор 56 квантование 16 паттерновый 56 шум 16 синтез 30

колено FM 34 жесткое 18 Sample Based 38 мягкое 18 VA 39

кольцевая модуляция 36 WT 37 , 50 кольцевой буфер 72 ЧМ 34 компрессор 18 нелинейный 36 критическая полоса 58 , 60 субтрактивный 32

физическое моделирование 39 синтез звука 30 синтезатор 50

лимитер 18

статический буфер 74

83

субтрактивный синтез 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