슈퍼콜라이더

SuperCollider
슈퍼콜라이더
SuperCollider logo.svg
원저작자제임스 매카트니
초기 릴리즈1996년; 26년 전(1996년)
안정된 릴리스
3.12.2 / 2022년 1월 8일; 6개월 전(2022-01-08)[1]
저장소github.com/supercollider/supercollider
기입처C++
운영 체제FreeBSD,[2] Linux, macOS, Windows
유형오디오 프로그래밍 언어
면허증.GPL-3.0 이후[3]
웹 사이트supercollider.github.이오

SuperCollider는 1996년 제임스 매카트니가 실시간 오디오 합성 및 알고리즘 구성을 [4][5]위해 출시한 환경 및 프로그래밍 언어입니다.

그 이후로 그것은 과학자와 소리를 다루는 예술가들에 의해 사용되고 더욱 발전된 시스템으로 진화하고 있다.음향 연구, 알고리즘 음악, 인터랙티브 프로그래밍라이브 코딩의 프레임워크를 제공하는 동적 프로그래밍 언어입니다.

2002년에 GPL-2.0 이후의 조건에 따라 처음 출시된 SuperCollider는 GPL-3.0 이후의 버전 3.4부터 무료 오픈 소스 소프트웨어입니다.

아키텍처

버전 3 이후 SuperCollider 환경은 서버 scsynth클라이언트 sclang의 두 가지 컴포넌트로 분할되었습니다.이러한 구성 요소는 OSC(Open Sound Control)[6]를 사용하여 통신합니다.

SC 언어는 Smalltalk의 객체 지향 구조와 기능적 프로그래밍 언어의 특징을 C 패밀리 [6]구문과 결합합니다.

SC Server 어플리케이션은 간단한 C 및 C++ 플러그인 API를 지원하므로 효율적인 사운드 알고리즘(유닛 제너레이터)을 쉽게 작성할 수 있으며, 이를 계산 그래프로 통합할 수 있습니다.서버의 모든 외부 제어는 OSC를 통해 이루어지기 때문에 다른 언어 또는 [6]응용 프로그램에서 사용할 수 있습니다.

SuperCollider 합성 서버(scsynth)

SuperCollider 사운드 생성은 최적화된 명령줄 실행 파일(scsynth)에 번들되어 있습니다.대부분의 경우 SuperCollider 프로그래밍 언어 내에서 제어되지만 독립적으로 사용할 수 있습니다.오디오 서버의 기능은 [6]다음과 같습니다.

  • 사운드 컨트롤 액세스 열기
  • 단순한 ANSI C 및 C++11 플러그인 API
  • 대규모 멀티채널[7] 셋업을 포함한 임의의 수의 입출력 채널 지원
  • 실행 순서를 정의하는 합성 노드의 순서 트리 구조에 대한 액세스를 제공합니다.
  • 신호 흐름을 동적으로 재구성할 수 있는 버스 시스템
  • 쓰기 및 읽기용 버퍼
  • 요구에 따라 다른 비율로 계산: 오디오 레이트, 제어 레이트, 디맨드 레이트

서버 아키텍처의 [8]독립 구현인 초신성은 합성 노드의 명시적인 병렬 그룹화를 통해 멀티 프로세서 지원을 추가합니다.

SuperCollider 프로그래밍 언어(sclang)

SuperCollider 프로그래밍 언어는 동적으로 입력된 가비지 컬렉션된 단일 상속 객체 지향기능 언어로, Lisp [5]또는 C 프로그래밍 언어와 유사한 구문을 가지고 있습니다.이 아키텍처는 실시간 컴퓨팅의 요구와 추상 언어의 유연성과 단순성 사이에서 균형을 이루고 있습니다.많은 기능언어와 마찬가지로 이 기능언어는 1등급 오브젝트로서 기능을 구현하고 있습니다.이러한 오브젝트는 구성될 수 있습니다.함수 및 메서드는 기본 인수 값 및 가변 길이 인수 목록을 가질 수 있으며 키워드 인수의 임의의 순서로 호출할 수 있습니다.폐쇄어휘적이며 범위는 어휘적 및 동적입니다.부분 어플리케이션에 의한 클로저 작성(명시적 커리잉), 테일 콜 최적화, 리스트 통합코루틴을 포함한 기능 언어의 전형적인 추가 기능이 지원됩니다.구체적으로는 튜플의 암묵적인 확장과 스테이트리스 패턴 시스템이 포함됩니다.상시 메시지 검색과 실시간 가비지 수집을 통해 대규모 시스템이 효율적으로 신호 처리를 [6]유연하게 처리할 수 있습니다.

SuperCollider는 성찰형, 회화형리터러티 프로그래밍 방법을 지원함으로써 새로운 사운드 알고리즘을[9] 비교적 쉽게 찾을 수 있으며 커스텀 소프트웨어 및 커스텀 프레임워크를 개발할 수 있습니다.영역 고유의 지식에 관해서는, 일반적이고(예를 들면, 시간이나 피치등의 속성을 다양한 추상화도로 표현할 수 있다) 구체적인 [6]목적을 위한 풍부한 예를 가지고 있다.

