Dela via


Ändra tonhöjd och uppspelningshastighet

[Funktionen som är associerad med den här sidan, Waveform Audio, är en äldre funktion. Det har ersatts av WASAPI och Audio Graphs. WASAPI och Audio Graphs har optimerats för Windows 10 och Windows 11. Microsoft rekommenderar starkt att ny kod använder WASAPI och Audio Graphs i stället för Waveform Audio, när det är möjligt. Microsoft föreslår att befintlig kod som använder äldre API:er skrivs om för att använda de nya API:erna om möjligt.]

Vissa waveform-audio-utdataenheter kan variera tonhöjden och uppspelningshastigheten för vågformsljuddata. Alla waveform-audio-enheter stöder inte ändringar i tonhöjd och uppspelningshastighet. Information om hur du avgör om en viss waveform-audio-enhet stöder ändringar i tonhöjd och uppspelningshastighet finns i Enheter och datatyper.

Skillnaderna mellan ändrad tonhöjd och uppspelningshastighet är följande:

  • Att ändra uppspelningshastigheten utförs av enhetsdrivrutinen och kräver inte särskild maskinvara. Exempelfrekvensen ändras inte, men drivrutinen interpolerar genom att hoppa över eller syntetisera exempel. Om uppspelningshastigheten till exempel ändras med en faktor på två hoppar drivrutinen över alla andra exempel.
  • För att ändra tonhöjden krävs specialiserad hårdvara. Uppspelningshastigheten och exempelfrekvensen ändras inte.

Windows tillhandahåller följande funktioner för att hämta och justera ljudets vågforms tonhöjd och uppspelningshastighet.

Funktion Beskrivning
waveOutGetPitch Hämtar tonhöjden för den angivna vågljudsutgångsenheten.
waveOutGetPlaybackRate Hämtar uppspelningshastigheten för den angivna waveform-ljudutgångsenheten.
waveOutSetPitch Anger tonhöjden för den angivna ljudutgångsenheten.
waveOutSetPlaybackRate Anger uppspelningshastigheten för den angivna waveform-audio-utdataenheten.

 

Tonhöjd och uppspelningshastighet ändras av en faktor som anges med ett fastkommatal som är packat in i ett dubbelordsvärde. De övre 16 bitarna anger heltalsdelen av talet. de lägre 16 bitarna anger bråkdelen. Till exempel representeras värdet 1,5 som 0x00018000L. Värdet 0,75 representeras som 0x0000C000L. Värdet 1,0 (0x00010000) innebär att tonhöjden eller uppspelningshastigheten är oförändrad.