stringtranslate.com

Чистые данные

Pure Data ( Pd ) — визуальный язык программирования , разработанный Миллером Пакеттом в 1990-х годах для создания интерактивной компьютерной музыки и мультимедийных произведений. Хотя Пакетт является основным автором программы, Pd — это проект с открытым исходным кодом с большой базой разработчиков, работающих над новыми расширениями. Он выпущен под BSD-3-Clause . Он работает на Linux , MacOS , iOS , Android и Windows . Существуют порты для FreeBSD и IRIX .

Pd очень похож по масштабу и дизайну на оригинальную программу Пакетта Max , разработанную во время его работы в IRCAM , и в некоторой степени совместим с Max/MSP, коммерческим предшественником языка Max. Их можно совместно обсуждать как членов семейства языков Patcher [2] .

Благодаря добавлению внешней графической среды для мультимедиа (GEM) и внешних средств, предназначенных для работы с ней (например, Pure Data Packet / PiDiP для Linux, Mac OS X ), Framestein для Windows, GridFlow (как n-мерная матричная обработка для Linux, Mac OS X , Windows), стало возможным создавать и обрабатывать видео, графику OpenGL , изображения и т. д. в реальном времени с широкими возможностями интерактивности со звуком, внешними датчиками и т. д.

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

Сходства с Максом

Pure Data и Max являются примерами языков программирования потоков данных . Языки потоков данных моделируют программу как направленный граф данных, протекающих между операциями. В Pure Data и Max функции или «объекты» связаны или «склеены» вместе в графической среде, которая моделирует поток управления и звука. Однако, в отличие от оригинальной версии Max, Pd всегда был разработан для выполнения обработки скорости управления и звука на центральном процессоре (ЦП) хоста, а не для выгрузки синтеза звука и обработки сигнала на плату цифрового сигнального процессора (DSP) (такую ​​как Ariel ISPW , которая использовалась для Max/FTS). Код Pd составляет основу расширений MSP Дэвида Зикарелли для языка Max для выполнения программной обработки звука. [3]

Как и Max, Pd имеет модульную кодовую базу внешних объектов или объектов, которые используются в качестве строительных блоков для программ, написанных в программном обеспечении. Это делает программу произвольно расширяемой через общедоступный API и поощряет разработчиков добавлять собственные процедуры управления и звука на языке программирования C или с помощью других внешних объектов на Python , Scheme , Lua , Tcl и многих других. Однако Pd также является языком программирования. Модульные, повторно используемые блоки кода, написанные изначально на Pd, называемые «патчами» или «абстракциями», используются как отдельные программы и свободно распространяются среди сообщества пользователей Pd, и для эффективного использования Pd не требуется никаких других навыков программирования.

Особенности языка

Объекты Pure Data. Текстовые строки справа от полей — это комментарии.

Как и Max, Pd — это язык программирования потоков данных. Как и в большинстве программ DSP , существуют две основные скорости передачи данных: скорость выборки (аудио) , обычно 44 100 выборок в секунду, и скорость управления, 1 блок на 64 выборки. Управляющие сообщения и аудиосигналы обычно передаются сверху вниз экрана между «объектами», подключенными через входы и выходы.

Pd поддерживает четыре основных типа текстовых сущностей: сообщения, объекты, атомы и комментарии. Атомы являются самой базовой единицей данных в Pd и состоят из числа с плавающей точкой , символа или указателя на структуру данных (в Pd все числа хранятся как 32-битные числа с плавающей точкой). Сообщения состоят из одного или нескольких атомов и предоставляют инструкции объектам. Специальный тип сообщения с нулевым содержимым, называемый bang, используется для инициирования событий и помещения данных в поток, что очень похоже на нажатие кнопки.

Собственные объекты Pd варьируются от базовых математических , логических и побитовых операторов, которые можно найти в каждом языке программирования, до общих и специализированных функций DSP со скоростью звука (обозначаются символом тильды (~)), таких как волновые генераторы, быстрое преобразование Фурье (fft~) и ряд стандартных фильтров . Данные могут быть загружены из файла, считаны с аудиоплаты, MIDI , через Open Sound Control (OSC) через FireWire , USB или сетевое соединение, или сгенерированы на лету и сохранены в таблицах, которые затем можно считывать и использовать как аудиосигналы или управляющие данные.

Структуры данных

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

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

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

—  Миллер Пакетт [4]
Партитура к фильму Ганса-Кристофа Штайнера «Одиночество », созданная с использованием структур данных Pd.

Ограничения языка

Хотя Pd является мощным языком, он имеет определенные ограничения в реализации объектно-ориентированных концепций. [5] Например, очень сложно создавать массивно параллельные процессы, поскольку создание и манипулирование большими списками объектов (порождение и т. д.) невозможно из-за отсутствия функции конструктора. Кроме того, массивы Pd и другие сущности подвержены конфликтам пространств имен, поскольку передача идентификатора экземпляра патча является дополнительным шагом и иногда его трудно выполнить.

Проекты с использованием Pure Data

Pure Data использовался в качестве основы для ряда проектов, как язык прототипирования и звуковой движок. Интерфейс таблиц под названием Reactable [6] и заброшенное приложение для iPhone RjDj оба встраивают Pd в качестве звукового движка.

Pd использовался для прототипирования аудио для видеоигр рядом аудиодизайнеров. Например, EAPd — это внутренняя версия Pd, используемая в Electronic Arts (EA). Она также была встроена в EA Spore . [7]

Pd также использовался для сетевого исполнения в библиотеке сетевых ресурсов для совместной импровизации (NRCI). [8]

Примеры кода

  1. Первый патч выводит на дисплей «hello world».
  2. Второй патч применяет реверберацию к входящему сигналу из канала 1, а затем излучает его на каналы 1 и 2.
  3. Последний, более сложный патч фильтрует белый шум на частоте 9000  Гц (с Q = 20), затем усиливает и ослабляет его каждую секунду в течение половины секунды. В Pd время измеряется в миллисекундах, поэтому «1000» — это одна секунда, а «500» — это половина секунды.

Смотрите также

Примечания

  1. ^ ab "Software by Miller Puckette". Miller Puckette . Получено 14 января 2022 г. .
  2. ^ Пакетт, М. (1988). Патчер. В трудах Международной конференции по компьютерной музыке.
  3. ^ "FAQ: Max 4 - Cycling '74" . Получено 5 января 2017 г. .
  4. ^ Документация Pd Глава 2 — 2.9.Структуры данных
  5. ^ "Возможности № 2: Аудиослой". 2 марта 2010 г. Получено 5 января 2017 г.
  6. ^ Джорда, Сержи; Кальтенбруннер, Мартин; Гейгер, Гюнтер; Бенчина, Росс (2005). «ICMC2005: ReacTable» (PDF) . Группа музыкальных технологий/IUA, Университет Помпеу Фабра.
  7. Kosak, Dave (20 февраля 2008 г.). «Gamespy: The Beat Goes on: Dynamic Music in Spore». GameSpy . IGN Entertainment, Inc.
  8. ^ "Сетевые ресурсы для совместной импровизации (NRCI)". Центр компьютерных исследований в области музыки и акустики . Кафедра музыки, Стэнфордский университет.

Ссылки

Дальнейшее чтение

Внешние ссылки