Найти в Дзене
ПсихоВлад Комм

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

Оглавление

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

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

https://pixabay.com/ru/photos/план-музыка-фортепиано-2328881/
https://pixabay.com/ru/photos/план-музыка-фортепиано-2328881/

Введение

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

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

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

В следующих параграфах мы представим некоторые аспекты языков программирования, включая их синтаксис, семантику, вопросы реализации и ресурсы для их пользователей. Они будут полезны в следующих разделах, где мы опишем, что делает музыку особенной и отличающейся (раздел Почему музыка отличается), модели музыкального времени (раздел Модели времени и планирования), модели для звукового синтеза и обработки звуковых сигналов (раздел Модели для звукового синтеза), и примеры (раздел Некоторые примеры). В разделе Выводы представлены выводы.

Синтаксис

Синтаксис относится к поверхностному уровню нотации. Большинство музыкальных компьютерных языков являются текстовыми языками с синтаксисом, похожим на другие языки программирования; например, можно написать x + y для добавления двух переменных, f(x,y) для оценки функции с 2 аргументами, или если (c), то f(x,y) для выполнения условной операции.

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

Семантика

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

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

Продолжение...