Amplifier profiler

만일 증폭기를 (음향적으로) 프로파일링 하라는 숙제가 떨어졌다고 생각하자. 이 문제를 어떻게 풀 것인가?

먼저 우리가 무엇을 할 수 있을지 생각해보자.

  1. test signal을 보내고 그 결과를 받을 수 있다.
    • test signal의 음량이나 주파수 특성은 마음대로 할 수 있다.
    • impulse (wide) 또는 sine wave (narrowest) test signal이 가장 생각하기 쉽다.
    • volume을 언제든 변화시킬 수 있다.
  2. Test signal 특성에 따라 프로파일링 할 수 있는 특성들
  3. 음량 변화
    • 어느 음량에서 찌그러짐이 일어나는지 알 수 있다.
  4. 주파수 변화
    • 전체적인 주파수 특성을 알 수 있다.

그렇다면 아마도 프로파일링을 하는 과정은 다음의 순서가 될 것이라고 본다.

  1. 찌그러짐이 있는 앰프와 찌그러짐이 없는 앰프 둘로 나눈다.
  2. 찌그러짐이 없는 앰프
    • 기타 프리앰프 회로 + 파워앰프 회로 + 스피커 + 마이크의 주파수 응답이 모두 중첩된 결과가 그 앰프의 프로파일링 결과가 된다.
    • 프로파일링된 결과는 단순히 하나의 IR로 정리된다. time series이든 frequency response이든 하나만 있으면 된다.
  3. 찌그러짐이 있는 앰프
    • 프리앰프 회로는 매 증폭단을 거치면서 조금씩 조금씩 찌그러지게 되어있다. 그러나 그것을 앰프의 스냅샷을 찍는 관점에서 보면 최종 결과만이 나타나게 되므로 그 세세한 측면은 볼 수 없지만, 마찬가지로 청자도 결과만을 듣게 되므로 앰프 내부에서 무슨 일이 일어나는지는 알 수 없다.
    • 볼륨을 조금씩 증가시키면서 전 음역대를 sine wave로 sweep하게 되면 그 출력으로부터 어느 주파수에서 찌그러짐이 일어나는지 알 수 있다. 즉, 입력으로 넣은 sine wave가 음량의 변화는 있으나 찌그러짐 없이 얻어지면 saturation이 일어나지 않은 것으로 간주할 수 있고, 출력에서 찌그러짐이 검출되면 해당 입력레벨에서 saturation이 일어나는 것으로 간주한다.
  4. 이 내용들을 종합하여 찌그러짐이 있는 앰프모델에 대한 하나의 가설을 세운다.
  5. 주파수 별로 saturator를 두는 것은 너무 복잡하고 골치아프니 다음의 모델을 생각한다.

input –> 1st EQ –> saturator –> 2nd EQ –> output

  1. EQ는 다양한 앰프의 특성을 흉내내기 위하여 N point의 FFT/IFFT pair로 놓는다. 즉, FFT –> gaining –> IFFT의 구성은 fft-based FIR filter가 된다. 계산량이 작기 때문에 미지의 filter를 모사하는데 이만한 방법이 없다.
  2. clean channel의 경우는 1st EQ와 saturator를 꺼버리면 된다.
  3. 1st EQ의 응답은 각각의 주파수 별로 찌그러짐이 얻어졌던 입력 레벨의 역수를 계산하면 된다. 이를테면 100Hz에서 -10 dBu에서 찌그러짐이 있었고 200Hz에서는 -8 dBu에서 찌그러짐이 있었다는 말은 100Hz에서 2dB의 gain을 주면 100, 200 Hz 신호 모두에서 찌그러짐이 일어나는 조건과 같아진다.

수식적인 설명을 붙이기 위해 아래와 같이 다시 쓰자.

input ($X(\omega)$) –> 1st EQ ($F_1(X(\omega))$)–> saturator ($S(F_1(X(\omega))$) –> 2nd EQ(F_2(S(F_1(X(\omega)))$) –> output ($Y(\omega)$)

결국, 입력의 크기가 작아서 찌그러짐이 없을 때에는 impulse 혹은 whitenoise 입력으로 측정된 주파수 특성과 동일한 결과를 얻어내야 한다. 따라서, 두개의 필터는 다음과 같은 결과를 얻게 해야한다.

[ F_1 \cdot F_2 = F ]

따라서, 다음과 같아져야 한다. [ F_2 = \frac{F}{F_1} ]

여기서, $F_1$은 saturation이 일어나기 시작하는 입력 레벨의 역수가 된다. 즉, 작은 음량에서 찌그러짐이 일어나는 것은 앰프에서 찌그러지기 전에 많은 게인을 주었다는 의미가 되고, 높은 음량에서 찌그러짐이 일어나는 것은 앰프에서 찌그러지기 전에 게인을 주지 않았거나 게인을 줄였기 때문이라는 의미가 되기 때문이다.

자, 이 정도면 앰프 프로파일링이라는 게 별 것 아닌 기술 아닌가? 오히려 회로 시뮬레이션에 비하면 너무나도 단순하기 그지 없다. 전체적으로 FFT를 4번 돌리면 된다. 어차피 기타 채널은 모노이기 때문에 이 이상 연산을 돌릴 이유도 없다. 즉, FFT 4번 벡터 곱셉 두번, saturating 한번만 하면 된다. 만일 전 후방에 EQ가 필요하면 이미 구해진 $F_1$과 $F_2$를 적당히 변형해주면 된다.