Суперколлайдер

редактировать
Эта статья о языке программирования. Чтобы узнать о других значениях, см. Суперколлайдер.
Суперколлайдер
SuperCollider logo.svg
Оригинальный автор (ы) Джеймс Маккартни
Первый выпуск 1996 ; 25 лет назад ( 1996)
Стабильный выпуск 3.12.1 / 5 сентября 2021 г. ; 1 день назад ( 2021-09-05)
Репозиторий github.com / суперколлайдер / суперколлайдер
Написано в C ++
Операционная система FreeBSD, Linux, macOS, Windows
Тип Язык программирования аудио
Лицензия GPL-3.0 или новее
Веб-сайт суперколлайдер.github.io

SuperCollider - это среда и язык программирования, первоначально выпущенный в 1996 году Джеймсом Маккартни для синтеза звука и алгоритмической композиции в реальном времени.

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

Первоначально выпущенный на условиях GPL-2.0 или более поздней версии в 2002 году, а с версии 3.4 - на условиях GPL-3.0 или более поздней версии, SuperCollider является бесплатным программным обеспечением с открытым исходным кодом.

СОДЕРЖАНИЕ

  • 1 Архитектура
    • 1.1 Сервер синтеза SuperCollider ( scsynth)
    • 1.2 Язык программирования SuperCollider ( sclang)
    • 1.3 Система графического интерфейса пользователя
  • 2 Интерфейс и поддержка системы
    • 2.1 Клиенты
    • 2.2 Поддерживаемые операционные системы
    • 2.3 Редактирование среды
  • 3 Примеры кода
  • 4 Живое кодирование
  • 5 См. Также
  • 6 Ссылки
  • 7 Внешние ссылки

Архитектура

Начиная с версии 3, среда SuperCollider была разделена на две части: на сервере, scsynth ; и клиент, sclang. Эти компоненты взаимодействуют с помощью OSC ( Open Sound Control ).

Язык SC сочетает в себе объектно-ориентированную структуру Smalltalk и особенности из функциональных языков программирования с C -family синтаксиса.

Приложение SC Server поддерживает простые API-интерфейсы плагинов C и C ++, что упрощает написание эффективных звуковых алгоритмов ( генераторов единиц ), которые затем можно объединять в графики вычислений. Поскольку все внешнее управление на сервере происходит через OSC, его можно использовать с другими языками или приложениями.

Сервер синтеза SuperCollider ( scsynth)

Генерация звука SuperCollider объединена в оптимизированный исполняемый файл командной строки (названный scsynth). В большинстве случаев он управляется из языка программирования SuperCollider, но его можно использовать независимо. Аудиосервер имеет следующие особенности:

  • Открыть доступ к управлению звуком
  • Простые API-интерфейсы подключаемых модулей ANSI C и C ++ 11
  • Поддерживает любое количество входных и выходных каналов, в том числе многоканальные конфигурации
  • Предоставляет доступ к упорядоченной древовидной структуре узлов синтеза, которые определяют порядок выполнения.
  • Шинная система, которая позволяет динамически реструктурировать поток сигналов
  • Буферы для записи и чтения
  • Расчет с различной скоростью в зависимости от потребностей: скорость звука, скорость управления, скорость запроса

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

Язык программирования SuperCollider ( sclang)

Язык программирования Supercollider является динамически типизированных, сборку мусора, одного наследования объектно-ориентированного и функциональный язык похож на Smalltalk, с синтаксисом, аналогичным Lisp или языка программирования. Его архитектура обеспечивает баланс между потребностями вычислений в реальном времени и гибкостью и простотой абстрактного языка. Как и многие функциональные языки, он реализует функции как первоклассные объекты, которые можно составлять. Функции и методы могут иметь значения аргументов по умолчанию и списки аргументов переменной длины и могут вызываться с любым порядком аргументов ключевых слов. Замыкания являются лексическими, а область видимости одновременно лексической и динамической. Поддерживаются другие функции, типичные для функциональных языков, включая создание замыканий через частичное приложение (явное каррирование ), оптимизацию хвостового вызова, понимание списков и сопрограммы. Особенности включают неявное расширение кортежей и систему шаблонов без сохранения состояния. Его поиск сообщений в постоянном времени и сборка мусора в реальном времени позволяют большим системам быть эффективными и гибко обрабатывать сигналы.

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

