Utility to Generate Waveform JPG from CBR MP3

„waveform“ is a commandline utility for GNU/Linux, written in C, that takes a constant-bitrate (CBR) encoded MP3 file as input and generates waveform diagrams like this:

"waveform" Test #1: 16bit signed integer at 44100Hz, 1 channel.

„waveform“ Test #1: 16bit signed integer at 44100Hz, 1 channel.

"waveform" Test #2: 16bit signed integer at 44100Hz, 2 channels, joint stereo.

„waveform“ Test #2: 16bit signed integer at 44100Hz, 2 channels, stereo.

Availability

git clone https://gitlab.tk-sls.de/tilman/waveform.git

Browse sources: https://gitlab.tk-sls.de/tilman/waveform/tree/master

Remarks

My use case is to generate waveform bitmaps that can be used in the MyPlayer GUI to navigate through an MP3 more easily. The utility should reside on the webserver and generate waveform diagrams for MP3s as they are uploaded.

Some important things still need to be done:

  • Drawing algorithm: Apply an interpolation that renders a more realistic approximation.
  • Testing: For example with very long MP3s or different coding settings such as VBR.
  • Input formats: Support more audio formats (notably OGG Vorbis). Support VBR and JointStereo.
  • Output formats: Save the output image as b/w PNG (should be more efficient).

But it works, and I intend to integrate it into MyPlayer as soon as possible. Dependencies are kind of lightweight (libmpeg3, GD2). Debian GNU/Linux packaging („wheezy“) is underway, too.