查看: 4878|回复: 25

[讨论] 记得MV有BGM无缝循环XP是能够实现?

[复制链接]
梦石
0
星屑
35248
在线时间
4171 小时
注册时间
2007-12-15
回帖
9489
发表于 2018-5-7 21:35:30 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 89444640 于 2018-5-7 21:52 编辑

这个是音乐相关的,不是太明白,
很多游戏音乐,都会有个无缝的循环,而且一些bgm支持无缝循环,xp以外的版本已经做到了,虽然不知道怎么实现的,
XP有办法通过增加驱动或者什么什么的实现吗?稍微说一下就好,用处不是太大,而且这类BGM似乎还是特殊格式?

音乐的无缝结构可能是这样
开头 中间 结尾
无缝是这样
开头 中间 中间 中间…………循环
那么即是说,可能可以通过制定BGM名称
播放开头结束00:15……到X分X秒时梯跳转到 00:15 循环……
循环方式来实现无缝?
因为XP默认情况下只存在场景切换bgm,战斗切换bgm,bgm结束播放,淡出,记忆还原这几种情况,所以就算地图上循环播放永远不播放结尾那段,也应该没影响。


然后是辐射4或者上古卷轴5的BGM切换方式
当然这个不是ARPG的话,没用。试着问一下,看看我想法对不对
BGM会分几个阶段
战斗曲最明显
开篇 低级冲突 中级冲突 激战  高潮  结尾
在战斗时明显能看出来,
杂鱼战斗BGM会在你结束战斗的几秒后,切换播放结尾这段的旋律。
BOSS战斗会在你打的时间很久或者明显陷入危机时候切换成更加激烈的
这个,是通过计算战斗总时间实现的吗?因为敌人明显泥沼蟹王 泥沼蟹女王什么的相当难缠,会切换特殊的bgm也很正常

评分

参与人数 2赞 +2 收起 理由
2256538860 + 1
翠靈月 + 1 ogg档,无缝循环详细:https://rpg.blue/th.

查看全部评分

梦石
0
星屑
3372
在线时间
1123 小时
注册时间
2015-12-24
回帖
236
发表于 2018-5-7 21:43:25 | 显示全部楼层
没想到超过字数了
无缝循环详细:https://rpg.blue/thread-250673-1-1.html

点评

那脚本在最后一页给出了不支持汉字文件名的解決方法..  发表于 2018-5-7 22:51
不行……实现起来过于麻烦,还得改其他脚本,而且依然是卡,脚本年代过久,冲突难免多,正常播放吧。  发表于 2018-5-7 22:46
可能是这个,我看一下https://rpg.blue/thread-123326-1-1.html  发表于 2018-5-7 22:43
那个附件里面似乎有XP用的脚本..  发表于 2018-5-7 21:58
原来xp的rtp音乐是midi文件,那么在不考虑脚本的情况下就只能使用midi才能达到循环...  发表于 2018-5-7 21:57

评分

参与人数 1赞 +1 收起 理由
89444640 + 1 谢谢~

查看全部评分

回复

使用道具 举报

梦石
0
星屑
39236
在线时间
11155 小时
注册时间
2009-3-15
回帖
4768
发表于 2018-5-7 21:56:52 | 显示全部楼层
本帖最后由 soulsaga 于 2018-5-7 22:01 编辑

日站找到这个..
Audio-EX音频流播放脚本
最后更新时间:2016/04/10 22:21:50
它对应于RPG MAKE XP不兼容的ogg文件的流播放。

它对应于RPG并发VX兼容循环播放,并且还支持播放中间的歌曲。

它也相应于辅助背景音乐,立体定向,混响等,带来进一步的表现力。

在ogg文件中,它可以支持音频打包和保护音频文件。(您获得比Audio-ProtectEX格式更强的保护。)

当窗口不活动时,暂停BGM(新DLL中的所有声音)。

播放歌曲时您可以随时加载和加载歌曲。