GUI 시스템

ixiQuarks GUI 도구를 실행하는 SuperCollider의 스크린샷.

SuperCollider 언어를 사용하면 애플리케이션용 크로스 플랫폼그래피컬 사용자 인터페이스를 구축할 수 있습니다.사용자 인터페이스 컴포넌트가 포함표준 클래스 라이브러리는 사용 가능한 여러 프레임워크에 의해 확장될 수 있습니다.대화형 프로그래밍의 경우 시스템은 리치 텍스트 코드 파일에 대한 프로그램 액세스를 지원합니다.벡터 그래픽스를 알고리즘으로 [10]생성하는 데 사용할 수 있습니다.

인터페이스 및 시스템 지원

클라이언트

서버는 OSC(Open Sound Control)를 사용하여 제어되므로 다양한 애플리케이션을 사용하여 서버를 제어할 수 있습니다.일반적으로 SuperCollider 언어 환경(아래 참조)이 사용되지만 Pure [6]Data와 같은 다른 OSC 인식 시스템을 사용할 수 있습니다.

SuperCollider 서버용 "서드파티" 클라이언트는 rsc3, Scheme 클라이언트, hsc3, ScalaCollider,[11] Scala, Overtone, Clojure Sonic [12]Pi를 포함합니다.이들은 SuperCollider의 프로그래밍 언어에 대한 인터페이스를 제공하지 않고 오디오 서버와 직접 통신하여 사용자 [6]표현을 용이하게 하기 위한 자체 접근 방식을 제공하기 때문에 아래에 언급된 개발 환경과는 다릅니다.

지원되는 운영 체제

다양한 사용자 생성 GUI 요소가 포함된 Mac OS X의 SuperCollider 스크린샷.

SuperCollider는 MacOS, Linux, WindowsFreeBSD에서 실행됩니다.이러한 각 운영 체제에는 SuperCollider에서 사용할 수 있는 여러 언어 편집 환경과 클라이언트가 있습니다(아래 [6]참조).

SuperCollider는 안드로이드와 [14]iOS에서도[13] 실행할 수 있는 것으로 증명되었다.

편집 환경

Puredynelinux의 SuperCollider Vim 스크린샷.

SuperCollider 코드는 가장 일반적으로 자체 크로스 플랫폼 IDE 내에서 편집 및 사용됩니다. 이 IDE는 QT 기반이며 Linux, Mac 및 Windows를 지원합니다.

SuperCollider를 지원하는 기타 개발 환경은 다음과 같습니다.

코드 예시

// 핑크 노이즈와 800Hz 사인 톤이 혼합되어 재생됩니다. { SinOsc.ar(800, 0, 0.1) + 핑크 노이즈.ar(0.01) }.놀고;  // 사인 톤의 주파수와 노이즈 신호의 진폭을 다른 사인 신호로 변조합니다. // 이 빈도는 마우스 포인터의 수평 위치에 따라 달라집니다. {  변화하다 x = SinOsc.ar(마우스 X.kr(1, 100));  SinOsc.ar(300 * x + 800, 0, 0.1)  +  핑크 노이즈.ar(0.1 * x + 0.1) }.놀고;  // 목록 루프: 인덱스의 곱과 목록의 각 값을 사용하여 컬렉션을 만듭니다. [1, 2, 5, 10, -3].모으다 {  아이템, i  아이템 * i }  // 요인 계산 함수 f = {  x  한다면(x == 0) { 1 } { f.(x-1) * x } }  // "판 소닉 에뮬레이션 - 카토디바이헤 - 라헤티스" - 미겔 네그랑 ( {  변화하다 a, b, c, d, n, e, f,  나가.;   a = 충동.ar(8)*1.5;   b = 화이트 노이즈.ar * 환경([1.0,1.0,0.0],[0.01,0.01],\걸음).ar(0, 충동.ar(1 )) ;  b = 프리버브.ar(b, 0.5, 0.4)*2.5;   c = SinOsc.ar(40) * 환경.퍼센트(0.01,0.2).ar(0, TDuty.ar(Dseq([1/4,1/2,1/8,1/8],인피)));  5.하다{ c = (c.일그러뜨리다 + c)*0.75};  c = c * 1.5;   d = LPF.ar(봤다.ar([20,47]). , XLine(XLine).ar(4000,200,0.5)) * 환경.퍼센트.ar(0, 충동.ar(1/16)) * 0.5;  d = (GVerb.ar( d , 룸사이즈:10, 리비전 타임:6) * 200).클립(-1.0,1.0) * 0.3;   n = 12;  e = ( 봤다.ar( 40*(1..n) * ({ LF Noise 1.ar(0.1).범위(1,1.01) } ! n) ) *   ({ LF Noise 1.ar(0.1).범위(0.0,1.0) }!n)). * 10;  e = 콤비씨.ar(e, 0.1, 0.1, 4) + e;  e = e.황갈색 * 0.3 * SinOsc.ar(0.05).범위(0.5,1.0);  e = e.이중;  e = e * SinOsc.ar(0.03).범위(0.2,1.0) * 0.5;   f = 블립.ar(100) * 블립.ar(100) * 환경([0.0,0.0,1.0],[8,8],[\걸음,\선형의,\걸음])  .ar(0, 충동.ar(1/16)) * 2 ;   나가. = ((a + b + c + f) ! 2) + d + e;  나가. = 나가. * 0.2  }.놀고 ) 
// 목록 반복: 컬렉션의 요소에 인덱스를 곱합니다. [1, 2, 5, 10, -3].모으다 {  일람, idx  일람 * idx }; 
// 요인 함수 f = {  x  한다면(x == 0) { 1 } { f.(x-1) * x } }; 

