pitchfinder.jsの使い方を学ぶ
色々分け合って、人の声から音階Pitchを
割り出したインですが・・
人の声って色々な周波数が入っていて
簡単ではないことが分かった。
pitchfinder.jsは周波数を割り出す様々なアルゴリズム
が入ったモジュールのようす。
使いたいんですがexapmleがなくて良くわからない。
というわけで勉強。
何が分からないっていうと、マイクからの入力をどうやってpitchfiner.jsへ渡してやるかっていうところなんですが。
Analyser経由でやってみた。
var oscillator = audioContext.createOscillator(); var analyser = audioContext.createAnalyser(); var float32Array = new Float32Array(2048); oscillator.connect(analyser); oscillator.start(); analyser.connect(audioContext.destination); var YINDetector = PitchFinder.YIN({sampleRate : 48000}); analyser.getFloatTimeDomainData(float32Array); var estimate = YINDetector(float32Array); console.log(estimate.freq);
こんなかんじでうまく動きました!!!
他のアルゴリズムでもやってみよう!!
結局、YIN以外のアルゴリズムではうまくできなかったけれども
以下にサンプルアプリを公開しています。参考にしてください。
YIN以外のアルゴリズムでできたらプルリクエストお願いします。
タブレットで実行したらマイク入力が小さいなぁ。
取りあえず、GainNodeをマイク入力とAnaliserの間に挟んでみた。