MSP Tut.8 Synthesis : Tremolo and ring modulation

-Multiplying signals
한 wave를 다른 wave에 곱하는것. 즉 그것의 순간적인 진폭값들을 곱하는것, 다시말하면 샘플 곱하기 셈플은 ring modulation이라고 알려진 effect를 만듭니다. 이 경우에서 mudulation은 단순히 변화를 의미합니다.

time domail에서 파형을 곱하는것은 frequency domain에서의 파형의 convolution과 같습니다. convolution을 이해하는 한가지 방법은, 한개의 스펙트럼을 다른 스펙트럼의 ㅁ든 진동수에 겹치는 것을 convolution으로 이해하는 것입니다. 서로 다른 진폭에서 서로 다른 많은 진동수를 갖는, 주어진두 개의 스펙트럼 S1,과 S2는 S2의 모든 진동수의 위치에서 특정한 진동수 S2의 진폭으로 눈금이 조절된 복사된 S1을 만듭니다. (그림 참조)
코사인 파동은 양과 음의 진동수에서 동일한 진폭을 가지므로, 그것의 스펙트럼은 f와 -f에서 동일하게 나누어진 에너지를 갖게 됩ㄴ디ㅏ. 다른 코사인 파동으로 convolved될 때 한대의 wave의 양과 음의 진동수 성분의 복사본은 다른 wave의 양과 음의 진동수 성분을 중심으로 그 주변에 위치하게 됩니다(S2의 각 성분을 중심으로 한 스펙트럼 S1은 S1*S2가 됩니다.)
따라서 각 시그널이 코사인 wave인 이러한 간단한 경우에 오직 하나의 진동수(양과 음)를 갖는 에너지로 구성된 각각의 스펙트럼의 경우, 결과적으로 나타나는 스펙트럼은 두 wave의 진동수 차이의 합으로 구성되게 됩니다.

페치에서 두개의 사인 곡선을 곱하게 됩니다. 어떤 시그널이든 ring modulation을 만들 수 있고, 실제로 그것으 ㅣ가장 재미있는 효과는 complex tone을 만드는 것입니다.

-Tremolo
그림의 패치 예에서는 carrier의 프리퀌시는 1000Hz이고, 모듈레이터는 0.1의 frequency를 가지며, amp의 값은 1을 넘지 않기 위하여 0.5로 지정되어있습니다.여기서 0.1Hz의 코사인이 0으로 될때마다 1000Hz의 진폭이 잠깐씩 0으로 되는것(dip)을 듣게 됩니다.(cycle당 2번, 즉 5초마다 한번)

진폭은 두 wave의 곱과 같습니다. Carrier의 최대 진폭은 1이므로, 전체적인 진폭은 modulator의 진폭과 같아집니다.

Amplitude의 숫자박스에서 modulator rate을 변경 할 수 있습니다.

modulator의 rate를 1로 설정하면, 진폭이 0으로 되는것을 초당 2번 듣게 됩니다. 이런 주기적인 진동을 트레몰로라 합니다. 트레몰로의 인지가능한 속도는 modulator rate의 2배가 됩니다. 그것은 진폭이 한 싸이클 당 두버닉 0으로 되기 때문입니다.
즉 실제고 1001Hz와 999Hz의 두 진동수를 듣고있으며, 그 두 진동수 사이의 간섭때문에 2Hz의 맥놀이를 들을 수 있습니다.

rate가 높아질수록 트레몰로의 rate는 audio rate에 근접하게 되어 우리는 그것을 진동으로 들을수 없고, 한개의 tone으로 들리지 않습니다.

-Side band
modulator rate를 50Hz로 했을경우, 1050, 950Hz의 피치간격은 장2도정도로 크게 되며, 100Hz의 톤(두 Hz의 차이)으로 트레몰로 rate을 들을 수 있습니다.
이렇게 carrier진동수의 한쪽에 생기는 이러한 부가적인 진동수들을 side band라고 합니다.
modulator rate가 200Hz인 경우 tramolo rate는 400Hz가 되고, 진동수의 합과 차는 800Hz와 1200Hz가 됩니다. 이런 경우 sidebands의 밀착으로 함께 섞여 하나의 complex tone을 만들게 됩니다.

MSP Tut.7 Synthesis : Addictive synthesis

[오브젝트]
==============================================
* function table :직접 envelope와 같은 그래프를 점으로 그려 넣을 수 있으며, 소수의 x,y좌표를 저장한다.
-inlet : bang, list값 이외의 여러 명령어가 들어갈 수 있다.
[clear:모든값을 지움, domain:x의 최대값을 바꾸어줌. setdomain:domain과 같으나, table눈금의 크기가 변화하지 않음, range:y좌표의 최대, 최소값 변경, setrange : 역시 범위변경이지만, 보여지는것은 변함없다., dump:모든 점들의 값을 max window로 보여준다. clickadd($1):클릭을 사용한 점들의 변경을 허용하거나 금지한다. clickmove($1):클릭을 사용한 점들의 드래그 이동을 허용하거나 금지. fix:mouse로 한 점의 이동을 금지하거나 허용한다.]