怎么用?不知道..http://www.whiteflute.org/wfrgss ... C%E3%83%B3%E3%82%B9
注意..以下不是脚本
[pre lang="ruby"]Audio-EX:参考
Audio-EX这是关于音频流播放脚本的详细信息。

评论
环路启动
通过采样编号设置循环播放开始的长度。

LOOPLENGTH
通过采样编号设置从LOOPSTART到循环结束位置的长度。

▲返回页首
定制点
BATTLE_DURING_PLAYBACK
  默认值:true(TrueClass)
  设定值:true(TrueClass)/ false(FalseClass)
从战斗BGM转换到地图BGM时,指定是否中途播放。

REPEAT_BATTLE_FLAG
  默认值:0(Fixnum)
  设定值:0至5000(Fixnum)
指定开关ID将地图背景音乐设置为战斗BGM。但是,必须启用上述BATTLE_DURING_PLAYBACK。

USE_PACKFILE
  默认值:false(FalseClass)
  设定值:true(TrueClass)/ false(FalseClass)
指定是否使用包文件。预先准备包装文件时,需要使用后述的包装工具。

BGM_PACKFILE
  默认值:“./Audio/bgm.bin”(字符串)
  设定值:文件路径(相对)(字符串)
指定BGM包文件的位置。

BGS_PACKFILE
  默认值:“./Audio/bgs.bin”(字符串)
  设定值:文件路径(相对)(字符串)
指定BGS包文件的位置。

ME_PACKFILE
  默认值:“./Audio/me.bin”(字符串)
  设定值:文件路径(相对)(字符串)
指定ME包文件的位置。

SE_PACKFILE
  默认:“./Audio/se.bin”(字符串)
  设定值:文件路径(相对)(字符串)
指定SE包文件的位置。

▲返回页首
RGSS嵌入式模块音频
模块方法
ogg_init
  在:没有
  out:----
初始化使用ogg。如果您不这样做,ogg的流式播放将无法使用,所以我们建议您在游戏开始时运行它。

部署
  在:没有
  out:----
我们将释放ogg用法。当你完成使用它时,你需要调用它并在游戏结束时释放它。

is_primary_bgm_position
  在:没有
  out:整数
获取当前主要BGM的播放位置。

is_secondry_bgm_position
  在:没有
  out:整数
获取当前辅助背景音乐的播放位置。

is_bgs_position
  在:没有
  out:整数
获取当前的BGS播放位置。

is_voice_position_number
  in:n(Fixnum)(0  -  15)
  out:整数
获取当前语音的播放位置。当您想要同步语音时使用此功能。

is_voice_position_filename
  在:文件名(字符串)
  out:整数
获取当前语音的播放位置。当您想要同步语音时使用此功能。

voice_length_number
  in:n(Fixnum)(0  -  15)
  out:整数
获取正在播放的当前语音的长度。

voice_length_filename
  在:文件名(字符串)
  out:整数
获取正在播放的当前语音的长度。

voice_permil_number
  in:n(Fixnum)(0  -  15)
  out:Fixnum
以单位获取当前音色播放位置的进度。当您想要同步语音时使用此功能。

voice_permil_filename
  在:文件名(字符串)
  out:Fixnum
以单位获取当前音色播放位置的进度。当您想要同步语音时使用此功能。

voice_playing_number?
  in:n(Fixnum)(0  -  15)
  out:true(TrueClass)/ false(FalseClass)
检查语音是否正在播放。

voice_playing_filename?
  在:文件名(字符串)
  out:true(TrueClass)/ false(FalseClass)
检查语音是否正在播放。

is_primary_bgm_checkpoint
  在:检查点(整数)
  out:true(TrueClass)/ false(FalseClass)
检查主BGM是否已达到某个时间。这通常用于音频同步。

is_secoundry_bgm_checkpoint
  在:检查点(整数)
  out:true(TrueClass)/ false(FalseClass)
检查辅助背景音乐是​​否达到了特定的时间。这通常用于音频同步。

is_bgs_checkpoint
  在:检查点(整数)
  out:true(TrueClass)/ false(FalseClass)