Система графического интерфейса пользователя

Снимок экрана SuperCollider с инструментами графического интерфейса ixiQuarks.

Язык SuperCollider позволяет пользователям создавать кроссплатформенные графические пользовательские интерфейсы для приложений. Стандартная библиотека классов с компонентами пользовательского интерфейса может быть расширена рядом доступных фреймворков. Для интерактивного программирования система поддерживает программный доступ к файлам с расширенным текстовым кодом. Его можно использовать для алгоритмической генерации векторной графики.

Интерфейс и системная поддержка

Клиенты

Поскольку сервер управляется с помощью Open Sound Control (OSC), для управления сервером можно использовать множество приложений. Обычно используются языковые среды SuperCollider (см. Ниже), но могут использоваться и другие системы с поддержкой OSC, такие как Pure Data.

Существуют «сторонние» клиенты для сервера SuperCollider, включая rsc3, клиент Scheme, hsc3 на основе Haskell, ScalaCollider на основе Scala, Overtone на основе Clojure и Sonic Pi. Они отличаются от сред разработки, упомянутых ниже, потому что они не предоставляют интерфейс для языка программирования SuperCollider, вместо этого они взаимодействуют напрямую с аудиосервером и предоставляют свои собственные подходы к облегчению пользовательского самовыражения.

Поддерживаемые операционные системы

Снимок экрана SuperCollider в Mac OS X с различными пользовательскими элементами графического интерфейса.

SuperCollider работает на macOS, Linux, Windows и FreeBSD. Для каждой из этих операционных систем существует несколько сред и клиентов для редактирования языков, которые можно использовать с SuperCollider (см. Ниже).

Также было продемонстрировано, что SuperCollider может работать на Android и iOS.

Редактирование среды

Скриншот SuperCollider Vim на puredyne linux.

Код SuperCollider чаще всего редактируется и используется в его собственной кроссплатформенной среде IDE, которая основана на Qt и поддерживает Linux, Mac и Windows.

Другие среды разработки с поддержкой SuperCollider включают:

Примеры кода

// Print "Hello world!" "Hello world!".postln;
// Play a mixture of an 800 Hz sine tone and pink noise { SinOsc.ar(800, 0, 0.1) + PinkNoise.ar(0.01) }.play;
// Modulate a sine frequency and a noise amplitude with another sine // whose frequency depends on the horizontal mouse pointer position { var x = SinOsc.ar(MouseX.kr(1, 100)); SinOsc.ar(300 * x + 800, 0, 0.1) + PinkNoise.ar(0.1 * x + 0.1); }.play;
// List iteration: multiply the elements of a collection by their indices [1, 2, 5, 10, -3].collect { |elem, idx| elem * idx };
// Factorial function f = { |x| if(x == 0) { 1 } { f.(x-1) * x } };

Живое кодирование

Как универсальный язык динамического программирования SuperCollider может использоваться для живого кодирования, то есть для выступлений, в которых исполнитель изменяет и выполняет код на лету. Определенные виды прокси служат в качестве заполнителей высокого уровня для объектов синтеза, которые могут быть заменены и удалены или изменены во время выполнения. Среды позволяют совместно использовать и изменять объекты и объявления процессов по сети. Различные библиотеки расширений поддерживают различную абстракцию и доступ к звуковым объектам, например, dewdrop_lib позволяет в реальном времени создавать и изменять псевдоклассы и псевдообъекты.

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

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

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

Последняя правка сделана 2023-04-13 03:23:47
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте