Csound book 1 chapter번역 [4]






Theory : Filter Basics



이번에 나오는 사운드 디자인 연습은 Csound의 필터 코드에 대해서 이다. 그러나 그전에 우리는 필터 베이직에 관해 재검토해야 한다. 일반적 필터 타입은 figure 1.44에 표현되어 있듯이 4가지이다. : lowpass, highpass, bandpass, bandreject이다. 이 figure에서는 같은 길이의 (a)12개의 조화된 partial로 이루어져 있는 것 (b)한 개의 극을 가지고 내려가는 곡선 (c)한 개의 극을 가지고 올라가는 곡선 (d)두개의 극ㅈ을 가지고 있는 band pass (e)두개의 극을 가지고 있는 bandreject이다. 표현되어 있는 점선들은 정지된 필터 무리들을, 실선들은 패스되는 무리들을 나타낸다. 주파수는 -3dB에서 잘렸고, 실선에 의해 spectrum envelope curve가 outline화 되었다.



여기서 Csound의 이러한 필터들은 tone(b), atone(c), reson(d), areson(e)코드와 상당히 일치한다. 필터의 잘린 주파수가 -3dB이라는 것을 알아차려라. 왜 -3dB인가? 그것은 필터의 경사면을 봤을 때 잘려진 주파수 (Fc)는 커브위에 있고 -3dB에 얇게 지나가면서 주파수의 연속으로 정의되어진다.







Sound Etude 5 : Noise, Filters, Delay Lines, and Flangers



instrument의 다음 세트는 다양한 parallel과 연속적 형상의 Csound signal modifiers가 어떻게 노이즈와 wave table로 만들어지고 변환되는지에 대해 알아보자. figure 1.45, 1.46에서 보여주듯이 instr 128에서 우리는 동적인 필터에 rand란 코드에 의해 화이트 노이즈가 생성되는 것을 알 수 있다. expon과 line은 차단된 주파수와 두 극의 Csound reson필터 (bandpass)dml 밴드의 너비를 수정하여 독립적으로 쓰인다. 또한 expseg, amplitude envelope의 형태는 사용되고, 진열된다.







A Cascade Filter Network



instr 129~132(figure 1.47)에서 white noise source(rand)는 한 개의 극을 가진 lowpass 필터(tone)의 연속을 지나간다. 각각의 극들에 의해 만들어진 이 중대한 contribute는 예들로부터 온 매우 외적인 것이라 할 수 있다. 사실 각각의 극들은 차단된 주파수에서 roll-off되는 옥타브에 6db이 첨가되어 필터가 더 경사가 심해진다. 이 cascade필터 디자인은 -첨가된 tone으로 인해 비례적으로 가팔라지는-더 효과적인 필터의 결과를 가져온다. 이와 같이 instr 129에서의 cascade 디자인은 옥타브 당 6dB이 저하되었고 instr 130은 옥타브 당 12dB이 급격해 졌으며 instr 131에서는 18dB, instr 132에서는 24dB의 경사가 생겼다. dispfft코드는 각각의 악기에서의 노이즈 소스를 스펙트럼 화 시켜서 깨끗하게 보여준다.







Displays



지금까지 몇몇 개의 예들에서 우리는 display, dispfft코드를 사용하여 왔다. 그러나 정확하게 디스플레이라는 것이 무엇인가? 그리고 어떻게 다르게 쓰이는 것인가?



당신이 알다시피 신호는 시간이나 주파수를 보통 나타낸다. 사실, 이것들은 시간을 넘어선 진폭, 또는 주파수가 어떻게 신호로 바뀌는지를 설명하는 것을 나타낸다고 할 수 있다. Csound의 display코드는, FFT(the Fast Fourier Transform 빠른 4개의 변형)방법에서 frequency domain에서 dispfft로 인해 신호가 표현되는 것과 같이, 진폭 대 시간의 그래프 같은 time domain에서 신호를 나타낸다. 얼마나 자주 업데이트 되고, 디스플레이 되는지, 또 이것들이 time domain혹은 frequency domain에서 신호가 어떤 코스로 발전되어 보이는 것에 대해서는 더 이상 말할 나위도 없다. 우리는 instr 128의 display를 사용함으로 expseg amplitude envelope를 보게 되었고, 노트의 전체 길이 이상으로 amplitude가 변하는 방법도 알게 되었다.



