본문 바로가기

Pure Data/The Theory and Technique of Electronic Music

3.5 Control streams in block diagrams


밀러 푸켓의 책인


[The Theory and Technique of Electronic Music]


에 나온 설명들인데 보면 어려워서 머리가 혼란스럽지만, 막상 많이 쓰는 것들이다.


원론적으로 설명을 하기 때문에 더 어렵다.


나는 영어를 무지 못하기때문에 더 혼란스러웠다-_-;

 


3.5 Control streams in block diagrams

 

control-to-signal

 

: [sig~]를 이용하여 numeric control stream을 오디오 신호로 바꾸어줌.

 

signal-tocontrol

 

: [snapshot~]를 이용하여 오디오 신호를 numeric control stream으로 바꾸어줌

 

정확한 수치는 여기서 알 수 없다.

 

[snapshot~]은 오디오 신호 외에 control input에 필요한 오디오 신호가

샘플링되는 시간 순서를 지정해주어야 함.

 

[metro~]가 필요하다.

 

 

 

3.6 Event detection

 

 

[snapshot~]의 두번째 기능은 event detection이다.

 

예제는 인풋은 오디오 신호이고 아웃풋은 타임 시퀀스인

 

 Threshold detection이다.

 

 

threshold detection을 사용하는 대표적인 이유는.

 

연주자가 악기를 연주하는 것처럼

 

어떨때 동작하고 멈출지를 알아내는 것이다.

 

 

 

지속되는 활동량을 미리 알아챌 수 있다.

 

(envelope follower 같은것)

 

 

타임 시퀀스에 맞춰 언제 시작할지 멈출지를 표시하는게 필요하다.

 

 

Figure 3.7 a 는 이 아이디어를 심플하게 구현한 것임.

 

수평적인 선은 threshold의 상수값을 보여준다.

 

time sequence에 표시된 'onsets'은 하나의 이벤트를 포함한다.

 

각 시간의 신호가 교차하는 threshold의 위에서부터 아래까지의 이벤트.

 

 

 

'turnoff'은 다른방향으로 교차하는 것을 표시했다.

 

 

** 켜지고 꺼지는 위치 참조

 

하지만 이 방식은 문제가 있다. threshold에 신호가 근접하면 small ripple(잔파동)이 나는

 

onsets 와 turnoffs가 생긴다.

 

이건 디바운싱을 무시함.

 

 

디바운싱 [debouncing]

 

: 소프트웨어의 적절한 지연 시간.

 

 

해결방안으로, b와 c가 있음.

 

 

b는 위에 있는 선인 'onsets'는 켜지는 것이고

 

아래있는 선인 'turnoff'는 말 그대로 꺼지는 것이다.

 

세번째 이후로는 켜지지 않는데 이유는, 이미 켜져 있기 때문이다.

 

(turnoff 아래로 내려가지 않았다)

 

 

 

 

c는 여러 onsets와 turnoffs을 필터링하여 내보내는 것은

 

각 onset에 dead period를 연결하는 것이다..

 

 

이것은 onset이 각각 보고된 다음 시간의 등차(같거나 다른) constant interval이다.

 

이렇게 되는 동안 onsets 나 turnoffs되는 값들을 받지 않게 된다.

 

 

period가 끝난 다음에 신호가 threshold 밑으로 떨어지게 된다면

 

turnoff를 뒤늦게 받아볼 것이다.

 

Dead period는 turnoffs와 연결되어 있을 것이고

 

두 기간은 다른 값을 가질 것이다.

 

 

 

두 필터링 방법은 아마 독립적이거나 동시적일 쓰일 것이다.

 

 

 

이것은 수동으로 dead times(명령이 떨어지기 전의 부동의 시간) Threshold가 쓰일 각 특정 상황에 필요할 것이다.

 

Threshold가 사용되는 각 특정 상황에 threshold 값 and/or dead time를 수동으로 재단하는 것이 필요하게 될 것이다.

????

 

 

Thresholding은 퍼포머로부터 오디어블 신호(cue큐)들에 반응하는 컴퓨터를 어레인지하기 위한

 

더 높은 레벨의 방법들의 디자인의 첫번째 방법으로 쓰인다.

 

 

 

간단한 예제로

 

쉼표에 의해 나뉘어지는 프레이즈의 반복을 하는 뮤지션을

 

보는 것처럼 상대적인 무음의 특정 시간 이후에 사운드의 시작에

 

의해 셋되는 예측하는 프로세스의 시퀀스를 시작하는 것일 수도 있고,

 

