Qual é o menor buffer de áudio necessário para produzir som de som sem distotões com a API do WaveOUT

A API do WaveOut tem alguma limitação interna do tamanho da parte atual do buffer reproduzido? Quero dizer, se eu fornecer um buffer muito pequeno, isso afeta de alguma forma o som tocado nos alto-falantes. Estou experimentando um ruído muito estranho quando estou gerando e tocando a onda sinusal com um pequeno buffer. Algo como um pico, ou "BUMP".

A história completa:

Eu fiz um programa que pode gerar sinal sonoro de sinus em tempo real. Os parâmetros variáveis ​​são freqüência e volume. O requisito do projeto era ter uma latência máxima de 50 ms. Assim, o programa deve ser capaz de produzir Sinus Sinus com freqüência manualmente ajustável de sinal de áudio em tempo real.

Eu usei o Windows WaveOut API, C # e P / invoke para acessar a API.

Tudo funciona bem quando o buffer de som é de 1.000 ms. Se eu minimizar o buffer para 50 ms de acordo com o requisito de latência, então, para certas frequências que estou experimentando no final de cada buffer, um ruído ou "BUMP". Eu não entendo se o som gerado é mal formado (eu verifiquei e não é) ou algo acontece com o chip de áudio, ou algum atraso na inicialização e reprodução.

Quando eu salvo o áudio produzido no arquivo .wav, tudo está perfeito.

Isso significa que deve haver algum bug no meu código ou o subsistema de áudio tem uma limitação para os fragmentos de buffer enviados para ele.

Para quem não sabe, o WaveOut deve ser inicializado na primeira vez e, em seguida, deve ser preparado com cabeçalhos de áudio para cada buffer que contém o número de bytes que precisam ser reproduzidos e o ponteiro para uma memória que contém o áudio necessário. ser jogador.

ATUALIZAR

O ruído acontece com as seguintes combinações 44100 SamplingRate, 16 Bits, 2 canais, buffer de 50 ms e sinal de áudio Sinus gerado de 201Hz, 202Hz, 203Hz, 204Hz, 205Hz ... 219Hz, 220Hz, 240Hz, ok

Por que essa diferença é de 20, eu não sei.

questionAnswers(1)

yourAnswerToTheQuestion