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

Заменят ли виртуальные среды классические приложения и инструменты для создания веб-саунд-арта?

Введение

С быстрым развитием технологий дополненной / виртуальной и смешанной реальности программные архитектуры Metaverse становятся широко доступными и удобными для художников. Вот некоторые из известных приложений XR для создания звукового искусства, работающего на настольных ОС: Patch XR, Korg Gadget VR, Музыкальная комната. Meta разрабатывает веб-версию своего Horizon Worlds. Открытые миры для Web XR, такие как Mozilla Hubs, стали подходящими для совместного прослушивания музыкальных материалов и проведения живых сеансов кодирования. Будучи проектом с открытым исходным кодом, Mozilla Hubs можно расширить с помощью A-Frame

Но сегодня почти все известные творческие программы для создания звукового искусства в Интернете используют хорошо изученный подход, ориентированный на приложения. Примечательными примерами являются: P5.js с его выдающейся библиотекой, Msx/MSP RNBO и WebPD с возможностью экспорта патчей в Web Audio, Soul audio язык и инфраструктура для написания и развертывания аудиокода. Sonic PI также планируется запускать в Интернете с использованием языка программирования Elixir. Многие проекты разрабатываются с использованием сырого JS и библиотеки ToneJS, которые также являются примерами подхода, ориентированного на приложения. Таким образом, в большинстве случаев художник использует какой-либо предметно-ориентированный язык программирования живого кодирования поверх JS с набором веб-аудио/визуальных библиотек. А финальный проект обычно распространяется в виде приложения или веб-сайта, размещенного в Интернет.

Напротив, программный подход Metaverse основан на использовании полностью иммерсивных сред самоисследования и основ виртуальных миров (не обязательно 3D) в духе произведений искусства «Матрица» и «Киберпанк». И поскольку веб-браузер сегодня становится все более мощным, радуясь низкоуровневым стандартам Web Assembly и WebXR, мы можем ожидать появления множества проектов веб-саунд-арта, основанных на этих основах. Наверняка все существующие звуковые фреймворки и приложения для Интернета будут активно использоваться за кулисами и могут получить новое видение, интегрируясь в виртуальные среды.

Основы виртуальных миров

sim1
Несколько устройств запускают один общий виртуальный мир с физикой

Как правило, разработка программного обеспечения для виртуальных миров связана с компьютерными играми и симуляторами. В этом контексте термин «виртуальный» поверхностно указывает на какой-то предопределенный сценарий с ограниченными правилами действий, с которыми разрешено работать разработчикам и пользователям. Таким образом, рассматривая это как ограничение свободы в процессе разработки, многие проекты предпочитают классический инструментальный подход. Тем более, что современные веб-стандарты предоставляют множество фреймворков для аудио-, визуального, сетевого программирования, разработчики индивидуально формируют свой собственный стек технологий. Этот классический подход хорошо работает для приложений с однопользовательским режимом. Но когда возникает необходимость создания совместных или сетевых многопользовательских приложений, использование классического подхода заставляет разработчика оперировать веб-сокетами, базами данных реального времени, потоки и т. д., реализующие сетевые коды. И это не всегда тривиальная задача, лежащая слишком далеко от веб-саунд-арта.

Напротив, программные архитектуры виртуальных миров изолируют низкоуровневый сетевой материал от процесса разработки таким образом, что художник вообще никогда не касается сетевого кода. Термин Виртуальный начинает сиять с понятия воплощения. Таким образом, каждый пользователь представлен аватаром, работающим в едином общем времени и пространстве, распространяющемся по ячеистой сети. Эта особенность виртуальных миров превращается в заметное преимущество по сравнению с классическим подходом. Он инкапсулирует все внутренности и сложности работы с сетями в веб-приложениях. Это напоминает нам что-то, что уже инкапсулировано в веб-браузере с использованием виртуального подхода. Если мы сравним JavaScript с языками программирования общего назначения, такими как C++, мы обнаружим, что виртуальная машина JavaScript инкапсулирует память низкого уровня вне области программирования. Это позволяет разработчикам создавать веб-приложения, используя только прототипы, объекты и их свойства. В этом контексте термин «виртуальный» указывает на сам язык программирования или любой другой размещенный предметно-ориентированный язык, на котором могут быть написаны приложения.

Вспоминая историю языка JavaScript, следует отметить его корни. За кулисами лежат языки программирования Lisp, Smalltalk и Self. Но что JavaScript VM уволил из них, так это дистрибутив на основе изображений (виртуальная память) и виртуальная машина на основе передачи сообщений. Обе функции по-прежнему имеют решающее значение для реализации программных архитектур виртуального мира внутри веб-браузера.
В соответствии с парадигмой функционального программирования и современным стандартом ES6, виртуальная машина JavaScript позволяет реализовать эти вещи изначально в JavaScript или транспилировать их из других языков программирования, таких как Haskell, Clojure, Scala или Smalltalk.

Виртуальное время и пространство

Виртуальное время — ключевая концепция архитектуры виртуальных миров. Croquet project подошли ближе к реализации виртуального времени в Метавселенной, чем кто-либо другой. Существует несколько реализаций Croquet от версий с открытым исходным кодом, основанных на Squeak Smalltalk и JavaScript (Virtual World Framework / Krestianstvo), до закрытых Croquet OS — Операционная Система для Метавселенной.
Как правило, все версии предоставляют систему синхронизации для многопользовательского взаимодействия с Metaverse. Это позволяет нескольким пользователям работать или играть вместе в одной общей распределенной среде и гарантирует, что эта распределенная среда останется битовой идентичной для каждого пользователя. Он определяет виртуальное время как просмотр объектов как потока сообщений, что приводит к детерминированным вычислениям на каждом подключенном узле в децентрализованной сети.

