我正在使用SharpDX包装器来安装DirectX XAudio2 api。 http://sharpdx.org/
我需要能够搜索加载到SourceVoice中的WAV文件到轨道中的给定位置。我正在努力弄清楚我应该将PlayBegin设置为什么,以便跳过一定量的毫秒或轨道的比例。
public void onMetronome(int bar)
{
if (voice != null) voice.DestroyVoice();
voice = new SourceVoice(Player.XAudio, buffer.WaveFormat, true);
buffer.PlayBegin = (int)(bar * buffer.Stream.Length / 4);
voice.SubmitSourceBuffer(buffer, buffer.DecodedPacketsInfo);
voice.Start();
}
任何人都可以告诉我,我应该设置什么样的游戏开始?
我可以从文档中看到这个值是样本编号,它可能需要是128的倍数,但我认为我仍然做错了。
答案 0 :(得分:2)
想出来,想想我已经乘以1000而不应该,以下作品
var offset = (int)Math.Floor(buffer.WaveFormat.SampleRate * barDuration / 128) * 128 * bar;