You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现歌曲BPM匹配:计算与目标BPM兼容的最近数值的方法

BPM兼容匹配计算逻辑及Python实现

核心原理

兼容BPM的定义为:目标BPM乘以2的整数次幂得到的所有数值(可理解为目标BPM的倍速/半速兼容值,节拍完全对齐),我们只需要在这些值中找到和原BPM最接近的数值即可。

计算步骤

  • 计算原BPM与目标BPM的比值:ratio = 原BPM / 目标BPM
  • 对该比值取以2为底的对数,四舍五入得到整数指数n:n = round(log2(ratio))
  • 最终匹配的兼容BPM为:匹配BPM = 目标BPM * (2 ** n)

示例验证

  1. 原BPM=150,目标BPM=84:
    ratio = 150/84 ≈1.7857,log2(1.7857)≈0.847,四舍五入得n=1,匹配BPM=84*2^1=168,符合示例结果。
  2. 原BPM=84,目标BPM=150:
    ratio =84/150=0.56,log2(0.56)≈-0.83,四舍五入得n=-1,匹配BPM=150*2^-1=75,符合示例结果。

Python实现代码

import math

def get_compatible_bpm(original_bpm: float, target_bpm: float) -> float:
    ratio = original_bpm / target_bpm
    n = round(math.log2(ratio))
    return target_bpm * (2 ** n)

# 测试用例
if __name__ == "__main__":
    # 示例1
    print(get_compatible_bpm(150, 84)) # 输出168.0
    # 示例2
    print(get_compatible_bpm(84, 150)) # 输出75.0

内容的提问来源于stack exchange,提问作者pigeonburger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:45:04