Skip to main content

LCD + button hardware interface

Project description

SquishBox

The SquishBox is a compact add-on board and enclosure for Raspberry Pi (primarily Pi 3B+ and Pi 4) that combines:

  • high-quality stereo DAC with 1/4" outputs
  • MIDI in/out via TRS minijacks
  • 16x2 character LCD
  • pushbutton rotary encoder
  • breakout GPIO for extra controls, LEDs, and peripherals

This creates a portable embedded platform for audio projects such as synths, sound modules, pedalboard utilities, sequencers, and music players.

The software package includes ready-to-run applications plus a simple Python API for building your own.

Building/Obtaining

This repository includes schematics, PCB fabrication files, BOMs, and enclosure models for users who want to build their own hardware.

Kits and pre-built units are also available from the Geek Funk Labs store.

Installing

The SquishBox software is targeted for a Pi 3B+/4 running Raspberry Pi OS (64-bit, based on Debian 13 "Trixie") or newer. Other platforms may work but are not officially tested.

Before installing (even on a fresh system) it's advisable to first run sudo apt update && sudo apt upgrade to update your audio stack.

To run the install script, log in as a regular user and enter:

bash <(curl -sL geekfunklabs.com/squishbox)

Answer the prompts, wait for install to complete, and reboot the Pi to activate the LCD/button interface.

Using the SquishBox

On first boot, the SquishBox starts a launcher that lets the user choose an app to run or modify system settings. Selections can be made by turning the rotary encoder. Tapping the rotary encoder confirms a choice. Pressing and holding the encoder will cancel or return to the previous screen in most situations. To safely shut down the SquishBox before disconnecting power, use the "Shutdown" option in the "Exit" menu.

Writing SquishBox Apps

The squishbox python package provides access to the LCD, controls (buttons/encoders), outputs, and a set of menu-driven interaction helpers. Here is a simple example app:

import squishbox

sb = squishbox.SquishBox()
card = "hw:sndrpihifiberry"

sb.lcd.clear()
sb.lcd.write("Audio Test", row=0)
while True:
    i, option = sb.menu_choose(["Noise", "Sine", "Exit"], row=1)
    if option == "Noise":
        sb.shell_cmd(f"speaker-test -l2 -c2 -D{card}")
    elif option == "Sine":
        sb.shell_cmd(f"speaker-test -l2 -c2 -tsine -D{card}")
    elif option == "Exit":
        break

Support and Feature Requests

The SquishBox is under active development, and feature requests are welcome.

Please post requests/questions to Discussions on GitHub, and open issues or pull requests for bugs.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

squishbox-1.2.1.tar.gz (35.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

squishbox-1.2.1-py3-none-any.whl (41.7 kB view details)

Uploaded Python 3

File details

Details for the file squishbox-1.2.1.tar.gz.

File metadata

  • Download URL: squishbox-1.2.1.tar.gz
  • Upload date:
  • Size: 35.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for squishbox-1.2.1.tar.gz
Algorithm Hash digest
SHA256 91e9c4afb75989a26717b721288070a5674c891444f998096743b928b932facc
MD5 0ee070b56ec7f9c757de251460c18a3c
BLAKE2b-256 8ac7e9d4aec0b711cd40f61f2241397194b5902bc10ec26ac87a7d87b60c8719

See more details on using hashes here.

Provenance

The following attestation bundles were made for squishbox-1.2.1.tar.gz:

Publisher: python-publish.yml on GeekFunkLabs/squishbox

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file squishbox-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: squishbox-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 41.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for squishbox-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1aa8bbcaf764f677912691001504b8999a1b6e4bc35bc71589ba91a02cfdecc0
MD5 b7d7b46148f93dde551eb1043e393345
BLAKE2b-256 5761f2c3b0e6048e6e48db3937121f9ae7e9f9bf3318d2eb88bc41db01d908dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for squishbox-1.2.1-py3-none-any.whl:

Publisher: python-publish.yml on GeekFunkLabs/squishbox

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page