stringtranslate.com

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

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]

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 ( 300 * x + 800 , 0 , 0.1 ) + PinkNoise.ar ( 0.1 * x + 0.1 ) } .play ; ) _ _          
// Итерация списка: умножаем элементы коллекции на их индексы [ 1 ,  2 ,  5 ,  10 ,  - 3 ]. собрать  {  | элемент ,  idx |  элемент  *  идентификатор  };
// Факториальная функция f  =  {  | х |  если ( Икс  ==  0 )  {  1  }  {  ж .( Икс - 1 )  *  Икс  }  };
// «Эмуляция Pan Sonic - Katodivaihe - lahetys» - Мигель Неграо ( { var  a ,  b ,  c ,  d ,  n ,  e ,  f ,  out ;а  =  Импульс . ар ( 8 ) * 1,5 ;б  =  Белый шум . ar  *  Env ([ 1.0 , 1.0 , 0.0 ],[ 0.01 , 0.01 ], \step ). ar ( 0 ,  Импульс.ar ( 1 ) ) ; _ б = FreeVerb . ар ( б , 0,5 , 0,4 ) * 2,5 ;      с  =  СинОск . ar ( 40 )  *  Конверт . процент ( 0,01 , 0,2 ). ar ( 0 ,  TDuty . ar ( Dseq ( [ 1/4 , 1/2 , 1/8 , 1/8 ] , inf ) ) ) ; _ _ _ 5 . делать { с = ( с . искажать + с ) * 0,75 }; с = с * 1,5 ;         d  =  ФНЧ . ar ( Saw . ar ([ 20 , 47 ]). sum  ,  XLine . ar ( 4000 , 200 , 0.5 ))  *  Env . проц . ar ( 0 ,  Импульс . ar ( 1/16 ) ) * 0,5 ; _ d = ( GVerb . ar ( d , размер комнаты : 10 , время обращения : 6 ) * 200 ). клип ( -1,0 , 1,0 ) * 0,3 ; _            п  =  12 ; e  =  (  Saw . ar (  40 * ( 1 .. n )  *  ({  LFNoise1 . ar ( 0,1 ). диапазон ( 1 , 1,01 )  }  !  n )  )  * ({  LFNoise1 . ar ( 0,1 ). диапазон ( 0,0 , 1.0 )  } ! n )). сумма  *  10 ; е  =  CombC . ар ( е ,  0,1 ,  0,1 ,  4 )  +  е ; е  =  е . tanh  *  0.3  *  SinOsc . ар ( 0,05 ). диапазон ( 0,5 , 1,0 ); е  =  е . дуп ; е  =  е  *  SinOsc . ар ( 0,03 ). диапазон ( 0,2 , 1,0 )  *  0,5 ;е  =  Блип . ar ( 100 )  *  Blip . ar ( 100 )  *  Env ([ 0.0 , 0.0 , 1.0 ],[ 8 , 8 ],[ \step , \linear , \step ]) . ar ( 0 ,  Импульс . ar ( 1/16 ) ) * 2 ; _   вне  знак равно  (( а  +  б  +  с  +  ж )  !  2 )  +  d  +  е ; выход  =  выход  *  0,2}. играть )

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

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

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

Рекомендации

  1. ^ «Релизы». Гитхаб . Проверено 8 января 2022 г.
  2. ^ асинт. «СуперКоллайдер» . Проверено 20 июня 2015 г.
  3. ^ «Лицензирование SuperCollider». Архивировано из оригинала 07 августа 2020 г.
  4. ^ Дж. Маккартни, SuperCollider: новый язык синтеза в реальном времени, в Proc. Международная конференция компьютерной музыки (ICMC'96), 1996, стр. 257–258.
  5. ^ аб Дж. Маккартни, Переосмысление языка компьютерной музыки: SuperCollider, Computer Music Journal, 26 (2002), стр. 61–68.
  6. ^ abcdefghi Скотт Уилсон; Дэвид Коттл; Ник Коллинз (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 мая 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. ^ «SuperCollider с 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.

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