Arduino Mozzi Space Core Exercise
Temporarily stymied in my Teensy adventures, I dropped back to Arduino for a Mozzi exercise. I've helped Emily through bits and pieces of putting sampled audio on an Arduino using Mozzi, but I had yet to run through the whole process myself.
The hardware side was kept as simple as possible: there's only a single switch wired to be normally open and momentarily closed. For audio output, I used the wire salvaged from the Project MC2 Pixel Purse(*) that was briefly a hacker darling due to its clearance-sale price. (As of this writing, the price is up to $39.58, far above the $6 - $8 leading to its "buy to take it apart" fame.) Since this cable was designed to be plugged into a cell phone, it had a TRRS plug that I rewired into an imitation of a monophonic TS plug by using the T wire and connecting RRS together into another wire.
With hardware sorted out, I dived into the software tasks. There were more than a few annoyances that make this task not very beginner-friendly. The Huffman audio compression utility audio2huff.py
had dependencies listed only in a comment block easily overlooked by beginners. They didn't all install in the same way (purehuff
required a download and install, while the others were installed via pip
.) And since they are a few years old and not actively maintained, they were all written for Python 2.
This will become more and more of a problem as we go, since Python 2 support has just officially ended at the start of 2020. Older Linux distributions would launch Python 2 when the user runs python
at the command line, and those that want to use Python 3 would need to run python3
. This is getting flipped around and some environments now launch Python 3 when the user runs python
and those that need the old stuff has to run python2
.
What happens when we run these utilities under Python 3? It'd be nice if the error message is "Hey, this needs Python 2" but that's not the reality. It is more likely to be something like "foobar is not iterable" completely bewildering to beginners.
To be fair, none of these are problems specific to Mozzi, there's a large body of work online that were written for Python 2 and waiting for someone motivated enough to bring them up to date.
Anyway, after those problems are sorted out, I got my Arduino to play a sound when the button is pressed. My test sound clip was from the game Portal 2: the ecstatic "SPAAACE!" emitted by the corrupted Space Core when it finally got its wish to go flying through space.
This Arduino Mozzi exercise is publicly available on Github.
[UPDATE]: "Wilhelm" exercise (round 2) has some improvements.
(*) Disclosure: As an Amazon Associate I earn from qualifying purchases. But you shouldn't buy a Pixel Purse until it drops back down to clearance prices.