GStreamer の audiovisualizers

GStreamer の音声可視化ツールとして audiovisualizers があります。以前 spectrascope を紹介しましたが、これは audiovisualizers に含まれています。

$ gst-inspect-1.0 audiovisualizers
Plugin Details:
  Name:			audiovisualizers
  Description:		Creates video visualizations of audio input
  Filename:		/usr/lib/gstreamer-1.0/libgstaudiovisualizers.so
  Version:		1.0.0
  License:		GPL
  Source module:	gst-plugins-bad
  Source release date:	2012-09-24
  Binary package:	GStreamer Bad Plug-ins source release
  Origin URL:		Unknown package origin

  wavescope: Waveform oscilloscope
  synaescope: Synaescope
  spectrascope: Frequency spectrum scope
  spacescope: Stereo visualizer

  4 features:
  +-- 4 elements

gst-plugins-bad ということなので、品質は…ということもありますが、 wavescope synaescope spectrascope spacescope の4つが使えるようです。audiotestsrc で波形を作り、 audiovisualizers のフィルタで加工し、 autovideosink で表示してみます。 audiovisualizers の出力用 Pad の Capabilities を見ると、video/x-raw になっていて、このまま autovideosink につなぐと

:audiotestsrc0:
streaming task paused, reason not-negotiated (-4)
ERROR: pipeline doesn't want to preroll.

なんてエラーが出るので、autovideosink の前に、万能変換器 videoconvert をつなぎます。audiotestsrc 側でエラーになる原因は、よくわかりませんが。。。
では、pink-noise を可視化するサンプルです。

$ gst-launch-1.0 audiotestsrc wave=pink-noise ! wavescope ! videoconvert ! autovideosink

特に難しいところはありませんでした。wavescope を synaescope に変えたりすると、表示が変わります。wavescope でオシロスコープのようにトリガーがかけれると波形が見やすくなりますし、spectrascope のX軸がオクターブ分割されていると直感的にフィルタの選択ができるのですが、そこまでの機能は無いようなので、細かいところは自分で作らないとダメっぽいですね。