2013-05-31 55 views
0

我正在播放一个MIDI文件,并且我有一个定时器定期检查别名的状态。当它停止时,执行:C++/Win32 - 我的MCI利用率会造成什么延迟?

mciSendString(L"seek Music to start", NULL, 0, NULL); 
mciSendString(L"play Music", NULL, 0, NULL); 

我正在使用它作为我创建的基本游戏的一部分。我注意到,每当歌曲重复时,应用程序冻结的瞬间就会有一秒钟。我认为这是我每次加载文件造成的,但是如果我已经加载并且只是在内部寻找它,它应该不会放慢速度,如果它?我该如何避免拖延?

我知道MCI可能不是播放midi文件的最佳选择。但是,我所有的程序需要将两个MIDI文件加载到内存中并在循环中播放它们。最初我研究过第三方库,但其中大部分看起来都比我需要的更多,而且它们中的很多都过于复杂。但是,如果有一个真正基本的,简单的完成我所需要的工作,我很乐意听到它。我不是在寻找多层3D声音或任何东西 - 只是加载到内存,播放和重复的能力。

+0

我有这个问题,使用线程的复杂性真的不是我的选择,我不认为它会解决问题。我不知道该怎么做,我用它来循环播放mp3,每次循环时都会有一个非常明显/让人讨厌的分裂延迟。 – MasterHD

+0

使用线程的复杂性不是一种选择吗?你只是不确定如何使用线程,或者你是否使用实际上不允许线程的硬件? –

+0

它在Ruby中,并且编译器是最小的(RPGXP)。但就像我所说的,调用MCI命令来播放一个mp3手控制到似乎使用不同的CPU来处理播放操作的操作系统(在多核系统上),所以我不认为线程是有用的。我认为真正的问题只是MCI不是一个伟大的球员。它甚至无法预测在达到结束之前缓冲文件的开始。 – MasterHD

回答

1

我正在和一位朋友说话,他建议我使用一个线程。 “呃,”我想。 “我怎么可能没想到呢?”

相关问题