logo

English

PCM Volume Control 구현 방법

by digipine posted Apr 13, 2022
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

각 샘플에 승수를 적용하여 PCM 오디오 스트림의 진폭을 조작할 수 있습니다. 각 버퍼(샘플 세트)를 PortAudio에 전달하기 직전에 이 작업을 수행할 수 있습니다. 다음과 같이 간단합니다.

float buffer[SAMPLES_PER_BUFFER];
const float volumeMultiplier = 0.2f;
for(int i = 0; i < SAMPLES_PER_BUFFER; ++i)
{
   buffer[i] *= volumeMultiplier;
}

그러나 비결은 승수를 계산하는 방법에 있습니다. 일반적으로 전체 신호 레벨을 절반으로 줄일 때까지 신호 레벨의 큰 변화를 느끼지 못할 것입니다 volumeMultiplier = 0.5f알다시피 인간의 귀는 볼륨 레벨의 변화를 선형적으로 감지하지 않고 대수적으로 감지합니다. 다음 링크는 이 개념을 설명하는 데 도움이 될 수 있습니다.

이 정보를 사용하면 위의 코드를 다음과 같이 변경할 수 있습니다.

float buffer[SAMPLES_PER_BUFFER];
//volume in dB 0db = unity gain, no attenuation, full amplitude signal
//           -20db = 10x attenuation, significantly more quiet
float volumeLevelDb = -6.f; //cut amplitude in half; same as 0.5 above
const float VOLUME_REFERENCE = 1.f;
const float volumeMultiplier = (VOLUME_REFERENCE * pow(10, (volumeLevelDb / 20.f);
for(int i = 0; i < SAMPLES_PER_BUFFER; ++i)
{
   buffer[i] *= volumeMultiplier;
}

목적상 이것은 중요하지 않을 수 있지만, 슬라이더 위젯과 같은 사용자 인터페이스에 volumeLevelDb 또는 volumeMultiplier 값을 첨부하면 차이가 분명해집니다.

이 알고리즘은 모든 데이터 유형에 적용할 수 있습니다.

TAG •

List of Articles
No. Subject Author Date Views
35 음향 측정 프로그램 SOUND ANALYSIS & CALIBRATION SOFTWARES file digipine 2017.11.02 15865
34 OP Amp의 음색 정리 자료 1 digipine 2017.11.02 13351
33 사운드 전용, 통신 채널인 I2S 스펙 file digipine 2017.11.02 11771
32 IFF (Interchange File Format) 파일 구조 lizard2019 2025.02.12 8769
31 8SVX (8-Bit Sampled Voice) 오디오 파일 형식 lizard2019 2025.02.12 8729
30 FFMpeg에서 DOP (DSD-over-PCM) 구현 패치 엉뚱도마뱀 2018.12.20 6448
29 진공관 앰프 회로도 및 제작 매뉴얼 file digipine 2017.11.02 6283
28 OP Amp 타입과 종류 정리 digipine 2017.11.02 5422
27 저작권이 만료된 클래식 음악 스트리밍 사이트 file digipine 2017.11.02 5365
26 소음 dB 측정 방법 file lizard2019 2020.05.25 4926
25 De-emphasis 개념 정리 file digipine 2017.11.13 4890
24 이어폰 드라이버 정리 (다이나믹 VS BA) lizard2019 2020.02.11 4774
23 소음즉정 기준 dB(A) 단위 file lizard2019 2020.05.25 4723
22 Semibreve DA10S DAC with XMOS 768kHz Oversampling 5 file lizard2019 2024.05.10 4703
21 헤드폰과 스피커 테스트를 위한 Tone Sound File 모음 file digipine 2022.02.25 4647
20 Summary of Sound Characteristics of Electrolytic Capacitors for Audio Tuning lizard2019 2024.12.05 4530
» PCM Volume Control 구현 방법 digipine 2022.04.13 4442
18 오디오 효과 정리 digipine 2017.11.02 4358
17 WebRTC의 RED Audio Codec에 대해서 1 digipine 2024.04.15 4285
16 오디오 튜닝용 전해콘덴서 소리 특성 정리 lizard2019 2024.12.05 4211
Board Pagination Prev 1 2 Next
/ 2