它检查BGS是否已达到某个时间。这通常用于音频同步。

primary_bgm_cue
  在:没有
  out:----
当主BGM的下一个演奏被保留时,它发送队列。

暂停
  在:没有
  out:----
暂停ogg文件的性能。

简历
  在:没有
  out:----
Ogg取消文件性能的暂停。

seek_memorise
  在:没有
  out:----
获取当前正在播放的ogg文件的播放位置。

SEEK_SET
  在:没有
  out:----
接下来,设置要播放的ogg文件的播放位置。在调用此方法之前,您需要使用seek_memorise进行设置。这是用来中断中间的歌曲并从中间重放它。如果没有seek_memorise调用,它将被设置为第一个位置。

seek_clear
  在:没有
  out:----
删除获取的播放位置的内存。

bgm_reserve
  在:文件名(字符串)
  在:检查点(整数)
  在:autoplay(TrueClass / FalseClass)
  在:音量(Fixnum)
  in; pitch(Fixnum)
  在:pos(整数)
  out:----
我会预定BGM。如果包装完成,从那里加载。
(因为原文件是在预订的时间阅读,即使非常大,时间滞后是最小的)
检查点时,您所指定的播放位置的值。当自动播放设置为true时,按照检查点指定的时间调用BGM并播放它。
当自动播放为false时
,在使用primary_bgm_cue方法发送队列后,将在检查点指定的时间播放BGM。
当BGM停止或表演进入中间时,BGM预约将被取消。

bgm_play
  在:文件名(字符串)
  在:音量(Fixnum)
  in; pitch(Fixnum)
  在:pos(整数)
  out:----
我会玩BGM。在ogg文件的情况下,流播放被执行。如果包装完成,从那里加载。
(但是,如果原始文件非常大,则会出现时间延迟。)

※注意
在ogg文件中,淡入淡出时间内不应该有多个BGM更改。要在一分钟内更改多个BGM,请将交叉淡入淡出时间设置得较短。
bgm_fadein
  在:文件名(字符串)
  在:fadetime(数字)
  在:音量(Fixnum)
  in; pitch(Fixnum)
  out:----
我会玩BGM的淡入。它淡入淡出时间秒。即使它不是ogg文件,它也会淡入。

bgs_play
  在:文件名(字符串)
  在:音量(Fixnum)
  in; pitch(Fixnum)
  在:pos(整数)
  out:----
我们将玩BGS。在ogg文件的情况下,流播放被执行。如果包装完成,从那里加载。
(但是,如果原始文件非常大,则会出现时间延迟。)

※注意
在ogg文件中,淡入淡出时间内不应该有多个BGS更改。在一分钟内更换多个BGS时,请设置较短的淡入淡出时间。
bgs_fadein
  在:文件名(字符串)
  在:fadetime(数字)
  在:音量(Fixnum)
  in; pitch(Fixnum)
  out:----
我会玩BGS淡入。它淡入淡出时间秒。即使它不是ogg文件,它也会淡入。

me_play
  在:文件名(字符串)
  在:音量(Fixnum)
  in; pitch(Fixnum)
  out:----
我会打我。在ogg文件的情况下,流播放被执行。如果包装完成,从那里加载。
(但是,如果原始文件非常大,则会出现时间延迟。)

se_play
  在:文件名(字符串)
  在:音量(Fixnum)
  in; pitch(Fixnum)
  out:----
我会玩SE。如果包装完成,从那里加载。
(但是,如果原始文件非常大,则会出现时间延迟。)

voice_play
  在:文件名(字符串)
  在:音量(Fixnum)
  in:pitch(Fixnum)
  in:number(Fixnum)(-1-15)
  out:----
我会播放声音。如果包装完成,从那里加载。
(但是,如果原始文件非常大,则会发生时间延迟。)
作为声音播放可以获取播放时间和播放位置。
请在SE数据中包含语音。

bgm_fade
  在:时间(Fixnum)
  out:----
BGM淡出开始。

bgs_fade
  在:时间(Fixnum)
  out:----
BGS淡出开始。

