设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 4340|回复: 13
打印 上一主题 下一主题

[RMVX发布] RM 音频扩展模块(1.0.0904 初版)

[复制链接]

Lv2.观梦者

狂気の月兔

梦石
0
星屑
276
在线时间
1245 小时
注册时间
2009-4-7
帖子
879

贵宾

跳转到指定楼层
1
发表于 2011-9-4 17:35:23 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 铃仙·优昙华院·因幡 于 2011-9-4 18:34 编辑

依旧是无聊的产物. 具体的看最后的范例. 这里注意点:

1. 初版先支持 wav 格式文件, 下一版本或者下下版本或者 下下下版本 更新 ogg 和 MP3 等常用的格式.
2. 请确认安装有 VC运行库 和 Direct9.0c
3. 有什么疑问或者 BUG 或者建议请回帖询问.

使用方法:
1. 在脚本的最开始的地方, 可以是 Main 等脚本里, 插入初始化方法:
  1. SoundMusic.Init
复制代码
2. 再需要的地方加载文件(目前必须是 WAV 格式的)
  1. SoundMusic.LoadWav(文件名)
复制代码
3. 加载完成后可以使用 play pause stop 等方法来控制播放.

以下是范例:
SoundAndMusic.rar (314.91 KB, 下载次数: 98)

在以下是具体的方法说明:
1. Init 方法
初始化整个模块, 必须需要在一开始的时候调用这方法进行初始化工作. 无参数.

2. LoadWav
加载 WAV 文件.  参数为 文件名, 可以带路径, 但是不能出现中文字符.

3. play(type)
播放方法,  type 取值有两个:
  true: 一直喜欢播放, 直到 调用 pause 或者 stop 为止.
  false : 只播放一次

4. stop
停止. 如果再次播放的话, 音乐会从头开始.

5. pause
暂停. 再次播放的时候, 会从暂停的那个点开始播放.

6. dispose
释放, 再最后不需要使用的时候调用. 一般再退出游戏的时候使用.

7. setPlayPosition(startPosition, stopPosition)
设定播放的音乐段. 开始位置从 startPosition 秒 开始到 stopPosition秒. 如果 stopPosition 的值大于音乐的长度, 那么会缩小到这个音乐的播放时间. 如果 startPosition 为 0 , 表示从头开始. 这个音乐段的设定再下次调用这个方法的时候都一直有效. 如果 play 方法 是循环的话, 那么就循环播放设定的这部分.

8. volume
音量设定. 两个方法, setVolume 和 getVolume. 用来设定播放音量. setVolume 的值是 改变的量. 比如减少 10分贝, 就是 setVolume(-10) . 最大值是 0, 最小值是 -10000, 表示无声.

9. Frequency
播放速率. 两个方法, setFrequency 和 getFrequency. 用来设定播放速率. setFrequency 的值是 改变的量. 这个值表示对于平常速度的加速倍率. 比如 setFrequency(1.0) 的话, 就是在现有的速度上加速1背. 这个值不能为负数. 0 和 1 都是正常速度.

10. Pan
声道音量. 两个方法, setPan 和 getPan. 用来设定声道音量. 这个值越接近 -10000 的话, 那么左声道的声音就越大. 反之亦然. 0 为平衡状态. 就是两边声音一样大.

11. GetSoundFileTime
获取音乐的播放时长. 单位是 秒.



Lv3.寻梦者

梦石
0
星屑
1332
在线时间
675 小时
注册时间
2009-11-11
帖子
2790
14
发表于 2011-9-5 22:44:03 | 只看该作者
支持,wav的话怕有时候有点大,再支持OGG如何

点评

在写了. 不过明后天课程比较多, 可能要延后.  发表于 2011-9-5 23:52

嘿。嘿。嘿
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

13
发表于 2011-9-5 20:50:10 | 只看该作者
我表示win7启动RM从来不卡

点评

运行RM的游戏也不卡么 = = RM本身运行起来没问题 但是测试游戏的时候会有一段假死。 VX还好只在开始的地方假死……XP只要用到BGM就假死  发表于 2011-9-7 01:24
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
200
在线时间
127 小时
注册时间
2005-10-23
帖子
78
12
发表于 2011-9-5 16:06:11 | 只看该作者
本帖最后由 kinguanghua 于 2011-9-5 16:07 编辑

于是万年潜水党慕名而来,还不知道有这么好的东西来着,辛苦了

点评

