Я работаю над звуковым стохастическим осциллятором, и у меня возникают проблемы с scriptProcessorNode. Мой алгоритм использует случайное блуждание для определения динамических точек останова в форме волны и затем интерполирует между ними.scriptProcessorNode частота генератора
Поскольку точки останова перемещаются по оси x, я думал, что частота колебательного сигнала изменится, но есть только эффект фильтрации, и частота, по-видимому, определяется только размером буфера сценария ProcessorNode, который должен быть мощностью из 2 между 256 и 16384.
Как вы меняете частоту генератора scriptProcessorNode?
Вот мой синтез код:
scriptNode.onaudioprocess = function(audioProcessingEvent) {
walk(); //use random walk to generate new x/y position for each breakpoint
var outputBuffer = audioProcessingEvent.outputBuffer;
var lastPoint = 0;
var index = 0;
// linearly interpolate between the new breakpoint positions
for(var i = 0; i < breakpoint.length-1; i++) {
var y = breakpoint[lastPoint].y;
for(var channel = 0; channel <= 0;channel++) {
var outputData = outputBuffer.getChannelData(channel);
if(i != 0){
if(y >= breakpoint[i].y) {
while(y >= breakpoint[i].y) {
y = (breakpoint[i].m*index)+breakpoint[i].b;// y = m(x)+b
outputData[index] = y;
index++;
}
} else if(y <= breakpoint[i].y) {
while(y <= breakpoint[i].y) {
y = (breakpoint[i].m*index)+breakpoint[i].b;
outputData[index] = y;
index++;
}
}
}
}
lastPoint = i;
}
}
А вот ссылка на рабочий пример: http://andrewbernste.in/bernie/gendy011.html
Это все основано на программе синтеза Генди стохастического Яниса Ксенакис.
Спасибо!
кажется из кода 'M' должно быть изменение частоты права? – notthetup
@notthetup 'm' - это наклон в уравнении y = m (x) + b', который используется для линейной интерполяции между каждой точкой. Я работаю над попыткой отделить «scriptNode.bufferSize» от частоты, с которой форма волны записывается в буфер. Я изучал этот пример, создавая генератор scriptProcessorNode с шагом, не зависящим от буфера, но я еще не взломал его. http://sriku.org/blog/2013/01/30/taming-the-scriptprocessornode/#replacing-oscillator-with-scriptprocessornode. Любое руководство будет оценено! –