me_fade
  在:时间(Fixnum)
  out:----
我淡出开始。

cross_fade
  在:fade_time(Fixnum)
  out:----
以1/1000秒的增量指定交叉淡入淡出时间。如果您将此间隔设置得太长,我们不建议经常短时间更改BGM。

second_play
  在:文件名(字符串)
  在:音量(Fixnum)
  in; pitch(Fixnum)
  在:余额(%)(Fixnum)
  在:pos(整数)
  out:----
我们将播放次要BGM。平衡应该在0到100之间。如果包装完成,从那里加载。
(但是,会发生时间滞后。)

平衡
  在:余额(%)(Fixnum)
  out:----
调整主要背景音乐和辅助背景音乐之间的平衡。请指定辅助BGM在0和100之间的比例。

second_stop
  在:没有
  out:----
停止辅助背景音乐的演奏。

voice_stop
  在:没有
  out:----
我会停止播放这个声音。

bgm_pan
  in:pan -10000至10000(Fixnum)
  out:----
设置主BGM的立体声位置。将其设置为-10000和10000之间的值。负值在左边,正值在右边。指定0以居中。

second_pan
  in:pan -10000至10000(Fixnum)
  out:----
设置辅助背景音乐的立体声位置。将其设置为-10000和10000之间的值。负值在左边,正值在右边。指定0以居中。

bgs_pan
  in:pan -10000至10000(Fixnum)
  out:----
设置BGS立体声。将其设置为-10000和10000之间的值。负值在左边,正值在右边。指定0以居中。

me_pan
  in:pan -10000至10000(Fixnum)
  out:----
设置ME刻板印象。将其设置为-10000和10000之间的值。负值在左边,正值在右边。指定0以居中。它将从下一个ME的表现中起作用。

se_pan
  in:pan -10000至10000(Fixnum)
  out:----
设置SE的立体声位置。将其设置为-10000和10000之间的值。负值在左边,正值在右边。指定0以居中。它将从下一个SE的表现中起作用。

voice_pan
  in:pan -10000至10000(Fixnum)
  out:----
设置语音的立体声位置。将其设置为-10000和10000之间的值。负值在左边,正值在右边。指定0以居中。它从下一个声音的表现开始生效。

bgm_reverb
  在:0至29(Fixnum)
  in:true(TrueClass)/ false(FalseClass)
  out:----
将预设混响应用到主BGM。实际上,从下一个主要BGM的表现来看,这是有效的。你不能在歌曲中间混响,所以请小心。当您应用混响时,您会听到远处的声音,并且音量通常会变小。根据混响的类型,有些东西难以听清,所以要小心。

second_reverb
  在:0至29(Fixnum)
  in:true(TrueClass)/ false(FalseClass)
  out:----
将预设混响应用于辅助背景音乐。实际上,下一个二级BGM的表现实际上是有效的。你不能在歌曲中间混响,所以请小心。当您应用混响时,您会听到远处的声音,并且音量通常会变小。根据混响的类型,有些东西难以听清,所以要小心。

bgs_reverb
  在:0至29(Fixnum)
  in:true(TrueClass)/ false(FalseClass)
  out:----
将预设混响应用于BGS。事实上,它将从BGS的下一个表现中起作用。你不能在歌曲中间混响,所以请小心。当您应用混响时,您会听到远处的声音,并且音量通常会变小。根据混响的类型,有些东西难以听清,所以要小心。

me_reverb
  在:0至29(Fixnum)
  in:true(TrueClass)/ false(FalseClass)
  out:----
将预设混响应用于ME。事实上,从ME的下一次演出开始,它将会很有效。当您应用混响时,您会听到远处的声音,并且音量通常会变小。根据混响的类型,有些东西难以听清,所以要小心。

se_reverb
  在:0至29(Fixnum)
  in:true(TrueClass)/ false(FalseClass)
  out:----
将预设混响应用于SE。其实这从下一个SE的表现来看是有效的。当您应用混响时,您会听到远处的声音,并且音量通常会变小。根据混响的类型,有些东西难以听清,所以要小心。

