음향: CutOff(컷오프) 주파수란?
CutOff Frequency
컷오프 주파수(Cutoff Frequency)란, 오디오 필터가 신호를 걸러내기 시작하는 주파수의 경계점을 의미합니다.
설명
로우패스 필터(Low-pass filter)의 경우:
- 컷오프 주파수 이하의 저주파 성분은 통과
- 컷오프 주파수 이상의 고주파 성분은 감쇠 또는 제거
즉, 컷오프 주파수가 5,000Hz면 → 5kHz보다 낮은 음은 통과시키고, 높은 음은 줄이거나 제거합니다.
컷오프 주파수의 수치 범위
음향에서 일반적인 컷오프 주파수 범위는 다음과 같습니다:
- 20Hz ~ 20,000Hz (20kHz) → 인간의 청각 범위 전체
- 예:
30...20000Hz 라고 쓰면 → 30Hz 이하나 20kHz 이상은 거의 모두 걸러짐
왜 조정하나?
필터의 톤(tone)을 바꾸기 위해서입니다.
- 컷오프를 낮추면 → 소리가 더 어두워짐
- 컷오프를 높이면 → 고음이 살아남아 밝은 소리
예제: 정규화된 Frequency가 0.8 → 0.2로 줄어들면?
frequency.denormalized(to: 30...20000, taper: 3)에서 frequency가 0.8 → 0.2로 줄어들면, 다음과 같은 의미입니다:
0.8은 상대적으로 높은 컷오프 주파수 → 예: 약 12,000Hz 근처0.2는 상대적으로 낮은 컷오프 주파수 → 예: 약 100~200Hz 근처
즉, denormalized는 0.0~1.0 사이의 정규화된 값을 로그 스케일로 30Hz~20000Hz 범위에 매핑해주는 함수입니다.
대략적인 값 예시 (taper: 3 기준, 로그 스케일):
| 정규화 값 | 컷오프 주파수 (예상값) |
|---|---|
| 0.0 | 30 Hz |
| 0.2 | 약 120~200 Hz |
| 0.5 | 약 1,000 Hz |
| 0.8 | 약 12,000 Hz |
| 1.0 | 20,000 Hz |
따라서
→ 0.8 → 0.2로 바꾸면
→ 컷오프 주파수는 약 12,000Hz → 200Hz로 급격히 낮아지며,
→ 소리가 어두워지고 고음이 잘려나가며 묵직해지는 느낌이 납니다.
denormalized(to:taper:)는 AudioKit에서 사용하는 보간 함수로,
0.0~1.0 값을 실사용 주파수로 비선형(log taper) 변환할 때 사용됩니다.
참고: Log Taper란?
Log taper(로그 테이퍼)는 값의 변화가 로그함수 곡선처럼 느리게 시작하고 점점 빠르게 증가하는 방식의 곡선을 말합니다.
왜 log taper를 쓰나?
사람의 귀는 소리의 변화를 선형(linear)이 아닌 로그(logarithmic) 방식으로 인식하기 때문입니다.
- 예: 주파수 100Hz → 200Hz는 큰 차이로 느껴지고 10,000Hz → 10,100Hz는 거의 차이 없음
log taper vs. linear taper
| 입력 값 | Linear 결과 | Log taper 결과 (예시) |
|---|---|---|
| 0.0 | 30 Hz | 30 Hz |
| 0.25 | 5087 Hz | 250 Hz |
| 0.5 | 10,015 Hz | 1000 Hz |
| 0.75 | 14,972 Hz | 5000 Hz |
| 1.0 | 20,000 Hz | 20,000 Hz |
- Linear: 중간값도 10,000Hz 근처 (느끼기엔 대부분 고음만 변함)
- Log: 중간값이 1,000Hz로, 사람 귀에 더 자연스럽고 유효한 조절 가능
실제 적용 예
- EQ(이퀄라이저)의 컷오프 주파수 노브
- 디지털 신디사이저의 파라미터 슬라이더
- UI 슬라이더 값 → 실 주파수/볼륨 매핑 등
Swift에서 taper가 적용된 예
1
value.denormalized(to: 30...20000, taper: 3)
taper: 1→ lineartaper: >1→ log taper (ex: 3이면 더 강한 곡선)
아래는 정규화된 값(0.0\~1.0)을 기준으로 한 log taper 와 linear taper의 대략적인 비교 그래프입니다.
가로축은 입력값 (x: 0.0 ~ 1.0), 세로축은 실제 주파수 출력 (y: 30Hz ~ 20000Hz)입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
y
↑
│ log taper ◉
│ ◉
│ ◉
│ ◉
│ ◉
│ ◉
│ ◉
│ ◉
│
│
│ ◉ ◉ ◉ ◉ ◉ ◉ ◉ ◉ ◉◉◉◉ linear taper
└──────────────────────────────→ x
0.0 0.5 1.0
해석:
- Linear taper는 일정하게 증가 → 대부분 고음에서만 세밀 조절 가능
- Log taper는 저역에서 더 섬세하게 조절 가능 → 사람이 듣기에 더 자연스럽고 유용
예를 들어 0.2, 0.4, 0.6, 0.8 정규화 값을 넣었을 때:
| 입력값 (x) | Linear (Hz) | Log Taper (Hz, taper:3) |
|---|---|---|
| 0.2 | ~4026 | ~100 |
| 0.4 | ~8011 | ~500 |
| 0.6 | ~11996 | ~2000 |
| 0.8 | ~15981 | ~7000 |
요약하자면, log taper는 사람의 감각에 맞춘 비선형 조절 방식이며, 보통 UI 슬라이더나 오디오 파라미터에서는 log taper를 사용합니다.