铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 5079|回复: 13

[通用] 替换音乐引擎到Fmod(附源码和执行程序下载)

  [复制链接]
发表于 2013-4-20 10:45 | 显示全部楼层 |阅读模式

马上注册,结交更多侠友!

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
本帖最后由 lsl_lsq 于 2013-4-23 13:57 编辑

因为SDL的有问题,现在都将音乐引擎换成了Bass。

可是Bass并不支持PSP,所以将音乐引擎又转成了Fmod。

Fmod支持的设备更多,而且不用音色库,至于速度和占用资源,这个没有比较不清楚

可执行文件下载:http://dl.vmall.com/c0eyfq0o7j

源文件下载:
http://dl.vmall.com/c0cdh3caws


【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2013-4-20 13:54 | 显示全部楼层
回复 lsl_lsq 的帖子


找到原因了:是下面这个代码

  1.         if (!result) {
  2.                 JY_Error("Can't initialize device");
  3.         JY_Error("FMOD error! (%d) %s\n", result, FMOD_ErrorString(result));
  4.                 g_EnableSound=0;
  5.         }
复制代码

应该是:
  1.         if (result) {
  2.                 JY_Error("Can't initialize device");
  3.         JY_Error("FMOD error! (%d) %s\n", result, FMOD_ErrorString(result));
  4.                 g_EnableSound=0;
  5.         }
复制代码



【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-4-20 17:20 | 显示全部楼层
啊高手哦。。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-4-21 00:10 | 显示全部楼层
看的头晕晕的 真的是高手吗
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-4-21 22:37 | 显示全部楼层
FMOD我做有例子,播放MIDI和MP3音乐都可以
但是感觉性能比较差,在安卓上运行有点卡,没有BASS这样好,而且库也挺大的。。。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2013-4-22 14:59 | 显示全部楼层
回复 蓝烟清 的帖子


Bass不支持PSP啊!Fmod还有好的地方就是不需要音色库,可直接播放midi。

另外想问下,JY_PlayWAV(const char *filename)函数的移植问题,Fmod移植后,战斗音效一直重复,而不是只一次就停止。

这个是Fmod的代码,后来又加了Channel代码也不行,到底是哪儿的问题
  1.         if(WavChunk[currentWav]){          //释放当前音效
  2.         //Mix_FreeChunk(WavChunk[currentWav]);
  3.         
  4.                 //bass
  5.                 //BASS_SampleStop(WavChunk[currentWav]);
  6.         // WavChunk[currentWav]=0;

  7.                 //Fmod
  8.                
  9.                 result = FMOD_Sound_Release(WavChunk[currentWav]);
  10.         ERRCHECK(result);

  11.         WavChunk[currentWav]=0;
  12.         }

  13.         //WavChunk[currentWav]= Mix_LoadWAV(filename);  //加载到当前音效
  14.        
  15.         //bass
  16.         //WavChunk[currentWav] = BASS_SampleLoad(0, filename, 0, 0, 1, 0);

  17.         //Fmod
  18.         //WavChunk[currentWav] =  FSOUND_Sample_Load (0,filename,0, 0, 0);

  19.     result = FMOD_System_CreateStream(systemMusic, filename, FMOD_HARDWARE | FMOD_LOOP_NORMAL | FMOD_2D, 0, &WavChunk[currentWav]);
  20.     //(result);


  21.         if(WavChunk[currentWav]){
  22.                
  23.                 //Mix_VolumeChunk(WavChunk[currentWav],g_SoundVolume);
  24.                 //Mix_PlayChannel(-1, WavChunk[currentWav], 0);  //播放音效

  25.                 //bass
  26.                 //ch = BASS_SampleGetChannel(WavChunk[currentWav], 0);
  27.                   //BASS_ChannelSetAttribute(ch, BASS_ATTRIB_VOL, (float)(g_SoundVolume / 100.0));
  28.                   //BASS_ChannelFlags(ch, 0, BASS_SAMPLE_LOOP);
  29.                   //BASS_ChannelPlay(ch, 0);

  30.                 //Fmod
  31.                 result = FMOD_System_PlaySound(systemMusic, FMOD_CHANNEL_FREE, WavChunk[currentWav], 0, &channel);
  32.         ERRCHECK(result);

  33.                 currentWav++;
  34.                 if(currentWav>=WAVNUM)
  35.                         currentWav=0;
  36.         }
  37.        
复制代码


【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-4-22 15:48 | 显示全部楼层
回复 lsl_lsq 的帖子

FMOD是不需要音乐库,但是它需要dls的帮忙,可能一般的操作系统有这个文件,但是安卓系统是没有的

默认情况下是LOOP的,需要设置
另外你没有设置音量大小


这是我的代码
  1. //播放音效
  2. int JY_PlayWAV(const char *filename)
  3. {

  4.   if(g_EnableSound==0)
  5.                 return 1;   

  6.         if(WavChunk[currentWav]){          //释放当前音效
  7.         FMOD_Sound_Release(WavChunk[currentWav]);
  8.         WavChunk[currentWav]=NULL;
  9.         }
  10.        
  11.         FMOD_System_CreateSound(fmod_system, filename, FMOD_DEFAULT | FMOD_LOOP_OFF , 0, &WavChunk[currentWav]);

  12.         if(WavChunk[currentWav]){
  13.                 FMOD_Sound_SetMusicChannelVolume(WavChunk[currentWav], 0, (float)g_SoundVolume/100);
  14.                 FMOD_System_PlaySound(fmod_system, FMOD_CHANNEL_FREE, WavChunk[currentWav], 0, &channel);
  15.                
  16.                
  17.                 currentWav++;
  18.                 if(currentWav>=WAVNUM)
  19.                         currentWav=0;
  20.         }
  21.         else{
  22.                 JY_Error("Open wav file %s failed!",filename);
  23.         }
  24.         return 0;
  25. }
复制代码




【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-4-22 16:57 | 显示全部楼层
FMOD_LOOpNORmal当然循环了
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-4-23 09:16 | 显示全部楼层
result = FMOD_System_CreateStream(systemMusic, filename, FMOD_HARDWARE | FMOD_LOOP_NORMAL | FMOD_2D, 0, &WavChunk[currentWav]);
改成
result = FMOD_System_CreateStream(systemMusic, filename, FMOD_HARDWARE | FMOD_LOOP_OFF | FMOD_2D, 0, &WavChunk[currentWav]);

试试?
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2013-4-23 14:19 | 显示全部楼层
回复 蓝烟清 的帖子


谢了!

是这个Loop的问题,增加了Channel代码,没有问题了。

不过,确实需要DLL文件,Bass好像不需要。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-4-23 17:09 | 显示全部楼层
太专业了,不懂。。。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-5-6 04:37 | 显示全部楼层
dls跟音色库本质上是同个东西。bass可以指定更好的音色库也算是多了个选择吧,fmod应该也能自己指定。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-5-9 12:21 | 显示全部楼层
本帖最后由 kimonline 于 2013-5-9 12:26 编辑

fmod 支持PSP 注册开发用户,
貌似我们自制程序开发用不了的
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2013-5-9 12:30 | 显示全部楼层
本帖最后由 lsl_lsq 于 2013-5-9 12:30 编辑

回复 kimonline 的帖子


确实,FMOD虽然支持PSP,但必须是注册的游戏开发人员才能得到Fmod的PSP支持库,并没有公开下载的。

所以,最终还是转回用SDL_Mixer了。


【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-5-3 13:14

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表