voice_reverb
  在:0至29(Fixnum)
  in:true(TrueClass)/ false(FalseClass)
  out:----
在音色上放置一个预设混响。其实它来自下一个声音的表现。当您应用混响时,您会听到远处的声音,并且音量通常会变小。根据混响的类型,有些东西难以听清,所以要小心。

bgm_effect
  in:0到7(Fixnum)
  in:true(TrueClass)/ false(FalseClass)
  out:----
将效果添加到主要BGM。实际上,从下一个主要BGM的表现来看,这是有效的。你不能在歌曲中间应用效果,所以请小心。

second_effect
  in:0到7(Fixnum)
  in:true(TrueClass)/ false(FalseClass)
  out:----
向辅助背景音乐添加效果。实际上,下一个二级BGM的表现实际上是有效的。你不能在歌曲中间应用效果,所以请小心。

bgs_effect
  in:0到7(Fixnum)
  in:true(TrueClass)/ false(FalseClass)
  out:----
我将对BGS应用效果。事实上,它将从BGS的下一个表现中起作用。你不能在歌曲中间应用效果,所以请小心。

me_effect
  in:0到7(Fixnum)
  in:true(TrueClass)/ false(FalseClass)
  out:----
给ME增加一个效果。事实上,从ME的下一次演出开始,它将会很有效。

se_effect
  in:0到7(Fixnum)
  in:true(TrueClass)/ false(FalseClass)
  out:----
我将对SE应用效果。其实这从下一个SE的表现来看是有效的。

voice_effect
  in:0到7(Fixnum)
  in:true(TrueClass)/ false(FalseClass)
  out:----
为语音添加效果。其实它来自下一个声音的表现。

bgm_effect_detail
  在:项目0到6(Fixnum)
  在:值(Fixnum)
  out:----
输入主要BGM效果的详细信息。有必要提前启用该效果。

second_effect_detail
  在:项目0到6(Fixnum)
  在:值(Fixnum)
  out:----
输入辅助背景音乐效果的详细信息。有必要提前启用该效果。

bgs_effect_detail
  在:项目0到6(Fixnum)
  在:值(Fixnum)
  out:----
输入关于BGS效果的详细信息。有必要提前启用该效果。

me_effect_detail
  在:项目0到6(Fixnum)
  在:值(Fixnum)
  out:----
输入关于ME效果的详细信息。有必要提前启用该效果。

se_effect_detail
  在:项目0到6(Fixnum)
  在:值(Fixnum)
  out:----
输入SE效果的详细信息。有必要提前启用该效果。

voice_effect_detail
  在:项目0到6(Fixnum)
  在:值(Fixnum)
  out:----
输入音效的详细信息。有必要提前启用该效果。

primary_bgm_length
  在:没有
  out:整数
获取主要BGM的长度。

secondry_bgm_length
  在:没有
  out:整数
获取辅助BGM的长度。

bgs_length
  在:没有
  out:整数
获取BGS的长度。

primary_bgm_loop?
  在:没有
  out:true(TrueClass)/ false(FalseClass)
返回主要BGM是否已走完。

secondry_bgm_loop?
  在:没有
  out:true(TrueClass)/ false(FalseClass)
返回辅助BGM是否进行了一轮。

bgs_loop?
  在:没有
  out:true(TrueClass)/ false(FalseClass)
返回BGS是否已经过去。

▲返回页首
如何在中间播放歌曲?
如果您想在中间播放歌曲,请按照以下步骤进行设置。在这个例子中,假定当从战斗音乐转换到地图背景音乐时,将在中途执行回放。在其他情况下,请每次更改。


Audio.seek_clear
Audio.seek_memorise
(戦闘曲演奏処理)
要在战斗结束时返回地图背景音乐,请指定如下。


