资源说明:在沉寂了一段时间之后。我开始开发游戏的音频程序了。今天我要为大家展示的是我写的播放MIDI的程序,其实不要以为MIDI的载入和播放很复杂,其实它是相当的简单、只需要选用合适的解码器就行了。现在又几种解码器可以选择。MCI和DirectMusic。其中MCI是windows特别对多媒体应用程序提供的API集合,它可以播放很多流行的格式。但是对MIDI的控制性比较低。而DirectMusic则对MIDI有着较丰富的支持,最典型的就是可以控制节奏(tempo)。
我的代码没有对DirectMusic进行封装,使用C的风格制作的。所以大家看起来很好理解。下面我就来展示我写的代码吧。
Main.cpp
/*---------------------------------------------------------------------------
蒋轶民制作E-mail:jiangcaiyang123@163.com
最后编辑:年月日:29:06
文件名:main.cpp
作用:头文件的实现
----------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*/
// 头文件
#include
#include
#include "main.h"
using namespace std;
int main( int, char** )
{
try
{
cout << "初始化设备\n";
Initialize();// 初始化DirectMusic
cout << "载入声音\n";
LoadSound( TEXT( "test.mid" ) ); // 载入声音文件
cout << "播放声音\n";
g_pSegment->SetRepeats( NULL ); // 仅仅播放一次
SetVolume( 0, 0 );
Play();
Sleep( 1000 );
SetTempo( 160 );
cout << "当前播放的速率为" << GetCurrentTempo() << '\n';
while ( IsPlaying() );
UnInitialize(); cout << "释放设备\n";
}
catch( CError& e )
{
e.SaveToFile();
cout << "错误报告已保存。\n";
}
catch( ... )
{
cout << "遇到了未知的错误。\n";
}
return 0;
}
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。