Rig file 분석 (3)

Featured image

Rig file 분석을 토대로 어떤 알고리즘을 사용하고 있는지 대략 가닥을 잡아가고 있다. 아마도 알고리즘을 역추적해서 그대로 만들 수 있게 되면 관련 포스팅을 삭제할 생각이다. 나는 이 글을 재미로 작성하고 있는 것인데, 너무 많은 힌트를 주게 되면 아마도 대부분은 어려움없이 똑같이 만들어낼 수 있으리라 보기 때문이다.이것을 프로파일링 작업과 관련하여 생각해보기 위해, 기존에 정리했던 프로파일링 작업을 정리해보자. 1. Sweeping signal (chirp signal)을 진폭을 올려가며 쏘아보낸다. 1. Saturation이 일어나지 않는 최대의 음량에서 impulse를 쏘아보내고 바로 뒤이어 white noise를 쏘아보낸다. 1. low frequency range의 sweeping signal을 매우 높은 음량으로 쏘아보낸다.2과정에서 전체 시스템의 frequency response를 파악하는 것을 제외하면 나머지 2 과정에서 뭘 얻어내려하는지 그림이 잘 그려지지 않는다. 일단, 다음으로 Rig file이 담고 있는 내용을 차근히 정리해보도록 하자. * Rig file은 그 자체가 미디 파일이며, 모든 내용이 sysex로 구성되어있다. * 파일 이름, 파일 저작자, 용도 등등과 관련된 text가 약 절반을 차지한다. * 앰프 프로파일과 관련된 것은 2 블럭의 2664+1 byte의 데이터로 되어있다. * Sysex를 위해서 byte당 7bit information으로 변형된 값이다. * 1 byte는 의미가 없는 값이고 (descriptor??), 3x4 byte의 값은 암호화를 위해 쓰여진 값이다. 6x4 byte의 값은 프로파일링시에 정하는 파라미터들과 연관이 있으리라 보여지는데, 크게 봐서 의미는 없다. * 256x4 byte 값이 의미 있는 값인데, 이중 첫번째 값은 아직 용도가 파악되지 않고 있고, 두번째 값은 모든 경우에 0이었다. DC 응답이지 싶다. 첫번째 블록은 cabinet (엄밀히 말해서 amp + cab + mic의 복합 특성) 특성을 가지고 있다.* 두번째 블록은 앰프의 saturation 특성을 담고 있다. Clean tone일 경우는 매우 큰 값의 상수로 전대역 고정된다.아마 개인적인 취미로 접근한 사람들은 위의 내용을 이미 모두 파악했으리라 싶다. Clean channel을 프로파일링 하겠다고 하면 사실상 프로파일링의 가운데 단계를 뺀 나머지 단계는 의미가 없어진다. rig file의 결과를 보면 두번째 블록은 전대역 큰 값으로 고정되어 나타나기 때문이다. 사실상 이 값이 앰프의 headroom으로 이해하면 될 것 같다.첫번째 블록의 내용은 frequency domain filter로 구현하면 되기 때문에 구현에 어려움은 전혀없다. DCT를 해서하든 FFT를 해서하든 말이다. 문제는 두번째 블록의 내용을 어떻게 이해하고 적용해야 하느냐하는 것이다.Kemper가 여기 저기 나와서 떠드는 얘길 들어보면, 이분이 영어가 유창하지 않아서인지 아니면 본인이 실제 제품 구현에 참여하지 않았는지 설명이 오락가락하고 구체적이지 않다는 것이다. 물론 제품의 비밀이 알려지는 셈이 되니 구체적으로 얘기해야 할 의무는 없다. 더러는 뻥을 치는 것 같기도 하다. 인터뷰 내용들을 기억나는 대로 조합해보면 * 본인이 진공관 앰프를 여럿 만들어봤는데 앰프의 특성을 내주기 위해 회로를 분석하고 시뮬레이션하기 어려웠다. 그래서 결국 앰프를 분석하는 일을 회로보단 직관적인 요소에 의지하게 되었다. 그외 여러 가지 생각 나는데 이건 마케팅을 의식한 것인지 기술이 탄로날 걸 의식해서 엉터리로 얘기한 것인지 적을 필요 없을 듯 하다. 어쨌든 위 얘기에 대부분의 힌트가 들어있다. 즉, * 난 원래 오르간을 만드는 사람인데 오르간에서도 saturation 특성은 매우 중요하다. 그래서 기타 앰프에도 관심을 갖게 되었다. * 실제로 진공관 앰프를 만들어 보고 했지만 난 회로를 분석해서 시뮬레이션하는 정도의 어려운 일은 하지 못한다는 것을 알았다. * 그래서 시스템을 통째로 들여다보고 본을 뜨는 방법을 만들어야 한다 생각했는데, 그게 여의치 않게 들어맞았다. * 내 생각은 어떤 주파수 응답을 가지고 있고, 입력 신호의 주파수에 따라 찌그러짐이 일어나는 정도를 분석하면 좋지 싶어 그렇게 했다. * 따라서, 시스템을 들여다보는 요소의 수가 줄어들게 되고 당연히 그걸 구현하는 알고리즘도 심플해졌다. 음향 시스템을 바라보는 입장에서 가장 직관적인 방법은 주파수 영역에서 신호를 관찰하는 것이다. 그래서 전체 시스템의 response도 주파수 영역에서 관찰했다. 256 point로 말이다.saturation 특성을 관찰하는 것도 직관적인 방법은 어떤 진폭에서 어떤 주파수 성분의 신호가 찌그러지는가로 보는 것이 생각보다 간단하다. 회로를 분석하고 그걸 전부 디지털 필터로 바꾸고 하는 일들은 시간이 많이 걸린다. 더러는 분석하기 힘든 회로도 있다. 다행스럽게 대부분의 진공관 회로는 생각보다 매우 간단해서 접근이 가능하긴 하다만.프로파일을 여러 개 관찰해보면, high gain 일 수록 두번째 블록의 곡선이 상대적으로 낮게 위치한다. clean tone이면 전대역 매우 높은 값이 된다. 또 중앙 (10kHz 부근)에서 갑자기 푹꺼지는 모양을 보여주는데, 이것은 앰프의 스피커에서 신호 감소가 심해져서 입력신호가 출력으로 작게 나타나기 때문으로 보여진다. 잘은 알 수 없으나, 프로파일링 하는 단계에서 saturation이 일어나고 안나고의 기준을 prediction error가 어느 수준 이상이 되는 것으로 잡지 않나 유추해본다. 즉, 선형적인 시스템 펑션으로 얻어낸 characteristic system에 똑같은 프로파일링 신호를 주고 reference system (프로파일링하려는 앰프)로부터 얻은 신호의 차가 어느 범위 이상으로 커지면, 이 지점을 해당 주파수 신호가 saturation을 일으키는 지점이라 본다는 것이다. 어차피 reference system이나 characteristic system이나 주파수가 높아질 수록 내보내는 신호의 양이 작아지고 특성이 많이 틀어질 확률이 높으니 (위상차 때문에 특히) 아래로 꺼지는 모양을 나타내다가 두 시스템 모두 응답을 내보내지 않는 지점에서는 차가 오히려 줄어들게 될 것이므로 위로 증가하는 모양을 낼 것으로 보여진다는 것이 내 추측이다.그렇다면, 이 특성을 어떻게 반영해야 되는 것일까? 이 문제가 풀리면 이 연재 포스팅은 모두 삭제할 것이다만 ㅎㅎ.참고 삼아 캐비넷이 붙지 않은 rig file 하날 더 열어보자. 아래 그림은 TS9을 프로파일링한 결과이다. 감이 오는가? 빨간색 곡선은 TS9의 전체 주파수 응답을 나타낸다. 실제로 저러하다. 원래의 곡선은 스무드해야 하는데, 실측값을 기반한 것이라 울퉁불퉁하다. 대부분의 프리앰프, 스톰프 박스들의 주파수 응답도 이 빨간 곡선과 대동소이하다. 왜 그러냐고 물으면 원래 그렇게 설계되어있다라고 할 밖에. Diode clipper를 빼면 그냥 active/passive filter의 연속인 것이 스톰박스 드라이브의 특징이다.까만 곡선의 높이가 clean tone이 10^7 이상의 위치에서 나타났던 것을 생각하면 대략 1/10 정도의 위치에 있는 것으로 보아서 10배 쉽게 saturation이 일어남을 알 수 있다. 다른 하이게인 앰프들의 특성 곡선을 봐도 대략 이 지점에서 saturation이 생겼던 것을 생각하면 큰 차이가 없다. 결국, 복잡한 회로나 장치를 다 떠나서 찌그러진 이후의 신호가 사람들이 얼마나 좋아하는 모양을 갖게 되느냐가 중요한 요소로 작용함을 알 수 있다.

image