2013-05-31 1 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-файлов в ОС, который, как представляется, использует другой процессор для обработки операций воспроизведения (в многоядерной системе), поэтому я не думаю, что потоки будут полезны. Я думаю, что реальная проблема заключается только в том, что MCI не отличный игрок. Он даже не может предсказать буферизацию начала файла до достижения цели. – MasterHD

ответ

1

Я разговаривал с другом, и он рекомендовал использовать нить. «Ну, дух», подумал я. «Как я мог не подумать об этом?»