instr 129~132에서 우리는 필터 네트워크에 의해 가늘게 된 주파수를 보여주는 dispfft를 사용했다. 여기서 4096의 FFT를 설명하자면, 대략 21.5Hz에서 2048의 공간인 frequency range로 나눈다. 그리고 그 공간들은 8개의 묶음에 (각각 5512Hz)에서 2048개 (21.5 Hz)까지 스펙트럼 화 시켜 나눈다. 우리는 이렇게 나눈 코드들을 time domain과 frequency domain에서 우리 악기에서부터 생성된 소리의 특징을 보기 위해 사용한다. 특별하게도 dispfft코드는 우리가 보내는 신호들을 Csound의 다른 필터들이 받았을 때의 효과를 더 잘 이해할 수 있게 도와준다.



요즘 아날로그 종합적 필터들은 이런 드문 사운드 들을 한계내리고, 지금은 소위 “클래식”이라 할 수 있는 것을 탐낸다. Csound의 첫 번째 필터인 tonereson필터를 이용한다. 사실, 언제나 이 필터들의 output이 제어할 수 없는 sample-out-of-range로 유지되는 balance코드가 만나면서 더 좋은 결과를 가져온다.



그러나 몇 년이 지나자 많은 새 필터들이 Csound언어를 첨가하여 나타났다. 오늘날 Csound의 Butterworth족의 필터들도(butterlp, butterhp, butterbp, butterbr) 매우 훌륭한 소리를 내고, 모든 악기 디자인을 가상화하여 더 일반적으로 나타난다. 이것은 Butterworth 필터들이 가지고 있던 그들만의 역할이다. ; 더 많은 극들 (그들은 더 험한 대를 올라가 효과를 얻음), pass-band로 평평한 주파수 응답 (더 부드럽고 깨끗하게 들림)과 더 안정된 의미 (샘플이 나가면서 갖는 범위에 대한 당신의 걱정을 말함)를 갖는다. figure 1.48, 1.49에서 보이는 instr 133에서 우리는 첫 번째 아날로그 신디사이저에서 나타나는 고전 lowpass공진필터와 유사한 4가지 극의 butterbpbutterlp 필터 쌍을 포함하는 비슷한 형태를 이용한다.



당신이 Csound코드에서의 다이내믹 변수조절의 예들이 앞의 세트로부터 보고 듣게 되었을 때, 조금 줄어든 사운드 디자인의 넓은 세계로의 문을 열게 된다.







An Echo-Resonator



이제 우리의 초점을 다른 Csound의 signal modifiers –combvdelay-로 돌려보자.



comb필터는 figure 1.50에서 보이듯 매우 필수적인 feedback을 가지고 지연시키는 것이다. 당신이 그것을 볼 수 있을 때 그 신호는 지연되는 라인으로 들어가고 나올 때도 그 길이의 길이가 지연되어 나온다. (여기에선 25millisecond) 그것이 output에 도착했을 때 그것은 요인을 얻음으로 그것을 곱하여 input으로 feedback된다.



시그널에서 순화하는 이 시간은 loop-time이라 부른다. 그것은 figure 1.51, 1.52, 1.53, 1.55에서 보여준 instr 135에서 증명되는데, diskin코드를 이용하여 읽고(앞뒤 전부) comb필터로 오는 것들을 직접 샘플들로 바꾼다. loop-time이 길어질 때, 우리는 부분, 부분으로 나뉘는 에코들을 알 수 있다. ; 그러나 loop-time이 짧아질 때, comb필터는 resonator와 같은 역할을 한다.



figure 1.30에서 나타나듯이 comb필터의 impulse respond는 loop-time의 격이 균등하게 나누어지는 것을 훈련시킨다. 사실, 이 필터의 공진주파수는 1/loop-time이다. instr 135에서 이것들은 밀리세컨마다 일일이 나타난다. 이 숫자는 내가 일일이 변하는 밀리세컨을 loop의 방법을 바꿨을 때부터 일일이 변하는 Hz의 resonator의 frequency까지 당신들이 알 수 있다는 것을 의미한다.



이 note-event의 코스에서 동적인 변수로 허락되지 못한 comb코드임에도 불구하고 우리는 instr 135에서 나온 note by note basic을 할 수 있다. ; vdelay는 이 변수들을 다이내믹하게 허락한다. 변하기 쉬운 delay lines가 이 일반적 스튜디오의 flanger효과 이상의 것을 디자인 하는 포인트이다.



