본문 바로가기

매뉴얼의 세계/Sytrus : 내가 쓰는 매뉴얼

[SYTRUS] #06. Main Module / 메인 모듈 (5) : Quality Settings & OverSampling

728x90

Quality Settings

 EQ 바로 옆에는 전반적인 퀄리티와 기타 설정값들이 있다.

 

<Quality>

 Quality는 작업 중 실시간으로 적용할 Draft(real-time), 곡을 렌더링 할 때 적용할 Render로 나누어진다.

 

> HQ Envelopes

  - 플러그인에서 사용될 ENV들이 더 정확하게 적용된다. 실제로는 아주 미세한 차이이기에, 사진처럼 렌더링 때만 적용되게 설정해주어도 무관하다.

 

> Oversampling

  - 오버 샘플링을 허용하여, 보다 정확한 소리를 얻어내는 것을 허용하는 항목이다. , 실시간으로 많은 오버 샘플링을 허용할 경우 CPU 소모량이 높아질 수 있으며, 권장 사항은 렌더 시에만 적당히 높은 수준을 유지하는 것이다.

 

 사실 이 부분은 어려운 내용임에 비해 크게 중요하지 않다. 그냥, 오버 샘플링이 높은 수준으로 허용되면 보다 해상도 높은 소리를 구할 수 있다는 정도만 알아두자. 어느 날, 여러분이 귀로 듣던 소리와 실제 렌더링한 소리가 다르다면 그 때 아래 내용들을 참고하자.

Oversampling = 0 (좌) /  Oversampling = 64x (우)


Oversampling

 사실 이 부분은 전공자가 아니라면 정확한 내용을 이해하기도 힘들 것이다. (본인이 물리랑 손절친 지 꽤 오랜 세월이 되어가기에 잘 안다.) 그냥 재미로 이런 부분도 있구나~ 정도로만 알아두시면 좋을 것 같다.

 

* Nyquist – Shannon Sampling Theorem (표본화 정리)

 사전적인 정의는 다음과 같다 :

 본래의 신호 x_c (t) 일정 주기마다 반복적으로 n샘플링하여 만든 연속적인 신호를 x[n]이라 할 때, 특정 조건에서는 x[n]으로부터 본래의 신호 x_c (t) 손실 없이 복원할 수 있다.

 

 이와 같은 방식의 정의가 영 어색하다면 그뭔씹소리가 절로 나올 법 하다. 어쨌거나 음악과 관련된 내용들이니, 음악 쪽으로 간단히 이해해보자.

 위의 OSC아주 작은 단위의 샘플(Wavetable, 여기서는 SAW)을 연속적으로 붙여 완성된 소리를 만들어낸다(이를 샘플링이라 한다). 이해의 편의를 위해, 저 SAW 파형이 100번 반복되어서 소리가 만들어졌다고 해보자 실제로는 턱없이 부족한 횟수이지만, 그냥 그렇다 하자.

 만약 여건이 된다면, 우리는 완성된 소리를 분석해서, 아 원래 SAW 파형을 사용했구나!”라고 알 수 있다.

 

 게다가 직관적으로, 만약 마음씨 고약한 누군가가 60~70번째로 반복된  SAW 파형을 몰래 잘라내고 아무 일 없었다는 듯이 남은 파형들을 붙였다고 하더라도, 우리는 정말 아무 일 없었다는 듯이원래 SAW 파형을 사용했구나!” 라고 알 수 있다(이 과정을 표본화라고 한다). 어차피 나머지 부분이 똑같다면, 한 두개 없더라도 원래 모습을 추측하는데 큰 문제가 되지 않는다.

 이 이론을 통해, 우리는 어떤 조건에 따라 완성된 소리로부터 원래의 웨이브 테이블을 찾아낼 수도 있지만, 반대로 웨이브 테이블을 어떤 조건에 따라 샘플링하면 원래의 정보를 잃지 않고 예측 가능한 파형을 만들 수 있다는 점을 알 수 있다.

 

 그리고 여기서 그 어떤 조건“Band limited signal (대역제한 신호)”이고, 초당 샘플링 된 횟수가 가장 높은 주파수의 2배 이상일 때이다.

 

 대역 제한 신호, 신호가 0부터 어떤 마지노선 이내에서만 존재할 수 있도록 조정된 신호이다. (혹시나 하지만, 여기서 신호는 소리랑 같다.)

 이는 당연한 것이, 만약 대역폭이 헤드룸(headroom)을 초과할 경우, 그 신호는 클립핑(Clipping)이 일어나 왜곡될 것이기 때문이다. 그니까, 신호가 찌그러져서 원래의 신호랑 모습이 달라진다는 뜻이다.

 초당 샘플링 된 횟수”는 말 그대로 웨이브테이블이 초 당 몇 번 샘플링되어 반복되는지를 의미하고 (따라서 단위는 회/= hz이다),결과로 만들어진 소리의 가장 높은 주파수Nyquist Frequency라고 한다.

 여기서, 위의 어떤 조건을 만족하는 최소 초당 샘플링 횟수는 2 * Nyquist Frequency이며, 이를 Nyquist Rate라고 한다.

 , 어떤 소리의 최고 주파수가 8,000Hz일 때, 이 소리의 최소 단위를 손실 없이 뽑아내고 싶다면, 적어도 그 웨이브 테이블이 초당 1.6만회 이상 반복되어야 한다는 뜻이다.

 

