Audio visualization with ffmpeg
ffmpeg -i input.mp3 -filter_complex \ "[0:a]avectorscope=s=640x518,pad=1280:720[vs]; \ [0:a]showspectrum=mode=separate:color=intensity:scale=cbrt:s=640x518[ss]; \ [0:a]showwaves=s=1280x202:mode=line[sw]; \ [vs][ss]overlay=w[bg]; \ [bg][sw]overlay=0:H-h,drawtext=fontfile=/usr/share/fonts/TTF/Vera.ttf:fontcolor=white:x=10:y=10:text='\"Song Title\" by Artist'[out]" \ -map "[out]" -map 0:a -c:v libx264 -preset fast -crf 18 -c:a copy output.mkv
ffmpeg
can use several filters to visualize audio: avectorscope, showspectrum, and showwaves. You can then place them where you want with overlay, and then add text with drawtext.
In the example above the audio is stream copied (re-muxed) instead of being re-encoded.
From FFmpeg Wiki: How to Encode Videos for YouTube and other Video Sharing Sites.