instr 136(figure 1.54, 1.55)에서는 noise cascade가 변하기 쉬운 딜레이 라인을 통해 flanger가 된다. 이것들이 다른 input vdelay코드로부터 output이 부딪혔을 때 resonator의 특성이 세기와 포커스는 더 강조되어진다. (instr 132 -figure 1.47-의 예에서 나온 tone과 같이) 더욱이, 이 resonator의 최고점은 line코드에 의해 다이내믹하게 수정되는 주파수인, 쉽게 변하는 LFO의 제어 밑으로 되어 frequency spectrum이 서로를 버리게 된다.







Score Statements and Note-List Shortcuts



명백하게도, 텍스트에 기초한 note-lists의 생성과 편집은 재미있지 않다. note-lists는 당신의 instrument들에 대한 지침들에 정확함과 직접적 컨트롤을 제공한다. 그러나 아직까지 Csound를 공부하는 것으로 치면 이것은 매우 비음악적이고 지루한 것이다.



이것을 시작할 때, Csound의 미디파일을 읽어와서 노트생성을 더 직관적으로 하고, Csound의 instrument로 연주하였다. 그러나 Csound instrument가 미디를 이용한 일을 디자인 하는 것이다. 당신은 미디장치를 가지고 일을 하기 전에 전형적인 Csound악기만을 가지고 하는 것을 적응시켜야 한다.



Csound책의 텍스트가 덥혀있지 않음에도 불구하고 많은 CD-ROM의 챕터들이 미디파일과 미디키보드로부터 Csound를 조정하는데 쓰이고 있다.



미디에 의지하지 않더라도 아직까지는 Csound는 note-lists의 생성과 편집을 매우 단순하게 작업할 수 있는 score statement와 score symbols(텍스트를 이용한)에 의해 만들어 진다. f-statement와 같이 이런 숫자들은 특별한 letter를 가지고 시작하고, 때때로 논증에 의해 따라가는 것을 의미한다. 나는 많은 숫자 statement들을 연습 5의 스코어에서 쓸 것이다.



내가 연습 5에서 가져온 첫 번째 score statement는 Advance(a-statement)이다. (figure 1.56) 이것은 사운드 샘플의 생성 없이도 비트를 세는 것을 의미한다. 여기 첫 번째 스코어의 2개 음표는 뛰어넘고 10초의 상태에서 rendering해보아라. 이 advance statement는 당신이 길고 복잡한 작품을 일하거나, 음악 중간이나 끝부분에서 잘 튜닝된 어떤 것에 흥미가 있을 대 유용하게 사용될 것이다.



두 번째 스코어에서 나는 Section(s-statement)을 이용해 보았다. (figure 1.57)이것은 논증되지 않았다. 그냥 단순하게 시간이 0일 때부터 다시 시작하고 시간을 세는 것이라 할 수 있다. 이것은 이것을 당신이 다시 그 페시지로 듣고 싶을 때 유용하게 쓰인다. 그렇게 하면 당신은 간단하게 s를 넣는 것만으로도 첫 번째 섹션의 끝과, 섹션의 복사, s이후의 것들을 조정 할 수가 있다. figure 1.57에서 보이듯이 연습 5에서부터 온것의 쓰임을 정확히 보여주고 있다.



세 번째 스코어에서 이용한 것은 Dummy f-statement(f0)이다. (figure 1.58) Csound에서 당신은 언제나 기억되어 f0tables로 유지되는 것을 알 수 있다. 이것은 다른 피스나 아직 언급되지 않은 오케스트라에서의 같은 table의 코스동안 나오는 한 가지 웨이브 형이나 샘플들이 다시 재정비 되는 것을 의미한다. 이와 같이 침묵과 섹션사이에 넣거나, 특별한 부분의 길이를 늘일 때에도 언제나 당신은 Dummy f-table(f0)로 유지시킬 수 있다. figure 1.58에서 나타난 것처럼 나는 2개의 섹션과 침묵사이의 2초를 첨가시킨 후 f0을 이용했다.



네 번째 스코어 단편에서 나온 것처럼 나는 2개의 “Carry”, “Ramp”, “+”를 사용하였다. (figure 1.59)그 carry(.)라는 것은 한 가지 음부터 다음까지 p-field로 나타내라는 것을 말한다. ramp(<)라는 것은 직선으로 노트의 수가 첨가될 때 2개의 p-field를 첨가하라는 것을 나타낸다. (이 노트의 숫자는 삽입되는 숫자를 말하는 것임) 그리고 ”+“는 p2의 일이 어디서든 자동으로 계산되어 현재 노트가 시작 될 것이 전의 노트 길이와 시작 시간을 합하여 첨부되는 것이다. (p2+p3) 이와 같이 이 지금의 노트는 이전의 것들과 함께 연속적으로 쓰인다. 3개의 것 모두 figure 1.59와 1.60의 바뀐 잠깐 부분에서 사용되었다.



