SC 설치하기


아래 링크로부터 각 OS에 해당하는 파일을 내려받아 설치 할 수 있다

Supercollider Download

16.11.06일에 최신버전인 3.8.0이 릴리즈 되었으며
이전 버전에 비해 많은 개선사항을 포함하고 있으므로 이전 버전 사용자도 업데이트 하는것을 권장한다.


각자 자신의 환경에 맞는 버전의  
Supercollider와
sc3-plugins를 각각 내려받아 설치하면 된다


OSX의 경우는 별 문제가 없으나
Windows의 경우는 기본 경로에 설치 할 경우 관리자 권한 문제로
.sc 파일을 수정하지 못하는 일이 발생한다


따라서 Program Files 폴더 내부가 아닌
C:\SuperCollider-3.8.0 에 설치하는것이 좋다 



SC3plugins 폴더는 아래 경로에 위치해야 한다

C:\Users\<USERNAME>\AppData\Local\SuperCollider\Extensions

Extensions폴더가 없으면 만들어주어야 한다


Note: 위 경로를 빠르게 찾으려면 SC 메뉴 바의

File -> open user support directory를 클릭하면 

자동으로 해당 폴더로 이동한다

OSX에서도 이 방법으로 쉽게 경로를 찾을 수 있다


Note: 32비트 윈도우의 경우 압축을 풀면 플러그인 폴더가 2개 생기는데

SC3plugins는 아래에
C:\Users\<USERNAME>\AppData\Local\SuperCollider\Extensions

plugins는 아래에
C:\SuperCollider-3.8.0

각각 복사해 주어야 한다.

**win64비트의 경우 몇몇 플러그인이 작동하지 않는 문제가 있으니 해당 플러그인을 사용하려면 32비트를 설치할것



SC 시작하기


SC를 실행하면 다음과 같은 화면을 볼 수 있다

'Central components'


Title Bar

현재 열려있는 세션의 이름을 보여줌

Menu Bar

File, Session, Edit, View, Language, Help

Code Editor

코드를 작성해 넣는 곳

Document Tabs

열려있는 문서들이 표시됨



'Docklets'


Help Browser

기본적인 메뉴얼부터 코드에 관한 설명을 볼 수 있음

Post Window

인터프리터로부터 받은 응답을 보여줌

Note: 보다 자세한것은 SuperCollider IDE Help 참조.



처음 SC를 구동하면 Post window에 컴퓨터에 저장되어있는
Class Library와 Extensions 폴더를 스캔한 결과가 출력된다

만일 문제가 있으면 Error가 출력되고
문제 없으면 Compile done이 출력된다



Hello world


새 창을 열어 - ([cmd+N] Mac, [ctrl+N] Win) -

아래 문자를 입력 한 후

"Hello world"

위 라인의 아무곳에나 커서를 두고 [shift+return]을 실행하면

포스트 창에 문자가 찍히는 것을 볼 수 있다

" " 안에 들어가는 문자는 String(문자열) 이라고 한다


Note: 구버전의 SC에서는 코드 한줄 실행과 코드 전체 실행 단축키가
지금과 반대로 되어있다
즉, 최신버전의 SC는 코드 전체 실행이 [Ctrl+return] 으로 되어있는데
코드 전체 실행을 주로 많이 쓰게 되므로 코드 전체 실행을  [shift+return]으로 바꿔주는것이 편리하다



서버 실행

위에서 실행해본 "Hello world"는 단순히 문자열이기 때문에 서버가 필요 없었지만
실제 오디오를 듣기 위해서는 서버를 실행 시켜줘야 한다


internal server 와 localhost server 가 있는데
기본적으로 localhost서버를 사용한다

아래 코드를 입력하거나 단축키를 이용해 서버를 부팅해보자

s.boot; // 서버 부팅
or
[cmd+b]


서버를 부팅하면 OS에 연결되어있는 기본 오디오 장치로 연결이 되며
SC Server에 등록되어있는 셈플레이트나 블록 사이즈 등이 적용된다
모든 설정이 완료 되었으면 오디오가 들리는지 테스트 해 보기 위해 아래 코드 한줄을 실행 해보자

play{SinOsc.ar(440, mul: 0.2)}


SC에서 실행되고 있는 모든 소리를 멈추려면 OSX [cmd+.], Win [ctrl+.] 을 누르면 된다

소리를 확인하고 서버를 종료해주자


s.quit; // 서버 종료


서버 설정


SC를 보다 원할히 이용하기 위해 서버 설정을 바꾸어야 하는 일이 종종 생기는데
나중에 바꾸어도 되나 지금 설정해두면 편리한 변수들이 있으므로 먼저 수정해두면 좋다

서버 옵션을 변경하는 방법은 두가지가 있는데

Server.sc 파일을 직접 수정하는 방법과 (설정이 저장됨)
현재 환경에서만 일시적으로 변경하는 방법이 있다 (SC서버를 재부팅하면 초기화됨)


