Похоже, они добавили класс DynamicSoundEffectInstance в XNA 4.0. Одной из функций-членов является SubmitBuffer , которая позволяет установить «Смещение в байтах к начальной позиции данных».
Обратите внимание, что я еще не пробовал это, и я не мог сказать вам, как передать ваше аудио в буфер байтов (может быть, вы можете прочитать его как-нибудь из волнового банка XACT?). Это также, вероятно, будет трудной задачей, потому что не похоже, что вы можете удалить буфер, если решите снова изменить положение. Вы должны либо позволить ему проиграть до конца, либо создать новый класс и отправить новый буфер с новым смещением. Таким образом, вы можете хранить свой байтовый буфер в памяти и просто передавать его новым классам DynamicSoundEffectInstance с новым смещением каждый раз, когда вы хотите изменить положение.
Как я уже сказал, я еще не пробовал это, и я просто следую документации по MSDN. Некоторое время я искал, и Шон Харгривз сказал еще в октябре '09, до выхода XNA 4.0, что не думает, что это можно сделать. Поскольку PlayPosition в XNA 4.0 все еще является свойством get only, я не думаю, что вам повезет, но DynamicSoundEffectInstance является новым и может дать вам то, что вам нужно.