gpt4 book ai didi

c++ - Win32 - Midi 循环与 MCISendString

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:18:21 25 4
gpt4 key购买 nike

我正在制作一款游戏,我正在使用 midi 文件作为背景音乐。这是我目前使用的代码:

void Game::play_music()
{
// Start the music:
if(map.levelnumber % 2 == 0)
{
mciSendString(L"open MUSIC01.MID type sequencer alias Music1", NULL, 0, NULL);
mciSendString(L"play Music1", NULL, 0, NULL);
playing = "Music1";
} else {
mciSendString(L"open MUSIC02.MID type sequencer alias Music2", NULL, 0, NULL);
mciSendString(L"play Music2", NULL, 0, NULL);
playing = "Music2";
}
}

这很好用,除了它只播放一次歌曲。我试图通过在 mci 播放命令中添加“重复”来循环它,但它根本不播放任何东西。如何循环播放音乐?

最佳答案

我查看了 MSDN 上的多媒体命令字符串引用,发现

TCHAR tch[100];
mciSendString("status [alias] mode", tch, 100, NULL);

将 [alias] 是否正在播放或停止放入“tch”。如果它停止了,我只需使用“seek [alias] to start”命令重新加载 midi 文件。我应该提一下,这会在计算或其他任何东西时造成延迟 - 所以如果你不把它放在一个单独的线程中,你的程序就会卡住。

关于c++ - Win32 - Midi 循环与 MCISendString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16829520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com