???

 

 

  More sophisticated detectors (built on top of threshold detection) could detect continuous sound or silence within an expected range of durations, or sequences of quick alternation between playing and not playing, or periods of time in which the percentage of playing time to rests is above or below a threshold, or many other possible features. These could set off predetermined reactions or figure in an improvisation.

 

 더 정교한 디텍터는 계속되는 사운드나 무음에서 디텍팅할 수 있다. 듀레이션, 혹은 연주하거나 그렇지 않는 사이에 빠른 대안으로서의 시퀀서의 적절한 값들이 함께 사용된다. 아니면 연주 시간에서 쉼표들의 퍼센트의 시간은 threshold의 위나 아래가 될 수 있다 또 아니면 많은 가능성이 있는 것들이 있을 것이다. 이것은 즉흥연주에서 미리 반응이나 계산이 미리 이루어져 시작될 수도 있다.

 

 

 

 

3.7 Audio signals as control

 

 

 

컨트롤 문제점들에 대한 아날로그 신데시스의 전통에서부터 차지하는 엘레강스하고 올드패션드한 접근방식에

 

대안으로 컨트롤 스트림이 사용되곤 한다.

 

우리는 이 챕터에서 이것을 생각해볼 것이다.

 

대신에 혹은 컨트롤 스트림의 사용에 덧붙여,

 

다른 오디오 신호의 생성을 제어하기 위해 오디오 신호 자체를 사용할 수 있다.

 

 

아날로그 시퀀서, sample and hold

 

 

 

 

아날로그 시퀀서는 종종 소리의 정기적 또는 비정기적으로 반복 순서를 설정하는 데 사용되었다.

 

 

 

시퀀서는 그것 스스로 일반적으로 전압의 반복 순서를 내보낸다. 

 

이것과 함께 전압 사이에 각 변과에서 트리거 신호가 맥놀이한다.

 

 

하나는 피치나 음색 파라미터로 전압, 그리고 한개 이상의 엔벨롭 제네레이터를 제어하기 위한 트리거로 전압이 사용되었다.

 

디지털 오디오 신호에서 미리 확정된 값들의 반복 순서들을 받는 것은 [phasor~]오브젝트를 인터폴레이팅하지 않은 테이블 룩업에 넣어 보내는 것으로 간단하다.

 

 

*Figure 2.8 : +로 오프셋을 조정하여 duty cycle을 바꾸는 방법

 

Pd’s sample and hold object was previously introduced in the context of sampling (Example B08.sampler.nodoppler.pd, Page 53).

samphold~를 사용한 방법

 

경사진 사운드를 만드는 모든 파형 제네레이션과 대안적인 테크닉은 여기에서처럼 쓰일 수 있다?

 

3.8 Opertation on control stream

 

여기까지 우리는 컨트롤 스트림과 오디오 스트림을 어떻게 바꿀지 생각해왔다.

 

두가지 다른 타입의 딜레이 : simple과 compound(절충? 복합?)

 

컨트롤 스트림에서 작동하는 심플 딜레이는 미래의 시간에 각 이벤트를 예정한다.

그러나 만약 다른 이벤트가 첫번째 이벤트가 아웃풋되기 전에 인풋되어 도착한다면, 첫번째 이벤트는 두번째로 미뤄지게 될 것이다.

 

컴파운드 딜레이 : 들어가는 이벤트가 그대로 아웃풋된다. 다른 것이 중간에 들어오더라도.

 

컨트롤 스트림의 두번째 오퍼레이션은 merging.

두개의 컴트롤 스트림을 취한것으르 합해서 모든 이벤트를 새로운 한 곳에 넣는 것.

 

prune (불 필요한 부분을) 제거하다 절약하다 간결하게 하다

pruning은 관련된 데이터를 찾는 것과 특정요소들을 통한것을 놔버리는 것을 의미.

(C)에서는 이벤트(관련있는 숫자들)에서 숫자가 양수일때 통과시키는 것이다…

(D)  resynchronizing은  데이터 값을 싱크에 맞추는 것…

 

Figure 3.12에 보면 pd에서의 예시를 볼 수 있음.

 

 

3.9 Control operations in Pd

 

 

delay, pipe, moses, select

 

 

3.10  Examples

 

3.13 (a)는 웨이브 테이블을 플레이하고 있는데, 주파수를 500~1423까지 쓸고 올라간다.

웨이브테이블은 오직 46번째 파셜을 가지고 있으므로, 23000~65456에서 변한다.

 

44100의 샘플 레이트에서 두 주파수는 이론적인 소리로는 21100과 21358Hz에서 나야하는건데, 스윕하면서 다른 쪽으로 접혀가 제로로 갔다 다시 올라간다.

 

 

[env~]는 아규먼트가 작을수록 빨라진다.