瀏覽代碼

Reviewed SetAudioBufferPitch() #1450

pull/1458/head
Ray 4 年之前
父節點
當前提交
459c4754dc
共有 2 個檔案被更改,包括 11 行新增7 行删除
  1. +6
    -0
      examples/audio/audio_module_playing.c
  2. +5
    -7
      src/raudio.c

+ 6
- 0
examples/audio/audio_module_playing.c 查看文件

@ -52,6 +52,7 @@ int main(void)
Music music = LoadMusicStream("resources/mini1111.xm");
music.looping = false;
float pitch = 1.0f;
PlayMusicStream(music);
@ -84,6 +85,11 @@ int main(void)
else ResumeMusicStream(music);
}
if (IsKeyDown(KEY_DOWN)) pitch -= 0.01f;
else if (IsKeyDown(KEY_UP)) pitch += 0.01f;
SetMusicPitch(music, pitch);
// Get timePlayed scaled to bar dimensions
timePlayed = GetMusicTimePlayed(music)/GetMusicTimeLength(music)*(screenWidth - 40);

+ 5
- 7
src/raudio.c 查看文件

@ -634,16 +634,14 @@ void SetAudioBufferPitch(AudioBuffer *buffer, float pitch)
{
if (buffer != NULL)
{
float pitchMul = pitch/buffer->pitch;
// Pitching is just an adjustment of the sample rate.
// Note that this changes the duration of the sound:
// - higher pitches will make the sound faster
// - lower pitches make it slower
ma_uint32 newOutputSampleRate = (ma_uint32)((float)buffer->converter.config.sampleRateOut/pitchMul);
buffer->pitch *= (float)buffer->converter.config.sampleRateOut/newOutputSampleRate;
ma_data_converter_set_rate(&buffer->converter, buffer->converter.config.sampleRateIn, newOutputSampleRate);
ma_uint32 outputSampleRate = (ma_uint32)((float)buffer->converter.config.sampleRateOut/pitch);
ma_data_converter_set_rate(&buffer->converter, buffer->converter.config.sampleRateIn, outputSampleRate);
buffer->pitch = pitch;
}
}
@ -1477,7 +1475,7 @@ void SetMusicVolume(Music music, float volume)
// Set pitch for music
void SetMusicPitch(Music music, float pitch)
{
SetAudioStreamPitch(music.stream, pitch);
SetAudioBufferPitch(music.stream.buffer, pitch);
}
// Get music time length (in seconds)

Loading…
取消
儲存