Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

Выпущенный по условиям GPLv 2 в 2002 году, SuperCollider является бесплатным программным обеспечением с открытым исходным кодом .

Архитектура [ править ]

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

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

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

Сервер синтеза SuperCollider ( scsynth ) [ править ]

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

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

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

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

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

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

Система графического интерфейса [ править ]

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

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

Интерфейс и поддержка системы [ править ]

Клиенты [ править ]

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

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

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

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

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

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

Редактирование среды [ править ]

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

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

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

  • Emacs (Linux, Mac, Windows) [15]
  • Vim (Linux, Mac)
  • Atom (Linux, Mac, Windows) [16]
  • gedit (Linux, Windows)
  • Кейт (Linux) [17]

Примеры кода [ править ]

// Вывести "Hello world!" "Привет, мир!" . postln ;
// Воспроизведение смеси синусоидального тона 800 Гц и розового шума {  SinOsc . ar ( 800 ,  0 ,  0.1 )  +  PinkNoise . ar ( 0,01 )  }. играть ;
// Модулируйте частоту синуса и амплитуду шума другим синусом, // частота которого зависит от горизонтального положения курсора мыши {  var  x  =  SinOsc . ар ( MouseX . kr ( 1 ,  100 )); SinOsc . ar ( 300  *  x  +  800 ,  0 ,  0.1 )  +  PinkNoise . ар ( 0,1  *  х  +  0,1 );  }. играть ;
// Итерация списка: умножаем элементы коллекции на их индексы [ 1 ,  2 ,  5 ,  10 ,  - 3 ]. собирать  {  | elem ,  idx |  elem  *  idx  };
// Факториальная функция f  =  {  | х |  если ( x  ==  0 )  {  1  }  {  f . ( x - 1 )  *  x  }  };

Живое кодирование [ править ]

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

См. Также [ править ]

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

Ссылки [ править ]

  1. ^ «Релизы» . Github . Дата обращения 15 ноября 2020 .
  2. ^ asynth. «Суперколлайдер» . Проверено 20 июня 2015 года .
  3. ^ «КОПИРОВАНИЕ» . Github . Проверено 16 сентября 2019 .
  4. ^ Дж. Маккартни, SuperCollider: новый язык синтеза в реальном времени , в Proc. Международная компьютерная музыкальная конференция (ICMC'96), 1996, стр. 257–258.
  5. ^ a b Дж. Маккартни, Переосмысление языка компьютерной музыки: SuperCollider , Computer Music Journal, 26 (2002), стр. 61–68.
  6. ^ a b c d e f g h я Скотт Уилсон; Дэвид Коттл; Ник Коллинз (2011). Книга SuperCollider . MIT Press. ISBN 978-0-262-23269-2. Архивировано из оригинала на 2011-05-01 . Проверено 26 мая 2011 .
  7. ^ "Списки рассылки SuperCollider" . Архивировано из оригинала 6 ноября 2009 года . Проверено 20 июня 2015 года .
  8. ^ T. Blechmann, supernova, сервер синтеза с поддержкой мультипроцессоров для SuperCollider , Proceedings of the Linux Audio Conference, Utrecht 2010.
  9. ^ J. Rohrhuber, А. де Кампо и Ренате Визер. Алгоритмы сегодня. Заметки о дизайне языка для своевременного программирования. Архивировано 28 июля 2011 г. в Wayback Machine . В материалах Международной конференции компьютерной музыки , Барселона, 2005 г.
  10. ^ Интерфейс векторной графики предоставляется классом Pen. Различные примеры можно найти в Аудиовизуальных материалах с SC , блог Фредрика Олофссона, 02.05.2009 (обновлено 11.05.2012)
  11. ^ Rutz, HH (2010). «Переосмысление клиента SuperCollider ...». Материалы симпозиума SuperCollider . Берлин. CiteSeerX 10.1.1.186.9817 . 
  12. ^ "Системы сопряжения с SC" . Проверено 20 июня 2015 года .
  13. ^ Проект Android SuperCollider на GitHub
  14. ^ Tiny Music System - блог Cylob, 04.11.2009
  15. ^ "SuperCollider с emacs: scel" . Проверено 20 июня 2015 года .
  16. ^ "суперколлайдер" . Атом . Проверено 20 июня 2015 года .
  17. ^ "jleben / Scate" . GitHub . Проверено 20 июня 2015 года .
  18. ^ Коллинз, Н. Маклин, А., Rohrhuber, J. & Ward, A. (2003), Живые Coding методы для ноутбуков Performance, Организованный Sound 8 (3): С. 321-30. DOI : 10,1017 / S135577180300030X
  19. ^ J. Rohrhuber и А. де Кампо. Ожидание и неопределенность в компьютерных музыкальных сетях . В материалах Международной компьютерной музыкальной конференции , Майами, 2004 г.
  20. ^ Одна из многочисленных пользовательских библиотек, известная как «Quarks» и опубликованная в репозитории SuperCollider Quarks .

Внешние ссылки [ править ]

  • Официальный веб-сайт