MSP Tut.11 Synthesis: Frequency modulation

Tut 11 Synthesis: Frequency modulation

Elements of FM synthesis
Frequency modulation (FM)은 다양한 음색을 만드는데 유용하게 사용됩니다. 하나의 wave와 다른 wave와의 프리퀀시를 modulate함으로서, carrier, modulator frequencies이외에 다른 사이드 밴드(sideband)를 만들어 낼 수 있습니다.

이 사이드 밴드의 frequencies는 carrier와 modulator frequency의 +-정수곱의 관계의 합과 차에 의해 결정되어집니다.
(Fc, Fc+Fm, Fc-Fm, Fc+2Fm, Fc-2Fm, Fc+3Fm, Fc-3Fm, etc.)
패치를 통해서 이해해 보지요

An FM subpatch: simpleFM~
첫번째 그림에서 simpleFM~ 서브패치를 볼 수 있습니다.
위의 공식관계를 이해할 수 있는 패치입니다.
Carrier에 Harmonicity ratio를 곱하여 modulation oscillator를 만들어 준후 modulation freq를 modulator amplitude로 사용하는군요. 그래서 다시 carrier와 합성해 줍니다.

Producing different FM tones
두번째 그림을 보면, 더 이해가 빠르게 됩니다.
Harmonicity로 몇배수까지의 Harmonics를 받아 들이는가를 결정합니다. 즉, 정수로만 설정했을때와 그렇지 않을때의 소리차이를 직접 소리를 통해서 실험해 보세요((;배음의 비율. e.g.1로 설정했다면 1, 2, 3, 4.. 1.2로 설정했다면 1.2, 2.4, 3.6…),??
modulation index는 envelope을 결정해주며, 음색을 결정해 줍니다.Amplitude funtion table에서는 사운드 전체의 amplitude를 관할하지만, modulation index는 modulator의 amplitede를 결정해 줍니다.

패치상의 preset을 통하여서 이해하시면 더욱 좋겠네요.

MSP Tut.10 Synthesis : Vibrato and FM

MSP Tut.10 Synthesis : Vibrato and FM
Basic FM in MSP

Frequency modulation (FM) 은 다른 신호에 의해 modulating되어 frequency에 변화를 가져오는것을 의미합니다. 모듈레이터 프리퀀시는 캐리어 프리퀀시에 더해지게 됩니다.
그림 패치에서 보면, 1000의 캐리어에 6의 모듈레이터가 곱해지고 모듈레이터의 amplitude는 depth의 값에 의해 변화됩니다.
위의 결과는 1015, 885Hz의 프리퀀시를 만들어내며, 초당 6번 진동합니다.
우리는 6Hz의 진동이 1000Hz를 중심으로하여 진동하는것을 들을 수 있습니다.
참고로 트레몰로로 들리는것은 amplitude에 의한것이며, frequency의 이동이 아닙니다.
모듈레이터의 숫자를 1로 하게되면 초당 1번 진동, 즉 초당의 진동횟수가 변화되는것을 알수 있습니다.
Depth의 수는 캐리어를 중심으로 최고, 최저의 프리퀀시의 넓이를 결정하게 됩니다.
직접 실험을 꼭 해 보시길..^^

MSP Tut.9 Synthesis : Amplitude modulation

Synthesis: Amplitude modulation
Ring modulation and amplitude modulation
AM은 또 다른 모듈레이터를 통해서 케리어의 amp.를 변화시킨것입니다. 링 모듈레이션의 AM의 경우에는 단순하게 곱해진 것입니다.
더 일반적으로 모듈레이터는 케리어의 엠플리튜드를 변화하는데 사용되지만, 그것만으로 결정지어지는것은 아닙니다.

맨위에 그림을 보세용~
왼쪽의 링 모듈레이션의 경우 1/4 second(0.25초)의 100Hz의 코싸인(케리어)에 4Hz의 코싸인(모듈레이터)을 곱한것입니다. 두 코싸인의 amp값은 1입니다.
오른쪽에서는 4Hz의 코싸인이 0.25의 amp를 가지고 있고, 이것은 amp가 100Hz톤이 0.75를 기준으로 ±0.25씩 움직이게 합니다. (따라서 0.5와 1사이를 왔다갔다 하겠지요)
두 모듈레이션의 다른점은?
1.AM의 예에서는 0으로 가지 않고, Ring은 0을 왔다 갔다 한다.(즉 움직임의 기준점이 하나는 0.75, 하나는 0)
2. ring은 modulation period마다 2개의 amplitude dip을 가지는 반면, AM은 하나의 코싸인 경사만 있다.
입니다.

패치로 보면 더욱 쉽게 인식이 됩니다. (중간그림)
링모듈레이션은 그저 곱해주었지만, AM에서는 계속적으로 변화하는 0.75에 0.25를 곱해주는 값을 다시 곱해줍니다.
따라서 더 작은 amp의 모듈레이터에 의해 변화됩니다.

Implementing AM in MSP
맨 아래 패치를 보면, 케리어 1000에 모듈레이터 1과, 0.25의 변화되는 헤르쯔가 모듈레이터로 적용되는것을 볼 수 있습니다.
expr이라는 오브젝트는 숫자를 연산해줍니다. (1-변수$f1)즉, 들어오는 모든 수가 1에 의해 뺄셈연산이 됩니다. 이것이 DC offset으로 적용됩니다.

여기서 잠깐 DC offset이란?0으로부터 치우친 양을 이야기 합니다. 앞에서 AM의 경우는 그 양을 계속적으로 지속하지만, Ring에서는 0에 다다르기 때문에 언제나 지속되는것이 아니지요.

아무튼, 0.25가 들어오면 0.75, 0.26은 0.74…. 그리고 line적용되지요.
그리고 0.25와 빼진값이 아래에 +값으로 더해지면서 언제나 1을 생성하게 됩니다.
(line의 대한 설명은 생략하겠습니다.)그리고 최종적으로 앞의 케리어와 함께 모듈레이터되어 트레몰로 소리가 들리겠지요.

만약 3번째 박스인 Tremolp Depth에서 0.03을 넣어주면 모듈레이트는 0.97을 중심으로 1에서부터 0.94사이를 왔다갔다 하게 됩니다. 이것은 decibel을 약 반절로 줄여주는 amp변화값을 만들어줍니다.
0.5가 들어오면 1에서 0까지 변화하겠지요.이때에 사이드밴드(sideband)라는걸 들을 수 있게 됩니다. 모듈레이터에 DC offset이 있다는것(기술적으로 0Hz에서의 에너지)은 케리어톤이 출력에서 그대로 남아있게 된다는것을 의미합니다. 즉 케리어는 그대로 들리게 되는것이지요. 이것은 ring에서는 있을 수 없는 일이 될것입니다. 따라서, 큰 수를 넣어주었을경우, 케리어는 그대로 남아있는 상태의 화음을 들을 수 있습니다.