市來健吾の日記

プログラマ、(元)物理屋(ナノテク、流体)

phase vocoder ネタの続き


  • WaoN の改良も念頭に、 short-time Fourier transform の spectrum analyser もどきを書く。というか、 spectrogram を描く graphical なコードを書く。 既存のコードで不満なのは、その frequency scale で、 普通は fft の bin number でそのまま描くか(データがこの単位で出て来るので、 見栄えはよい)、一応そいつの log scale を提供はしてるけど (気の利いた奴でも frequency を Hz で書く程度)、 知りたいのはそんな数字ではなくて、実は音程だったりする。 まぁ適当にスケールすりゃいいんでしょって話だが、 画面見てる人間にそれをさせるのは手抜きだし、 クリアに音程が見える spectrogram を(音を聞きながら)見たいなぁ、と。 これが一つの gWaoN のイメージだった。(ちなみに別のイメージってのは、ずっと妥協しまくって、 simple な midi editor みたいなもの。)

  • freewheeling の影響 (cf.5/18/2006) で、 今書いてるコードは SDL を使ってるけど、 やっぱり gtk+ にするかなぁ、と思案中。 いずれにせよ、お勉強しないといけないんだけど。

  • 右の絵は、今の時点での screenshot. FFT length は 16384 も取っている。オクターブ毎に線を入れていて、 C-1 (midi note 0) から G9 (midi note 127) まで (A4 が 440 Hz)。 低音部がスカスカなのは、対応する bin がないから。 sample rate 44100 Hz の音源で 16384 もとれば C2 より上くらいなら 半音程度の解像度は見える、ということ。 amplitude だけ素朴に見る分には。 もちろんこのアプローチだと、時間解像度が犠牲になる。あと多分、 phase から frequency の補正を考えたりすると、低音部の精度もあがるのかな? (cf.1/14/2007)

    • 備忘録(半分、自分のため): A4 ($n=69$) が $f=440$ (Hz) であることを基準に、周波数の log を
      1 オクターブ (は周波数で 2 倍) で半音刻みで 12 個、つまり 12 等分しろ、 ということで、 midi note number $n$ の周波数は
      $f(n) = \exp\left(\log (440) + (n-69) \frac{\log (2)}{12}\right)$.

  • ふと回想、記録によると WaoN をはじめたのは 1996 年冬、 1998 年の秋に geocities で公開した訳だが、 最近この辺りの研究分野の reference とか見るに、 その頃少し本気を出して何かやってたら遊び以上の(つまり研究業績みたいな)ものに なってたかもなぁと思ったり。まぁその時も今も、 特に目新しいアイデアがあった訳ではないんだが。