Синтез звука в среде Pure Data
Материал из Xgu.ru
Редактор: Илья Дмитриченко
- Короткий URL: pd
Pure Data — это язык визуального программирования, изначально придуманный для программирования звука в реальном времени, а в настоящий момент, с помощью дополнительных модулей, позволяющий решать большое количество других задач.
Основной пакет распространяется по лицензии в стиле BSD.
Как сам язык, pd классифицируется data flow, объектно ориентированный язык программирования. Концепция объектов в pd отличается от объектов в других ОО языках; здесь объекты являются единичными генераторами (англ. 'unit generator'). Понятие о единичных генераторах в первые появилось в самых первых програмных пакетах семейства 'MUSIC N', к которому pd и принадлежит.
На данной странице речь пойдет об основных методах создания звуковых волн при помощи pd с интерактивной переменой параметров. Внизу приведены ссылки на сетевые ресурсы содержащее всё касающееся Pure Data, включая учебные материалы.
Содержание |
[править] Установка и запуск
Если вашей операционной системой является Линукс, вы можете установить пакет посредством вашего системного пакетного менеджера (Yum, Synaptic и др.).
На зеркалах Debian имеются все необходимые пакеты. Для Gentoo используйте pd-overlay , который включает в себя как и основной ebuild, так и популярные расширения. О том, как добавить это к дереву портежей, смотрите документацию . Порты FreeBSD включают также включают основной пакет pd (в разделе audio/). На настоящий момент Pd является очень стабильной программой, поддерживается большинство платформ включая Solaris и IRIX, ну и Windows, и Mac OS X. Пользователи Slackware могут взять SlackBuild, который находится здесь.
Внимание! Пользователям с процессорами x86_64 необходимо устанавливать версию не ранее 0.41-0test6, иначе весьма незаметный баг может повлиять на ваши опыты!
Основной пакет Pure Data распространяется автором по адресу http://www-crca.ucsd.edu/~msp/software.html , пакеты .rpm и .deb можно найти здесь.
[править] Сборка
В принципе, единственной зависимостью является Tcl/Tk, которые есть практически во всех дистрибутивах.
Практически каждый желающий может собрать Pd при помощи обычной серии команд (`tar xzvf pd-VERSION && cd pd-version/src && ./configure && make && make install`), но тем кто знает достаточно о своей системе , советую посмотреть на варианты сборки (`./configure --help`). Для полного эффекта рекомендуется иметь RT патчи в ядре. Многие так же используют jackd.
[править] Запуск
Запустить программу очень просто: введите `pd &` в терминале. Через пару секунд перед вами возникнет основное окно, вид которого отображен ниже.
Стоит заметить (здесь и в дальнейшем), что на вашей системе некоторые детали могут отличаться внешне и по содержанию, в зависимости от вашей системы и версии pd.
Первым делом, настроим звук. Зайдите в меню "Media->ALSA" и в новом окне выберите частоту дискретизации (sampling rate), если ваша звуковая карта позволяет, выберете 48000 Гц, иначе 44100 Гц будет достаточно. Моя карта позволяет 96 кГц и 8 каналов. Большинство обычных карт дают 44.1 кГц стереозвук, многие из них работают с частотой 48 кГц. От частоты дискретизации зависит общее качество звука. Для многих пользователей настроек по-умолчанию будет достаточно. Выберите карту которую собираетесь использовать для входа/выхода и отметьте кнопкой слева.
Pd поддерживает ALSA, PortAudio, OSS, JACK и MMIO (windows), поддержка настраивается при сборке. В данной статье автор использует исключительно ALSA.
Теперь проверим если всё работает. В меню "Media" выберите "Test Audio and MIDI", появиться окно показанное на снимке с экрана ниже.
В колонке "TEST SIGNAL" (слева), щелчком мыши выберите уровень громкости (-40 dB), и вы должны услышать монотонный звук. Если вы не слышите, посмотрите если есть упоминание об ошибках в основном окне, проверьте уровень звука в `alsamixer`. При возникновение проблем, читайте более подробную HTML документацию, которую можно найти в меню "Help->Html ..." в разделе "3. getting Pd to run".
После затянувшегося вступления, перейдем к использованию.
[править] Первый шаг
В меню "File" выберите "New (Ctrl+n)". Перед вами открывается окно в чистым полотном. В первую очередь следует создать объект через меню "Put->Object (Ctrl+1)", в дальнейшем можно просто нажимать "Ctrl+1" на клавиатуре. Под курсором появляется штрихованная рамка, введите название объекта: наш первый объект обозначается "osc~", щелкните правой кнопкой мыши на поверхности полотна. Должно получится как на этой картинке:
Познакомьтесь, перед вами самый основной объект аудио синтеза - "осциллятор", генератор гармонических колебаний. Вы наверное уже заметили что в обоих верхних углах рамка утолщена, так же как и в одном нижнем углу, так обозначаются "впуск"/"выпуск" объекта. Рассмотрите рисунок.
Первый впуск с права принимает значения частоты (в герцах), а второй сбрасывает фазу к нулю. Из выпуска получаем сигнал единичной амплитуды формы косинусоиды. Чтобы это проверить зайдем в меню "Put" и выберем "Number (Ctrl+3)", положим этот объект над [osc~] и проведем провод, наведя курсор на выпуск из числового объекта курсор становится колечком, удерживая левую кнопку мыши, протяните провод до частотного впуска [osc~].
Чтобы услышать результат надо подключить выходной сигнал из [osc~] к входу аудио карты, который в pd представляется объектом [dac~]. Создайте новый обект (либо через меню "Put->Object", либо "Ctrl+1" на клавиатуре) и впишите "dac~ 1" в него и расположите объект под [osc~] или где считаете нужным. Цифра "1" является параметром [dac~] и, по сути, представляет 1-ый канал на аудио карте. Соединив [osc~] и [dac~ 1] вы можете заметить что провод между ними толще чем провод между числовым объектом и [osc~] - в pd жирный провод, это тот который передает сигнал, а тонкий - всяческие числовые данные и сообщения.
Соединив генератор с аудио выходом таким образом вы ещё не должны услышать ничего кроме щелчка в момент соединения. Надо установить частоту колебаний, это делается при помощи числового объекта.
Каждый pd патч имеет два режима - режим редактирования и режим исполнения, эти режимы переключаются через меню "Edit-> Edit Mode" или "Ctrl+e" на клавиатуре. В режиме исполнения объекты становятся неподвижны и контрольные элементы становятся управляемыми (которые включают в себя числовые объекты и многие другие, с которыми мы познакомимся чуть позже). Так давайте теперь переключимся в режим исполнение и зажав левую кнопку мыши на числовом объекте, поведите курсор в сторону. Таким образом число должно измениться и если оно превышает 20 - 50, в зависимости от вашей аппаратуры и слуха, вы услышите достаточно громкий монотонный звук.
Теперь давайте попробуем несколько других контрольных элементов, зайдите в меню "Put" и нажмите на пунктирную линию в самой верхней части, теперь не надо каждый раз идти в меню. Выберите объекты: "Message" (3 шт.), "Comment", "Toggle", "Number" (2 шт.) и "Hslider" - расположите их приблизительно как на картинке выше.
Чтобы изменить объект или сообщение, поднесите к нему курсор и щелкните по середине, появится мигающий курсор, теперь вводите новое значение.
Соедините и обозначьте все объекты как на следующем изображение.
Переключите патч в режим исполнения и попробуйте различные действия над этими объекта при помощи мыши, обратите внимание что при правом щелчке появляется контекстное меню включающее "Properties", "Open" и "Help"; попробуйте "Help" для некоторых объектов - появится окно с примером использование, объясняющим назначение. Для некоторых объектов есть дополнительные настройки - "Properties", зайдите туда и посмотрите какие параметры можно изменить. Попробуйте увеличить размер и диапазон слайдера нажмите "Apply".
Можете создать новый слайдер и подсоединить его к управлению частотой [osc~] (попробуйте так же изменить его параметры чтобы частота была, на пример, между 20 и 200 Гц. Как некоторые из вас наверное уже заметили, при помощи этих разнообразных объектов можно построить музыкальные инструменты!
На данном этапе рекомендую самим заглянуть в список встроенных базовых объектов Pure Data, которые вы увидите если щелкните правой кнопкой на фоне только что созданного патча!
Промотайте ниже и вы найдете множество разнообразных объектов. Так же есть очень хорошая подборка примеров в меню "Help->Browser...".
Рекомендую рассмотреть патч показанный в этом примере ("Help_>Browser..._>3.audio.examples/A02.amplitude.pd").
[править] Методы создания звука
- В это разделе вы прочитаете от том как создать более сложные формы звуковых волн при помощи pd, в частности познакомитесь с частотной и амплитудной модуляцией.
[править] АМ
В pd присутствуют все основные математические функции, много дополнительных функций особого назначения можно найти в библиотеках (очень популярны expr и zexy). Для первых экспериментов нам потребуются лишь обычные математические действия. Начнем с умножения двух сигналов, которое принято называть амплитудной модуляцией.
Создайте патч как показано на рисунке ниже, с двумя объектами [osc~], [*~] (умножение сигналов) и разумеется [dac~]. Так же следует включить [*~ 0.6] что предотвратить чрезмерную громкость, уменьшаем амплитуду до 60%. Так же необходимы два регулятора частот.
В радиосвязи АМ используется с целью передачи волн аудио частоты при помощи более высокочастотных волн, а в музыкальном синтезе мы используем модуляцию волн аудио частоты с волнами более низкой частоты , часто инфразвуковые (между 0 и 20 Гц).
Эффект можете услышать сами, если запустите этот маленький патч. Настройте один из [osc~] на частоте 5Гц и другой на 220Гц.
[править] ЧМ
Теперь перейдем к более значительному методу. Частотная модуляция со своим появлением внесла огромные изменения в звучание электронных музыкальных инструментов. Ниже указанный патч взят из документации pd (3.audio.examples/A09.frequency.mod.pd). Рекомендуется посмотреть на оригинальный патч (идите в меню "Help->Browser..."). Так же подробная теория ЧМ изложена здесь, с примерами в Snd.
Можно заметить что тон генератора стал более разнообразным.
Следует самостоятельно поэкспериментировать, комбинируя выше продемонстрированные методы, попробуйте также добавить гармонические частоты ...
[править] Продолжение следует...
[править] Дополнительная информация
- Pure Data на Wikipedia (англ.)
- FLOSS Manuals
- "Theory and Techniques of Electronic Music", Miller Puckette
- "PD External Writing Tutorial" (краткий курс по написанию библиотек для pd)
За помощью обращаться к листу почтовой рассылки или IRC:
- Pure Data mailing-list (необходима подписка), архив
- IRC канала #dataflow на сервере irc.freenode.net