Поделиться через


Изменение высоты звука и скорости воспроизведения

[Функция, связанная с этой страницей, Waveform Audio, является устаревшей функцией.] Его заменили WASAPI и Audio Graphs. WASAPI и Звуковые графы оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, при возможности, использовать новый код с WASAPI и звуковыми графами вместо аудиоформата Waveform. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]

Некоторые устройства вывода волнового звука могут изменять высоту тона и скорость воспроизведения волновых аудиоданных. Не все аудиоустройства поддерживают изменения тональности и скорости воспроизведения. Сведения о том, как определить, поддерживает ли конкретное waveform-аудио устройство изменения высоты тона и скорости воспроизведения, см. в устройствах и типах данных.

Различия между изменением тона и скоростью воспроизведения следующие:

  • Изменение скорости воспроизведения выполняется драйвером устройства и не требует специализированного оборудования. Частота выборки не изменяется, но драйвер интерполирует, пропуская или синтезируя образцы. Например, если скорость воспроизведения изменяется в два раза, драйвер пропускает каждый второй семпл.
  • Для изменения поля требуется специализированное оборудование. Скорость воспроизведения и частота выборки не изменяются.

Windows предоставляет следующие функции для запроса и задания высоты звука и скоростей воспроизведения звуковых волн.

Функция Описание
waveOutGetPitch Извлекает высоту тона для указанного waveform-audio выходного устройства.
waveOutGetPlaybackRate Извлекает частоту воспроизведения для указанного устройства вывода волнового звука.
waveOutSetPitch Устанавливает высоту тона для указанного выходного устройства аудиосигнала.
waveOutSetPlaybackRate Задает скорость воспроизведения для указанного выходного устройства waveform-audio.

 

Скорость тона и воспроизведения изменяется с помощью коэффициента, заданного числом с фиксированной точностью, упакованным в двусловное значение. Верхние 16 бит указывают целочисленную часть числа; Ниже 16 бит указывают дробную часть. Например, значение 1.5 представлено как 0x00018000L. Значение 0,75 представлено как 0x0000C000L. Значение 1.0 (0x00010000) означает, что высота тона или скорость воспроизведения не изменяется.