Процедурная генерация звука в реальном времени. Основы (3 стр)
Автор: xdevxx
Эффекты
Часто, после синтезирования и модуляции, получившийся звук ненатурален и звучит слишком синтетически. Для того чтобы его «облагородить», применяются эффекты пост-обработки, о которых и пойдет речь ниже.
Хор/фейзер/фланжер
Самый очевидный эффект, который добавляет натуральности звучания – имитация ансамбля инструментов, создающих звук. Каждый инструмент должен звучть слегка по-другому в смысле основной частоты, а также они должны проигрывать ноты с едва различимой задержкой относительно друг друга. Эффект, призванный эмулировать подобный ансамбль называется хор (англ. chorus – иногда так же его называют и по-русски - хорус), и реализация его по сути представляет из себя несколько параллельных линий задержек с варьируемой величиной (движимой низкочастотным осциллятором), и, опционально, каждая из этих линий имеет разную фундаментальную частоту (разница частот должна быть совсем небольшой).
Как объяснялось выше, сложение оригинальной версию звукового сигнала с его копией с некоторой небольшой задержкой по сути является простейшей версией так называемого гребенчатого фильтра. Если модулировать эту самую задержку с помощью, например, низкочастотного осциллятора, то получится так называемый эффект фланжер (англ. flanger). Название эффекта происходит от того, как этот эффект впервые получили исторически: два бобинных проигрывателя поставили рядом, и записывали проигрываемый ими одинаковый звук на третий проигрыватель. Затем, один из инженеров надавил пальцем на торец (англ. flange) бобины одного из проигрывателей, тем самым слегка замедлив проигрывание, и создав небольшую задержку. Затем он надавил на бобину другого магнитофона, тем самым снизив сокрость воспроизведения на нем и постепенно убрав разницу (задержку) в сигналах. Затем задержку снова добавили и так далее. В данном примере инженер служит низкочастотным осциллятором, а магнитофоны – параллельными линиями с относительной задержкой. Важно помнить, что задержку нельзя делать чересчур большой, потому что тогда мозг начнет воспринимать звуки как отдельные, и эффекта фланжера не получится. Соответственно, исходя из описания эффекта, фланжер представляет из себя две параллельные линии по которым идет оригинальный звуковой сигнал, одна из линий содержит задержку с изменяемым (чаще всего с помощью низкочастотного осциллятора) временем, далее сигнал с обеих линий складывается. Для наиболее приятного звучания этого эффекта иногда применяют нецелую задержку (чтобы время задержки менялось как можно плавнее). Подробнее про это можно почитать в книге за авторством Julius Orion Smith (например, [11]).
Следующий эффект, по структуре очень схож с фланжером, но вместо общей задержки для одной из двух линий, на которые был разведен оригинальный сигнал, располагают серию фазовых фильтров (они оставляют амплитуды для разных частот нетронутыми, а вот фазы разных частот входного сигнала меняются по-разному) – откуда его название фейзер (англ. phase shifter или phaser). Параметры фазовых фильтров все так же модулируются по определенному входному сигналу (например, низкочастотному осциллятору). В отличие от фланжера, который по сути представляет из себя равномерный гребенчатый фильтр, пики и провалы в фейзере будут расположены неравномерно (и, скорее всего, их будет меньше). Помимо более классических применений в пост-обработке музыкальных инструментов, фейзер так же можно использовать и для создания более естественных звуков – таких как шум ветра или морского прибоя (в качестве оригинального звука можно использовать простой розовый шум, или белый шум с low-pass фильтром).
Реверберация
Очень важным элементом пост-обработки звука является эффект звукового эхо. Он создает впечатление присутствия слушателя в каком-то определенном типе помещения, звуковые волны в котором переотражаются, искажаются, частично поглощаются, и доходят до наблюдателя в виде вторичных и последующих звуков, даже после того как оригинальный звук прекратился. Говоря научным языком, явление реверберации состоит в суперпозиции различных эхосигналов от одного источника звука.
Обычно результирующий звук, слышимый человеком состоит из нескольких частей: оригинальный звук, раннее эхо и позднее эхо или отзвук. Суть в том, что сразу после оригинального звука, поступает несколько довольно четких и разрозненных, несильно искаженных копий звука, которые и называются ранним эхом. Далее, искажения звука и повышенная частота эха не позволяют мозгу трактовать звуковой сигнал как серию отдельных, и получается нечто вроде мешанины звуков, задающих «характер звучания» определенного помещения – эта мешанина называется позднее эхо или отзвук. Порог восприятия звуков как отдельных в человеческом мозгу – примерно 30 мс. Возвращаясь к эффекту фланжера – именно по этой причине не стоит делать задержку более 30 мс – иначе мозг начнет определять звуки с большей относительной задержкой как разные, отдельные звуки, и эффект фланжера пропадет.

