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

Project1

 找回密码
 注册会员
搜索
查看: 4342|回复: 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
获取音乐的播放时长. 单位是 秒.



Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
41515
在线时间
7591 小时
注册时间
2009-7-6
帖子
13502

开拓者贵宾

2
发表于 2011-9-4 18:55:39 | 只看该作者
本帖最后由 fux2 于 2011-9-4 18:56 编辑

这就是应求OGG循环的东西吗{:nm_6:}
然后发现还不支持OGG囧.{:nm_9:}

点评

花了一下午时间写的东东. 先简单的再说吧. ogg 明天更新.  发表于 2011-9-4 18:57
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

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

烫烫烫开拓者

3
发表于 2011-9-4 19:07:25 | 只看该作者
话说你那个RM的视屏播放我后来去翻了下FFMpge的API,然后我就蛋疼了,果断可以嵌入RM的bitmap啊!!!!

点评

拍肩, 于是就交给你了. 源码不知道丢那里去了  发表于 2011-9-4 19:09
不过缓冲的画音同步比较麻烦=v=  发表于 2011-9-4 19:07
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
599
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

4
发表于 2011-9-4 19:08:28 | 只看该作者
最亮的功能是暂停呢o.o
还是期待部分循环,特别是本身没有部分循环功能的mp3等文件啥的,直接在脚本里定义循环时间

点评

基本功能又都了.现在就是读取的时候区分格式就OK  发表于 2011-9-4 19:12
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

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

烫烫烫开拓者

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

点评

嗯,决定了,就导出个API万事哈哈  发表于 2011-9-4 19:12
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

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 啥的吧.
回复 支持 反对

使用道具 举报

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
简单的流程是这样的……你懂的

点评

哥们故意打错三次 FFmpeg?= =||  发表于 2011-9-7 22:02
另外FFMpge和DirectX一美分关系都没有  发表于 2011-9-4 19:23
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

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 的速度.........  头疼~~~

点评

试试再说吧  发表于 2011-9-4 20:30
那就直接把first和last指针拿走……换自己的  发表于 2011-9-4 20:28
啥情况?……表示没出现过……难道是RM的bitmap内存动态分配?  发表于 2011-9-4 20:28
极易出现内存不能为 Write  发表于 2011-9-4 20:19
论坛搜索“bitmap”什么的……或者直接复制61那段取bitmap指针的……  发表于 2011-9-4 20:12

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

使用道具 举报

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=

点评

可以去试试. 就是 不知道 Bitmap 的结构啥的.  发表于 2011-9-4 20:00
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv2.观梦者

(?????)

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

贵宾

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

使用道具 举报

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

本版积分规则

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

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

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

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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