使用riffwave.js获取精确的笔记

时间:2013-03-10 19:17:44

标签: javascript html5-audio

是否有人知道是否可以从riffwave.js这样的javascript库中获取精确的音符(C,C#,D,Eb等)?

该演示让我觉得有可能,但我不确定如何转置piano frequency  对于生成的波形文件所需的数据数组中的给定注释。

1 个答案:

答案 0 :(得分:8)

当然!你想要创建一个从键到频率的映射函数(可能只是一个字典)。

要使用riffwave.js合成给定频率,您可以执行类似这样的操作

function simHertz(hz) {
    var audio = new Audio();
    var wave = new RIFFWAVE();
    var data = [];

    wave.header.sampleRate = 44100;

    var seconds = 1;

    for (var i = 0; i < wave.header.sampleRate * seconds; i ++) {
        data[i] = Math.round(128 + 127 * Math.sin(i * 2 * Math.PI * hz / wave.header.sampleRate));
    }

    wave.Make(data);
    audio.src = wave.dataURI;
    return audio;
}

var audio = simHertz(1000);
audio.play();