Синтез звука в среде Pure Data

Материал из Xgu.ru

(Перенаправлено с Uredata)
Перейти к: навигация, поиск

Редактор: Илья Дмитриченко

Короткий 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-mainwindow-01.png

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

Первым делом, настроим звук. Зайдите в меню "Media->ALSA" и в новом окне выберите частоту дискретизации (sampling rate), если ваша звуковая карта позволяет, выберете 48000 Гц, иначе 44100 Гц будет достаточно. Моя карта позволяет 96 кГц и 8 каналов. Большинство обычных карт дают 44.1 кГц стереозвук, многие из них работают с частотой 48 кГц. От частоты дискретизации зависит общее качество звука. Для многих пользователей настроек по-умолчанию будет достаточно. Выберите карту которую собираетесь использовать для входа/выхода и отметьте кнопкой слева.

PD-alsasettings-01.png

Pd поддерживает ALSA, PortAudio, OSS, JACK и MMIO (windows), поддержка настраивается при сборке. В данной статье автор использует исключительно ALSA.

Теперь проверим если всё работает. В меню "Media" выберите "Test Audio and MIDI", появиться окно показанное на снимке с экрана ниже.

PD-audiotest-01.png

В колонке "TEST SIGNAL" (слева), щелчком мыши выберите уровень громкости (-40 dB), и вы должны услышать монотонный звук. Если вы не слышите, посмотрите если есть упоминание об ошибках в основном окне, проверьте уровень звука в `alsamixer`. При возникновение проблем, читайте более подробную HTML документацию, которую можно найти в меню "Help->Html ..." в разделе "3. getting Pd to run".

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

[править] Первый шаг

В меню "File" выберите "New (Ctrl+n)". Перед вами открывается окно в чистым полотном. В первую очередь следует создать объект через меню "Put->Object (Ctrl+1)", в дальнейшем можно просто нажимать "Ctrl+1" на клавиатуре. Под курсором появляется штрихованная рамка, введите название объекта: наш первый объект обозначается "osc~", щелкните правой кнопкой мыши на поверхности полотна. Должно получится как на этой картинке:

PD-objosc~-01.png

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

PD-objosc~-02.png

Первый впуск с права принимает значения частоты (в герцах), а второй сбрасывает фазу к нулю. Из выпуска получаем сигнал единичной амплитуды формы косинусоиды. Чтобы это проверить зайдем в меню "Put" и выберем "Number (Ctrl+3)", положим этот объект над [osc~] и проведем провод, наведя курсор на выпуск из числового объекта курсор становится колечком, удерживая левую кнопку мыши, протяните провод до частотного впуска [osc~].

PD-objosc~-03.png

Чтобы услышать результат надо подключить выходной сигнал из [osc~] к входу аудио карты, который в pd представляется объектом [dac~]. Создайте новый обект (либо через меню "Put->Object", либо "Ctrl+1" на клавиатуре) и впишите "dac~ 1" в него и расположите объект под [osc~] или где считаете нужным. Цифра "1" является параметром [dac~] и, по сути, представляет 1-ый канал на аудио карте. Соединив [osc~] и [dac~ 1] вы можете заметить что провод между ними толще чем провод между числовым объектом и [osc~] - в pd жирный провод, это тот который передает сигнал, а тонкий - всяческие числовые данные и сообщения.

PD-objosc~-04.png

Соединив генератор с аудио выходом таким образом вы ещё не должны услышать ничего кроме щелчка в момент соединения. Надо установить частоту колебаний, это делается при помощи числового объекта. Каждый pd патч имеет два режима - режим редактирования и режим исполнения, эти режимы переключаются через меню "Edit-> Edit Mode" или "Ctrl+e" на клавиатуре. В режиме исполнения объекты становятся неподвижны и контрольные элементы становятся управляемыми (которые включают в себя числовые объекты и многие другие, с которыми мы познакомимся чуть позже). Так давайте теперь переключимся в режим исполнение и зажав левую кнопку мыши на числовом объекте, поведите курсор в сторону. Таким образом число должно измениться и если оно превышает 20 - 50, в зависимости от вашей аппаратуры и слуха, вы услышите достаточно громкий монотонный звук.

