Программирование В Puredata. Часть 0

Введение



Немного общей информации

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

Люди, знакомые, например, с Max/MSP, узнают знакомый им графический код, поскольку PureData — один из MAX-подобных языков.

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

В этой статье я опишу некоторые элементы языка, а также основные принципы, на которых основана работа со звуком в PureData. PureData кроссплатформенна, есть сборки для Windows, МакОС, Линукс И FreeBSD ; работает как со стандартными драйверами( АЛСА, ММИО ), и с Джек , АСИО , передача также поддерживается миди .

Все версии доступны для скачивания с сайта Официальный веб-сайт .

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



Цифровая аудиопрезентация

И тут можно вспомнить граммофон и пластинку.

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

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

Те.

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

Таким образом, WAV — это не что иное, как массив чисел, являющихся точками определенной кривой.

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

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

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

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

Гораздо проще и удобнее управлять работой программного синтезатора, если взаимодействие элементов интерфейса напоминает модульный синтезатор.

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

При этом исполнитель знает, какой модуль за что отвечает, в каком порядке они следуют друг за другом, и, что немаловажно, конфигурацию можно менять «в горячем виде».

Именно такой подход с точки зрения построения кода реализован в MAX-подобных языках:

Программирование в PureData. Часть 0

Так, Второй аспект синтеза программного обеспечения на ПД: взаимодействие элементов языка строится по аналогии с модульным синтезатором.

На практике эти два подхода находятся в симбиозе, дополняя друг друга.

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

а+б=?

В целом программирование на PureData сводится к трем вещам: передаче «импульсов», чисел и сигналов.

Основных элементов языка тоже немного, четыре: объекты, числовые поля, окна сообщений и связи, похожие на провода.

Давайте напишем простую программу и заставим PD сложить два числа.

Итак, в окне с новым патчем создадим объект (Ctrl-1), поместим куда-нибудь этот прямоугольник и введем там [bng] (он же хлопнуть ).

Без этого объекта невозможно сделать практически ни один патч.

Его задача – создать и послать импульс.

Теперь разберемся, где и почему.

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

Итак, теперь эти цифры необходимо сложить.

Для этого создайте объект заново и введите в него «+».

Ожидаемо, правда? Соединим числовые блоки с объектом "+" .

Теперь осталось только отобразить результат. Это можно сделать либо в консоли, используя объект Распечатать , или оставить его внутри патча, отправив в поле с номером (Ctrl-3).



Программирование в PureData. Часть 0

Чтобы проверить патч в действии, нужно его заблокировать (Ctrl-E) и нажать на объект хлопнуть .

Итак, в консоли или в numbreBox мы видим результат. Если это неверно, не пугайтесь, мы все разберем в строке ниже.

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

Просто нажмите еще раз.

Теперь это правда? Дело в том, что на правильность выполнения арифметических действий влияет порядок соединения элементов.

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

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

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

Это объект курок .

Давайте создадим объект с этим именем.

Теперь запишем рядом, что нужно передать (bang — импульс, float — числовое значение, ничего — любое).

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

Осталось соединить выходы с цифрами.

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



Программирование в PureData. Часть 0

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

Для таких случаев есть объект в ПД выражение или выражение .

С помощью этого объекта можно описывать математические и логические выражения, а также их комбинации.

Давайте рассмотрим тот же пример со сложением.

$f1 и $f2, как вы могли догадаться, являются переменными и считаются слева направо.

Крайний левый вход — $f1, и далее по порядку.

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



Программирование в PureData. Часть 0



Послесловие и F1

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

Осталось рассказать вам о справочной системе.

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

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

Полный список объектов и библиотек доступен по адресу Pd справочный браузер или горячей клавишей Ctrl-b.

Программирование в PureData. Часть 0

Следующие статьи и уроки, посвящённые PureData, я постараюсь публиковать хотя бы раз в неделю.

Всего наилучшего.

Теги: #Звук #учимся программировать #учимся программировать #музыка #звуковой дизайн

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.