ответ веб-аудиофильтра

#filter #web-audio-api

#Фильтр #web-audio-api

Вопрос:

У меня есть простой фильтр.

 var filter = ctx.createBiquadFilter();
filter.type = 'highpass';
filter.frequency.setValueAtTime(10,ctx.currentTime);
  

Я хотел бы видеть его частотную характеристику с использованием getFrequencyResponse

 window.setInterval(function() {
    var frequencyHz = new Float32Array(1),
        magResponse = new Float32Array(1),
        phaseResponse = new Float32Array(1);
    frequencyHz[0] = 10;
    filter.getFrequencyResponse(frequencyHz,magResponse,phaseResponse);
    console.log(magResponse);
},100);
  

Я ожидаю увидеть, [0.9565200805664062] какой правильный ответ для 10 Гц, но вместо этого я вижу, [0.0008162903832271695] какой ответ для 350 Гц, значения частоты по умолчанию.
Я могу получить разумный ответ, только если вручную задам значение, тогда как если я использую методы param, такие как setValueAtTime , ответ фильтра игнорирует их и выдает значение по умолчанию. Другими словами, getFrequencyResponse похоже, работает только в том случае, если значения фильтра заданы вручную, предотвращая анализ фильтра, когда значения задаются автоматизацией. Если это правда, то это похоже на нечто большее, чем просто небольшая проблема с api.

Кто-нибудь, пожалуйста, попробуйте что-нибудь похожее на это, и если это сработает (сомнительно), пожалуйста, опубликуйте код.

Ответ №1:

На самом деле, нет, это должно вступить в силу, но поскольку вы вызываете мгновенное изменение значения в СЛЕДУЮЩЕМ блоке обработки (вот что означает «.currentTime»), это изменение еще не было обработано, поэтому вы видите значение по умолчанию. Вы должны увидеть, например, изменения getFrequencyResponse с течением времени для setLinearRamp.

Комментарии:

1. Я также пробовал linearRamp, но безуспешно. Я просматриваю данные ответа несколько раз, используя интервал времени, поэтому независимо от типа параметра, который я использую, он должен быть обработан, и в какой-то момент я должен увидеть эффект. Попробуйте.

2. О, привет, Крис, не знал, что это ты. спасибо, что нашли время перейти по ссылке, если вы попали сюда именно так.