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

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

Часть 1 Системы Run-Time Семантика на уровне языкового дизайна часто связана с "системой исполнения" на уровне реализации. Термин "run-time system" описывает организацию вычислений и коллекцию библиотек, функций и ресурсов, доступных выполняющейся программе. Вкратце, run-time system описывает "цель" компилятора или интерпретатора. Программа оценивается ("run") путем ее перевода на язык более низкого уровня, выраженный в терминах исполняющей системы. Системы времени исполнения для компьютерной музыки, как и семантика музыкального языка, часто обусловлены особыми требованиями музыкальных систем. В системах с обработкой звуковых сигналов особое внимание должно уделяться как эффективности, так и необходимости синхронной обработки сэмплов по сэмплам. Конкурентоспособность в музыке часто мотивирует особую поддержку во время исполнения, такую как потоки, процессы, функциональное программирование, ленивая оценка или другие подходы. Важность времени в музыке приводит к поддержке планирования и
Оглавление

Часть 1

https://pixabay.com/ru/photos/музыка-ключи-уайт-музыкальная-932097/
https://pixabay.com/ru/photos/музыка-ключи-уайт-музыкальная-932097/

Системы Run-Time

Семантика на уровне языкового дизайна часто связана с "системой исполнения" на уровне реализации. Термин "run-time system" описывает организацию вычислений и коллекцию библиотек, функций и ресурсов, доступных выполняющейся программе. Вкратце, run-time system описывает "цель" компилятора или интерпретатора. Программа оценивается ("run") путем ее перевода на язык более низкого уровня, выраженный в терминах исполняющей системы.

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

Библиотеки

Большинство музыкантов не являются в первую очередь разработчиками программного обеспечения. Их основной интерес заключается не в разработке нового программного обеспечения, а в изучении музыкальных идей. Готовые модули часто облегчают изучение или даже вдохновляют на новые музыкальные направления; таким образом, библиотеки многоразовых программных модулей важны для большинства музыкантов, работающих на компьютерах. Это иногда тормозит освоение новых языков, которые не появляются с зрелым набором готовых возможностей и примеров. Одним из направлений в компьютерном музыкальном программном обеспечении является архитектура "plug-in", позволяющая использовать библиотеки (особенно аудиоэффекты и программные синтезаторы) для нескольких языков и программных систем.

Среда программирования

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

Сообщество и ресурсы

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

Почему музыка отличается?

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

  • Музыка происходит во времени

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

  • Языки программирования традиционно ориентированы на быстрое получение ответов.

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

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