-outlet : left:삽입된 y값
          second : 라인 포멧 출력
          third : dump output
          right : 마우스 액션이 변화할때 뱅을 보냄
-clicking : shift+mouse : delete
          cmd+mouse : toggle sustain point

*preset : 모브젝트 들의 세팅을 저장하는 박스.
          구멍의 수는 box를 늘렸다 줄였다 하면 바뀌고 shift+clicj은 세팅된 오브젝트를 저장해준다.
-inlet : 숫자:몇번째 박스에 세팅할것인가를 결정
        store:저장
        clearall:모든 저장을 지움
        clear number: 몇번째 저장을 지운다.
        write : 어떤 파일로부터 모든 프리셋을 불러오며, 뒤에 숫자가 오면 어떤 프리셋의 한 세팅을 가지고 온다.
-outlet : left : 각각 순서대로 출력
        second : 리스트로 출력
        middle : 몇번째 프리셋인지를 출력
        right : 저장기능 사용하지 않음. 제외.
=================================================
[투토리얼]
=================================================
Combining Tones
싸인은 한개의 진동수에 해당하는 에너지를 가집니다. Complex tone은 여러 다른 진동수에 해당하는 에너지를 갖기 때문에, complex tone을 합성하는 한가지 명확한 방법으로 sine wave oscillator를 사용하고, 서로 합성하는 것입니다. 메뉴얼 그림에 나와있지요.

서브패치 partial~에서는 각각 partial의 진동수를 ㅣ본 진동수에 대한 상대적인 비율로 지정해 줍니다. 예를들어서 만일 진동수의 두배가 되는 partial을 원한다면, 두번째 인렛으로 2를 보내어 곱해줍니다. 왼쪽에서 동일한 소스로 부터 진동수를 받고 있다면, 상대적인 진동수는 기본 진동수 값이 변할때도 동일하게 머물게 됩니다.

Envelope generator : function
function table에 대하여는 위에 자세히 설명하였으므로 넘어가기로 합니다.
line~ 오브젝트에 숫자로 된 리스트를 보냄으로 이전에 envelope를 조정해 주었지만, function 을 이용하여 더 구체적이고 편안한 방법으로 envelope을 만들 수 있습니다.

기타 preset에 관한 내용이 있습니다. 오브젝트의 설명은 위에 했으므로 넘어가겠습니다. 각각 preset에서 저장된 소리는, 단지 6개의 partial로도 악기와 가튼 소리를 만들어 낼 수 있다는것을 보여줍니다.

MSP Tut.5 Fundamentals : Turning signals on and off

* 소리를 on / off하는 방법에는 두가지가 있다
1) dac~, adc~, ezdac~, ezadc~오브젝트로 srart, stop메세지(또는 0과 0이 아닌 수)를 준다.
2) ezdac~, ezadc~버튼을 직접 클릭한다.
[참고) dac~adc~를 더블클릭하면, audio on/off메뉴가 나오는데 그것을 사용해도 좋다]

-selector~ : gate와 유사하다. gate에서는 아웃렛의 수를 결정하고 어떤 문을 열어줄것인가를 결정했지만, selector는 인렛의 수를 결정하고 어떤 인렛을 열어줄것인지 가장 왼쪽의 inlet으로 부터 결정된다.

-begin~ : 오브젝트 이름만으로는 잘 알수가 없으나, 메뉴얼 53페이지에 있는 패치를 참고해서 보자면, begin은 하위에 object에 어떤것이 있느냐에 따라서 기능이 달라진다.
begin은 계속해서 signal 0을 보낸다. 즉, MSP의 특성인 계속해서 signal을 보내는것을 ‘차단’하는 역할을 한다. p53의 패치를 연 상황에서는 아무런 작동도 하지 않게된다. 하지만 왼쪽 상단의 메뉴에서 다른 신호가 selector로 보내졌을때, begin하부에 있는 패치가 작동하게 된다. 여러가지로 편하게 응용될 수 있는 object라 생각되어진다.

-mute~ : p55 상단의 그림을 보면, patcher위에 mute~가 달려있는것을 볼 수있다. 이것은, mute상단에 있는 토글이 0이 아닌수(즉 클릭하여 X가 된 상태일때)가 들어왔을때에 모든 오디오 ㅓ리를 스톱시킨다. mute~에 0을 보내면 unmute한다.

-pcontrol : p56에 있는 패치를 보면, enable $1에 토글로 인하여 0의 숫자가 들어올 경우, pcontrol하단의 패치의 모든 msp, 또는 MIDI오브젝트를 마비시킨다. 1이 들어올 경우에는 다시 re enable 하게 된다.