Изменение тона и скорости воспроизведения
[Функция, связанная с этой страницей, Waveform Audio, является устаревшей функцией. Он был заменен WASAPI и Audio Graphs. WasAPI и Audio Graphs оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде WASAPI и Звуковые графы вместо Waveform Audio, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]
Некоторые устройства вывода waveform-audio могут изменять шаг и скорость воспроизведения данных waveform-audio. Не все устройства waveform-audio поддерживают изменение тона и скорости воспроизведения. Сведения о том, как определить, поддерживает ли конкретное устройство waveform-audio изменение тона и частоты воспроизведения, см. в разделе Устройства и типы данных.
Ниже перечислены различия между изменением тона и скорости воспроизведения.
- Изменение скорости воспроизведения выполняется драйвером устройства и не требует специализированного оборудования. Частота выборки не изменяется, но драйвер интерполируется путем пропуска или синтезирования выборок. Например, если скорость воспроизведения изменяется в два фактора, драйвер пропускает все остальные выборки.
- Для изменения тона требуется специализированное оборудование. Скорость воспроизведения и частота дискретизации не изменяются.
Windows предоставляет следующие функции для запроса и настройки частоты тона и воспроизведения в формате waveform-audio.
Функция | Описание |
---|---|
waveOutGetPitch | Извлекает шаг для указанного устройства вывода waveform-audio. |
waveOutGetPlaybackRate | Извлекает скорость воспроизведения для указанного устройства вывода waveform-audio. |
waveOutSetPitch | Задает шаг для указанного устройства вывода waveform-audio. |
waveOutSetPlaybackRate | Задает скорость воспроизведения для указанного устройства вывода waveform-audio. |
Скорость тона и воспроизведения изменяется с помощью коэффициента, указанного с числом с фиксированной запятой, упакованным в значение двойного слова. Верхние 16 бит указывают целочисленную часть числа; в нижних 16 битах указывается дробная часть. Например, значение 1.5 представлено как 0x00018000L. Значение 0,75 представлено как 0x0000C000L. Значение 1,0 (0x00010000) означает, что шаг или скорость воспроизведения не изменяется.