Я работаю над этой замечательной статьей: https://jackschaedler.github.io/circles-sines-signals/dft_introduction.html
Я хочу использовать объект Web Audio API PeriodicWave для реализации этой демонстрации:
Однако, когда я устанавливаю периодическую волну с этими настройками:
var real = new Float32Array([0,0,1,0,1]);
var imag = new Float32Array(real.length);
var customWave = context.createPeriodicWave(real,imag);
osc.setPeriodicWave(customWave);
Я вывожу волну, которая выглядит так:
Вот полный код: http://jsbin.com/zaqojavixo/4/edit Чтобы увидеть форму волны, нажмите несколько раз кнопку воспроизведения.
Я считаю, что они должны совпадать, так что вот мои вопросы:
- Я пропустил что-то фундаментальное в теории здесь или я просто неправильно его внедряю? Предполагается ли, что объект PeriodicWave выполняет то же самое, что иллюстрируется в статье?
- Если я ошибаюсь, как бы реализовать эту диаграмму в API веб-аудио? Я смог сопоставить ниже, подключив две разные синусоидальные волны разных частот к одному и тому же коэффициенту усиления node - как это отличается от использования объекта PeriodicWave?
- Я новичок в DSP и API веб-аудио - любое предлагаемое чтение будет оценено!
- Во-вторых, в моем примере мне нужно несколько раз нажать кнопку "воспроизвести звук", прежде чем на холст будут нарисованы правильные данные. Анализатор, похоже, находится за осциллятором, хотя analyser.getFloatTimeDomainData() после того, как я запустил осциллятор, какие-то мысли о том, что здесь происходит?
Изменить: Как отмечено в комментариях, мой график перевернут (на холсте 0,0 находится верхний левый угол).