首 页 高校招生 - 高级研修 - 教育新闻 - 学习资料 - 搜索中心 - 北斗论坛 - 名校荟萃   外语 - 计算机 - 考研 - 职业资格 - 艺术体育 - 中小学  

 
·教育搜索 EDUSOU
| 计算机 > 游戏开发 > 正文 进入 教育人生网总站

如何在游戏制作中使用MIDI 文件演奏音乐

2007-08-03    教育人生网    浏览:0    进入论坛>>

如何在游戏制作中使用MIDI 文件演奏音乐

下面用 DirectX 8 来演奏音乐(MIDI 文件)。

  DirectX 的标准声音文件好象是 *.sgt ,不过 MIDI 格式的文件也可以直接播放。
  程序概要:
  
  1. 从 WinMain() 中调用开始演奏的函数(InitDirectMusic),在这个函数中进行演奏音乐的全部处理,返回后只是打开 DialogBox(对话框) 让人欣赏音乐。
  
  2. 关闭 DialogBox 时调用停止演奏的函数(FreeDirectMusic),释放所有 object(对象) 并退出程序。
  
  3. 讲得好象还不是太清楚,这里再附加几条说明。(-.-;) (^_^;
  
  hr=CoInitialize(NULL);
  初始化 DirectMusic 的 COM(Component Object Model|组件对象模型)。
  InitializeSynth()
  初始化 Software Synthesizer(软件合成) 的函数。
  LoadSegment()
  载入演奏文件的函数。
  注意该函数中如下一段代码:
  wcscpy( ObjDesc.wszFileName, L"Midi.mid" );
  在这里设定要演奏的 MIDI 文件名。
  自己准备个喜欢的 MIDI 文件,改名为 Midi.mid ,放进工程文件夹。
  
  下面说明建立工程的步骤:
  
  1. 新建一个 Win32 Application 空白工程,命名为 "Midi"。
  
  2. 向工程中新建一个 C++ Source File ,命名为 "midi" ,向其中键入篇末附带的源程序。
  
  3. 选择菜单 [Insert|插入]-[Resource...|资源...] 打开 [Insert Resource|插入资源] 面板,在左栏内选中 [Dialog|对话框] ,然后点击 [New|新建] :


  (参见 §06. 显示 Dialog Box (对话框))
  这回的 DialogBox 只需要一个 ID = IDC_CLOSE , Caption = CLOSE 的按扭:
  
  保存资源文件,文件名 "dialog.rc" ,然后选择菜单 [Project|工程]-[Add To Project|添加到工程]-[Files...|文件...] ,向工程中添加下面两个文件:
  dialog.rc
  resource.h
  (参见 §06. 显示 Dialog Box (对话框))
  
  4. 选择菜单 [Project|工程]-[Settings...|设定...] 打开[Project Settings|工程设定] 面板,点击 [Link|链接] 标签,向 [Object/library modules|对象、库模块] 栏内添加下面一个库文件:
  dxguid.lib
  



  5. 编译并执行!
  源程序:
  /****************************************************/
  /*★ 演奏音乐(MIDI 文件)   2001-01-23 前田 稔 ★*/
  /****************************************************/
  #include
  #include
  #include "resource.h"
  #define ERRMSG(x) MessageBox(NULL, x, "PlayPri", MB_OK);
  
  // Global variables for the DirectMusic sample
  IDirectMusicLoader8*   g_pLoader   = NULL;
  IDirectMusicPerformance8* g_pPerformance = NULL;
  IDirectMusicSegment8*   g_pSegment   = NULL;
  
  // 函数类型说明
  HRESULT   InitDirectMusic(LPSTR lpCmdLine );
  HRESULT   InitializeSynth();
  HRESULT   LoadSegment();
  HRESULT   FreeDirectMusic();
  
  //★ DlgProc()
  LRESULT CALLBACK DlgProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)
  {
  switch (message)
  {  case WM_COMMAND:
  switch (LOWORD(wParam))
  {  case IDC_CLOSE:
  PostQuitMessage(0 );
  break;
  }
  break;
  case WM_CLOSE:
  EndDialog(hDlg, TRUE );
  return (TRUE);
  }
  return FALSE;
  }
  
  //★ Windows 主函数
  int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
  LPSTR lpCmdLine, int nCmdShow )
  {  HRESULT hr;
  
  hr = InitDirectMusic(lpCmdLine );
  if (FAILED(hr))
  {  FreeDirectMusic(); return FALSE; }

实用导航:高考 | 考研 | 自考 | 在职研 | 外语 | IT | 公务员 | MBA | 舞蹈
推荐:如何戴上硕士帽 | 上海培训学校大全 | 学习交流交友 | 外语学习资料

特别说明:由于各方面情况的不断调整与变化,教育人生网所提供的所有考试信息仅供参考,敬请考生以权威部门公布的正式信息为准。

来源:网络    责任编辑:GTF  


 相关资讯 关键字:  相关课程

 ·彩色转灰度算法彻底学习  2007-8-3
 ·对2D游戏引擎设计的一些思考  2007-8-3
 ·动画程序编写——DirectDraw之旅  2007-8-3
 ·如何更加有效防止用户使用外挂  2007-8-3
 ·游戏AI基础  2007-8-3
 ·在Windows上安装OGRE的方法  2007-8-3

 ·[交大慧谷]交大慧谷Maya动漫游戏签..  ¥7800.00
 ·[汇众益智]手机游戏开发  ¥0.00

 
主编推荐 更多   最新资讯 更多   经典下载 更多
2008英语四六级考前辅导专题
2008英语四六级考前辅导专题
 
 网上报名 优惠便捷
 
 
 求学热点关注
研修 | MBA/EMBA 在职研究生 短训研修
学历 | 普通高校 自考成考 网络院校 中外合作
外语 | 中高级口译 日语 四六级 新概念 雅思
综合英语 商务英语 口语听力 小语种 托福
职业 | 报关报检 物流 会计上岗证 会计电算化
外贸
其他 | IT职业 平面设计 网页设计 辅助设计 考研 中小学辅导 夏令营 舞蹈 瑜珈 音乐
 
 
 论坛精华 求学交友
雅思 |
张红岩《TOEFL iBT词以类记》完整版(..
日语 |
新版 标日在线教学视频 初上1
口译 |
上海中高级口译考试全解析专题
考研 |
微观经济学(高鸿业)各章重点小结PDF
职业 |
【职业资格专题】邮政营业员试题
舞蹈 |
舞蹈大比拼,选择你喜欢[舞蹈特别专题]
 
 热点专题
IT就业培训
 
上海中高级口译完全解析
2008英语四六级考前辅导
教育人生网真题中心正式上线
上海中高级口译考试全解析
在职研究生报考指南
2007年12月四六级真题
2000-2007日语能力考真题..
2008在职硕士备考指南
2008年注册会计师备考专题
高等教育自学考试完全指南

教育新闻 - 免费资料 - 搜索中心 - 名校荟萃 - 北斗论坛 - 会员中心 - 主编信箱 - 网站地图 - 欢迎批评指正 设定本页为浏览器首页
教育人生网简介 - 联系我们 - 招贤纳士 - 客服中心 - 免责声明 - 广告服务 - 火爆加盟 - 中国教育搜索