Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Amplitude Painter

Spectral painter for use with anything that can do FM audio broadcasts. Tested with rpitx's pifm tool.


This is a stack project.

stack setup    #Install GHC if needed

stack build    #Build amppaint. Go get a cup of coffee while you wait.

stack install  #Install amppaint to $HOME/.local/bin


amppaint <infile> <outfile>

where your input is any image file (format does not matter as long as it can be read by JuicyPixels), and your output is a WAV file.

Your input image is expected to be a monochrome image. If it's not, amppaint will try to convert it to monochrome by taking the brightness of each pixel, keeping any brighter than 50% and rejecting any darker than 50%.

For best results, convert your image to monochrome manually before handing it over to amppaint.

Additionally, I use a width of 960px for a nice resolution. The wider your image, the larger your FFT will need to be, and the lower your waterfall update rate will need to be to view it properly, so don't go too insane with it.

NOTE: This tool is designed for waterfall views which scroll from top to bottom. If your tool scrolls from bottom to top you'll need to flip your image before processing it.


Head over to the rpitx page and follow the instructions for converting/transmitting with pifm. Tune in to the frequency with a tool that can view the waterfall like GQRX, and see your image. You may need to zoom in quite a bit to see it. make sure to use a high FFT size.

For GQRX, I generally start with

  • FFT Size: 65536
  • Rate: 20fps (or 25fps)
  • Zoom: 16x

and then mess with the rate and zoom as needed to fix up the aspect ratio while looking good.


Spectral painter for use with anything that can do FM audio broadcasts




No releases published


No packages published