stringtranslate.com

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

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

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

С добавлением внешнего графического окружения для мультимедиа (GEM) и внешних устройств, предназначенных для работы с ним (таких как Pure Data Packet/PiDiP для Linux, Mac OS X ), фреймштайна для 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 не требуется никаких других навыков программирования.

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

Чистые объекты данных. Текстовые строки справа от полей представляют собой комментарии.

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

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

Собственные объекты 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 использовался в качестве основы ряда проектов, в качестве языка прототипирования и звукового движка. Табличный интерфейс под названием Reactable [6] и заброшенное приложение для iPhone RjDj используют Pd в качестве звукового движка.

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

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

Примеры кода

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

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

Примечания

  1. ^ ab «Программное обеспечение Миллера Пакетта». Миллер Пакетт . Проверено 14 января 2022 г.
  2. ^ Пакетт, М. (1988). Патчер. В материалах Международной компьютерной музыкальной конференции.
  3. ^ «Часто задаваемые вопросы: Макс 4 — Велоспорт '74» . Проверено 5 января 2017 г.
  4. ^ Документация Pd, глава 2 — 2.9. Структуры данных
  5. ^ «Возможности № 2: Звуковой слой» . 2 марта 2010 г. Проверено 5 января 2017 г.
  6. ^ Джорда, Сержи; Кальтенбруннер, Мартин; Гейгер, Гюнтер; Бенчина, Росс (2005). «ICMC2005: ReacTable» (PDF) . Группа музыкальных технологий/IUA, Университет Помпеу Фабра.
  7. Косак, Дэйв (20 февраля 2008 г.). «Gamespy: The Beat Goes On: Динамическая музыка в Spore». GameSpy . ИГН Интертеймент, Инк.
  8. ^ «Сетевые ресурсы для совместной импровизации (NRCI)» . Центр компьютерных исследований в области музыки и акустики . Кафедра музыки Стэнфордского университета.

Рекомендации

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

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