2012-11-25 4 views
0

10kHz의 사인파를 12kHz의 다른 사운드에 추가하고 iPhone 스피커에서 함께 출력 할 때 다른 저음이 들릴 수 있습니다.버퍼에 2 개의 사인파를 추가하면 노이즈가 발생합니다.

이렇게하려면 사인파를 만들고 샘플로 버퍼를 채운 다음 다른 사인파의 샘플을 버퍼에 추가하십시오.

이러한 개별 사인파 각각은 올바르게 개별적으로 작동하지만 결합하면 이전에는 없었던 왜곡을들을 수 있습니다.

이 내 콜백 코드 :

는 진폭 일에있을 당신의 사인 파를 설정하면
for (int i = 0; i <inNumberFrames; i++) 
{ 

    buffer[i] = buffer[i]+ sin(theta12_8) * myInstance->amplitude; 
    theta12_8 += 2.0 * M_PI * 12800/(myInstance->sampleRate); 
    if (theta12_8 > 2.0 * M_PI) 
    { 
     theta12_8 -= 2.0 * M_PI; 
    } 
} 

for (int i = 0; i <inNumberFrames; i++) 
{ 

    buffer[i] = buffer[i]+ sin(theta10) * myInstance->amplitude; 
    theta10 += 2.0 * M_PI * 10000/(myInstance->sampleRate);; 
    if (theta10 > 2.0 * M_PI) 
    { 
     theta10 -= 2.0 * M_PI; 
    } 
} 
+0

거기에 없어야 할 낮은 빈도는 무엇입니까? 2KHz 구성 요소와 22KHz 구성 요소를 얻을 수 있습니다. –

+0

@HotLicks 왜 이러한 구성 요소가 있어야합니까? 합계가 삼각 함수를위한 제품으로 변형되는 것을 생각하고 있다고해도, 우리는 이것을 전혀 이야기하지 않습니다. –

+2

먼저 하나의 주파수에서만 제대로 작동하는지 확인하십시오. 그런 다음 두 주파수를 모두 추가하지만 두 진폭을 2로 나눕니다. 왜곡을 추가하여 낮은 주파수 고조파를 추가하는 임계 값에 도달 할 수 있습니다 (핫 릭스가 말하는 요소, 특히 저주파수 요소). –

답변

0

, 확인 이잖아. 2 개의 사인파를 합치면 새로운 진폭의 최대 진폭은 2가 될 수 있으며 잘못된 숫자이며 왜곡 및 고조파가 발생합니다.

나는 진폭을 각각 0.5로 설정 했으므로 최대 값은 1이며 문제가 해결됩니다.

관련 문제