Audio.seek_set
(マップBGM演奏処理)
内部如何处理?
在切换到战斗BGM之前,我们正在运行Audio.seek_clear和Audio.seek_memorise。
这将清除不再需要的旧歌曲的播放位置,并获得必要的地图BGM的播放位置。
在战斗之后,在切换到地图背景音乐之前,执行Audio.seek_set。
这具有加载由Audio.seek_memorise记录的回放位置的作用。
这个过程正在播放歌曲的中间。

什么是相应的文件?
在中间播放时,如果地图背景音乐是​​一个ogg文件,则可以。战斗BGM不需要是ogg。相反,你想中途弹奏的歌曲必须是ogg。

[/pre]

点评

或且你看看上一楼给的连接..下面有提到附件里有XP用的脚本..  发表于 2018-5-7 22:35
应该不会报错吧..  发表于 2018-5-7 22:32
有一部分wav不知道什么原因转不了ogg,转了以后无法播放,goldren转换的。如果要求所有的都转换否则挑错可用度就低。  发表于 2018-5-7 22:28
我想回放BGM的中间部分。我想从这首歌的延续中演奏。 我们推荐使用Audio-EX音频流播放脚本。该脚本实现了BGM的中途播放。 唯一可以使用的音乐格式是ogg,因此转换对于ogg以外的音乐文件是必需的。请预先警告。   发表于 2018-5-7 22:26
也许不一定要放弃,照他的说明来看应该是可以达到中途循环的功能,不过我脚本盲+对xp不熟看不懂使用方法帮不上忙  发表于 2018-5-7 22:24
回复

使用道具 举报

梦石
0
星屑
222
在线时间
23 小时
注册时间
2018-5-4
回帖
9
发表于 2018-5-8 09:12:28 | 显示全部楼层
将一段BGM切割成你要循环的开头、高潮、结尾,然后开始和结束都做成淡入淡出之类的接缝效果,还是在需要的时候放你要的那段BGM。。。有点蠢的做法

点评

不错,这个思路很好,可以根据需要使用还不用动程序,~谢谢~  发表于 2018-5-8 10:42
万年巨坑填埋中 ——
原Dream Fantasy - KARMA : Cat's Dream...
敬请期待(十年后)。
回复

使用道具 举报

梦石
0
星屑
42235
在线时间
6017 小时
注册时间
2006-11-10
回帖
6966
发表于 2018-5-8 15:59:14 | 显示全部楼层
本帖最后由 灯笼菜刀王 于 2018-5-8 16:01 编辑
将一段BGM切割成你要循环的开头、高潮、结尾,然后开始和结束都做成淡入淡出之类的接缝效果,还是在需要的时候放你要的那段BGM。。。有点蠢的做法


咱试过这个方法,但是做不到无缝循环。

昨天咱刚搞了一段直升机飞行的BGS,用剪辑软件把它切成了听起来头尾相接的形式。

然而放到游戏里,实际运行的时候,前后还是有明显的淡入淡出,不知道原因~~

可能是格式问题吧,不是用ogg, 用的是MP3

点评

也肯能是火车轨道声音和鸟鸣声音,容易形成无缝不易被察觉?  发表于 2018-5-8 16:43
BGS 的话,我这里有风声循环和虫鸣鸟叫循环和火车轨道的循环,有ogg有wav,听不出来有接缝啊?  发表于 2018-5-8 16:41
我记得好像听说过这么个事,mp3格式会在音乐开头读取一些版权信息什么的因此会造成延迟,转换成ogg格式试试呢?  发表于 2018-5-8 16:40
回复

使用道具 举报

梦石
0
星屑
222
在线时间
23 小时
注册时间
2018-5-4
回帖
9
发表于 2018-5-8 16:24:01 | 显示全部楼层
灯笼菜刀王 发表于 2018-5-8 15:59
咱试过这个方法,但是做不到无缝循环。

昨天咱刚搞了一段直升机飞行的BGS,用剪辑软件把它切 ...

有可能是游戏系统上自带的一点淡入淡出?这样的话干脆我们就不用淡入淡出了 直接切割好放进去
万年巨坑填埋中 ——
原Dream Fantasy - KARMA : Cat's Dream...
敬请期待(十年后)。
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部