마지막 스코어에서 나는 Tempo(t-statement)를 사용하였다. (figure 1.61) Csound의 score clock은 1초에 60번 울린다. 잘못된 Csound에 의해 모든 악보에서 시작되어야 하는 게 (t0 60) 60의 템포로 들어간다. (분당 60번 혹은 초당 1번) 명백하게도 이것은 당신이 p3노트 이벤트가 1초안에 끝나는 시간을 말하는 것을 의미한다. 우연히 t-statement가 당신에게 요구한다면 당신은 60이란 잘못된 것을 불변 가변의 것으로 바꾸어야 한다.



statement t 0 120 이란 것은 1분당 120의 비트를 뜻하는 템포이다. 이 세팅이 주어졌을 때 beat-clock의 간격은 빠르게 2번 해야 하고, 매시간 스코어 파일에서 반을 잘라야 한다.



statement t 0 120 1 30 은 가변적 세팅 템포이다. 이 경우에 템포는 0일 때 120에 세팅 된다. (스코어에서 지시한보다 두 배 빠르게) 그리고 30의 새 템포로 점진적으로 움직인다.(스코어에서 지시한 것보다 두 배 느리게) 명백하게도 이 가변의 템포는 당신의 스코어를 좀 더 기계적이지 않고 음악적으로 만든다.



Csound의 텍스트로 만드는 언어로 일을 할 때 그것은 매우 힘겨울 것이다. 사실, 이것은 많은 학생들에게 그들의 note-lists의 연산방식을 만들기 위해 C프로그래밍을 배우기를 권한다. 실시간과 미디는 둘 다 해결된 것이다. 그러나 Csound의 score shortcuts는 당신의 일을 훨씬 쉽게 만들고 당신의 제스처, 프레이즈, 텍스트에 더 많은 표현 능력을 줄 것이다.







Exercises for Etude 5



? Csound의 오케스트라와 스코어를 렌더하라.



? 가변의 필터와 필터구성으로 인한 사운드 질의 차이를 연주하고 들어보아라.



? instr 128~136에서 쓰인 Csound 매뉴얼에 있는 새 코드들을 찾아 읽어 보라.



? instr 128에서 loscil코드를 rand코드와 다이내믹한 당신의 샘플 필터로 대체하라.



? instr 128에서 butterbpreson으로 대체하고 질적 차이를 들어보라.



? instr 129~132에서 butterlptone로 바꾸어라. 효과를 비교하라.



? instr 133highpass공진 필터로 바꾸어라.



? instr 133에서 유사하게 디자인 한 것을 가지고 instr 132의 몇 개 디자인으로 구성하여 악기를 만들어 보아라.



? instr 134에 delay line으로(텍스트에 덮이지 않게)블록화 시켜라.



? 딜레이 코드를 더 첨가함으로써 instr 134를 더 많은 딜레이 라인으로 바꾸어라.



? instr 135를 multiband resonation으로 만들어 수정하라.



? 더 많은 combvdelay instr 135에 첨가하고, 피드백/multiband -resonator super- flanger로 miltitap delay를 생성하라.



? 이 섹션에 덮인 스코어 statement를 이용하여 etude 3, 4로 돌아가라. 거기서 다시 재생시키고, 정적을 넣어보고, 템포를 바꾸어보라. advance는 비트와 ramp주위로 매개체들을 통해 그들이 제공하는 악기들의 가능한 범위 내에서 더 많은 것을 탐구해보라.



? instr 136에서 diskin코드를 rand로 바꾸고 당신의 샘플에 덮어쓰라.



? instr 136에서 control oscillator의 다이내믹한 frequency와 amplitude modification을 첨가하고 잘 살펴보라.



? instr 136에서 control oscillator의 (randh로 노력해 보라)웨이브 형을 바꾸어라.



? lowpass resonate-lowpass필터로 당신의 수정된 flanger instrument에 첨가하라.



? 당신의 음악세계를 듣고, 그 안에서 느껴보도록 하라.







Global Variables



