Wizard Notes

音楽信号解析の技術録、作曲活動に関する雑記

Python matplotlibでリアルタイムスペクトログラム描画の実装

matplotlibはリアルタイムオーディオ信号処理ソフトウェア開発に使えるかどうか確かめるために、以下の記事で事前調査を行い、実際に実装してみました。

www.wizard-notes.com

Twitterの投稿にもあるように、音楽の再生と合わせることを考えると、なんちゃって描画(スペクトログラムっぽいものが)で許されるのであれば使えるかなという印象です。

上の動画だと、

  • モノラル(Mid信号)のみ分析
  • 動画の条件は、Fs=44100, ブロックサイズ4096で、1/4重複(3072サンプル飛ばし)
  • 表示するスペクトルは全帯域(2049ビン)ではなく、480ビンまで削減

のような感じで描画する信号やタイミングをサボって、ようやく信号再生に間に合いそうなfpsになっています。

基本的に描画回数と描画する信号(行列)のサイズを削ればいいので、例えば、

  • N回に1回だけ描画
  • ダウンサンプリング
    • 適当な信号値でよければ、単純な間引きを使う手も
  • 周波数変換方法の変更(定Q変換とか)

などの工夫はできそうです。

ソースコード

github.com

f:id:Kurene:20210129213953p:plain