曲を途中から再生する

http://ochakkolab.blog116.fc2.com/blog-entry-136.html
うまくコメントを投稿できないのでこちらに書きます。
XAudio2はまだ使っていないのですが、ドキュメントを読む限りではIXAudio2SourceVoice::SubmitSourceBuffer関数に渡すXAUDIO2_BUFFER型の変数に再生開始位置を指定できると思います。
具体的には以下のようにしてみるとか:

XAUDIO2_BUFFER buffer = {0};
buffer.PlayBegin = 100; // 100サンプルから再生開始
// 以下略

MSDNにあるIXAudio2SourceVoice::SubmitSourceBuffer関数のドキュメントの「特定のバッファーの一部のみを再生する必要がある場合は」あたりからの記述や、
また、XAUDIO2_BUFFER構造体のドキュメントのPlayBegin変数の説明も参考になると思います。

追記

手元にあったDirectX SDK (March 2009)のサンプル XAudio2BasicSound を使って動作を確認しました。
XAudio2BasicSound.cppのPlayPCM関数に以下ようなコードがあります。

    // Submit the wave sample data using an XAUDIO2_BUFFER structure
    XAUDIO2_BUFFER buffer = {0};
    buffer.pAudioData = pbWaveData;
    buffer.Flags = XAUDIO2_END_OF_STREAM;  // tell the source voice not to expect any data after this buffer
    buffer.AudioBytes = cbWaveSize;

    if( FAILED( hr = pSourceVoice->SubmitSourceBuffer( &buffer ) ) )

これを次のようにします。

    // Submit the wave sample data using an XAUDIO2_BUFFER structure
    XAUDIO2_BUFFER buffer = {0};
    buffer.pAudioData = pbWaveData;
    buffer.Flags = XAUDIO2_END_OF_STREAM;  // tell the source voice not to expect any data after this buffer
    buffer.AudioBytes = cbWaveSize;
    buffer.PlayBegin = 40000; // 追加。40000は適当な数字。1サンプル単位。

    if( FAILED( hr = pSourceVoice->SubmitSourceBuffer( &buffer ) ) )

こうすることで、曲の途中から再生が開始されました。

追記2

やっぱりうまくコメントを投稿できなかったので、メールでこの日記を読んでいただくよう伝えた。