Отключить микрофон в динамиках, но по-прежнему иметь возможность анализировать (createAnalyser) с помощью Web Audio Api?

Я пытаюсь создать узел анализатора, чтобы получать сигнал с микрофона и иметь возможность создавать графику с полученным входом. Но я не хочу, чтобы динамики все еще получали сигнал микрофона.

Источник (микрофон) -> Анализатор -> Назначение(?)

Пунктом назначения всегда являются динамики... Могу ли я поставить пункт назначения в пустоту или что-то подобное и при этом иметь возможность анализировать микрофон?

Я пытался поиграть с Volumne (узел усиления), но в конце концов это влияет на анализатор.

Подводя итог: мне нужно иметь возможность анализировать входной сигнал с микрофона, но отключать этот сигнал на динамиках.

РЕДАКТИРОВАТЬ: Вот что я делаю.

analyser = context.createAnalyser();
analyser.smoothingTimeConstant = 0.4;
analyser.fftSize = 64;

microphone.connect(analyser)
analyser.connect(context.destination);

Это работает нормально ... но я получаю звук в динамиках. Если я спрошу, например:

var data = new Uint8Array(analyzer.frequencyBinCount);
analyzer.getByteFrequencyData(data)

Тогда данные будут содержать ответ с микрофона.

Но если я добавлю усиление после этого

volume.gain.value = 0; 
microphone.connect(analyser)
analyser.connect(volume);
volume.connect(context.destination);

или я не подключаюсь к context.destination, тогда в массиве данных будут все 0 (нет ответа с микрофона)


person JsStack    schedule 27.12.2015    source источник


Ответы (2)


Добавьте узел усиления после узла анализатора и установите его значение равным 0. Итак..

var volume = context.createGain();
volume.gain.value = 0;

microphone.connect(analyser);
analyser.connect(volume);
volume.connect(context.destination);
person Stuart Memo    schedule 27.12.2015
comment
Это было первое, что я сделал, но я получаю массив 0 из анализатора - person JsStack; 27.12.2015
comment
Не могли бы вы проверить мой аналогичный вопрос? stackoverflow.com/questions/47799590/ - person Surz; 13.12.2017

На самом деле вам даже не нужно подключать анализатор. Он должен обрабатываться без подключения к месту назначения.

person cwilso    schedule 27.12.2015
comment
Я тоже так сделал, и анализатор тоже получил в ответ массив 0. - person JsStack; 27.12.2015
comment
Не могли бы вы проверить мой аналогичный вопрос? stackoverflow.com/questions/47799590/ - person Surz; 13.12.2017