* Under SamplingAliasing (언더샘플링과 에일리어싱/위신호)

 

 Under sampling은 말 그대로 샘플링을 한다는 뜻으로, 앞에서 계속 나온 Nyquist Rate보다 느리게 샘플링 된 현상을 말한다. 이는 OSC의 샘플링 속도가 제한되어 본래 우리가 원했던 속도로 샘플링하지 못하여 발생하는데, 그 결과 “Aliasing(에일리어싱)” 현상이 발생한다.

 , 우리가 원하는 결과물은 초당 1만회 반복되는 것이었으나, OSC의 한계로 인해 실제로는 9,900회만 반복된 것이다.

 에일리어싱이 일어난 결과는 다음 사진과 같다.

 사진을 보면, 최대 피크가 계속 변화함을 알 수 있다. 우리가 사용한 것은 분명 같은 SAW 이었는데도 말이다.

 지금이야 하나의 노트만 연주하고 있을 뿐이지만, 만약 훨씬 많은 노트가 연주되고 다양한 이펙트가 입혀진다면 이러한 일그러짐은 스노우 볼 처럼 굴러갈 수 있다. 그 결과가 아래 사진과 같다. (위의 사진과 동일한 소리이다)

 

 무슨 원리인지까지는 정확하게 모르더라도, 왼쪽 보다는 오른쪽이 훨씬 군더더기 없이 깔끔하고 높은 해상도를 가진 것 같지 않은가? 이는 왼쪽의 경우에는 에일리어싱으로 인해 노이즈가 발생하였지만, 오른쪽 경우에는 에일리어싱을 최대한 줄였기 때문이며, 그 결과 훨씬 뚜렷한 소리를 얻어냈다.

 

 , 에일리어싱을 줄이면 보다 예측 가능하고(어디까지나 이론적으로지만)  깔끔한 소리를 얻을 수 있다는 결론에 도달하였다. 에일리어싱을 줄이기 위한 여러 방법이 고안되었으나, 그것까지 다루는 것은 너무 주제를 벗어나는 것 같아 생략하였다.

 

* Oversampling (나도 글 쓰다가 본래 글의 취지를 잊어버릴 뻔했다)

 

 위의 내용을 요약해보자.

결국 샘플링 주기가 짧아져서 1초 당 샘플링되는 횟수가 많아지면 원래의 신호를 구하기 쉽다는 거 아니에요?”

 그러하다! 그렇다면, 당연히 사용자 입장에서는 일단 샘플링 횟수가 많아질 수록 훨씬 깔끔하고 예측 가능한 소리를 얻을 수 있을 것이다.

 

 그러나 CPU도 그런 생각을 할까? CPU도 자신의 수명이 달린 일인데, 무턱대고 항상 최고 성능으로 손실 없이 샘플링할 수는 없는 노릇이다. 그러한 이유로, 일부 플러그인들은 샘플링 속도를 평시에는 제한해놓았다가 렌더링 때에만 이 제한을 풀어놓는다.

 

 Sytrus 역시 엄청 무거운 플러그인으로(애초에 OSC6개다;;), 평소에는 샘플링 속도를 제한해야 할 필요가 있다. 그렇더라도 사용자가 원하면 적당 수준에서는 이 속도 제한을 풀어줄 필요가 있기에, [Main] 모듈의 [Quality] 패널에서 실시간 오버샘플링 속도를 조절할 수 있게 해 둔 것이다.

 Sytrus에서는 2x, 4x, 8x, 16x, 64x를 지원한다. 하지만 Serum에서도 4x 까지만 지원하는데 문제 없는 걸 보면, CPU를 사랑하는 마음으로 낮은 배수를 취해주어도 나쁘지 않을 것 같다

 

728x90
반응형