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

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

2005-12-4 02:45
17220

1、下载minifmod播放组件,地址是5c7K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3k6E0L8$3c8Q4x3X3g2G2M7X3N6Q4x3V1k6X3K9h3I4W2M7#2)9J5c8X3#2A6L8X3W2X3L8h3!0V1x3e0M7H3i4K6u0W2P5X3W2H3i4@1g2r3i4@1u0o6i4K6S2o6i4@1f1#2i4K6R3#2i4@1t1$3i4@1f1@1i4@1t1^5i4@1q4p5i4@1f1#2i4K6R3#2i4@1t1K6i4@1f1&6i4K6V1@1i4@1q4q4i4@1f1#2i4@1t1H3i4@1t1I4i4@1f1$3i4K6V1^5i4@1q4r3i4@1f1@1i4@1t1^5i4@1p5@1i4@1f1@1i4@1t1^5i4@1q4m8i4@1f1$3i4K6V1$3i4K6R3%4i4@1f1@1i4@1u0n7i4@1t1$3i4@1g2r3i4@1u0o6i4K6S2o6L8h3W2F1K9h3k6E0L8$3c8Q4x3X3g2D9K9h3u0Q4c8e0g2Q4z5e0u0Q4z5p5y4E0K9h3&6A6k6X3#2G2k6q4)9J5k6h3S2Q4c8e0y4Q4z5o6m8Q4z5o6t1`.
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


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 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
活跃值: (496)
能力值: (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
活跃值: (287)
能力值: ( 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。
323K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4y4C8P5h3y4F1i4K6u0W2j5$3!0E0i4K6u0r3M7$3!0X3N6q4)9J5c8U0p5^5z5e0N6Q4x3X3g2Z5N6r3#2D9

由于目前系统都自带或安装了DirectX,直接播放MIDI也可以,代码量更少.
7c9K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3u0T1M7K6q4Q4x3X3g2H3k6h3c8A6P5g2)9J5k6h3y4G2L8g2)9K6b7e0R3H3z5o6q4Q4x3V1k6K6K9r3!0%4N6r3S2J5k6h3q4V1i4K6u0W2M7r3S2H3i4K6y4r3M7#2)9K6c8q4)9J5y4Y4c8Z5M7X3g2S2k6r3W2V1i4K6y4p5x3e0V1@1x3e0f1`.
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
雪    币: 465
活跃值: (46)
能力值: ( 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
游客
登录 | 注册 方可回帖
返回