Javascript 在不改变音高的情况下使用Web Audio API更改音频速度

Javascript 在不改变音高的情况下使用Web Audio API更改音频速度,javascript,audio,playback,web-audio-api,Javascript,Audio,Playback,Web Audio Api,是否可以在不使用Web audio API更改音高的情况下更改音频的节奏(以加载的MP3文件的形式) 我知道AudioBufferSourceNode上的属性,但这也会改变音高。我也知道和元素的属性,但我需要使用Web音频API 我对网络音频API非常陌生。有什么我能做的吗?有一种方法可以做到这一点——它叫做(链接指向pd理论链接,但该理论是通用的)。颗粒合成的思想是,声音以原始速度采样,但从每个采样点以不同的速度播放,但其优点是音高不会改变 这些Github Web音频粒度合成器链接可能会帮助

是否可以在不使用Web audio API更改音高的情况下更改音频的节奏(以加载的MP3文件的形式)

我知道AudioBufferSourceNode上的属性,但这也会改变音高。我也知道
元素的属性,但我需要使用Web音频API


我对网络音频API非常陌生。有什么我能做的吗?

有一种方法可以做到这一点——它叫做(链接指向pd理论链接,但该理论是通用的)。颗粒合成的思想是,声音以原始速度采样,但从每个采样点以不同的速度播放,但其优点是音高不会改变

这些Github Web音频粒度合成器链接可能会帮助您(第一个更好):1。 2.

如果WebAudio没有成功,还有其他选择;将mp3带入Audacity并以这种方式更改节奏,然后使用新文件!;)

相信我,我理解你的痛苦,我在大学呆了几个星期,试图用pd做完全相同的事情。差点把我的头发扯下来。我的教授向我介绍了颗粒合成的概念——挽救了这一天

祝你好运

当前版本的WebAudio不支持这一点,但可以使用:


Web Audio不支持这种开箱即用的功能。您需要专门的软件来更改声音文件的节奏。这是可能的,因为您可以通过AudioBuffer.getChannelData()进行低级别访问,但需要从头开始编码。你需要加速、减速还是两者兼而有之?@imcg我想两者兼而有之。你能解释一下如何做到这一点吗?根据你的研究,你知道“保持音高”是否会以本机方式添加到Web音频API中吗?谢谢Rachel!我刚才提到了铬问题。不确定那是不是最好的地方,但希望有人能看到:谢谢,谢谢。你太好了。首先,我要感谢我的父母激励我做到最好,感谢我的开发伙伴们不断突破技术的极限,最后感谢Chromium团队(提前)将这一精彩功能添加到Web Audio API中。你是真正的MVP。@hahaha你的奥斯卡奖等着你!!;)@BrianfizGerald我刚刚用w3c提出了它,他们最初开发了它。将自己添加到抄送列表中!这会降低播放速度,改变音高……但是你如何判断两者之间的关系呢?i、 e:哪种速度需要哪种音高转换?@FabienSnauwaert try
shiftotosemitones=shift=>-12*Math.log2(1/shift)
semitonesToShift=semitones=>(2**(1/12))**semitones
let semitones = 3;
let source = new Tone.Player(AudioBuffer);
let shift = new Tone.PitchShift(semitones);
source.connect(shift);
shift.toMaster();
source.start();