只能用 wav = = 才不是什么好东西呢~~~ > <  发表于 2011-9-5 16:15
世界不会在意你的自尊,人们看的只是你的成就。在你没有成就以前,切勿过分强调自尊。
[b]本人姓名:异界的月[/b]
[b]空之轨迹菜单系列[/b]
2.01版增加任务菜单 地址[url=http://rpg.blue/viewthread.php?tid=135748&extra=page%3D1]http://rpg.blue/viewthread.php?tid=135748&extra=page%3D1[/url]
1.00版地址[url=http://rpg.blue/viewthread.php?tid=129463&extra=page%3D1]http://rpg.blue/viewthread.php?tid=129463&extra=page%3D1[/url]
[b]转投希艾拉工作室当脚本师,龟速制作中[/b]
[b]转职为三次元苦逼渣渣程序员[/b]
回复 支持 反对

使用道具 举报

Lv2.观梦者

神隐的主犯

梦石
0
星屑
283
在线时间
271 小时
注册时间
2008-2-22
帖子
7691

贵宾

11
发表于 2011-9-4 22:29:58 | 只看该作者
各种压力的猫君 发表于 2011-9-4 22:25
能不能想办法用WASAPI = = |||
win7用RM都要悲剧死了

独立使用是没有问题的.

但是问题在于, 默认的 RM 启动的时候, 卡的时间都在一个初始化音频上. 这个函数咱汇编过. 很奇怪.

就算是用独立的, 那么旧的还是会运行的.

咱的Win7更悲剧呢, 打开 VX 需要 25s .

点评

RGSS20XX.dll 这个 dll 是 RM 的核心部件. 所有的内容都在这里.  发表于 2011-9-4 23:53
能告知是啥DLL拖CD吗???  发表于 2011-9-4 23:51
一直断点下去会找到的, 只是再 EXE 里断 dll 的话, dll 的加载地址每次都不一样. 只能慢慢找, 很头疼.  发表于 2011-9-4 23:37
没办法用WASAPI绕过这个初始化么 QAQ 玩的话倒是不在意……测试游戏每次都有5s啊5s……  发表于 2011-9-4 23:34

《天空之城 —— 破碎的命运》
回复 支持 反对

使用道具 举报

Lv2.观梦者

(?????)

梦石
0
星屑
723
在线时间
1327 小时
注册时间
2011-7-18
帖子
3184

贵宾

10
发表于 2011-9-4 22:25:33 | 只看该作者
能不能想办法用WASAPI = = |||
win7用RM都要悲剧死了
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

9
发表于 2011-9-4 19:58:01 | 只看该作者
八云紫 发表于 2011-9-4 19:29
有一便士也是好的.

之前的想法是读取 DirectX 的缓冲区域, 把解码后的图片拿出来, 用 柳之一 的脚本内存 ...

吧Bitmap的指针传给C++,然后C++开线程刷新……我的想法是这样的,然后就可以弄一些比较复杂的战斗背景了=v=
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv2.观梦者

神隐的主犯

梦石
0
星屑
283
在线时间
271 小时
注册时间
2008-2-22
帖子
7691

贵宾

8
发表于 2011-9-4 19:29:51 | 只看该作者
yangff 发表于 2011-9-4 19:23
不是你去看看就知道,FFMpge的API各种奇葩
prepre_for_video
point=av_xxxxxx

有一便士也是好的.

之前的想法是读取 DirectX 的缓冲区域, 把解码后的图片拿出来, 用 柳之一 的脚本内存 copy 过去然后显示.

不过发现, 效率应该是极其低下. 每秒至少 24 张图片的切换, 就 RM 的速度.........  头疼~~~

《天空之城 —— 破碎的命运》
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

7
发表于 2011-9-4 19:23:17 | 只看该作者
铃仙·优昙华院·因幡 发表于 2011-9-4 19:14
不知道再说啥.  缓冲啥的是 DitectX 自动管理的. 如果要嵌入的话,  大概要自己写 Filter 啥的吧. ...

不是你去看看就知道,FFMpge的API各种奇葩
prepre_for_video
point=av_xxxxxx
......
while (true)
  get_frame
  matrix_fream
  show
  free_matrix
end
free_video
简单的流程是这样的……你懂的
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv2.观梦者

狂気の月兔

梦石
0
星屑
276
在线时间
1245 小时
注册时间
2009-4-7
帖子
879

贵宾

6
 楼主| 发表于 2011-9-4 19:14:13 | 只看该作者
yangff 发表于 2011-9-4 19:11
泪目,FFmpge的API超复杂……才怪
不过缓冲sama的难道开线程??

不知道再说啥.  缓冲啥的是 DitectX 自动管理的. 如果要嵌入的话,  大概要自己写 Filter 啥的吧.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-3 04:16

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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