2013-05-31 6 views
0

나는 MIDI 파일을 재생하고 있으며 주기적으로 별칭의 상태를 확인하는 타이머가 있습니다. 이 중지되면,이 실행 : 내가 만드는거야 기본적인 게임의 한 부분으로 이것을 사용하고C++/Win32 - MCI 활용에서 어떤 지연이 발생합니까?

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

. 노래가 반복 될 때마다 애플리케이션이 정지되는 부분이 두 번째로 있음을 알았습니다. 이 문제는 매번 파일을로드하는 것으로 인해 발생한다고 생각했지만, 이미로드 된 상태에서 방금 찾으면 속도가 느려져서 안됩니다. 지연을 방지하려면 어떻게해야합니까?

나는 MCI가 아마도 미디 파일을 재생하기위한 최상의 옵션이 아닐 것이라고 알고 있습니다. 그러나, 내 모든 프로그램의 요구는 메모리에 두 개의 MIDI 파일을로드하고 루프에서 재생하는 것입니다. 원래 제 3 자 라이브러리를 살펴 보았지만, 이들 중 대부분은 필자가 필요로하는 것보다 더 많은 것처럼 보이며 많은 라이브러리가 너무 복잡합니다. 그러나, 내가 필요한 것을 성취 할 수있는 정말로 기본적인 단순한 것이 있다면, 그것에 대해 듣고 싶습니다. 나는 멀티 레이어 3D 사운드 또는 다른 것을 찾고 있지 않습니다. 단지 메모리에로드하고 재생하고 반복 할 수있는 기능입니다.

+0

나는이 동일한 문제점을 가지고 있으며 쓰레드 사용의 복잡성은 정말로 나를위한 선택 사항이 아니며 어쨌든 문제를 해결할 것이라고 생각하지 않는다. 나는 무엇을해야할지 모르겠다. 나는 mp3를 반복하기 위해 그것을 사용하고 있고 루프가 될 때마다 매우 분명한 짜증나는 두 번째 딜레이가있다. – MasterHD

+0

스레드를 사용하는 복잡성은 옵션이 아닙니까? 실제로 쓰레드를 사용하는 방법에 대해 확신이 없습니까, 아니면 실제로 쓰레드를 허용하지 않는 하드웨어로 작업하고 있습니까? –

+0

Ruby에 있으며 컴파일러는 RPGXP (최소값)입니다. 하지만 제가 말했듯이, MCI 명령을 호출하면 mp3 손 컨트롤을 OS로 넘겨서 다른 CPU를 사용하여 (멀티 코어 시스템에서) 재생 작업을 처리하는 것처럼 보입니다. 따라서 스레딩은 사용하지 않을 것이라고 생각합니다. 진짜 문제는 MCI가 훌륭한 선수가 아니라는 것입니다. 끝까지 도달하기 전에 파일의 시작 부분을 버퍼링한다고 예측할 수도 없습니다. – MasterHD

답변

1

나는 친구와 이야기하고 있었고, 나는 실을 사용하도록 권유했다. "글쎄, 이런", 나는 생각했다. "내가 어떻게 생각하지 않았을까?"