지금까지 우리는 특정한 위치에서 특정한 악기로 뭉쳐진 가변매체들 i, k, a를 사용해 왔다. 그 local variables는 매우 훌륭하다. 왜냐하면 당신은 asig또는 amix데이터가 오류를 일으키거나 신호가 instrument에서 다른 것으로부터 유혈 되는 것에 대한 걱정 없이 분리된 instrument에서 같은 변수의 이름을 사용할 수 있기 때문이다. 사실, instr endin의 한계는 참으로 다른 것으로부터 -심지어 똑같은 이름과 argument이름까지도 같은- 신호진행에 고립되는 것이다. 그러나 당신은 instrument를 상호 교환 할 수 있다. 이 세계는 신호가 발사되는 instrument로부터 교류가 가능함으로 유사한 방법으로 구역으로 가서 콘솔에서 하나의 소리로 섞일 수 있고, 이것은 “aux sends”나 ”aux returns”라고 표현된다. Csound에서는 이 같은 기능이 global variables로 사용되었다. global variables는 모든 악기에 의해 가까이 할 수 있다. 그리고 local variables와 같이 global variables는 3개(gi, gk, ga)의 기본적인 rate에 의해 업데이트 된다.







gi-rate variables는 note-rate에서 바뀌고 업데이트 된다.



gk-rate variables는 control-rate에서 바뀌고 업데이트 된다.



ga-rate variables는 audio-rate에서 바뀌고 업데이트 된다.







왜냐하면 global variables는 모든 instrument와 instrument가 없는 것 둘 다 속하기 때문이며 그것들은 모두 초기화됨이 틀림없다. global variables는 정형화 되어 local instrument안에 꽉 차 있거나 instrument 0 으로 초기화 된다. 도대체 어디서 이 이상한 instrument 0 이 쓰이는가? 그건, instrument 0 이 첫 번째 instr의 선언 전에, 선두 섹션을 따라서 즉시 오케스트라 파일의 선으로 구성된다. 그렇기 때문에 figure 1.62에서 나와 있듯이 선두 직후에 (instrument 0), gacmb, garvb가 (우리의 그 세계적 FX buses)가변 화 되어 깨끗해지거나 0으로 이니셜 화 된다.







Sound Design Etude 6 : Reverb and Panning



우리의 instrument들의 몇 가지 외부 진행을 첨가하고 사용하기 위한 global variables를 놓자. instr 137(figure 1.63, 1.64)를 보면, loscil로부터 dry signal이 echo bus와 분리의 wet signal이 첨가된다. dry signal이 직접적으로 보내질 때 까지, 우리의 첫 번째 instrument로부터 out코드를 이용해 적어라. 그러나 이 경우에 같은 신호는 광범위 하게 그 instrument를 나가고, 또 다른 두개 – figure 1.63, 1.64에서 보인 것처럼 instr 198(echo)과 instr 199(reverb)로 된다.



켜져 있음이 틀림없는 이 세 개의 instrument 모두를 스코어 파일에 적는 것은 중요하다. 사실, 일시적이고 가공적인 노이즈들을 피하기 위해, 전형적으로 global instrument들은 어떤 부분의 길이동안 전형적으로 왼쪽에 놓이고, global variables들은 instrument가 꺼져 있다는 것이 들어왔을 때 (gacmb=0 garb=0) 항상 clear된다.



instr 138 (figure 1.66, 1.67)에서 보인 우리의 다음 instrument는 FM디자인에 기초를 두고 있으나 지금 그 instrument는 신호를 pan하기 위한 능력으로 놓여졌다.



당신은 instr 138에서 나타나는 panning이 전통적 믹싱 콘솔의 panning 손잡이 같은 기능으로 단순하게 변하는 것으로 이용되어 실현된다는 것을 주의해야 한다. 어떻게 이러한 것을 하는가? 당신이 지금 아는 것처럼 만약 당신이 범위를 0에서 1로 신호를 곱하면 우리는 효과적으로 시그널을 0에서 100%사이로 폭을 조절할 수 있게 된다. 만약 우리가 동시에 스칼라(ipan)와 마이너스된 스칼라(1-ipan)를 곱한다면, 우리는 amplitude를 0에서 100%로 비율을 정하지만, 각각이 반비례 되는 두개의 출력을 가지게 될 것이다.



예를 들어 만약 스칼라가 1이고, 왼쪽 출력 1 time과 일치한다면, 우리는 왼쪽에서부터 우리 signal의 100%와 (1 – 1) 또는 오른쪽에서 0% signal을 가지게 될 것이다. 반면, 만약 amplitude 스칼라가 2로 놓이면, 우리는 왼쪽의 2 times를 가지거나, 좌측에서 20%의 우리의 signal과 1 – .2를 가지거나, 오른쪽 signal의 .8 time을 가지거나, 오른쪽으로부터 80%를 가지게 될 것이다. 이 알고리즘은 signal의 왼쪽

Leave a Comment.

This site uses Akismet to reduce spam. Learn how your comment data is processed.