Alterando a taxa de pitch e reprodução

[O recurso associado a esta página, Waveform Audio, é um recurso herdado. Ele foi substituído por WASAPI e Grafos de Áudio. WASAPI e Grafos de Áudio foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use WASAPI e Audio Graphs em vez de Waveform Audio, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

Alguns dispositivos de saída waveform-audio podem variar o tom e a taxa de reprodução de dados waveform-audio. Nem todos os dispositivos de áudio waveform dão suporte a alterações de pitch e taxa de reprodução. Para obter informações sobre como determinar se um dispositivo de áudio de forma de onda específico dá suporte a alterações de taxa de reprodução e pitch, consulte Dispositivos e tipos de dados.

As diferenças entre alterar o tom e a taxa de reprodução são as seguintes:

  • A alteração da taxa de reprodução é executada pelo driver do dispositivo e não requer hardware especializado. A taxa de exemplo não é alterada, mas o driver interpola ignorando ou sintetizando amostras. Por exemplo, se a taxa de reprodução for alterada por um fator de dois, o driver ignorará todos os outros exemplos.
  • A alteração do tom requer hardware especializado. A taxa de reprodução e a taxa de exemplo não são alteradas.

O Windows fornece as seguintes funções para consultar e definir as taxas de reprodução e de tom de áudio de forma de onda.

Função Descrição
waveOutGetPitch Recupera o pitch do dispositivo de saída waveform-audio especificado.
waveOutGetPlaybackRate Recupera a taxa de reprodução para o dispositivo de saída waveform-audio especificado.
waveOutSetPitch Define o pitch para o dispositivo de saída waveform-audio especificado.
waveOutSetPlaybackRate Define a taxa de reprodução para o dispositivo de saída waveform-audio especificado.

 

As taxas de pitch e reprodução são alteradas por um fator especificado com um número de ponto fixo empacotado em um valor de palavra dupla. Os 16 bits superiores especificam a parte inteira do número; os 16 bits inferiores especificam a parte fracionária. Por exemplo, o valor 1.5 é representado como 0x00018000L. O valor 0,75 é representado como 0x0000C000L. Um valor de 1,0 (0x00010000) significa que a taxa de arremesso ou reprodução não é alterada.