Найти тему
ПсихоВлад Комм

Языки для компьютерной музыки (Часть 3)

Оглавление

Языковое испытание компьютерной музыки

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

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

https://pixabay.com/ru/photos/search/%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D0%B0%D1%8F%20%D0%BC%D1%83%D0%B7%D1%8B%D0%BA%D0%B0/
https://pixabay.com/ru/photos/search/%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D0%B0%D1%8F%20%D0%BC%D1%83%D0%B7%D1%8B%D0%BA%D0%B0/

Nyquist показал способ объединить языки партитур и оркестров в наиболее функциональный язык программирования, но было бы еще лучше, если бы Nyquist мог определить и новые генераторы единиц. Chronic был одним из подходов к преодолению этого пробела, но он требовал специальных конвенций для выражения алгоритмов обработки сигналов, почти как при использовании отдельного языка. Faust и Kronos предлагают очень чистые нотации для описания единичных генераторов, но ни одна из них не включает гибкую или мощную нотацию для событий, баллов, динамической конкретизации параллельного поведения или планирования на основе времени.

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

Функциональное программирование также естественно для выражения взаимосвязанных графиков генераторов блоков. Тем не менее, естественно также рассматривать генераторы единиц как статичные объекты, которые работают на сигналах синхронно, в то же время позволяя асинхронное обновление таких параметров, как объем, частота и резонанс. Меняется природа музыки.

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

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

Max/MSP, с его визуальным представлением вычислительных графов, облегчает вставку зондов и визуализацию сообщений и сигналов; таким образом, он занимает высокое место в плане прозрачности. Тем не менее, Max/MSP не поощряет абстракцию в виде функций, классов, множества одновременных случаев поведения или рекурсии, и даже итерация может быть неудобной для проектирования и наблюдения. Gibber, язык живого кодирования, использует инновационный подход, заключающийся в анимации исходного кода, чтобы указать, когда оцениваются утверждения. Даже размеры шрифтов выражений могут модулироваться в реальном времени для отражения амплитуды сигнала, который они генерируют.

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

Языковое развитие является активным

Несмотря на то, что развитие компьютерного музыкального языка началось в 1950-х годах, сегодня здесь наблюдается достаточно активная деятельность. Быстрое вычислительное оборудование открыло новые возможности, создало больший спрос на творческое музыкальное программное обеспечение и стимулировало дальнейшее развитие. Более быстрые компьютеры также способствуют разработке программного обеспечения. Амбициозные проекты по разработке языка могут быть реализованы быстрее, чем когда-либо. С другой стороны, пользователи привыкли к продвинутым средам программирования с автоматическим завершением команд, всплывающими подсказками, справочными материалами, редактированием, ориентированным на синтаксис, и другими удобствами, и это усугубляет бремя разработки языка. Неспособность предоставить эти удобства усложняет изучение и использование новых языков.

Часть 1

Часть 2