Для моделирования данных процессов использовались различные методы, начать стоит пожалуй с того, как эта проблема решалась до повального распространения цифровой техники. Самое очевидное и наименее интересное решение – реверберационная камера. Для получения определенных характеристик отзвука – в камере с нужными акустическими характеристиками располагается динамик и микрофон, и сухой звук прогоняется через динамики, и улавливается микрофоном уже с необходимыми переотражениями.
В аналоговых синтезаторах использовались более интересные методы реверберационных пружин и/или пластин. Суть данного метода заключается в том, что оригинальный звук подается на одну или несколько (все с разными физическими характеристиками) параллельно расположенных пружин, а на другой конец пружин подключен звукосниматель. Вторичные волны в пружинах и имитируют реверберацию. В случае с пластинами принцип схож – в определенное место пластины подаются звуковые колебания, они распространяются по пластине, взаимодействуют друг с другом, отражаются от стенок, и затем результат записывает звукосниматель, расположенный в каком-то другом месте пластины. Данные методы моделирования реверберации не то чтобы выдавали крайне реалистичные результаты, но зато они действительно давали приемлемые результаты, и даже привносили свои оттенки, так что даже некоторые современные цифровые синтезаторы моделируют в числе прочих и данные виды реверберации, для ценителей.
В цифровом мире один из способов моделирования реверберации – смоделировать распространение волн на пружине/пластине и, тем самым, постараться добиться звучания как на старых аналоговых синтезаторах.
Однако наиболее обширные методы моделирования реверберации заключаются в правильной настройке цепочки различных фильтров и задержек. Одним из первых, кто создал подобный цифровой алгоритм реверберации был М. Шрёдер (Manfred Schroeder). Дизайн его реверберационного алгоритма заключался в 4+ параллельно расположенных гребенчатых фильтра разных характеристик, за которыми следовали два или более фазовых (all pass) фильтра. У данного алгоритма конечно были свои недостатки (периодичность, металлические отзвуки и т.д.), сейчас о нем вспоминают с неодобрением, однако Шрёдер был пионером в этой области, он «проложил дорогу», так что ему нужно отдать должное. Впрочем есть основания думать что результаты Шрёдера отличались от тех, которые ему приписывают, так как помимо дизайна с гребенчатым фильтром он так же предлагал альтернативный дизайн с последовательностью фазовых фильтров, и такой дизайн, по слухам, был гораздо лучше [10].
Датторро пытался эмулировать пластинный ревербератор с помощью серии фильтров. Его диаграмма состояла из двух частей: первая часть («диффузор»), состоит из последовательности задержки, low-pass и нескольких фазовых фильтров; вторая часть («резервуар») сложна, и состоит из двух параллельных линий, которые подаются как обратная связь друг на друга, и представляют из себя комбинацию задержек, low-pass, усилителей и фазовых фильтров. [15] для уточнения.
Один из самых точных методов добавления реверберации является свертывание (convolution) с импульсной характеристикой (impulse response) комнаты. То есть в комнате проигрывают звук минимальной длительности (в идеале, 1/Fs секунд) и записывают результат. Получившаяся звуковая дорожка – и есть импульсная характеристика конкретной комнаты.
В современных интерактивных приложениях применяются более сложные цепи с линиями задержек и циклами связей (англ. Feedback Delay Networks), которые по сути – комбинация нескольких гребенчатых фильтров с разными параметрами, такой подход позволяет достичь довольно высокого соотношения цена/качество, и в деталях реализацию подобной системы можно изучить, например в [6] или [17].
Время затухания реверба (RT60)
В конце 19го века, Уоллес Сэбин (англ. Wallace Clement Sabine) проводил исследования по влиянию поглощающего коэффициента материала на поведение реверберации. И вывел простую эмпирическую формулу для прямоугольных комнат, которую можно использовать и по сей день для вычисления скорости затухания реверба в помещении. Его формула рассчитывала время затухания реверба на 60 децибел (т.е. в миллион раз), поэтому часто коэффициент посчитанный по его формуле называют RT60, а формулу для его расчетов используют следующую (подразумевается что звук распространяется в комнате, наполненной воздухом при температуре 20º Цельсия):

