기타 앰프 프로파일링..(2)

Nonlinear System Model비선형 시스템을 분석하는데 이미 많은 논문들이 있고 다양한 방법론이 있는데, 이것들을 따로 공부하기 보단 단순한 사실을 조합하면서 종합해가는 것이 시간을 절약하는 방법이 아닐까 한다. 여기서 전제는 시스템의 특성이 시간에 따라 (그러니까 긴 시간) 변화하는 것이 아닌, 즉 time-invariant system이다. 일반적으로 linear 시스템은 그것이 memory가 없다면 (과거의 결과가 현재에 영향을 미치는 것이 아니라면 ==> 필터가 달려있지 않다면 ==> EQ가 달려있지 않다면 ==> C나 L이 없다면), 간단히 하나의 weight로 분석이 끝난다. 입력을 얼마나 증폭하느냐만 확인하면 된다. \(y(t) = a x(t)\)즉, 여기서 $a$만 알아내면 된다.만일 memory가 들어있는 linear 시스템이라면, 시스템의 impulse response의 convolution으로 나타난다.\(y(t) = \int_0^{\infty} h(\tau) x(t-\tau) d\tau\)여기까지 학부에서 가르치는 linear system에서 나오는 내용이다.만약 시스템이 nonlinear하다고 하면 그 출력은 입력 신호 $x(t)$가 복잡하게 모양이 될 것이다. 흔히 생각할 수 있는 것은 찌그러짐에 의해서 harmonic이 생긴다는 것이다. harmonic은 원래 들어간 신호의 정수배 주파수 성분이 더해지는 경우라고 볼 수 있고, 이 말은 입력 신호가 찌그러지면서 원래 입력 신호가 그 자신과 함께 고차항의 성분들이 마구마구 늘어나는 것이라 볼 수 있다. 다른 방법으로 해석해보면 찌그러짐에 의해서 intermodulation (입력 신호 그 자신에게 modulate되고 (=>2배 주파수:2nd order harmonic), 또 그 자신과 harmonic이 서로 modulate되어 고차항 성분이 늘어나게 되는 경우)을 일으키는 결과가 발생하기에 그렇다고 본다. 더구나 그 고차항들이 그 자신의 impulse response를 갖게 된다. 그러면 출력은 다음과 같이 쓸 수 있게 된다. (여기서는 system이 causal 하다고 본다.)\(y(t) = \int_0^{\infty} h_1(\tau_1) x(t-\tau_1) d\tau_1 + \int_0^{\infty} \int_0^{\infty} h_2(\tau_1,\tau_2) x(t-\tau_1) x(t-\tau_2) d\tau_1 d\tau_2 + \int_0^{\infty} \int_0^{\infty} \int_0^{\infty} h_3(\tau_1,\tau_2,\tau_3) x(t-\tau_1) x(t-\tau_2) x(t-\tau_3) d\tau_1 d\tau_2 d\tau_3...\)고차항이 생겨난다는 말은 다시 말해 출력 신호가 입력 신호만으로는 설명이 안되는 현상이 발생했다 (찌그러짐)는 뜻이 되고, 더 많은 고차항을 고려하면 고려할 수록 nonlinear system을 보다 정교하게 묘사할 수 있게 된다. 대개 이 수식을 원저자의 이름을 붙여 Volerra series라 부른다. 기본적으로 위 조건에서 DC offset까지 고려해서 상수 하나를 더 붙여 생각하는게 일반적이다. 그런데, 이 수식을 보면 각각의 고차항이 다차원의 impulse response (여기서는 kernel이라고 부른다)로 길게 전개가 되므로, 이것을 찾아내기도 이것을 다시 재현해 내기도 몹시 복잡해질 것이라는 느낌이 딱 온다. 2차만 되도 정신없는데, 3차 4차로 가면 일단 컴퓨터로 계산하긴 매우 버거워지는 조건이라 할 수 있다. ### Guitar amplifier여기서, 시스템 모델의 수식을 간단하게 만들기 위해서 일반적인 기타 앰프 모델을 생각해보는 게 좋을 것 같다. 여러 가지 기타 앰프를 분석해봐도 그것의 구성은 대부분 아래의 범주에서 벗어나지 못한다.filter + saturator + filter + saturator …엄밀히 부품들간의 상호관계를 놓고 보면 위의 관계가 서로 얽혀져 있는 경우가 대부분인데, 그것을 전부 고려하면 프로파일링이니 시뮬레이션이니 할 수 없는 단계에 이르게 된다. 이를테면 진공관 앰프에 연결해서 크게 스트러밍을 했을 때를 가정해보면, 갑자기 큰 출력이 발생하게 되므로 순간적으로 전원 전압이 떨어지게 되는데, 그것은 프리앰프/파워앰프 전반부에 영향을 미치게 되고, 그게 또 다시 출력에 영향을 미치게 되고, 그게 피드백 회로에 영향을 주고 .. 따라서, 지금의 모델도 충분히 복잡하다고 할 수 있지만, 위의 복잡한 관계를 모두 반영하려면 단순해지면 곤란하고 더 복잡해져야 한다. 그래서 위에 언급한 모델 filter + saturator 또는 saturator + filter의 모델이 연쇄적으로 물려있는 것으로 가정하면, 앞서의 series가 보다 단순해질 수 있다는 희망으로 천천히 전개해 본다.saturator는 nonlinear system이지만 memory가 없는 것으로 보고, filter는 linear system이지만 memory가 있는 것으로 보자. 실제로는 서로 관계가 얽혀있지만, 그렇게 생각하지 말자. 첫번째 stage만 놓고 보면 다음과 같아진다. 각 스테이지에서 고민하는 harmonic의 수는 $N$으로 놓으면,\(y_1 (t) = \int_0^{\infty} h_1 (\tau_1) \sum_n^N b_n x^n (t-\tau_1) d \tau_1\)즉, 고차항이 포함된 비선형 신호가 memory를 갖고 나타난 경우가 된다.여기서 이러한 stage가 아무리 많아봐야 $M$ 개쯤 될거라고 놓고 보면, 아래와 같은 식이 서로 연쇄되어있는 결과가 나오게 된다. \(y_M (t) = \int_0^{\infty} h_M (\tau_M) \sum_n^N c_n y_{M-1}^n d (t-\tau_M) \tau_M\)이 과정은 다시 말해 매 stage에서 curve fitting과 spectral analysis를 하는 경우라고 볼 수 있다. 즉 memory가 없는 비선형성은 다차원의 polymonial로 curve fitting을 하는 것이고, 비선형 처리 이후의 filtering은 spectral analysis를 하는 것이다. 이 역시도 한정된 길이의 digital filter를 가지고 curve-fitting하는 것이라 볼 수 있으니, 결과적으로는 multi-stage curve-fitting이 되는 것이다.다행스럽게, 여기까지 오는 동안 impulse response의 차원이 좀 줄게 되었다. 그러나, 아직도 매우 복잡하므로 가정을 두어 더 줄여보도록 하자.