Tough Pi-ano

The Tough Pi-ano needs to live up to its name as a rugged, resilient instrument for a very good reason: kids.

Tough Pi-ano

Brian ’24 Hour Engineer’ McEvoy made the Tough Pi-ano as a gift to his aunt and uncle, for use in their centre for children with learning and developmental disabilities such as autism and Down’s syndrome. This easily accessible device uses heavy-duty arcade buttons and has a smooth, solid wood body with no sharp corners.

The Pi-ano has four octaves of buttons, each controlled by a Raspberry Pi Zero. Each Zero is connected to a homebrew resistor board; this board, in turn, is connected to the switches that control the arcade buttons.

Tough Pi-ano

The Tough Pi-ano is designed specifically for musical therapy, so it has a clean and uncomplicated design. It has none of the switches and sliders you’d usually expect to find on an electronic keyboard.

Tough Pi-ano

The simple body, with its resilient keys, allows the Tough Pi-ano to stand up to lots of vigorous playing and forceful treatment, providing an excellent resource for the centre.


Peter Stevens avatar

I want to try playing it!

AndrewS avatar

Nice project. I wonder if using some MCP23017 chips would have cut down on the number of separate Pi Zeros needed?

qprs avatar

Yeah. On Pi Zero per octave sounds like overkill.

Dougie avatar

The problem with an MCP23017 is that you only get one interrupt signal for any state change in a GPIO bank (there’s two INT pins one for GPIOA, one for GPIOB) so there’s no way to be polyphonic. I assume you’d use GPIOA for one octave and GPIOB for the next.

If the RPi is sitting with a thread waiting to process a state change on any pin then it’s probably fast enough to be polyphonic. We’ve not seen the code running the current MK1 Tough Pi-Ano.

It would be interesting to see whether Brian could try two MCP23017s with one RPi to give his four octaves and whether the keypress detection is fast enough.

The other way to detect keypresses is to hack a regular USB keyboard controller and each keypress becomes a HID key code on a /dev/input/event0.

Mike Cook avatar

“so there’s no way to be polyphonic.”
I would disagree, the interrupt is simply an easily monitored single output that prompts the code to look at the whole register through the SPI bus.

Phil Atkin avatar

Yikes! Pi Zero per octave indeed. Somebody’s synth code is not exactly efficient …

Phil Atkin avatar

… or had I read further (!) it would have become clear the excess of Pi Zeros was about switch / key detection, not synthesis. Sincerest apologies offered. And I’ve put a lot of thought into Fatar-style matrixed diode keybeds in the past, you so need a lot of GPIOs to sense 3 octaves of keys, but I would have thought it possible to do this on a single Zero. However, at $5 a pop why not use them, it’s interesting that they have become the cheapest ‘interfacing electronics with a brain’ that you can buy, even after the SD card is factored in.

Nice project, and more apologies offered for apparent snarkiness in previous comment.

Justin avatar

I was thinking this would make a good makey makey project also. Only downside is needing a computer to run it.

Comments are closed