PD-objosc~-05-desktop.png

Теперь давайте попробуем несколько других контрольных элементов, зайдите в меню "Put" и нажмите на пунктирную линию в самой верхней части, теперь не надо каждый раз идти в меню. Выберите объекты: "Message" (3 шт.), "Comment", "Toggle", "Number" (2 шт.) и "Hslider" - расположите их приблизительно как на картинке выше. Чтобы изменить объект или сообщение, поднесите к нему курсор и щелкните по середине, появится мигающий курсор, теперь вводите новое значение. Соедините и обозначьте все объекты как на следующем изображение.

PD-objosc~-06-moreobj.png

Переключите патч в режим исполнения и попробуйте различные действия над этими объекта при помощи мыши, обратите внимание что при правом щелчке появляется контекстное меню включающее "Properties", "Open" и "Help"; попробуйте "Help" для некоторых объектов - появится окно с примером использование, объясняющим назначение. Для некоторых объектов есть дополнительные настройки - "Properties", зайдите туда и посмотрите какие параметры можно изменить. Попробуйте увеличить размер и диапазон слайдера нажмите "Apply".

PD-changeparam-01.png

Можете создать новый слайдер и подсоединить его к управлению частотой [osc~] (попробуйте так же изменить его параметры чтобы частота была, на пример, между 20 и 200 Гц. Как некоторые из вас наверное уже заметили, при помощи этих разнообразных объектов можно построить музыкальные инструменты!

На данном этапе рекомендую самим заглянуть в список встроенных базовых объектов Pure Data, которые вы увидите если щелкните правой кнопкой на фоне только что созданного патча!

PD-mainhelppatch-01.png

Промотайте ниже и вы найдете множество разнообразных объектов. Так же есть очень хорошая подборка примеров в меню "Help->Browser...". Рекомендую рассмотреть патч показанный в этом примере ("Help_>Browser..._>3.audio.examples/A02.amplitude.pd").

PD-helbrowser-01.png



[править] Методы создания звука

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


[править] АМ

В pd присутствуют все основные математические функции, много дополнительных функций особого назначения можно найти в библиотеках (очень популярны expr и zexy). Для первых экспериментов нам потребуются лишь обычные математические действия. Начнем с умножения двух сигналов, которое принято называть амплитудной модуляцией.

Создайте патч как показано на рисунке ниже, с двумя объектами [osc~], [*~] (умножение сигналов) и разумеется [dac~]. Так же следует включить [*~ 0.6] что предотвратить чрезмерную громкость, уменьшаем амплитуду до 60%. Так же необходимы два регулятора частот.

PD-am-01.png




В радиосвязи АМ используется с целью передачи волн аудио частоты при помощи более высокочастотных волн, а в музыкальном синтезе мы используем модуляцию волн аудио частоты с волнами более низкой частоты , часто инфразвуковые (между 0 и 20 Гц). Эффект можете услышать сами, если запустите этот маленький патч. Настройте один из [osc~] на частоте 5Гц и другой на 220Гц.


[править] ЧМ

Теперь перейдем к более значительному методу. Частотная модуляция со своим появлением внесла огромные изменения в звучание электронных музыкальных инструментов. Ниже указанный патч взят из документации pd (3.audio.examples/A09.frequency.mod.pd). Рекомендуется посмотреть на оригинальный патч (идите в меню "Help->Browser..."). Так же подробная теория ЧМ изложена здесь, с примерами в Snd.



PD-fm-01.png



Можно заметить что тон генератора стал более разнообразным.

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

[править] Продолжение следует...

[править] Дополнительная информация

За помощью обращаться к листу почтовой рассылки или IRC: