14
次編輯
RichadoWonosas(對話 | 貢獻) 小 (增加警告内容) |
RichadoWonosas(對話 | 貢獻) (修改bpm计算内容;调整公式显示) |
||
第36行: | 第36行: | ||
====BPM计算==== | ====BPM计算==== | ||
对于其他情况,首先计算长键起始时间戳所处的实际BPM(bpm_real): | 对于其他情况,首先 根据起始时间戳所处的timing区间的BPM(bpm) 计算长键起始时间戳所处的实际BPM(bpm_real): | ||
*若bpm的绝对值大于等于256(|bpm| >= 256),则 bpm_real = |bpm| / 2; | |||
*否则,bpm_real = |bpm| 。 | |||
而后,计算计算用BPM(bpm_calc): | 而后,计算计算用BPM(bpm_calc): | ||
bpm_calc = bpm_real * density | |||
其中density为判定点密度因数(TimingPointDensityFactor) 。 | |||
====长键实际物量计算==== | ====长键实际物量计算==== | ||
第56行: | 第57行: | ||
若ln_beats严格小于1.5,则长键物件有1物量;若ln_beats大于等于1.5,则物量(note_count)按如下方法计算: | 若ln_beats严格小于1.5,则长键物件有1物量;若ln_beats大于等于1.5,则物量(note_count)按如下方法计算: | ||
note_count = [ln_beats * 2] - 1 | note_count = [ln_beats * 2] - 1 | ||
其中方括号代表向下取整。 | 其中方括号代表向下取整。 | ||
第85行: | 第86行: | ||
下文在计算判定点时,会使用判定点基于长键起始时间戳的'''判定点相对拍数(judge_beat)''' 来表示。其与'''判定点时间戳(judge_time)''' 的关系为: | 下文在计算判定点时,会使用判定点基于长键起始时间戳的'''判定点相对拍数(judge_beat)''' 来表示。其与'''判定点时间戳(judge_time)''' 的关系为: | ||
judge_beat = (judge_time - ln_start) / bpm_calc | judge_beat = (judge_time - ln_start) / bpm_calc | ||
其中ln_start为长键的起始时间戳。 | 其中ln_start为长键的起始时间戳。 | ||
第93行: | 第94行: | ||
*当ln_beats < 0.5时,judge_beat = 0。 | *当ln_beats < 0.5时,judge_beat = 0。 | ||
*当0.5 <= ln_beats <= 1时,judge_beat = (ln_beats - 0.5) / 2。 | *当0.5 <= ln_beats <= 1时,judge_beat = (ln_beats - 0.5) / 2。 | ||
*当ln_beats > 1时,对于长键的第n个判定点,其相对拍 | *当ln_beats > 1时,对于长键的第n个判定点,其相对拍 数 judge_beat_n = (n / 2) - 0.25。 | ||
===Arc物件的首尾连接的判定点时间偏移=== | ===Arc物件的首尾连接的判定点时间偏移=== | ||
第105行: | 第106行: | ||
**若其ln_beats < 1,则不变; | **若其ln_beats < 1,则不变; | ||
**对于其他情况: | **对于其他情况: | ||
**#计算最大的比ln_beats小的0.5的整数倍 | **#计算最大的比ln_beats小的0.5的整数倍 拍 im_beats = [ln_beats * 2] / 2,其中方括号表示向下取整; | ||
**#计算im_beats对应的时 | **#计算im_beats对应的时 长 im_len = im_beats * 60000 / bpm_calc; | ||
**#如 | **#如 果 note_len - im_len <= 1,则将最后一个判定点移动至倒数第二个判定点的位置;否则保持不变。 | ||
==判定区间计算机制== | ==判定区间计算机制== |
次編輯