Недавно Electric Clojure объединил примитивы с непрерывным и дискретным временем в рамках общего протокола Flow. Он использует правильное инкрементальное обслуживание динамических DAG (направленный ациклический граф) без несогласованных состояний (также известных как сбои в функционально-реактивном программировании).
Electric — это реактивный и поддерживающий работу с сетью Clojure/Script DSL, который полностью абстрагируется от синхронизации состояния клиент/сервер на уровне языка программирования, чтобы обеспечить строгую композицию на границе внешнего и внутреннего интерфейса в динамических веб-приложениях. С точки зрения программиста нет дихотомии клиент/сервер. Croquet and Electric предлагает понятие общей виртуальной машины, распределенной по сети.

Итак, имея такое правильно определенное Виртуальное Время и Пространство, мы можем работать с парадигмой Порталов вместо Гиперссылок в веб-приложении. Простыми словами, порталы — это веб-гиперссылки в том виде, в каком они должны быть.
Вот прототип портала, где каждый клиент, входящий в этот совместный Мир, взаимодействует с общим Миром в режиме Мультивселенной. Представление 100 себя (аватаров) в 10 мировых репликах, работающих в 10 изолированных общих времени и пространствах, отражающих друг друга.

portal

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

Вот еще один пример рекурсивных порталов, где Аватар наблюдает за собой.

sim2

Эти миры созданы с помощью Krestianstvo SDK — реализации архитектуры приложения Croquet с открытым исходным кодом в функционально-реактивной парадигме с использованием SolidJS. Используя только сигналы, эффекты и реактивные вычисления, приложение JS получает исходную сцену объектов Крокета с передачей сообщений.

Вы можете самостоятельно поиграть с порталами на игровой площадке Krestianstvo Toolbox

Реальные примеры с веб-звуком

Пример 1

Вот пример руководства по использованию Croquet OS с React JS и WebSound. Тем не менее, ОС Croquet имеет закрытый исходный код, ее Microverse имеет открытый исходный код. Это позволяет пользователям создавать многофункциональные веб-приложения и бесплатно использовать их для небольших проектов.

React Music Box
Простая многопользовательская музыкальная шкатулка с боковым обновлением в режиме реального времени. В приложении есть несколько «шаров», каждый из которых представляет время и высоту ноты. Участник может манипулировать ими, чтобы составить цикл. Время обтекания стержня синхронизируется логикой на стороне модели, но представление интерполирует положение стержня и воспроизводит звук, когда стержень проходит мимо мяча.

croq
Учебное пособие по Croquet OS: React Music Box

Пример 2

Вот еще один пример использования сейчас LiveCoding.space в качестве реализации архитектуры приложения Croquet с открытым исходным кодом в WebXR с компонентами A-Frame и библиотекой ToneJS.

Виртуальный мир с Tone.JS

sim5
Музыкальный мир с ToneJS

Пример 3

Проект Это не концерт Делии Рамос Родригес и Николая Суслова был разработан и представлен в рамках Фестиваля сетевой музыки | БРАУЗЕР 2021.

sim8
Несколько устройств запускают художественный проект

Произведение искусства было представлено в виде интерактивного многопользовательского веб-приложения p2p для совместной работы. Приложение можно запустить в любом настольном или мобильном веб-браузере. Зрители совместно исследуют произведение искусства в виртуальном пространстве холста в многоконтекстных/концептуальных творческих слоях, прикасаясь к виртуальным объектам. Эти слои по умолчанию не видны. Взаимодействие основано на применении или просмотре через какие-то «фильтры» (дополняющая реальность в виртуальной реальности). Несколько участников могут лично или совместно исследовать скрытые слои, а также экспериментировать с изображением через эти слои, не нарушая исходное изображение.

Пример 4

Совместный оркестр

В этом примере Виртуальный Мир демонстрирует оркестровку внешних, а не собственных веб-приложений, таких как Sonic Pi. Управление приложениями здесь осуществляется путем отправки сообщений OSC, синхронизированных в общем виртуальном мире.

Заключение и обсуждение

При разработке веб-проектов звукового искусства с использованием веб-фреймворков как есть программист или художник по-прежнему думает о библиотеках, инструментах, операционной системе, сети и т. д. Это повторяет тот же жизненный цикл создания приложения для настольной ОС. Рассмотрение виртуальных миров как альтернативной парадигмы для разработки современных веб-приложений значительно упростит ситуацию. Самостоятельная исследовательская среда живого кодирования может заменить отладчик, виртуальное время может инкапсулировать вещи, связанные с сетью, Avatar может опосредовать взаимодействие человека с компьютером, метаязыки сводят на нет знание языка программирования для конечных пользователей. Будет ли веб-приложение, созданное с использованием парадигмы виртуального мира, полностью удовлетворять потребности артиста в живых выступлениях и взаимодействии с публикой — открытый вопрос для дальнейших дискуссий.


На изображении к публикации представлен рекурсивный портал из Крестьянство SDK, работаюший с использованием SolidJS/Fiber.

текст оригинальной статьи доступен по ссылке:
Will virtual environments replace an applications & tools approach for making web-based sound art?