Изменение высоты звука и скорости воспроизведения
[Функция, связанная с этой страницей, 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) означает, что высота тона или скорость воспроизведения не изменяется.