Коэффициент 0.1611 в этой формуле рассчитывается с учетом скорости распространения звука в данной среде при данной температуре, V – объем комнаты, S – общая площадь поверхности комнаты, и a – усредненный коэффициент поглощения звуковых волн. Вместо S*a можно подставить более точную величину, «общий фонд звукопоглощения» - сумму Si*ai для каждой поверхности.
Кратко о некоторых других эффектах
Вот небольшой список список других эффектов, которые имеет смысл реализовать в синтезаторе:
• Компрессор (англ. compressor) – эффект, призванный уменьшить динамический диапазон звука, т.е. когда звук становится слишком громким – он его приглушает, и наоборот. В [2] можно найти пример компрессора, плавность действия которого достигается анализом среднего квадратического сигнала, а не немедленным ответом на основе входного сигнала.
• Биткрашер (англ. bit-crusher) – попросту уменьшает битность сигнала, что вносит в звук искажения из-за большего шага дискретизации.
• Лесли (англ. Leslie speaker) – довольно сложный для моделирования эффект, впервые примененный в «аналоговом» мире с помощью вращения динамиков, что придавало звуку довольно интересный характер. Послушать можно на английской страничке википедии: http://en.wikipedia.org/wiki/Leslie_speaker
• Вау-вау (англ. wah-wah) – эффект, название которого отлично передает то, как он звучит. Достигается такое звучание за счет разделения сигнала на две параллельные линиии, одна из которых содержит полосный фильтр с изменяющимися параметрами полосы пропускания (она должна «ездить» влево-вправо).
• Овердрайв (англ. overdrive) / дисторшн (англ. distortion) - ограничение звука по амплитуде, однако в отличие от дисторшена – в овердрайве происходит оно мягко, а не просто отсекается по определенному диапазону.
Пространственные эффекты
До сих пор речь шла о звуках, которые не имеют пространственного источника, в качестве примера – фоновая музыка. Однако в интерактивных приложениях практически всегда требуется выводить звуки так, чтобы пользователь мог определить направление, откуда исходит звук. Для моделирования эффекта пространственности есть несколько способов.
Самый простой способ – просто задать разную звуковую интенсивность для разных звуковых каналов (метод называется интерауральная разница интенсивностей (англ. interaural intensity difference), его более общий аналог в синтезаторах - sound panning), но этот способ практически не создает иллюзии присутствия, поскольку наш мозг использует и другие критерии для определения местоположения. Например, разницу фаз в сигналах, поступающий в уши. Метод моделирования этого явления называется интерауральная разница времени (англ. interaural time difference): http://en.wikipedia.org/wiki/Interaural_time_difference, и заключается он в том, чтобы посылать сигнал на разные уши с разной задержкой. Так, например, если сигнал идет строго справа относительно наблюдателя, то в левое ухо он придет на 0.6 мс (миллисекунд!) позже. Вкупе с предыдущим методом, данный метод является довольно хорошей основой для горизонтального позиционирования звука, и вместе их называют дуплексная теория локализации звука Рэлея (англ. Rayleigh Duplex Theory of Sound Localization).
Проблемы начинаются когда есть необходимость/желание позволить пользователю определять направление звука во всех трех измерениях (напомню, предыдущая дуплексная теория позволяет сделать это только на горизонтально плоскости, так как при вертикальном перемещении ни фазовая разница, ни разница интенсивностей не меняется). Наш мозг в данном случае использует искажение сигнала, вызванные его взаимодействием с ушной раковиной.
Бинауральные эффекты
В сети довольно распространены видеоролики, демонстрирующие так называемые «бинауральные эффекты». Фактически, при просмотре этих роликов в наушниках (особенно с закрытыми глазами), ощущаешь себя в центре событий, за счет звукового сопровождения. Секрет в том, что при записи аудиодорожки для данных роликов используется метод «бинауральной записи» - в отличие от стандартной стереозаписи звука двумя разнесенными микрофонами, в бинауральном методе используется манекен с ушными раковинами, в слуховой канал которых вставлены микрофоны. Это позволяет придать звуку искажения, необходимые для корректной обработки звукового сигнала мозгом, а следовательно, создать эффект присутствия.
В цифровом мире аналог такого манекена – так называемая передаточная функция слухового аппарата человека (англ. head-related transfer function, HRTF). По сути, это фильтр, который определяет вид и степень искажения сигнала в зависимости от его положения относительно головы слушателя.
Примеры
Рассмотрим на примере, как можно синтезировать звук колеблющейся струны.
Классический алгоритм субтрактивного синтеза называется алгоритм Карплуса-Стронга (англ. Karplus-Strong string synthesis) и представляет из себя прямую линию на выход, и расположенную на ней петлю обратной связи, в которой так же установлены линия задержки и low-pass фильтр, не дающий усиления больше единицы по любой частоте для того, чтобы алгоритм оказался стабилен. Как видно, это по сути представляет собой вложенную систему фильтров, где low-pass фильтр встроен в гребенчатый, так же это в некоторое мере можно рассматривать как фланжер с фиксированным временем задержки и дополнительным фильтром.
Классическая версия алгоритма была доработана ([14]).
Другой подход к моделированию струны заключается в физическом моделировании распространения волн на струне.
Для одной струны, точка зрения, в некотором роде объединяющая два этих подхода – так называемая теория цифрового синтеза с помощью волноводов (англ. digital waveguide synthesis). В этой теории рассматривается решение волнового уравнения с позиции линий задержки для моделирования геометрии, цифровых фильтров для моделирования необходимых потерь в зависимости от частоты, и петель прямой/обратной связи ([13]).
Несколько довольно хороших примеров по синтезу звука можно увидеть в этом источнике: [16]. Настоятельно рекомендуется изучить все уроки по порядку.
Источники
[1] “Основные типы синтеза звуков”, http://www.7not.ru/articles/soundsynth.phtml
[2] Music DSP archive, http://www.musicdsp.org/showmany.php
[3] “Practical softsynth design”, https://www.scene.org/file.php?file=%2Fparties%2F2005%2Fbreakpoin… &fileinfo
[4] “Рекурсивный синтез волн", iliks (Илья Палопеженцев), http://democoder.ru/article/8
[5] “Handbook for acoustic ecology”, http://www.sfu.ca/sonic-studio/handbook/Sound_Synthesis.html
[6] “Reducing artificial reverberation algorithm requirements using time-variant feedback delay networks”, Jasmin Frenette, 2000
[7] Аргумент комплексного числа, http://en.wikipedia.org/wiki/Argument_(complex_analysis)
[8] “Digital sound processing tutorial for the braindead!”, http://yehar.com/blog/?p=121
[9] controltheoryorg lectures, http://www.youtube.com/user/controltheoryorg/videos
[10] “Schroeder Reverbs: the forgotten algorithm”, ValhallaDSP, http://valhalladsp.wordpress.com/2009/05/30/schroeder-reverbs-the… en-algorithm/
[11] Домашняя страница Julius Orion Smith, https://ccrma.stanford.edu/~jos/
[12] “Introduction to Digital Filters”, J.O. Smith III, web book, https://ccrma.stanford.edu/~jos/filters/
[13] “Digital Waveguide Synthesis”, Julius Orion Smith , https://ccrma.stanford.edu/~jos/wg.html
[14] “Extended Karplus-Strong”, Julius Orion Smith, https://ccrma.stanford.edu/~jos/pasp06/Extended_Karplus_Strong_Algorithm.html
[15] “Effect Design Part 1: Reverberator and Other Filters”, J. Dattorro, J. Audio Eng. Soc., vol. 45, pp. 660-684, Sept. 1997
[16] “Practical synthetic sound design”, Andy Farnell. http://www.obiwannabe.co.uk/tutorials/html/tutorials_main.html
[17] “Fast Environmental Reverb Based on Feedback Delay Networks”, Christian Schüler, Game Programming Gems 5, pp. 729-741, 2005
[18] “Современные звуковые технологии в играх”, А. Меньшиков, http://www.ixbt.com/multimedia/sound-technology-in-games-2003.shtml
#dsp, #filter, #fir, #iir, #soft synth, #ачх, #бих, #ких, #синтез звука, #фчх
26 января 2014 (Обновление: 22 фев 2014)
Комментарии [7]