首页
社区
课程
招聘
[原创]在VC6的工程中加入播放xm音乐的功能(详细操作过程)
发表于: 2005-12-4 02:45 17017

[原创]在VC6的工程中加入播放xm音乐的功能(详细操作过程)

2005-12-4 02:45
17017

1、下载minifmod播放组件,地址是http://www.fmod.org/files/minifmod170.zip,其中关键就是两个文件,minifmod.lib和minifmod.h。
2、将上两个文件复制到你的工程目录中,并在源码中添加#include "minifmod.h"。
3、找一个.xm的音乐,添加到资源中,资源类别名为"BGM",资源ID任意,通常是MUSIC。
4、因为用到了minifmod.lib,所以在工程属性中link项里要加上minifmod.lib。如果原先没有winmm.lib,也加上,因为fmod里会调用。
5、将下面的代码复制到你的工程的任一源文件中,通常是main.cpp。该段代码来自minifmod压缩包的main.cpp,主要实现播放资源中的xm音乐。我给出的是经过修改的,省去了定义#define USEMEMLOADRESOURCE


[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!

收藏
免费 7
支持
分享
最新回复 (18)
雪    币: 234
活跃值: (370)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
2
2005-12-4 07:59
0
雪    币: 217
活跃值: (99)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
fmod的库设计的很好,据说魔兽世界的声音部分用的就是fmod库.
minifmod开源不错,可惜只支持xm.

我重新精简优化过这个库,使用下面简单的接口就可以用了:
extern "C" void __stdcall zXM_play(unsigned char *data);
extern "C" void __stdcall zXM_stop();
extern "C" long __stdcall zXM_getms();
附件:zxm.rar
2005-12-4 11:48
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
4
好极了,呵呵!
2005-12-4 19:55
0
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
5
最初由 dwing 发布
fmod的库设计的很好,据说魔兽世界的声音部分用的就是fmod库.
minifmod开源不错,可惜只支持xm.

我重新精简优化过这个库,使用下面简单的接口就可以用了:
extern "C" void __stdcall zXM_play(unsigned char *data);
........


音乐不错!!能否共享一下大大您的XM音乐集合?
2005-12-4 21:58
0
雪    币: 5275
活跃值: (476)
能力值: (RANK:1170 )
在线值:
发帖
回帖
粉丝
6
老林那天在工具版发了个网址,xm音乐大全啊。
有时也可以自己转,比如我N年前最喜欢玩的无悔的十字军战士的背景音乐,做注册机就很爽啊,转之。不过那个是amf格式的,要用转换工具。再发上两个小工具,amf2mod,mod2xm附件:amf2mod.rar 附件:mod2xm.zip

btw:dwing的库做的好,用起来更简单了。要是就是方便!
2005-12-4 23:44
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
7
再顶一下,欢迎更多资源!
2005-12-5 09:03
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
学习中:
2005-12-6 17:43
0
雪    币: 172
活跃值: (212)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
终于在BCB下搞定了,楼上的.lib不能用在BCB中,没办法,摸索半天,不容易
2005-12-11 22:01
0
雪    币: 389
活跃值: (912)
能力值: ( LV9,RANK:770 )
在线值:
发帖
回帖
粉丝
10
2006-1-6 19:02
0
雪    币: 389
活跃值: (912)
能力值: ( LV9,RANK:770 )
在线值:
发帖
回帖
粉丝
11
学会了,谢谢.
再请问有没有MIDI 转XM 的软件.
2006-1-6 19:11
0
雪    币: 389
活跃值: (912)
能力值: ( LV9,RANK:770 )
在线值:
发帖
回帖
粉丝
12
谢谢dwing tankaiha
2006-1-6 19:12
0
雪    币: 217
活跃值: (99)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
13
最初由 kyc 发布
学会了,谢谢.
再请问有没有MIDI 转XM 的软件.


由于midi的标准问题,现在还没有很好的MIDI转XM软件。
如果确实需要,可以试试Modplug Tracker,它有自带的midi音色库,可以导入MIDI,保存成XM。
http://www.skycn.com/soft/1897.html

由于目前系统都自带或安装了DirectX,直接播放MIDI也可以,代码量更少.
http://bbs1.pediy.com:8081/showthread.php?s=&threadid=19415
http://bbs.pediy.com/showthread.php?s=&threadid=19415
2006-1-7 10:58
0
雪    币: 389
活跃值: (912)
能力值: ( LV9,RANK:770 )
在线值:
发帖
回帖
粉丝
14
谢谢dwing ,可惜DirectXSDK太大了.
2006-1-8 10:06
0
雪    币: 217
活跃值: (99)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
15
最初由 kyc 发布
谢谢dwing ,可惜DirectXSDK太大了.


网上有DirectX 8.0SDK的精简版,只有include和lib。
另外VC7.1(VS2003)自带了DX8.1SDK.
2006-1-8 17:46
0
雪    币: 389
活跃值: (912)
能力值: ( LV9,RANK:770 )
在线值:
发帖
回帖
粉丝
16
我装了VC.NET VS2003
能否给我原代码.
THX!
2006-1-8 20:47
0
雪    币: 217
活跃值: (99)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
17
最初由 kyc 发布
我装了VC.NET VS2003
能否给我原代码.
THX!

我指的是MIDI的播放可以直接用DirectMusic播放.
XM格式很不流行,微软是不会直接支持的。
2006-1-9 15:24
0
雪    币: 458
活跃值: (41)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
最初由 dwing 发布
fmod的库设计的很好,据说魔兽世界的声音部分用的就是fmod库.
minifmod开源不错,可惜只支持xm.

我重新精简优化过这个库,使用下面简单的接口就可以用了:
extern "C" void __stdcall zXM_play(unsigned char *data);
........


抱歉,论坛发不了信息,所以回了几个月前的老贴。见谅。

dwing大大,我在RadASM 2.2.0.7 cao_cong汉化增强版中用你的库在连接时出现:
zXM.h(6) : error C2059: syntax error : 'string'
zXM.h(7) : error C2059: syntax error : 'string'
zXM.h(8) : error C2059: syntax error : 'string'

不知何故,能帮一下忙吗?

后来处理一下zXM.h如下:
#ifdef __cplusplus
#if __cplusplus
extern "C"{
 #endif
 #endif /* __cplusplus */
#pragma once
////////////////////////////////////////////////////////////////////////
extern  "C" void __stdcall zXM_play(unsigned char *data);
extern  "C" void __stdcall zXM_stop();
extern  "C" long __stdcall zXM_getms();
////////////////////////////////////////////////////////////////////////
 #ifdef __cplusplus
 #if __cplusplus
}
#endif
#endif /* __cplusplus */

却出现这问题:
tt.obj : error LNK2001: unresolved external symbol _zXM_stop
tt.obj : error LNK2001: unresolved external symbol _zXM_play
tt.exe : fatal error LNK1120: 2 unresolved externals

刚学C++,希望帮一下,谢了。

源码见附件,使用环境为RadASM2.2.0.7汉化增强版 完全安装。
上传的附件:
2006-4-28 15:18
0
雪    币: 264
活跃值: (30)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
19
把音乐数据放在一个数组里面,请问有没有自动将xm文件转换成C++标准数组的软件,这样就方便多了
2006-8-26 14:18
0
游客
登录 | 注册 方可回帖
返回
//