Jump to content

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

Оригинальный автор(ы) Джеймс Маккартни
Первоначальный выпуск 1996 год ; 28 лет назад ( 1996 )
Стабильная версия
3.13.0 / 19 февраля 2023 г .; 17 месяцев назад ( 19.02.2023 ) [1]
Репозиторий github /суперколлайдер /суперколлайдер
Написано в С++
Операционная система FreeBSD , [2] Linux , MacOS , Windows
Тип Язык аудио программирования
Лицензия GPL-3.0 или новее [3]
Веб-сайт суперколлайдер .github .что

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, на котором запущены инструменты графического интерфейса 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, основанной на Qt и поддерживающей Linux, Mac и Windows.

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

Примеры кода

[ редактировать ]
// воспроизводим смесь розового шума и синусоидального тона частотой 800 Гц  {   SinOsc  .  ar  (  800,0,0.1    )   +   PinkNoise  .  ар  (  0,01  )   }.  играть  ;  // модулируем частоту синусоидального тона, а также амплитуду шумового сигнала другим синусоидальным сигналом,  // частота которого зависит от горизонтального положения указателя мыши  (  { 	 var   x   =   SinOsc  .  ar  (  MouseX  .  kr  (  1  ,   100  ) 	 SinOsc.ar  .  ar  (  300   *   x   +   800  ,   0  ,   0,1  ) 	 + 	 PinkNoise  .  (  0,1   *   x   +   0,1  )  }  ;  ) 
// Итерация списка: умножаем элементы коллекции на их индексы  [  1  ,   2  ,   5  ,   10  ,   -  3  ].  собрать   {   |  элемент  ,   idx  |   элемент   *   идентификатор   }; 
// Факториальная функция  f   =   {   |  х  |   если  (  Икс   ==   0  )   {   1   }   {   ж  .(  Икс  -  1  )   *   Икс   }   }; 
// «Эмуляция Pan Sonic — Katodivaihe — lahetys  (  { 	 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  ]  )  ;  ar  ,  шаг  )    (  0  ,   Impulse  .  ar  (  1   )   \ 	 (  = FreeVerb.ar(b, 0.5, 0.4)*2.5;	c = SinOsc. ​​​​​​​​​​​​​​​​​ ar  (  40  )   *   Env  .   (0.01,0.2).ar(0, TDuty.ar(Dseq([1/4,1/2,1/8,1/8],inf)));	5.​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​do {   c   =   (  c  .  искажать   +   c  )  *  0,75  } 	 d   =   20   ,   (  ; 	 ar   ]   LPF  200  ar  (  Saw  . ) ;  [  XLine  ,  47  )  sum   ,   .  .  ar  (  4000   ​)  ,  0,5     *   Env  .  .  размер комнаты  ar  (  0  ,   Impulse  )  ar  (  1  /  16  )   *   0,5  ; 	 d   =   (  GVerb  .  ar  (   d   ,   10  :  200  ,   время оборота  :  6  )   *     . 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  (  range  )    (  0,0  ,  1,0  )   }  !  n )). )  * 10;	e = .   ar(e, 0.1, 0.1, 4) + e;	e = e.tanh * 0.3 * SinOsc.ar(0.05. диапазон  (  0,5  ,  1,0  ) 	 e   =   e  SinOsc    ; 	e =  *  * SinOsc.ar(.​​​​​​​​.  диапазон  (  0,2  ,  1,0  )   *   0,5  ; 	 е   =   Блип  .  или  (  100  )   *   Миг  .  ar  (  100  )   *   Env  ([  0.0  ,  0.0  ,  1.0  ],[  8  ,  8  ],[  \step  ,  \linear  ,  \step  ]) 	 .  вкл  (  0  ,   импульс  .  вкл  (  1/16  *  )   2   ;   ) 	 вне   знак равно   ((  а   +   б   +   с   +   ж  )   !   2  )   +   d   +   е  ; 	 выход   =   выход   *   0,2  }.  играть  ) 

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

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

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

См. также

[ редактировать ]
  1. ^ «Выпуски» . Гитхаб . Проверено 8 января 2022 г.
  2. ^ асинт. «СуперКоллайдер» . Проверено 20 июня 2015 г.
  3. ^ «Лицензирование СуперКоллайдера» . Архивировано из оригинала 07 августа 2020 г.
  4. ^ Дж. Маккартни, SuperCollider: новый язык синтеза в реальном времени , в Proc. Международная конференция компьютерной музыки (ICMC'96), 1996, стр. 257–258.
  5. ^ Перейти обратно: а б Дж. Маккартни, Переосмысление языка компьютерной музыки: SuperCollider , Computer Music Journal, 26 (2002), стр. 61–68.
  6. ^ Перейти обратно: а б с д и ж г час я Скотт Уилсон; Дэвид Коттл; Ник Коллинз (2011). Книга Суперколлайдер . Массачусетский технологический институт Пресс. ISBN  978-0-262-23269-2 . Архивировано из оригинала 1 мая 2011 г. Проверено 26 мая 2011 г.
  7. ^ «Списки рассылки SuperCollider» . Архивировано из оригинала 6 ноября 2009 года . Проверено 20 июня 2015 г.
  8. ^ Т. Блехманн, Supernova, многопроцессорный сервер синтеза для SuperCollider , Материалы аудиоконференции Linux, Утрехт, 2010.
  9. ^ Дж. Рорхубер, А. де Кампо и Рената Визер. Алгоритмы сегодня. Заметки о языковом проектировании для своевременного программирования. Архивировано 28 июля 2011 г. в Wayback Machine . В материалах Международной компьютерной музыкальной конференции , Барселона, 2005 г.
  10. ^ Интерфейс векторной графики предоставляется классом Pen. Различные примеры можно найти в Аудиовизуальные материалы с SC. Архивировано 9 июня 2020 г. на Wayback Machine , блог Фредрика Олофссона, 02.05.2009 (обновлено 11.05.2012).
  11. ^ Рутц, Х.Х. (2010). «Переосмысление клиента SuperCollider...». Материалы симпозиума SuperCollider . Берлин. CiteSeerX   10.1.1.186.9817 .
  12. ^ «Системы взаимодействия с СЦ» . Проверено 20 июня 2015 г.
  13. ^ Android-проект SuperCollider на GitHub.
  14. ^ Tiny Music System - Блог Cylob, 04.11.2009
  15. ^ «Суперколлайдер с emacs: scel» . Проверено 20 июня 2015 г.
  16. ^ «суперколлайдер» . Атом . Проверено 20 июня 2015 г.
  17. ^ "жлебен/Скат" . Гитхаб . 13 ноября 2013 года . Проверено 20 июня 2015 г.
  18. ^ Коллинз Н., Маклин А., Рорхубер Дж. и Уорд А. (2003), Методы живого кодирования для повышения производительности ноутбука, Организованный звук 8 (3): стр. 321-30. два : 10.1017/S135577180300030X
  19. ^ Дж. Рорхубер и А. де Кампо. Ожидание и неопределенность в компьютерных музыкальных сетях. Архивировано 14 марта 2006 г. в Wayback Machine . В материалах Международной компьютерной музыкальной конференции , Майами, 2004 г.
  20. ^ Одна из многочисленных библиотек, предоставленных пользователями, известная как «Quarks», опубликованная в репозитории SuperCollider Quarks .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 3b92fcd045853a1a01634c6d7945c17d__1708586940
URL1:https://arc.ask3.ru/arc/aa/3b/7d/3b92fcd045853a1a01634c6d7945c17d.html
Заголовок, (Title) документа по адресу, URL1:
SuperCollider - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)