Я пытаюсь сэмплировать звук микрофона снова и снова (для передачи). Но после процесса звук немного сломан (опалубка). Вы можете попробовать это самостоятельно, если у вас есть микрофон:Звуковая заслонка после понижающей и повышающей дискретизации
FIDDLE:https://jsfiddle.net/q4yjfxqv/10/ (обновлено 21.07.16)
Вы слышите опалубку больше на более высоких частотах.
Я декодирую, просто удаляя половину массива
function newDownSample(data) {
var retBuffer = [];
for(var i=0;i<data.length;i++) {
if(i%2==0)
retBuffer.push(data[i])
}
return retBuffer;
};
И повышающую дискретизация (liniar)
function newUpSample(data) {
var retBuffer = [];
for(var i=0;i<data.length;i++) {
retBuffer.push(data[i])
if(i<data.length-1)
retBuffer.push((data[i]+data[i+1])/2);
else
retBuffer.push(data[i]);
}
return retBuffer;
};
Я пробовал другие методы интерполяции, как liniar, кубическую и Ланцош форма here, а также ... с тем же эффектом затвора.
Затвор всегда происходит на краю куска. Вы можете это услышать, перебирая размер блока размером от 1024 до 4096 в примере (это будет меньше).
Но почему? Кто-нибудь может искупить это и как его решить?
Любой намек ценится :)
очень приятно :) Мне нравится! – Cracker0dks