【问题标题】:Manipulating audio object to change bpm操作音频对象以改变 bpm
【发布时间】:2016-03-31 00:13:36
【问题描述】:

我正在研究操纵 html5 音频标签每秒节拍的可能性。

标签本身就提供播放速度。不幸的是,粒度不够细。

例如,假设一首现代流行歌曲,假设当前 BPM 值为 128。

我希望能够将曲目减慢 1bpm,甚至可能是 0.1bpm,或者甚至更好 0.05 bpm(这在今天对于几乎所有音频软件来说都是很正常的)。

另外,考虑有两种方法可以改变 BPM,一种是维护密钥,另一种是不维护它。

在第一种情况下,你加快了轨道,但音高没有改变,在第二种情况下,它会改变。

想知道是否有人一直在研究这个,直接操作字节数据。

【问题讨论】:

    标签: javascript html audio


    【解决方案1】:

    我喜欢这两种说法

    "According to WebAudio specification (http://www.w3.org/TR/webaudio/) you CAN" AND
    
    "When I found out that IE doesn't support webaudio, it made it pointless."
    

    在: http://www.html5gamedevs.com/topic/6255-can-you-change-audio-pitch-at-runtime/

    无论如何,“骄傲地偷窃”的一个不错的演示:

    https://github.com/urtzurd/html-audio

    【讨论】:

    • 该演示的问题是使用执行 x2 或 x0.5 音高的本机 api,并且如上所述,它不提供进行适当的音高转换/速度控制的粒度.
    • 为了改变 bpm,软件首先需要找出歌曲当前运行的 bpm。据我所知,这超出了浏览器的功能 - 请点击此处“stackoverflow.com/questions/657073/…”的链接,了解如何在服务器端对歌曲的 bpm 确定进行编码。从那里你可以轻松地在客户端使用 x0.02 或其他东西。例如。一旦你知道一首歌有 128 BPM,添加 1 BPM 需要你的音高系数为 1+1/128 => 1.0078125
    • html5 的替代品和 javascript 是 flash:见 blog.andre-michelle.com/2009/pitch-mp3 AND swftools.org ;预先确定 bpm nr 的问题,如果需要音调来准确地改变 bpm,则无法以这种方式解决
    • 你可以在javascript中确定bpm,并不难。 tech.beatport.com/2014/web-audio/beat-detection-using-web-audio另外,请不要在要求javascript实现时建议flash
    • 我不明白你的意思。根据规范,audio-param(->playbackRate 的类型)的值是浮点类型(w3.org/TR/webaudio/#idl-def-AudioParam)。所以不要将其设置为 0.99x,而是设置为 0.999x 或 0.9999x 或任何其他细粒度浮点值。要将 127.5 bpm 降低到 127.4 bpm,您的音高必须为 0.999215686x。
    猜你喜欢
    • 1970-01-01
    • 2010-10-03
    • 2011-07-09
    • 2021-04-12
    • 2021-10-26
    • 2011-12-17
    相关资源
    最近更新 更多