C# Windows Phone 7多个声音延迟

C# Windows Phone 7多个声音延迟,c#,silverlight,windows-phone-7,C#,Silverlight,Windows Phone 7,我在做鼓机。从我读到的内容来看,这个类似乎是基于计时器运行的,这会导致明显的延迟,并使节奏变得流畅 我试着使用MediaElement,直到我发现你不能同时播放多个声音 有什么解决办法吗?声音由计时器处理,需要立即播放。我在游戏中使用了XNA SoundEffect类,在响应用户事件(例如按下按钮)时没有看到任何延迟,尤其是在从资源中预加载声音效果时 XNA系列是为音效而设计的,所以它应该是单鼓击打的理想选择 如果您在IsLooping上发现计时问题,那么我想您必须实现自己的计时器来触发新实例,

我在做鼓机。从我读到的内容来看,这个类似乎是基于计时器运行的,这会导致明显的延迟,并使节奏变得流畅

我试着使用MediaElement,直到我发现你不能同时播放多个声音


有什么解决办法吗?声音由计时器处理,需要立即播放。

我在游戏中使用了XNA SoundEffect类,在响应用户事件(例如按下按钮)时没有看到任何延迟,尤其是在从资源中预加载声音效果时

XNA系列是为音效而设计的,所以它应该是单鼓击打的理想选择

如果您在IsLooping上发现计时问题,那么我想您必须实现自己的计时器来触发新实例,但我的建议是先尝试一下


希望这有帮助

我已经在游戏中使用了XNA SoundEffect类,并且在响应用户事件(例如按钮按下)时没有看到任何延迟,尤其是在从资源中预加载声音效果时

XNA系列是为音效而设计的,所以它应该是单鼓击打的理想选择

如果您在IsLooping上发现计时问题,那么我想您必须实现自己的计时器来触发新实例,但我的建议是先尝试一下


希望这有帮助

我在我的应用程序中使用了一些声音,我使用了msdn代码示例网站上给出的示例代码:

看起来他们每50毫秒更新一次计时器。还要注意,
SoundEffect
变量(
coyoteSound
birdSound
)是私有数据成员,它们只加载一次。按钮上的事件处理程序只需单击调用
SoundEffect.play()


我在我的应用程序中使用了一些声音,我使用了msdn代码示例网站上给出的示例中的代码:

看起来他们每50毫秒更新一次计时器。还要注意,
SoundEffect
变量(
coyoteSound
birdSound
)是私有数据成员,它们只加载一次。按钮上的事件处理程序只需单击调用
SoundEffect.play()


你调查过计时器有多精确吗?你调查过计时器有多精确吗?我不知道你说的预加载是什么意思。我有这样的代码:,我注释掉了旧的系统,它是滞后的。你刚才说的是注释代码吗?谢天谢地,我从代码中看到的一个区别是每次播放声音时都调用Update()。只是在“Iron7 Free”上使用Squares IV示例再次尝试了这一点-每次我按下屏幕时都没有明显的延迟-这就是使用IronRuby的情况!我唯一想问的另一个问题是:你是在模拟器上测试还是在真手机上测试?不能编辑最后一条消息;我使用的是emulator,但我在市场上的一个应用程序也有延迟,但它会在运行两次左右后运行。我还假设您使用的是DrumSoundMachine类的静态实例,而不是每次都使用新实例,这肯定会导致延迟!如果你查看“iron7 free”中的木琴或钢琴样本,那么它们没有显示出我可以发现的延迟——这就是在手机上Ruby内部运行的动态代码!我需要一个全系统的实施。把它放到app.xaml.cs会更好吗?干杯。我不知道你说的预加载是什么意思。我有这样的代码:,我注释掉了旧的系统,它是滞后的。你刚才说的是注释代码吗?谢天谢地,我从代码中看到的一个区别是每次播放声音时都调用Update()。只是在“Iron7 Free”上使用Squares IV示例再次尝试了这一点-每次我按下屏幕时都没有明显的延迟-这就是使用IronRuby的情况!我唯一想问的另一个问题是:你是在模拟器上测试还是在真手机上测试?不能编辑最后一条消息;我使用的是emulator,但我在市场上的一个应用程序也有延迟,但它会在运行两次左右后运行。我还假设您使用的是DrumSoundMachine类的静态实例,而不是每次都使用新实例,这肯定会导致延迟!如果你查看“iron7 free”中的木琴或钢琴样本,那么它们没有显示出我可以发现的延迟——这就是在手机上Ruby内部运行的动态代码!我需要一个全系统的实施。把它放到app.xaml.cs会更好吗?干杯
public MainPage()
{
    InitializeComponent();

    LoadSound("Resources/NightAmbientCreatureOneShot_01.wav", out coyoteSound);
    LoadSound("Resources/AfternoonAmbientBirdOneShot_09.wav", out birdSound);
    LoadSoundInstance("Resources/NightAmbienceSimple_01.wav", out ambienceSound, out ambienceInstance);

    // Set the volume a little lower than full so it becomes the background.
    ambienceInstance.Volume = 0.8f;

    // Turn on looping so it runs continually in the background.
    ambienceInstance.IsLooped = true;

    // Timer to simulate the XNA game loop (SoundEffect classes are from the XNA Framework)
    DispatcherTimer XnaDispatchTimer = new DispatcherTimer();
    XnaDispatchTimer.Interval = TimeSpan.FromMilliseconds(50);

    // Call FrameworkDispatcher.Update to update the XNA Framework internals.
    XnaDispatchTimer.Tick += delegate { try { FrameworkDispatcher.Update(); } catch { } };

    // Start the DispatchTimer running.
    XnaDispatchTimer.Start();
}