以指定的 BPM 录制音频

Having An Audio Recorded In An Specified BPM

我正在使用 recorder.js 来录制页面中正在播放的几个音频元素(输出声音)。我想知道如何设置一个数字,作为录制音频的 BPM(每分钟节拍数)。

//connectRecorder Function
function connectRecorder() {
    if (audioSources == '') {
        audioContext = new AudioContext();
        gainNode = audioContext.createGain();
        for (var i = 0; i < audiosClass.length; i++) {
            audioSources.push(audioContext.createMediaElementSource(audiosClass[i]));
            audioSources[i].connect(gainNode);
        }
        gainNode.connect(audioContext.destination); 
    }
}

//recordButton Click Handler
function recordButtonClickHandler() {
    if (recordButton.value == 'Start Recording') {
        recorder = new Recorder(gainNode);
        recorder.record();
        recordButton.value = 'Stop Recording';
    } else {
        recorder.stop();
        recorder.exportWAV(function (blob) {
            hiddenRecordExportLink.href = URL.createObjectURL(blob);
            if (recordSelect.value == 'wav') {
                hiddenRecordExportLink.download = 'record.wav';
            } else {
                hiddenRecordExportLink.download = 'record.mp3';
            }
            hiddenRecordExportLink.click();
        });
        recordButton.value = 'Start Recording';
    }
}

具体来说,您无法设置 BPM,但可以设置播放速率。如果您知道您的源曲目是 120 BPM,并且您想将其提高到 130 BPM,您可以这样设置播放速率:

audio.playbackRate = 130 / 120; // 1.083333