라이브 코딩

다목적 동적 프로그래밍 언어인 SuperCollider는 라이브 코딩, 즉 연주자가 코드를 [18]즉시 수정하고 실행하는 퍼포먼스에 사용할 수 있습니다.특정 종류의 프록시는 런타임에 스왑인/아웃하거나 수정할 수 있는 합성 개체의 상위 수준 자리 표시자 역할을 합니다.환경에서는 네트워크를 [19]통해 객체 및 프로세스 선언을 공유 및 수정할 수 있습니다.다양한 확장 라이브러리는 다른 추상화 및 사운드 객체에 대한 액세스를 지원합니다.예를 들어 dewdrop_lib은[20] 의사 클래스 및 의사 객체의 라이브 생성 및 수정을 허용합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "Releases". Github. Retrieved 8 January 2022.
  2. ^ asynth. "SuperCollider". Retrieved 20 June 2015.
  3. ^ "SuperCollider Licensing". Archived from the original on 2020-08-07.
  4. ^ J. McCartney, SuperCollider: Proc의 새로운 실시간 합성 언어.국제 컴퓨터 음악 회의(ICMC'96), 1996, 페이지 257-258.
  5. ^ a b J. McCartney, 컴퓨터 음악 언어의 재고: SuperCollider, Computer Music Journal, 26(2002), 페이지 61~68.
  6. ^ a b c d e f g h i Scott Wilson; David Cottle; Nick Collins (2011). The SuperCollider Book. The MIT Press. ISBN 978-0-262-23269-2. Archived from the original on 2011-05-01. Retrieved 2011-05-26.
  7. ^ "SuperCollider mailing lists". Archived from the original on 6 November 2009. Retrieved 20 June 2015.
  8. ^ T. Blechmann, 초신성, SuperCollider용 멀티프로세서 인식 합성 서버, Linux 오디오 컨퍼런스 진행, Utrecht 2010.
  9. ^ J. Rohrhuber, A. de Campo, Renate Wieser.현재의 알고리즘 2011-07-28 Wayback Machine에 보관된 JIT(Just-In-Time Programming)를 위한 언어 설계에 관한 메모.2005년 바르셀로나 국제 컴퓨터 음악 회의의 속행.
  10. ^ 벡터 그래픽 인터페이스는 펜 클래스에서 제공됩니다.다양한 예는 SC가 있는 오디오 비주얼 블로그 Fredrik Olofsson, 2009년 02.05.2012년 11월 05일 갱신)에서 확인할 수 있습니다.
  11. ^ Rutz, H. H. (2010). "Rethinking the SuperCollider Client...". Proceedings of SuperCollider Symposium. Berlin. CiteSeerX 10.1.1.186.9817.
  12. ^ "Systems interfacing with SC". Retrieved 20 June 2015.
  13. ^ GitHub에서의 SuperCollider Android 프로젝트
  14. ^ Tiny Music System - Cylob 블로그, 2009년 4월 11일
  15. ^ "SuperCollider with emacs: scel". Retrieved 20 June 2015.
  16. ^ "supercollider". Atom. Retrieved 20 June 2015.
  17. ^ "jleben/Scate". GitHub. 13 November 2013. Retrieved 20 June 2015.
  18. ^ Collins, N., McLean, A., Rohuber, J. & Ward, A. (2003), 노트북 퍼포먼스를 위한 라이브 코딩 기술, 편성 사운드 8(3) : pp 321-30.doi : 10.1017 / S135577180300030X
  19. ^ J. Rohrhuber와 A. de Campo.컴퓨터 음악 네트워크의 대기불확실성.2004년 마이애미 국제 컴퓨터 음악 회의의 진행.
  20. ^ "Quarks"로 알려진 수많은 사용자 기여 라이브러리 중 하나가 SuperCollider Quarks 저장소에 게시되었습니다.

외부 링크