我正在尝试使用SoundPlayer类(每次模拟打字机的声音)来每次按下按键时播放打字声音。
public void MyKeyDown(object sender, KeyEventArgs)
{
player = new System.Media.SoundPlayer(@"f:\sounds\2.wav");
player.Play();
}
它可以正常工作……只要您每分钟输入大约20个单词。比这快的话,直到您放慢速度
2.wav是一个8kb的声音文件,持续时间为0.1秒,因此仅根据声音持续时间,该文件就可以每分钟完整播放600次(足够大约90 wpm的键入速度)。
有没有更快的播放声音文件的方法,还是其他地方的问题?
答案 0 :(得分:0)
您将在每个KeyDown上创建一个新的SoundPlayer实例,然后每次都需要从光盘重新加载相同的样本。 SoundPlayer类具有一个构造函数,该构造函数将声音文件的位置作为参数。在这种情况下,您可以重复使用SoundPlayer实例,并且文件将缓存在内存中。我可以想象这会更快。
类似这样的事情应该可以解决:
private SoundPlayer soundPlayer;
// Call this on App Startup / Initialization...
private void InitializeSoundPlayer()
{
this.soundPlayer = new SoundPlayer("sound.wav");
}
public void MyKeyDown(object sender, KeyEventArgs)
{
this.soundPlayer.Play();
}
就我而言,这种方法更加流畅。