Server.sc 파일을 수정하려면
아래 클래스를 입력한 후  [cmd+i]를 눌러 server.sc 파일을 열어준 후

ServerOptions <- 여기에 커서를 가져다놓고 cmd(ctrl)+i 를 눌러


server.sc 파일이 열리면 아래와 같은 창이 나타난다



대부분 넉넉하게 설정되어있어 변경하지 않고 사용하는데 큰 문제가 없지만
몇몇 요소는 자신의 환경에 맞게 설정해줄 필요가 있다

변경하게 될 주 요소는 아래와 같다:

numInputBusChannels: 오디오 입력 버스채널의 수 (오디오 인터페이스의 인풋을 여러개 사용하고자 하는 경우 수정)

numOutputBusChannels오디오 출력 버스채널의 수 (4체널 오디오를 쓰려면 4로 변경)

memSize: 사용가능한 최대 실시간 메모리 설정 (단위: KB)
                    신스와 유젠을 사용할 때 메모리에 자리가 배정되는데 그 것을 수용할 수 있는 최대 크기를 설정해야합니다.
                    이 사이즈는 반드시 
2의 거듭제곱으로 된 수를 적어야 합니다.


Note:     최대 메모리 크기는 기본셋팅으로 8192 즉 8메가로 설정되어있는데
               소리를 생성할 때 이보다 큰 데이터가 출력되면 문제가 생긴다


SC의 출력 오디오는 32bit float 형식이 기본이므로
1샘플을 구성하는데 32bit가 필요하다
8bit1Byte이므로 1샘플4Byte가 된다

일반적으로 사용하는 Sample Rate는 44100Hz
Sample Rate란 1초당 추출되는 샘플의 갯수를 의미한다

그러므로 1초를 표현하기 위해서는

44100개의 샘플 * 4바이트 

176400Byte를 필요로 한다


킬로바이트(KB)로 환산하면

176400/1024 = 172.265625

그러니 1초를 구성하는 실시간 메모리 용량은 약 172.2KB가 되겠다


{DelayN.ar(PinkNoise.ar(0.02), 1, 1)}.play //1초짜리 딜레이 한개


기본값으로 셋팅되어 있는 메모리 용량은 8192KB이므로 아직 여유롭지만
딜레이가 50개이상 모일 경우 약8613KB
할당된 실시간 메모리를 초과해버리게 되어

포스트 창에 아래와 같은 에러 메세지가 나타난다

(44100*(4/1024)*50).round(0.1); // 8613.3KB

50.do{{DelayN.ar(PinkNoise.ar(0.02), 1, 1)}.play} // 1초짜리 딜레이 50개 생성


실시간으로 처리할수 있는 메모리의 한계치 이상의 데이터가 들어왔기 때문에 오류가 발생한다
이 경우 서버를 재시작 해주어야만 다시 정상작동한다

그러므로 조금 넉넉히 작업할 수 있게  최대 메모리 크기를 늘려주는것이 좋다

단 위에 언급했듯이 메모리는 2의 거듭제곱으로 표현이 되어야만 한다

2.pow(15) = 32768 = 32MB
2.pow(16) = 65536 = 64MB
2.pow(17) = 131072 = 128MB
2.pow(18) = 262144 = 256MB
2.pow(19) = 524288 = 512MB
2.pow(20) = 1048576 = 1024MB = 1GB


sc파일을 직접 수정하지 않고
서버를 부팅하기 전에 값을 적용하여
현재 환경에서만 변경된 설정을 적용할 수도 있다

서버를 부팅하기 전 아래 코드를 먼저 실행한 후 부팅을 하면
아래 내용이 적용된 상태로 서버가 실행된다


ServerOptions.devices; // 연결되어있는 장치 목록을 포스트 창에 띄워줌(Windows에서는 에러가 )

s.options.outDevice_("장비선택"); // 오디오가 출력되는 장치 설정 (설정해주지 않으면 OS기본 출력 장치가 선택됨)

s.options.numOutputBusChannels_(4); // 출력 체널 갯수 설정

s.options.sampleRate_(44100); // 샘플레이트 설정 (설정하지 않으면 인터페이스 기본 샘플레이트로 사용됨)
s.options.memSize_(2.pow(20)); // 실시간 메모리 크기


더 자세한 것은 Server Architecture Reference 를 참고


Note: SC를 이용해 작업하다 보면 위와 같은 이유 혹은 다른 이유로 서버 작동이 중지되는 경우가 있다
일반적인 경우는 보통 서버를 재부팅하면 해결되나 
문제는 서버를 재부팅했을 때 부팅 실패 메시지가 뜨거나 정상적으로 부팅이 되지 않는 경우가 있는데
이 경우 작업 관리자에서 현재 실행되고 있는 서버 scsynth.exe를 강제 종료 해 주어야 한다



OSX의 경우 Activity Monitor에서 확인할 수 있다





Posted by Elec-Kiwi
,