SpeakHere 샘플 응용 프로그램을 시작점으로 사용하여 iPhone 사운드 처리 응용 프로그램을 구현하려고합니다. 이 응용 프로그램은 재생 중에 버퍼링 된 오디오 샘플을 조작하는 작업을 포함합니다. 샘플에 소수를 곱하면 (예를 들어 0.9) 결과적으로 노이즈가 발생합니다. 가장 이상한 점은 샘플에 정수 (1.0, 2.0 등)를 곱하거나 예상 값대로 재생 사운드를 더하거나 뺄 때입니다. 전체 프로젝트는 여기에서 다운로드 할 수AudioQueueBuffer 오디오 데이터를 조작하면 노이즈가 발생합니다.
//------------------
//If buffer samples are multiplied by 0.9 we get noise. If we multiply it by 1.0 or add to it everything's fine.
short *buffer = (short *)calloc(1, numPackets * 2);
memmove(buffer, bufferReference->mAudioData, numPackets * 2);
for (int i = 0; i < numPackets; i++)
{
buffer[i] *= 0.9;
//buffer[i] *= 1.0;
//buffer[i] += 10.0;
}
memmove(bufferReference->mAudioData, buffer, numPackets * 2);
free(buffer);
buffer = NULL;
//-------------------
:
나는 다음과 같은 코드를 가진 AudioPlayer.m의 playbackCallback 기능에하고 있어요 http://depositfiles.com/files/lmnkq68n8는
는 사람이 누구인지 날 지점 수 내가 잘못하고있어? 나는 이미 며칠 동안 그것에 고생하고 있었고, 나는 완전히 잃어 버렸습니다.
감사합니다.
나는 호스팅 다른 파일을 다시 업로드했습니다. 플로트를 반바지로 캐스팅하는 데 문제가없는 것 같습니다. 오디오 샘플의 진폭 범위가 -32768 ~ 32767 인 경우 소수점 이후의 값은별로 중요하지 않습니다. 0.9를 곱하면 사운드가 더 조용 해지지만 화이트 노이즈가 발생합니다. – Thorny
프로젝트를 다시 업로드 해 주셔서 감사합니다. 나는 나의 대답을 업데이트했다. –
감사합니다.이 질문을 핵심 오디오 메일 링리스트에 게시하겠습니다. – Thorny