BitMasher is a portable audio platform with a retro-game inspired UI. It is an experiment in designing creative ways of applying and controlling audio effects to input audio through limited user inputs and a simple monochrome display.


Through a line-in input, a codec chip samples audio and sends the data to the Silicon Labs EFM32PG12 microcontroller (MCU). The MCU runs different scenes which contain audio effects that morph the audio samples before they are transmitted back to the codec for output.

In this implementation, four different scenes are available to transform input audio. Various characters and objects are mapped to different audio effects and interactions with them change effect parameters.

BitMasher Scenes


In Clouds, a cat may be controlled to jump onto one of two clouds (or both). Each cloud is mapped to a filter (left: low-pass filter, right: high-pass filter). Jumping on a cloud will cause it to descend, changing the corresponding filter’s cutoff frequency.


In Phone, a cat is using a payphone to call its friends. The calling cat itself is mapped to a band-pass filter. One of the cat’s friends is a beanie-wearing cat mapped to an amplitude+frequency modulating effect. The last friend is a mysterious cat on a mysterious assignment. It is mapped to a bit-crusher effect.

Pressing A activates the selected effect while pressing up or down changes the effect parameters (cutoff frequency, modulation rate, downsampling factor). Pressing B brings up the phonebook where the caller can select who to call.


Unicycle is a scene featuring a cat on a unicycle. Pressing right will cause it to pedal forward and ramp up audio playback similar to how a turntable or tape player’s motor spins up to speed. Pressing A causes the cat to chase a fish, pedalling faster and increasing audio pitch. Pressing left will cause the cat to pedal backward and give the appearance of “reverse” audio playback.


Glitch mimics a computer desktop with a “mouse” and “window.” Moving the window activates the granularizer effect and gives the impression of glitched audio. Grain size and the time to change grain is changed depending on the x-y coordinates of the window.

Development Links