SIGNAL PROCESSING SPECIFICATION
ANALOG SOUL DSP ENGINE
여덟 개 처리 단의 필터 특성, 전달 함수, 배음 생성 구조와 대역 확장 알고리즘의 판정 기준 및 합성 규칙을 기술한다.
모든 수치는 실제 설정값이며 근사치가 아니다. 파라미터 표기에서 대문자는 정규화된 값(0~1)을 뜻하고, 단위가 붙은 값은 원값이다.
독자는 필터의 종류와 차수, 압축기의 시정수, 배음 구조에 관한 기본 지식을 갖췄다고 가정한다. 개념 수준의 설명은 기술 설명서를 참조하라.
01신호 체인
직렬 8단 구성이다. 앞 단의 출력이 뒤 단의 입력이 되므로 배치 순서가 최종 음색을 결정한다. 마스터링 단은 배치와 무관하게 항상 최종단이다.
배치 순서의 근거
| 단 | 성격 | 배치 근거 |
|---|---|---|
| COMP | 다이내믹스 | 레벨 변동을 먼저 줄여야 뒤따르는 비선형 단의 동작점이 일정해진다. 포화량이 구간마다 달라지는 것을 막는다. |
| BBE | 위상 보정 | 군지연 보정은 원음의 위상 관계가 보존된 상태에서 유효하다. 포화로 배음이 추가된 뒤에는 보정 대상이 모호해진다. |
| TUBE | 비선형 | 기본 배음 구조를 먼저 형성한다. |
| EXCITER | 비선형 · 고역 | TUBE가 만든 배음까지 재료로 삼아 고역을 확장한다. |
| SG | 대역별 비선형 | 앞 단들이 만든 결과를 대역별로 균형 조정한다. |
| VINYL | 열화 · 부가 잡음 | 음색 형성이 끝난 뒤 질감을 덮어야 잡음이 뒤쪽 비선형 단에서 증폭되지 않는다. |
| ATMOS | 공간 | 잔향은 완성된 직접음에 부가해야 한다. 잔향을 먼저 걸면 뒤 단의 압축이 잔향 성분에 반응한다. |
| MASTER | 대역 압축 · 리미팅 | 최종 레벨과 피크 제어. 이후 처리가 있으면 천장이 무의미해진다. |
순서 변경의 음향적 결과
- TUBE를 COMP 앞으로. 포화가 먼저 피크를 둥글게 만들어 압축기에 들어가는 크레스트 팩터가 낮아진다. 같은 스레숄드에서 리덕션이 줄고 결과적으로 더 단단한 어택이 남는다.
- VINYL을 선두로. 부가 잡음이 이후 모든 비선형 단을 통과한다. 핑크 노이즈가 포화 단에서 배음을 만들어 잡음 스펙트럼이 고역으로 확장된다.
- ATMOS를 MASTER 직전이 아닌 앞쪽으로. 잔향 성분이 대역 압축의 검출 신호에 포함되어, 잔향 꼬리에서 게인이 되돌아오는 펌핑이 생긴다.
게인 스테이징
각 단 진입 직전에 ±24 dB 범위의 입력 게인이 있다. 해당 단이 비활성이면 게인도 개입하지 않으므로 토글 상태가 레벨에 영향을 주지 않는다.
입력 게인의 의미는 단의 성격에 따라 다르다.
| 단 | 입력 게인의 효과 |
|---|---|
| TUBE · EXCITER · SG | 비선형 소자의 동작점 이동. 포화 깊이와 배음 차수 분포가 바뀐다. 사실상 드라이브 제어와 등가. |
| COMP | 스레숄드 상대 이동. +3 dB 입력은 스레숄드 −3 dB와 동일한 리덕션을 낳는다. |
| BBE · VINYL · ATMOS | 선형 처리가 지배적이므로 레벨만 변한다. |
| MASTER | 대역 압축기 4개의 스레숄드가 고정값이므로, 입력 게인이 전체 리덕션 깊이를 결정한다. |
02처리 단 사양
블록도에서 세로 분기는 병렬 경로를 뜻한다.
필터 표기는 종류(주파수, Q, 게인) 형식이다.
COMPRESSOR
소프트니 피드포워드| 파라미터 | 범위 | 기본 |
|---|---|---|
| 스레숄드 | −60 ~ 0 dB | −18 dB |
| 레시오 | 1:1 ~ 20:1 | 4:1 |
| 어택 | 0.1 ~ 200 ms | 10 ms |
| 릴리즈 | 10 ~ 3000 ms | 250 ms |
| 니 | 0 ~ 40 dB | 10 dB |
| 메이크업 | 0 ~ +24 dB | +4 dB |
니가 10 dB이면 스레숄드 ±5 dB 구간에서 레시오가 1:1에서 설정값으로 점진 변화한다. 저역이 많은 소스에서 니를 좁히면 킥 타격마다 리덕션이 계단식으로 걸려 펌핑이 두드러진다.
게인 리덕션 표시는 리덕션 dB에 4를 곱한 백분율이다. 표시가 가득 찬 상태는 약 25 dB 리덕션에 해당한다. 정상 운용에서는 3~6 dB 구간에서 움직이는 것이 적절하다.
BBE SONIC MAXIMIZER
군지연 보정 + 셸빙저역을 올패스 2단으로 지연시킨 경로와 직통 경로를 합산한다. 올패스는 진폭 응답이 평탄하고 위상만 회전시키므로, 합산 시점에서 비로소 진폭 변화가 나타난다. 스피커의 저역 군지연을 상쇄하려는 원리다.
| 요소 | 사양 |
|---|---|
| 올패스 1단 | f = 80 + LO×200 Hz, Q = 0.3 + LO×0.8 |
| 올패스 2단 | f = 40 + LO×100 Hz, Q = 0.5 + LO×0.5 |
| 지연 경로 레벨 | LO × 0.6 |
| 합산 정규화 | 1 / (1 + LO×0.6) |
| 프레즌스 | 피킹 3.2 kHz, Q 0.6, 최대 +9 dB |
| 하이 데프 | 하이셸프 8 kHz, 최대 +10 dB |
지연 경로 레벨이 LO×0.6이므로 두 경로 합의 최대 진폭은
1 + LO×0.6이 된다. 합산 게인을 그 역수로 두면 LO CONTOUR를
올려도 전체 레벨이 변하지 않는다. 이 파라미터는 순수하게 군지연 특성만
바꾸도록 설계되었다.
프레즌스의 3.2 kHz는 자음 명료도와 악기의 어택이 집중되는 대역이다. Q 0.6은 약 2옥타브 폭이라 광대역으로 걸린다. 보컬 소스에서 +6 dB를 넘기면 치찰음이 동반 상승한다.
VACUUM TUBE
비대칭 포화 + 저역 우회저역을 포화 경로에서 분리하는 병렬 구조다. 저역까지 포화시키면 인터모듈레이션 산물이 중역에 집중되어 명료도가 떨어지므로, 120 Hz 부근 이하를 따로 빼내 직통시킨다.
| 요소 | 사양 | 목적 |
|---|---|---|
| 저역 분리 LPF | f = 120 + D×80 Hz, Q 0.5 | 우회 경로 확보 |
| 포화 전 HPF | f = 100 + D×80 Hz, Q 0.5 | 저역 인터모듈레이션 억제 |
| 포화 후 로우셸프 | 6 kHz, −(1 + D×4) dB | 과잉 중고역 배음 억제 |
| 포화 후 하이셸프 | 9 kHz, −(2 + D×6) dB | 고차 배음 억제 |
| 저역 보상 | 피킹 100 Hz, Q 0.8, +(1.5 + D×3) dB | HPF로 잃은 저역 회복 |
| 웨트 레벨 | 0.3 + MIX×0.7 | MIX 0에서도 30% 유지 |
전달 함수
삼극관의 비대칭 전달 특성을 근사한다. 음의 반주기에 1.15배 드라이브를 적용해 비대칭을 만든다. 대칭 포화는 홀수 배음만 생성하지만, 비대칭이면 짝수 배음이 나타난다. 2차 배음은 옥타브 관계라 협화음으로 들려 따뜻함으로 인지된다.
tanh(d)로 나누는 정규화가 없으면 드라이브를 올릴수록 출력이 줄어
A/B 비교가 왜곡된다.
| BIAS | 2차 | 3차 | 성격 |
|---|---|---|---|
| 0 | −30.7 dB | −22.8 dB | 짝수 배음이 뚜렷 |
| 50 | −39.9 dB | −23.1 dB | 3차가 17 dB 우세 |
| 100 | −26.3 dB | −23.9 dB | 짝·홀이 비슷 |
실측값이다(입력 진폭 0.7, DRIVE 30). 짝수 배음의 실질적 제어자는 BIAS이며, 비대칭 계수 1.15는 BIAS 중앙에서도 짝수가 완전히 사라지지 않게 하는 보조다. 따뜻함을 원한다면 DRIVE보다 BIAS를 중앙에서 밀어내는 편이 직접적이다. 여기서 생기는 직류는 포화 직후 12 Hz 고역 통과가 차단한다.
앨리어싱 억제
포화는 4배 오버샘플링으로 처리하고, 그 앞에 sr/3 차단의
대역 제한 필터를 둔다. 두 조치의 근거는 이렇다.
입력 상한이 나이퀴스트인 한 시작 차수는 샘플레이트와 무관하게 항상 7차다.
sr/3으로 묶으면 10.5차로 밀려나며, 이 관계 역시 샘플레이트에
의존하지 않는다. tanh 포화에서 7차와 11차의 레벨 차는 약 9 dB이므로
잔류 앨리어싱이 그만큼 낮아진다.
차단점은 48 kHz에서 16 kHz, 96 kHz에서 32 kHz, 192 kHz에서 64 kHz가 된다. TUBE는 포화 후 6 kHz와 9 kHz 셸빙으로 고역을 이미 크게 깎으므로 음색 변화가 거의 없다. EXCITER와 SOUNDGOODIZER 고역 밴드는 대역이 사라지지 않도록 차단점에 하한(각 대역 하단의 1.4배)을 둔다.
EXCITER
병렬 고역 배음 생성고정 계수 3이 기본 드라이브를 결정하고, 사용자 파라미터는 그 위에 최대 5%만 더한다. 따라서 DRIVE의 영향은 제한적이고 실효 효과량은 MIX가 지배한다. MIX 최대에서도 웨트 레벨은 0.5이므로 원음 대비 −6 dB로 합산된다.
BPF 중심을 하이패스 차단점의 1.5배에 두어 원음 대역과의 중첩을 줄인다. 다만 Q 0.6은 광대역이라 차단 특성이 완만하다.
둘 다 고역을 만들지만 원리가 다르다. EXCITER는 통과 대역 내부 신호를 비선형 왜곡시켜 그 배음을 더하는 것이고, 대역 확장은 스펙트럼 영역에서 누락된 대역을 식별해 전사하는 것이다. EXCITER는 원본에 고역이 남아 있어야 작동하지만, 대역 확장은 고역이 완전히 잘린 소스에서도 작동한다.
SOUNDGOODIZER
3대역 병렬 포화| 프리셋 | 성격 | 분할점 | 대역 Q | 드라이브 |
|---|---|---|---|---|
| A | Warm & Punchy | 250 Hz / 4 kHz | 0.7 / 0.8 | 0.40 |
| B | Bright & Airy | 180 Hz / 6 kHz | 0.6 / 1.0 | 0.55 |
| C | Full & Rich | 300 Hz / 3.5 kHz | 0.8 / 0.7 | 0.50 |
| D | Crispy & Detailed | 200 Hz / 8 kHz | 0.6 / 1.2 | 0.60 |
포화 전달 함수
소프트클립과 3차 다항식을 블렌딩하고, 여기에 동작점 이동을 더한다.
두 함수 모두 기함수라 블렌딩만으로는 홀수 배음만 나온다.
짝수 배음은 b = 0.08 × SAT의 바이어스가 만든다.
| SAT | 2차 | 3차 | 4차 |
|---|---|---|---|
| 0.2 | −38.0 dB | −17.2 dB | −44.7 dB |
| 0.6 | −28.9 dB | −17.8 dB | −35.3 dB |
| 1.0 | −26.7 dB | −20.4 dB | −33.6 dB |
실측값이다(8192점 DFT, 입력 진폭 0.7, DRIVE 0.4). SAT를 올리면 짝수 배음이 따라 올라와 두께가 생긴다. 바이어스가 만드는 직류는 저역 밴드 포화 직후의 12 Hz 고역 통과가 제거한다.
| 후단 | 사양 |
|---|---|
| 다이내믹 EQ | 피킹 2.5 kHz, Q 0.7, +AMOUNT×3 dB |
| 출력 압축 | 스레숄드 −10 − AMOUNT×8 dB, 레시오 2:1 |
| 어택 3 ms, 릴리즈 80 + STEREO×220 ms, 니 6 dB |
대역 분할
Linkwitz-Riley 4차 상보 분할이다. 버터워스 2차(Q 0.707)를 2단으로 쌓아 분할점에서 −6 dB로 만나게 한다. 세 대역의 진폭 합이 전 대역에서 1이 된다.
예전에는 LPF + BPF + HPF 병렬이라 합산 응답이 평탄하지 않았다. 프리셋 A 기준으로 합이 0.91에서 1.57까지 흔들렸고, 2 kHz 부근이 약 +4 dB 부풀어 있었다. 지금은 전 대역에서 1.000이다.
출력 압축기 뒤에서 M/S 폭을 조절한다. 0이면 모노, 50에서 원본, 100이면 사이드 성분이 2배가 된다. 압축기 릴리즈는 200 ms로 고정되어 폭 조절과 분리되어 있다.
VINYL RECORD
고역 감쇠 + 부가 잡음| 요소 | 사양 |
|---|---|
| 대역 제한 | LPF 20 kHz → 12 kHz (WEAR 0 → 1) |
| 고역 감쇠 | 하이셸프 8 kHz, 0 ~ −4 dB |
| 잡음 레벨 | CRACKLE × 0.03 (최대 −30.5 dB) |
| 잡음 스펙트럼 | 핑크 (−3 dB/oct) |
잡음은 Voss-McCartney 방식의 핑크 노이즈 근사다. 서로 다른 시정수를 가진 6개의 1차 저역 통과 성분을 백색 잡음에 걸어 합산해 −3 dB/oct 기울기를 만든다. 백색 잡음을 그대로 쓰면 고역이 과도해 먼지·흠집 잡음의 스펙트럼과 맞지 않는다.
WEAR는 LPF 차단점과 셸빙 감쇠를 동시에 움직인다. 차단점 이동은 12 kHz까지이므로 가청 대역 상단에 직접 작용한다.
피치 변조 (WOBBLE)
중심 지연 6 ms의 가변 지연을 두 개의 정현파로 변조한다. 와우는 33⅓ rpm의 회전 주기인 0.556 Hz, 플러터는 4.2 Hz다.
실측 LP 플레이어의 와우·플러터는 대체로 ±0.1 ~ ±0.3% 범위이므로 최대 설정이 상태가 나쁜 기기에 해당한다.
채널 누화 (CROSSTALK)
| CROSSTALK | 누설량 | 비고 |
|---|---|---|
| 0 | 완전 분리 | 디지털 소스 |
| 25 | −21.2 dB | 양호한 카트리지 |
| 50 | −15.1 dB | 일반적 수준 |
| 100 | −9.1 dB | 분리도가 나쁜 상태 |
합산 보정으로 누화를 올려도 전체 레벨이 커지지 않는다. 누화가 증가하면 사이드 성분이 상쇄되어 스테레오 폭이 좁아진다.
DOLBY ATMOS
합성 임펄스 응답 + 선행음4갈래 병렬 구조다. 직접음, 초기 반사, 후기 잔향, 선행음 경로가 각각 레벨을 거쳐 합산된다. 2채널 내에서의 공간 시뮬레이션이며 객체 기반 다채널 규격과는 무관하다.
임펄스 응답 구성
| 씬 | 기준 RT60 | SPACE 0 ~ 1 실효 | 초기 반사 대표값 |
|---|---|---|---|
| STUDIO | 0.4 s | 0.16 ~ 0.48 s | 8 ms |
| CLUB | 0.9 s | 0.36 ~ 1.08 s | 15 ms |
| CINEMA | 1.8 s | 0.72 ~ 2.16 s | 22 ms |
| CONCERT | 2.4 s | 0.96 ~ 2.88 s | 35 ms |
| STADIUM | 3.2 s | 1.28 ~ 3.84 s | 55 ms |
| 성분 | 지연 | 레벨 |
|---|---|---|
| 직접음 | 0 ms | 1.00 |
| 초기 반사 10개 | 7, 13, 17, 23, 31, 41, 53, 67, 79, 97 ms | 0.85 → 0.24 |
| 좌우 편차 | — | L 1.1−0.01i, R 0.9+0.01i |
| 천장 반사 | 6 + HEIGHT×12 ms | HEIGHT × 0.55 |
| 후방 반사 | 40 + DEPTH×60 ms | DEPTH × 0.45 |
초기 반사 지연값이 모두 소수인 것은 의도된 설계다. 지연값 사이에 정수배 관계가 있으면 특정 주파수에서 반사음이 동상으로 합산되어 콤 필터링이 발생한다. 소수로 구성하면 그 공진이 분산된다.
천장 반사 지연 6~18 ms는 2~6 m 높이의 천장에서 오는 1차 반사에 해당한다. 후방 반사 40~100 ms는 7~34 m 거리의 뒷벽에 대응하며, 50 ms를 넘어서면 선행음 융합 한계를 벗어나 별개의 반향으로 인지되기 시작한다.
우측 채널만 1~5 ms 지연시킨다. 이 범위는 선행음 효과가 작동하는 구간이라
에코가 아닌 정위 이동으로 인지된다. 다만 모노 합산 시 이 지연이
1/(2τ) 간격의 콤 필터를 만든다. τ = 3 ms이면 약 167 Hz 간격으로
딥이 생긴다. OBJECT MIX를 올린 상태에서는 모노 호환성 확인이 필요하다.
MASTERING CHAIN
4대역 압축 + 리미팅Linkwitz-Riley 4차 특성으로 4대역 분할한다. 버터워스 2차(Q = 0.707)를 직렬 2단으로 구성해 −24 dB/oct 기울기를 얻고, 분할점에서 −6 dB로 만나 합산 시 평탄한 응답이 된다.
| 대역 | 범위 | 스레숄드 | 레시오 | 어택 | 릴리즈 | 니 |
|---|---|---|---|---|---|---|
| 1 | ~120 Hz | −24 dB | min(LOW, 4) | 30 ms | 80 ms | 10 |
| 2 | 120~500 | −22 dB | LOW | 15 ms | 120 ms | 8 |
| 3 | 500~5k | −20 dB | MID | 5 ms | 180 ms | 6 |
| 4 | 5k~ | −22 dB | min(HIGH, 3) | 2 ms | 150 ms | 5 |
어택이 저역에서 길고 고역으로 갈수록 짧다(30 → 15 → 5 → 2 ms). 저역은 주기가 길어 빠른 게인 변화가 파형을 변형시키고 왜곡으로 들린다. 120 Hz의 한 주기는 8.3 ms이므로 30 ms 어택은 약 3.6주기에 해당해 파형 왜곡 없이 포락선에만 반응한다. 반대로 고역은 트랜지언트가 짧아 2 ms로도 충분히 포착한다.
밴드 1과 4는 레시오에 상한이 걸려 있다. 저역을 4:1 넘게 압축하면 펀치가 사라지고, 고역을 3:1 넘게 압축하면 심벌 감쇠 구간에서 게인 회복이 들리기 시작한다. 슬라이더를 10까지 올려도 실제 적용은 각각 4:1, 3:1에서 멈춘다.
밴드 1 출력에만 0.95 배율이 걸려 있다. 저역이 합산 후 과도해지는 것을 미리 −0.45 dB 낮춰 보정하는 값이다.
리미터
| 항목 | 값 |
|---|---|
| 스레숄드 | CEILING (−6 ~ 0 dB, 기본 −0.3) |
| 레시오 | 20:1 |
| 어택 / 릴리즈 | 1 ms / 50 ms |
| 니 | 0 dB (하드) |
브릭월 세이프티
압축기 기반 리미터는 룩어헤드가 없어 어택(1 ms)보다 짧은 피크를 놓치고, 레시오도 20:1이라 무한대가 아니다. 그래서 체인 최종단에 천장 기준으로 정규화한 소프트 클리퍼를 둔다.
0.85 아래는 완전 선형이라 착색이 없고, 그 위는 1.0에 점근하므로 아무리 큰 입력이 들어와도 출력이 천장을 넘지 않는다. 4배 오버샘플링으로 클리핑 앨리어싱을 억제한다.
배치는 스테레오 폭 조절 뒤다. 폭을 넓히면 사이드 성분이 더해져 피크가 다시 상승하므로, 그 앞에 두면 천장 보장이 깨진다.
손실 압축으로 재인코딩하면 파형 재구성 과정에서 피크가 0.5~1.5 dB 상승할 수 있다. 클리퍼가 이 프로그램의 출력은 보장하지만 재인코딩 이후까지 보장하지는 않으므로, 배포용은 −1.0 dB를 권한다.
스테레오 폭
리미터 뒤에 배치한다. 앞에 두면 폭을 넓혀 커진 피크를 리미터가 다시 눌러 설정값과 결과가 어긋난다.
w를 1보다 크게 하면 사이드 성분이 증폭된다. 모노 합산 시 사이드는 완전히 상쇄되므로, 중앙에서 벗어난 악기가 사라지거나 크게 줄어든다. w > 1.3 설정에서는 모노 확인이 필요하다.
03대역 확장
손실 압축으로 제거된 고역을 하모닉 전사로 합성한다. 단시간 푸리에 변환 영역에서 동작하며, 프레임 길이 4096, 홉 1024(75% 중첩), 한 창을 사용한다.
| 항목 | 96 kHz | 192 kHz |
|---|---|---|
| 주파수 분해능 | 23.4 Hz | 46.9 Hz |
| 프레임 시간 길이 | 42.7 ms | 21.3 ms |
| 홉 시간 간격 | 10.7 ms | 5.3 ms |
| 표현 가능 상한 | 48 kHz | 96 kHz |
192 kHz에서는 같은 프레임 길이가 시간상 절반이 되므로 시간 분해능이 높아지는 대신 주파수 분해능이 절반으로 떨어진다. 저역 배음 구조의 식별력이 낮아지지만, 대역 확장이 관심을 두는 영역은 고역이라 실무상 문제가 되지 않는다.
손실 압축의 흔적
지각 부호화기는 마스킹 임계 아래의 성분을 제거하고, 비트 예산이 부족하면 고역 전체를 대역 제한한다. 결과적으로 스펙트럼에 수직에 가까운 절벽이 남는다.
| 소스 | 전형적 차단 | 확장 여지 |
|---|---|---|
| MP3 128 kbps | 15 ~ 16 kHz | 가청 대역 내 여지가 크다 |
| MP3 192 kbps | 17 ~ 18 kHz | 일부 가청 |
| MP3 320 kbps | 19 ~ 20 kHz | 거의 가청 한계 밖 |
| AAC 256 kbps | 18 ~ 20 kHz | 거의 가청 한계 밖 |
| 무손실 | 없음 | 나이퀴스트 위에만 작용 |
자연 음원의 스펙트럼은 고역으로 갈수록 완만하게 감쇠한다. 악기의 배음 포락선은 대체로 −6 ~ −12 dB/oct 기울기를 가진다. 부호화가 만든 절벽은 이보다 훨씬 가파르며, 이 불연속이 가청 대역 밖에 있더라도 경계 부근의 인접 대역 인지에 영향을 준다.
컷오프 판정
프레임 단위가 아니라 파일 전역에서 1회 수행한다. 한 프레임만 관측하면 고역이 없는 조용한 구간을 차단으로 오판할 수 있다.
- 평균 스펙트럼 수집. 파일 전체에서 최소 20개 지점을 표본 추출해 진폭 스펙트럼을 평균한다.
- 평활과 dB 변환. 9빈 이동 평균 후 dB로 변환한다. 인접 빈의 변동을 줄여 판정을 안정화한다.
- 기준 레벨 산출. 1 ~ 4 kHz 구간의 평균 dB를 기준으로 삼는다. 대부분의 음악에서 에너지가 집중되고 부호화기가 가장 보존하는 대역이다.
-
1차 탐색. 상한은 샘플레이트의 1/4이다.
업샘플링으로 생긴 빈 영역을 탐색 대상에서 제외한다.
여기서 하강하며 연속 12빈 평균이
기준 − 30 dB를 넘는 최초 지점을 차단점으로 본다. - 절벽 검증. 차단점 위 12빈이 아래보다 15 dB 이상 낮지 않으면 절벽이 아니라고 판단하고, 인접 12빈 평균차가 20 dB를 넘는 지점을 재탐색한다.
| 임계 | 진폭비 | 판정 의미 |
|---|---|---|
| −30 dB | 1/31.6 | 실질 신호 유무 판정. 이 아래는 누설·잡음 수준 |
| −15 dB | 1/5.6 | 절벽 여부 검증 |
| −20 dB | 1/10 | 재탐색 시 급락 기준 |
배음 전사
차단점 아래의 잔존 성분을 정수배 주파수 위치로 복사한다. 차수별 레벨은 고정 비율을 따르고 사용자 파라미터가 전체를 스케일링한다.
| 차수 | 2 | 4 | 8 | 16 | 32 | 64 | 128 |
|---|---|---|---|---|---|---|---|
| 레벨 | 1/2 | 1/4 | 1/8 | 1/16 | 1/32 | 1/64 | 1/128 |
| dB | −6 | −12 | −18 | −24 | −30 | −36 | −42 |
차수가 2배 될 때마다 −6 dB다. 주파수 축 로그 스케일에서 옥타브당 −6 dB 기울기에 해당하며, 현악기·관악기 배음 포락선의 전형적인 감쇠율과 일치한다. 이 때문에 합성된 고역이 원본 배음 구조의 연장선처럼 들린다.
구간이 연속되도록 설계되어 있다. 차수 2는 차단점부터 그 2배까지, 차수 4는 2배부터 4배까지를 담당한다. 슬라이더를 0으로 내려도 스케일이 0.5이므로 합성이 완전히 꺼지지는 않는다.
전사 시 원본 빈의 위상을 그대로 사용한다. 엄밀하게는 주파수가 n배가 되면 위상도 n배가 되어야 시간 영역에서 배음 관계가 유지된다. 이 보정을 하지 않으므로 합성 성분은 원음과 위상이 정합되지 않는다. 해당 대역이 위상 인지 한계(약 1.5 kHz 이상에서는 파형 위상 감지 불가) 밖이라 청감상 문제로 드러나지 않지만, 원리적으로는 근사다.
교차 특성
원음과 합성음의 경계를 코사인 곡선으로 교차시킨다. 교차 시작점은 차단점의 75% 지점이다.
가중치의 합이 1인 진폭 보존 교차다. 상관관계가 없는 두 신호를 섞을 때는 제곱합이 1인 전력 보존 교차가 적절하지만, 여기서는 합성음이 원음에서 파생되어 상관관계가 있으므로 진폭 보존이 맞다. 전력 보존을 쓰면 교차 중앙에서 약 3 dB 융기가 발생한다.
배음 차수 사이의 경계도 각 구간을 25% 침범하며 교차한다. 중첩 없이 이어 붙이면 경계마다 진폭 딥이 생기고, 주기적인 딥은 금속성 착색으로 들린다.
스펙트럼 평활
합성 구간의 진폭에 가우시안 커널을 적용한다. 전사 과정에서 원본의 협대역 피크가 그대로 복사되면 고역에 고립된 정현파 성분으로 남아 금속성 울림을 만든다.
| SMOOTH | 커널 반경 | 표준편차 | 탭 수 | 적용률 | 청감 |
|---|---|---|---|---|---|
| 0 | — | — | — | 0% | 평활 없음. 또렷하나 피크 잔존 |
| 20 | 2 | 0.92 | 5 | 20% | 경미 |
| 40 | 2 | 1.24 | 5 | 40% | 기본. 대부분의 소스에 적정 |
| 60 | 3 | 1.56 | 7 | 60% | 거친 합성음 정돈 |
| 80 | 3 | 1.88 | 7 | 80% | 상당히 매끈 |
| 100 | 4 | 2.20 | 9 | 100% | 최대. 고역 질감이 무뎌짐 |
평활은 진폭에만 적용하고 위상은 보존한다. 위상까지 평활하면 시간 영역에서 임펄스가 퍼져 트랜지언트가 뭉개진다.
합성량이 클수록 돌출 피크도 많아지므로 SMOOTH를 함께 올리는 것이 일반적이다. SYNTH 70 이상에서 심벌에 금속성이 들리면 SYNTH를 내리기 전에 SMOOTH를 먼저 올려 볼 가치가 있다.
레벨 정합
고역 성분을 추가하면 전체 에너지가 증가한다. 처리 전후 RMS를 비교해 증가분만 되돌린다.
1% 여유를 둔 단방향 보정이다. 커진 경우만 줄이고 작아진 경우는 두므로, 기능을 켜고 끌 때 음량 차이가 최소화되어 A/B 비교가 공정해진다. 레벨을 맞추지 않으면 단순히 커진 소리를 개선으로 오인하게 된다.
클램프는 0.99에서 하드 클리핑이다. 정합 후에도 피크가 남는 경우를 대비한 최종 보호이며, 정상 동작에서는 거의 개입하지 않는다.
04계측과 판독
처리 전후를 동시에 표시한다. 원음 신호는 모든 처리 단 진입 이전에서 분기한다.
| 항목 | 값 |
|---|---|
| 변환 길이 | 2048 (1024 빈) |
| 시간 평활 계수 | 0.8 |
| 표시 하한 / 상한 | −100 dB / −30 dB |
| 주파수 축 | 로그, 20 Hz ~ 나이퀴스트 |
표시 범위 70 dB를 0~255로 정규화한다. 색상 눈금과 dB 격자가 동일한 상한·하한을 참조하므로 두 표시가 항상 일치한다. 시간 평활 0.8은 프레임 간 급변을 억제해 판독성을 높이지만, 짧은 트랜지언트의 순간 피크는 과소 표시된다.
막대 표시
128개 구간을 로그 간격으로 나누고 각 구간의 최대값을 취한다. 평균을 쓰면 협대역 피크가 인접 빈에 희석되어 사라진다. 피크 홀드 지시는 프레임당 일정 비율로 하강한다.
시간-주파수 표시
가로축 시간, 세로축 로그 주파수, 색상이 음압이다. 약 8.7초의 이력이 유지된다. 차단점 식별에는 이 표시가 유리하다. 정지 스펙트럼은 순간값만 보여주므로, 곡 전체에 걸친 대역 제한을 판단하려면 시간 축이 필요하다.
표시 범위 고정
표시 상한을 24 kHz, 48 kHz, 96 kHz 중에서 고정할 수 있다. 대역 확장을 켜고 끄면 실제 나이퀴스트가 바뀌어 축이 재조정되는데, 그 상태로는 같은 성분이 화면상 다른 위치에 나타나 비교가 성립하지 않는다. 축을 고정하면 위치가 유지되어 새로 채워진 영역만 식별된다.
고정 범위가 실제 나이퀴스트보다 넓으면 데이터가 없는 구간이 생긴다. 이 구간은 경계선 표시와 함께 어둡게 처리한다. 경계에서 값을 유지하면 없는 신호가 존재하는 것처럼 보인다.
05청감 한계
대역 확장의 효과를 평가할 때 반드시 고려해야 할 제약이다.
가청 상한
| 연령대 | 전형적 상한 |
|---|---|
| 10대 후반 | 17 ~ 20 kHz |
| 30대 | 15 ~ 17 kHz |
| 50대 | 12 ~ 14 kHz |
96 kHz 확장이 채우는 20 ~ 48 kHz, 192 kHz 확장이 추가로 채우는 48 ~ 96 kHz는 어느 연령에서도 직접 지각되지 않는다. 실효 이득은 차단점과 가청 상한 사이의 중첩 구간에서만 발생한다.
재생계 제약
출력 장치가 48 kHz로 동작하면 24 kHz 이상은 변환 단계에서 제거된다. 96 kHz 대응 변환기가 있어야 48 kHz까지 전달되고, 192 kHz 대응은 더 드물다. 다만 실효 이득 구간이 가청 대역 내에 있으므로, 장치 대역폭과 무관하게 그 부분은 전달된다.
초음파 성분의 간접 영향
가청 상한 이상의 성분이 증폭단의 비선형성과 상호작용해 가청 대역 내에 상호변조 산물을 만들 수 있다. 이는 개선이 아니라 왜곡이다. 고차 배음을 과도하게 넣는 설정이 역효과를 낼 수 있는 물리적 근거이기도 하다.
저비트레이트 소스에서는 실효 이득 구간이 넓어 차이가 명확하다. 고비트레이트 소스에서는 구간이 좁거나 존재하지 않아 차이가 미미하다. 무손실 소스에서는 차단점 자체가 없으므로 나이퀴스트 위에만 성분이 추가되며 가청 이득은 없다.
06운용 지침
소스별 대역 확장 설정
| 소스 | SYNTH | SMOOTH | 근거 |
|---|---|---|---|
| MP3 128 kbps | 60 ~ 75 | 40 ~ 55 | 확장 구간이 넓고 상당 부분이 가청 영역 |
| MP3 320 kbps | 40 ~ 55 | 35 ~ 45 | 구간이 좁아 과도하면 이질감만 증가 |
| AAC 256 kbps | 40 ~ 50 | 40 | 차단이 완만해 절벽 판정이 불안정할 수 있음 |
| 오래된 아날로그 녹음 | 50 ~ 65 | 55 ~ 70 | 원본에 고역이 없던 것이라 평활을 높여 자연스럽게 |
| 무손실 | 0 ~ 30 | — | 가청 이득 없음. 보관 포맷 변환 목적일 때만 |
평가 절차
- 시간-주파수 표시로 전환하고 표시 범위를 96 kHz로 고정한다.
- 확장을 끈 상태로 차단점을 확인한다. 절벽이 없으면 확장 대상이 아니다.
- 확장을 켜고 채워진 영역의 질감을 관찰한다. 하부 무늬와 연속되면 정상이고, 무관한 균일 대역이면 SYNTH가 과도하다.
- 레벨을 정합한 상태에서 청감 비교한다. 심벌·하이햇·치찰음 구간을 중점적으로 듣는다.
- 차이가 식별되지 않으면 해당 소스에 확장이 불필요하다고 판단한다.
과도 설정의 징후
- 심벌의 금속성 착색. 합성 배음이 원본과 조화하지 못하는 상태. SMOOTH를 올리거나 SYNTH를 내린다.
- 치찰음의 경직. 6~10 kHz 대역에 합성 성분이 과다. 차단점 판정이 낮게 잡혔을 가능성.
- 무음 구간의 배경 잡음. 잔존 잡음 성분까지 전사된 상태. SYNTH를 내린다.
다른 단과의 상호작용
대역 확장과 EXCITER를 동시에 강하게 걸면 고역이 중복 강조된다. 두 처리가 같은 대역을 다르게 만들어내므로 합산 시 예측이 어렵다. 확장 효과를 판정할 때는 EXCITER를 포함한 다른 단을 모두 끄는 것이 좋다.
BBE의 HI DEF는 8 kHz 이상을 셸빙으로 들어올린다. 확장으로 새로 만든 성분까지 함께 증폭하므로, 확장을 켠 상태에서는 평소보다 낮은 값이 적절하다.
07사양상 한계
설계상 타협
- 포화 단의 잔류 앨리어싱 — 약 −80 dBFS. 4배 오버샘플링과 입력 대역 제한으로 발생 차수를 10.5차까지 밀어냈다. 아래 잔류량 산정에 수치를 명시했다. 더 줄일 수단은 있으나 채택하지 않았으며, 그 판단 근거도 함께 적었다.
잔류 앨리어싱 산정
"완전 제거 불가"로만 적으면 쓸모가 없으므로 실제 크기를 계산해 둔다. 기준은 중간 드라이브의 tanh 포화와 일반적인 음악 스펙트럼이다.
| 비교 대상 | 레벨 |
|---|---|
| 잔류 앨리어싱 | −80 dBFS |
| 16비트 양자화 잡음 바닥 | −96 dBFS |
| 조용한 청취 환경의 암소음 | −60 ~ −70 dBFS 상당 |
양자화 바닥보다는 위지만 실제 청취 환경의 암소음보다 10 dB 이상 아래다. 드라이브를 최대로 올리고 16 kHz 부근에 에너지가 몰린 소스를 쓰는 극단적 조건에서만 측정에 잡히는 수준이다.
더 줄이는 수단과 채택하지 않은 이유
체인 전체를 목표 레이트의 배수에서 렌더한 뒤 내리면 시작 차수가 배수만큼 밀린다. 구현해서 측정한 결과는 이렇다.
| 내부 렌더 | 시작 차수 | 잔류량 | 렌더 시간 | 피크 메모리 |
|---|---|---|---|---|
| 1배 (현재) | 10.5차 | −80 dBFS | 기준 | 220 MB |
| 2배 | 21차 | −93 dBFS | 2배 | 439 MB |
| 4배 | 42차 | −106 dBFS | 4배 | 879 MB |
5분 스테레오 48 kHz 기준. 채택하지 않은 이유는 세 가지다.
- 이득이 가장 필요 없는 곳에만 적용된다. HD는 96 kHz, ULTRA HD는 192 kHz라 배수를 곱하면 브라우저 상한인 192 kHz를 넘는다. 실제로 배수를 쓸 수 있는 것은 16비트 표준 출력뿐인데, 그쪽은 양자화 바닥이 −96 dBFS라 −80을 −93으로 내려봐야 바닥에 묻힌다. 정작 정밀도가 높은 HD·UHD 경로에는 적용할 수 없다.
- 리샘플 단계가 1회에서 2회로 늘어난다. 올리고 내리는 두 변환이 각각 통과대역 리플과 트랜지언트 전후 링잉을 남긴다. 들리지 않는 앨리어싱을 줄이려고 들릴 수 있는 리샘플 아티팩트를 새로 들이는 거래가 된다. 브라우저 리샘플러의 품질은 명세에 규정되어 있지 않다.
- 실시간 경로와의 차이가 다시 벌어진다. 오버샘플 렌더는 내보내기에만 적용된다. 처리 순서를 맞춰 없앤 불일치가 하필 같은 축에서 되살아난다.
측정에 잡히는 수치를 명시하고 그대로 두는 편이, 들리지 않는 값을 더 깎으려고 새 아티팩트와 비용을 들이는 것보다 낫다고 판단했다. 더 낮은 잔류량이 필요한 작업이라면 HD 또는 ULTRA HD로 내보내면 된다. 그쪽은 나이퀴스트가 멀어 같은 조건에서 시작 차수가 훨씬 높다.
원본 샘플레이트 보존
디코딩은 대상 컨텍스트의 레이트로 리샘플하므로, 원본 레이트를 유지하려면 디코딩 전에 그 값을 알아야 한다. 컨테이너 헤더를 직접 읽어 해결한다.
| 포맷 | 판독 위치 |
|---|---|
| WAV / RIFF | fmt 청크를 순회 탐색해 표본화 주파수 필드 |
| FLAC | STREAMINFO 블록의 20비트 필드 |
| OGG Vorbis | 식별 헤더 패킷의 32비트 필드 |
| MP3 | ID3v2 태그를 건너뛴 뒤 첫 프레임 헤더의 버전·인덱스 조합 |
| MP4 / M4A / AAC | 상자 구조를 따라가 stsd 안 AudioSampleEntry의 16.16 고정소수 필드 |
MP4는 moov → trak → mdia → minf → stbl → stsd 경로를 재귀 탐색한다.
mdhd의 타임스케일도 같은 값을 담는 경우가 많지만, SBR 계열에서는
출력 레이트의 절반으로 적히는 일이 있어 stsd를 우선하고
실패했을 때만 보조 수단으로 쓴다.
판독에 실패하거나 8 ~ 192 kHz 범위를 벗어나면 장치 기본값으로 되돌아간다.