СуперКоллайдер
![]() | |
Оригинальный автор(ы) | Джеймс Маккартни |
---|---|
Первоначальный выпуск | 1996 год |
Стабильная версия | 3.13.0
/ 19 февраля 2023 г [1] |
Репозиторий | github |
Написано в | С++ |
Операционная система | FreeBSD , [2] Linux , MacOS , Windows |
Тип | Язык аудио программирования |
Лицензия | GPL-3.0 или новее [3] |
Веб-сайт | суперколлайдер |
SuperCollider — это среда и язык программирования, первоначально выпущенный в 1996 году Джеймсом Маккартни для в реальном времени синтеза звука и алгоритмической композиции . [4] [5]
С тех пор она превратилась в систему, используемую и развиваемую как учеными, так и художниками, работающими со звуком. Это динамический язык программирования , обеспечивающий основу для акустических исследований , алгоритмической музыки , интерактивного программирования и живого кодирования .
Первоначально выпущенный на условиях GPL-2.0 или более поздней версии в 2002 году, а начиная с версии 3.4 — под лицензией GPL-3.0 или более поздней версии , SuperCollider является бесплатным программным обеспечением с открытым исходным кодом .
Архитектура
[ редактировать ]Начиная с версии 3, среда SuperCollider разделена на два компонента сервер ; scsynth : и клиент , скланг . Эти компоненты взаимодействуют с помощью OSC ( Open Sound Control ). [6]
Язык SC сочетает в себе -ориентированную структуру Smalltalk и функции функциональных языков программирования с C. семейства синтаксисом объектно [6]
Приложение SC Server поддерживает простые плагинов API-интерфейсы C и C++ , что позволяет легко писать эффективные звуковые алгоритмы ( генераторы единиц измерения ), которые затем можно объединять в графики вычислений. Поскольку все внешнее управление на сервере происходит через OSC, его можно использовать с другими языками или приложениями. [6]
Сервер синтеза SuperCollider ( scsynth )
[ редактировать ]Генерация звука SuperCollider включена в оптимизированный исполняемый файл командной строки (названный scsynth ). В большинстве случаев им управляют из языка программирования SuperCollider, но его можно использовать и независимо. Аудиосервер имеет следующие возможности: [6]
- Открыть доступ к управлению звуком
- Простые ANSI C и C++11. плагинов API
- Поддерживает любое количество входных и выходных каналов, включая многоканальные конфигурации. [7]
- Предоставляет доступ к упорядоченной древовидной структуре узлов синтеза, которые определяют порядок выполнения.
- Система шин, позволяющая динамически реструктурировать поток сигналов.
- Буферы для записи и чтения
- Расчет с разными скоростями в зависимости от потребностей: скорость звука, скорость управления, скорость запроса.
Supernova, независимая реализация Серверной архитектуры, [8] добавляет поддержку многопроцессорности посредством явной параллельной группировки узлов синтеза.
Язык программирования SuperCollider ( sclang )
[ редактировать ]Язык программирования SuperCollider — это динамически типизированный , со сборкой мусора , с одним наследованием, объектно-ориентированный и функциональный язык похожий на Smalltalk . [5] с синтаксисом, подобным Lisp или языку программирования C. Его архитектура обеспечивает баланс между потребностями вычислений в реальном времени и гибкостью и простотой абстрактного языка. Как и многие функциональные языки, он реализует функции как первоклассные объекты, которые можно компоновать . Функции и методы могут иметь значения аргументов по умолчанию и списки аргументов переменной длины и могут вызываться с любым порядком аргументов ключевых слов. Замыкания являются лексическими, а область видимости одновременно лексической и динамической. Поддерживаются дополнительные функции, типичные для функциональных языков, включая создание замыканий посредством частичного применения (явное каррирование ), хвостовых вызовов оптимизацию , понимание списков и сопрограммы . Особенности включают неявное расширение кортежей и систему шаблонов без сохранения состояния. Его постоянный поиск сообщений и сбор мусора в реальном времени позволяют большим системам быть эффективными и гибко обрабатывать сигналы. [6]
Поддерживая методы рефлексивного , разговорного и грамотного программирования , SuperCollider позволяет относительно легко находить новые звуковые алгоритмы. [9] и разрабатывать индивидуальное программное обеспечение, а также специальные платформы. Что касается знаний, специфичных для предметной области, они являются как общими (например, они позволяют представлять такие свойства, как время и шаг, с различной степенью абстракции), так и имеют множество примеров реализации для конкретных целей. [6]
Система графического интерфейса
[ редактировать ]
Язык 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 работает на macOS , Linux , Windows и FreeBSD . Для каждой из этих операционных систем существует несколько сред и клиентов языкового редактирования, которые можно использовать с SuperCollider (см. ниже). [6]
Также было продемонстрировано, что SuperCollider может работать на Android. [13] и iOS . [14]
Редактирование сред
[ редактировать ]
Код SuperCollider чаще всего редактируется и используется в собственной кроссплатформенной среде IDE, основанной на Qt и поддерживающей Linux, Mac и Windows.
Другие среды разработки с поддержкой SuperCollider включают:
- Emacs (Linux, Mac, Windows) [15]
- Вим (Linux, Mac)
- Атом (Linux, Mac, Windows) [16]
- gedit (Linux, Windows)
- Кейт (Linux, Windows) [17]
Примеры кода
[ редактировать ]// play a mixture of pink noise and a sine tone of 800 Hz
{ SinOsc.ar(800, 0, 0.1) + PinkNoise.ar(0.01) }.play;
// modulate the frequency of the sine tone as well as the amplitude of the noise signal with another sine signal,
// the frequency of which depends on the horizontal position of the mouse pointer
(
{
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 } };
// «Pan Sonic emulation - Katodivaihe - lahetys» - Miguel Negrão
(
{
var a, b, c, d, n, e, f, out;
a = Impulse.ar(8)*1.5;
b = WhiteNoise.ar * Env([1.0,1.0,0.0],[0.01,0.01],\step).ar(0, Impulse.ar(1 )) ;
b = FreeVerb.ar(b, 0.5, 0.4)*2.5;
c = SinOsc.ar(40) * Env.perc(0.01,0.2).ar(0, TDuty.ar(Dseq([1/4,1/2,1/8,1/8],inf)));
5.do{ c = (c.distort + c)*0.75};
c = c * 1.5;
d = LPF.ar(Saw.ar([20,47]).sum , XLine.ar(4000,200,0.5)) * Env.perc.ar(0, Impulse.ar(1/16)) * 0.5;
d = (GVerb.ar( d , roomsize:10, revtime:6) * 200).clip(-1.0,1.0) * 0.3;
n = 12;
e = ( Saw.ar( 40*(1..n) * ({ LFNoise1.ar(0.1).range(1,1.01) } ! n) ) *
({ LFNoise1.ar(0.1).range(0.0,1.0) }!n)).sum * 10;
e = CombC.ar(e, 0.1, 0.1, 4) + e;
e = e.tanh * 0.3 * SinOsc.ar(0.05).range(0.5,1.0);
e = e.dup;
e = e * SinOsc.ar(0.03).range(0.2,1.0) * 0.5;
f = Blip.ar(100) * Blip.ar(100) * Env([0.0,0.0,1.0],[8,8],[\step,\linear,\step])
.ar(0, Impulse.ar(1/16)) * 2 ;
out = ((a + b + c + f) ! 2) + d + e;
out = out * 0.2
}.play
)
Живое кодирование
[ редактировать ]Будучи универсальным динамическим языком программирования , SuperCollider может использоваться для живого кодирования , то есть для действий, в которых исполнитель изменяет и выполняет код на лету. [18] Определенные виды прокси служат заполнителями высокого уровня для объектов синтеза, которые можно заменять и удалять или изменять во время выполнения. Среды позволяют совместно использовать и изменять объекты и объявления процессов по сети. [19] Различные библиотеки расширений поддерживают различную абстракцию и доступ к звуковым объектам, например dewdrop_lib. [20] позволяет создавать и изменять псевдоклассы и псевдообъекты в реальном времени.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Выпуски» . Гитхаб . Проверено 8 января 2022 г.
- ^ асинт. «СуперКоллайдер» . Проверено 20 июня 2015 г.
- ^ «Лицензирование СуперКоллайдера» . Архивировано из оригинала 07 августа 2020 г.
- ^ Дж. Маккартни, SuperCollider: новый язык синтеза в реальном времени , в Proc. Международная конференция компьютерной музыки (ICMC'96), 1996, стр. 257–258.
- ^ Jump up to: а б Дж. Маккартни, Переосмысление языка компьютерной музыки: SuperCollider , Computer Music Journal, 26 (2002), стр. 61–68.
- ^ Jump up to: а б с д и ж г час я Скотт Уилсон; Дэвид Коттл; Ник Коллинз (2011). Книга Суперколлайдер . Массачусетский технологический институт Пресс. ISBN 978-0-262-23269-2 . Архивировано из оригинала 1 мая 2011 г. Проверено 26 мая 2011 г.
- ^ «Списки рассылки SuperCollider» . Архивировано из оригинала 6 ноября 2009 года . Проверено 20 июня 2015 г.
- ^ Т. Блехманн, Supernova, многопроцессорный сервер синтеза для SuperCollider , Материалы аудиоконференции Linux, Утрехт, 2010.
- ^ Дж. Рорхубер, А. де Кампо и Рената Визер. Алгоритмы сегодня. Заметки о языковом дизайне для точного программирования. Архивировано 28 июля 2011 г. в Wayback Machine . В материалах Международной компьютерной музыкальной конференции , Барселона, 2005 г.
- ^ Интерфейс векторной графики предоставляется классом Pen. Различные примеры можно найти в Аудиовизуальные материалы с SC. Архивировано 9 июня 2020 г. на Wayback Machine , блог Фредрика Олофссона, 02.05.2009 (обновлено 11.05.2012).
- ^ Рутц, Х.Х. (2010). «Переосмысление клиента SuperCollider...». Материалы симпозиума SuperCollider . Берлин. CiteSeerX 10.1.1.186.9817 .
- ^ «Системы взаимодействия с СЦ» . Проверено 20 июня 2015 г.
- ^ Android-проект SuperCollider на GitHub.
- ^ Tiny Music System - Блог Cylob, 04.11.2009
- ^ «Суперколлайдер с emacs: scel» . Проверено 20 июня 2015 г.
- ^ «суперколлайдер» . Атом . Проверено 20 июня 2015 г.
- ^ "жлебен/Скат" . Гитхаб . 13 ноября 2013 года . Проверено 20 июня 2015 г.
- ^ Коллинз Н., Маклин А., Рорхубер Дж. и Уорд А. (2003), Методы живого кодирования для повышения производительности ноутбука, Организованный звук 8 (3): стр. 321-30. дои : 10.1017/S135577180300030X
- ^ Дж. Рорхубер и А. де Кампо. Ожидание и неопределенность в компьютерных музыкальных сетях. Архивировано 14 марта 2006 г. в Wayback Machine . В материалах Международной компьютерной музыкальной конференции , Майами, 2004 г.
- ^ Одна из многочисленных библиотек, предоставленных пользователями, известная как «Quarks», опубликованная в репозитории SuperCollider Quarks .
Внешние ссылки
[ редактировать ]- программное обеспечение 2002 года
- Альгораве
- Языки программирования массивов
- Языки аудио программирования
- Динамически типизированные языки программирования
- Программное обеспечение для электронной музыки
- Бесплатное аудио-программное обеспечение
- Бесплатное музыкальное программное обеспечение
- Живое кодирование
- Мультимедийное программное обеспечение MacOS
- Архитектура плагинов музыкального программного обеспечения
- Объектно-ориентированные языки программирования
- Программные синтезаторы
- Программное обеспечение, использующее Qt
- Креативное кодирование