슈퍼콜라이더
SuperCollider![]() | |
원저작자 | 제임스 매카트니 |
---|---|
초기 릴리즈 | 전( |
안정된 릴리스 | 3.12.2 / 2022년 1월 [1] ; 전( |
저장소 | github |
기입처 | C++ |
운영 체제 | FreeBSD,[2] Linux, macOS, Windows |
유형 | 오디오 프로그래밍 언어 |
면허증. | GPL-3.0 이후[3] |
웹 사이트 | supercollider |
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 시스템
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]표현을 용이하게 하기 위한 자체 접근 방식을 제공하기 때문에 아래에 언급된 개발 환경과는 다릅니다.
지원되는 운영 체제
SuperCollider는 MacOS, Linux, Windows 및 FreeBSD에서 실행됩니다.이러한 각 운영 체제에는 SuperCollider에서 사용할 수 있는 여러 언어 편집 환경과 클라이언트가 있습니다(아래 [6]참조).
SuperCollider는 안드로이드와 [14]iOS에서도[13] 실행할 수 있는 것으로 증명되었다.
편집 환경

SuperCollider 코드는 가장 일반적으로 자체 크로스 플랫폼 IDE 내에서 편집 및 사용됩니다. 이 IDE는 QT 기반이며 Linux, Mac 및 Windows를 지원합니다.
SuperCollider를 지원하는 기타 개발 환경은 다음과 같습니다.
- Emacs (Linux, Mac, Windows)[15]
- VIM (Linux, Mac)
- ATOM (Linux, Mac, Windows)[16]
- gedit (Linux, Windows)
- Kate (Linux, Windows)[17]
코드 예시
// 핑크 노이즈와 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] 의사 클래스 및 의사 객체의 라이브 생성 및 수정을 허용합니다.
「 」를 참조해 주세요.
레퍼런스
- ^ "Releases". Github. Retrieved 8 January 2022.
- ^ asynth. "SuperCollider". Retrieved 20 June 2015.
- ^ "SuperCollider Licensing". Archived from the original on 2020-08-07.
- ^ J. McCartney, SuperCollider: Proc의 새로운 실시간 합성 언어.국제 컴퓨터 음악 회의(ICMC'96), 1996, 페이지 257-258.
- ^ a b J. McCartney, 컴퓨터 음악 언어의 재고: SuperCollider, Computer Music Journal, 26(2002), 페이지 61~68.
- ^ 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.
- ^ "SuperCollider mailing lists". Archived from the original on 6 November 2009. Retrieved 20 June 2015.
- ^ T. Blechmann, 초신성, SuperCollider용 멀티프로세서 인식 합성 서버, Linux 오디오 컨퍼런스 진행, Utrecht 2010.
- ^ J. Rohrhuber, A. de Campo, Renate Wieser.현재의 알고리즘 2011-07-28 Wayback Machine에 보관된 JIT(Just-In-Time Programming)를 위한 언어 설계에 관한 메모.2005년 바르셀로나 국제 컴퓨터 음악 회의의 속행.
- ^ 벡터 그래픽 인터페이스는 펜 클래스에서 제공됩니다.다양한 예는 SC가 있는 오디오 비주얼 블로그 Fredrik Olofsson, 2009년 02.05.2012년 11월 05일 갱신)에서 확인할 수 있습니다.
- ^ Rutz, H. H. (2010). "Rethinking the SuperCollider Client...". Proceedings of SuperCollider Symposium. Berlin. CiteSeerX 10.1.1.186.9817.
- ^ "Systems interfacing with SC". Retrieved 20 June 2015.
- ^ GitHub에서의 SuperCollider Android 프로젝트
- ^ Tiny Music System - Cylob 블로그, 2009년 4월 11일
- ^ "SuperCollider with emacs: scel". Retrieved 20 June 2015.
- ^ "supercollider". Atom. Retrieved 20 June 2015.
- ^ "jleben/Scate". GitHub. 13 November 2013. Retrieved 20 June 2015.
- ^ Collins, N., McLean, A., Rohuber, J. & Ward, A. (2003), 노트북 퍼포먼스를 위한 라이브 코딩 기술, 편성 사운드 8(3) : pp 321-30.doi : 10.1017 / S135577180300030X
- ^ J. Rohrhuber와 A. de Campo.컴퓨터 음악 네트워크의 대기 및 불확실성.2004년 마이애미 국제 컴퓨터 음악 회의의 진행.
- ^ "Quarks"로 알려진 수많은 사용자 기여 라이브러리 중 하나가 SuperCollider Quarks 저장소에 게시되었습니다.