поведение я собираюсь описать происходит в Chrome 44, но делает не происходит в Firefox 40.Web Audio осцилляторы неожиданно скользят с одной частоты на другую в Chrome
При создании генератора, установите его до частоты 220 Гц, а затем смените частоту на 440 Гц секунду позже, вы можете услышать отчетливый эффект портаменто: вместо мгновенного изменения с 220 до 440 генератор скользит от исходной частоты до новой.
Приведенный ниже код иллюстрирует это явление:
var ac = new AudioContext();
var osc = ac.createOscillator();
osc.connect(ac.destination);
osc.type = 'sawtooth';
osc.frequency.value = 220;
osc.start(0);
window.setTimeout(function() {
osc.frequency.value = 440;
}, 1000);
window.setTimeout(function() {
osc.stop(0);
}, 2000);
я просмотрел документацию для объекта OscillatorNode, и нет никакого упоминания об этом поведении.
Я также искал Google, и (на удивление) я не могу найти никаких других упоминаний об этом явлении.
Что происходит? Это не похоже на правильное поведение. Если бы мне нужна частота glide, я бы использовал метод linearRampToValueAtTime(). Установка частоты непосредственно на определенное значение должна просто ... сделать это.
Это просто ошибка? Я знаю, что этот API все еще находится в движении, но это кажется довольно вопиющим, чтобы быть ошибкой - это не пропустит самое поверхностное тестирование. Но я также не могу представить, чтобы Google реализовал его таким образом сознательно.
Самое главное: есть ли обходной путь?
Он работает «правильно» в Firefox, это проблема веб-кита, поэтому это также работает с Opera и Safari. –