A couple of weeks ago, I started talking about starting a social network for short form audio. During the process of researching for this project, we realized we needed some way to visualize the audio on the interface. Since a waveform image is the de facto visual from of audio, we decided to go with that. But then I realized,

How do I generate these images with code?

So off I went looking for solutions online. I read various blog posts about using NumPy and Matplotlib but it felt like it was a bit too much overhead for me to learn how to use scientific Python tools for my purpose.

Eventually I found a StackOverflow answer that instead uses pydub to measure the loudness of an audio file at intervals. I now had an array of loudness levels for audio files! All I have to do now is draw the waveform.

After about half an hour of tinkering with Pillow, I had the waveform!

This is the generated waveform for clammbon’s Re-Chicago

Here’s one for Re-Folklore

Here’s the script that I wrote. I decided against making it a library because you’re probably going to want to have your waveform look different anyway.

Hope this post helped.