Используя приведенный ниже код, я пытаюсь записать ровно одну полосу звука с помощью tonejs` Recorder (оболочка вокруг MediaRecorder).
const userMedia = new Tone.UserMedia();
await userMedia.open();
const recorder = new Recorder();
userMedia.connect(recorder);
Tone.Transport.scheduleOnce(t => {
console.log('starting recorder', t);
recorder.start();
}, "4:0:0");
Tone.Transport.scheduleOnce(async t => {
const data = await recorder.stop();
// ... when I load the audio data into a SamplePlayer and inspect the buffer:
// * the length in seconds is 1.97 (I expect 2.0 for a bar when the tempo is 120 bpm)
// * the length in samples is 87317 (I expect 88200 for 2 secs w/ 44.1 sample rate)
}, "5:0:0");
После записи я загружаю аудио данные в SamplePlayer
и проверьте буфер:
- длина в секундах составляет 1,97 (я ожидаю 2,0 для бара при темпе 120 ударов в минуту)
- длина в сэмплах составляет 87317 (я ожидаю, что 88200 за 2 секунды с частотой дискретизации 44,1) ), причем начало записанного звука точно соответствует такту.