User Tools

Site Tools


The Story Recorder was built by Makers' Alliance for the Treehouse installation at IngenuityFest 2023.

The concept: a kiosk that attendees could use to record their own story based on written prompts around the Treehouse, or play back a story left by someone else at random. Originally there was some talk of having it play back the one of the various story prompts to the user at random before recording, but was scrapped in favor of a single generic “record your story after the tone” prompt.

The recorder was built and programmed between August & September 2023.

Project Team:

  • Dina (Ingeneers, initial concept)
  • Sam (Ingeneers/MA, construction, electronics, programming, documentation, installation)
  • Cal (Ingeneers/MA, construction, installation)
  • Ian (Ingeneers/MA, construction, installation)
  • Alex (MA, “you really should clear the keyboard buffer, somebody's going to hit record repeatedly”, “I told you so”)

Electronics Component Parts:

  • Raspberry Pi 4 - main compute component
  • Cheap 5.1 channel USB soundcard (via eBay)
  • Random powered computer speakers (from the MA stash)
  • microphone (a Sound Professionals stereo microphone I had around)
  • Input mechanism. This was comprised of:
    • Raspberry Pico microcontroller board, with a screw terminal breakout attachment (sourced from Adafruit and Amazon, respectively)
    • two LED-illuminated arcade buttons, one for play, one for record (via Adafruit)
    • two “secret buttons” to provide an admin interface to review or erase the last recording (random Radio Shack SPST momentary buttons from the MA stash)

The input mechanism uses PRK Firmware to provide a USB HID keyboard device to the Pi 4 that can be modified via PicoRuby script.

The main program on the Pi is a shell script that calls the linux arecord/aplay commands as needed. The four conditions it can currently perform are:

  • Record: plays a prompt (selected at random, though there's only one right now), a (Quindar start) tone, and then records for 30 seconds, followed by a (Quindar stop) tone to indicate recording has completed. Filenames include the prompt that was presented and a date/timestamp.
  • Play: plays back a recording from the recordings folder at random
  • (Admin Play): This secret button plays back the last recording. State is only maintained while the script is running, so the notion of the last recording is lost if the Pi is restarted.
  • (Admin Erase): This secret button erases the last recording. Same State caveats as the (Admin Play) button. Once the last recording is erased, a new recording would have to be recorded for this button to function again.

Physical enclosure:

The device was built from some wood scraps found in Osborn 1 (two pieces of plywood and 2 small pieces of 2×4), along with some Mcmaster-Carr supplied metal brackets and some incredibly tiny wood screws needed to attach the Pico's breakout board (also from McMaster-Carr). Arcade button holes were drilled with Forstner bits and filed to needed dimension. Most everything else in the enclosure was attached with zipties and strategically drilled holes. Instructions were provided via a laminated printout (kind of last minute). A last minute “Engineered By Makers' Alliance” sticker was also added to show who actually built the device.


  • An early design discussion involved using speech-to-text to monitor what's recorded. I briefly played with an open-source program to test this out (a non-cloud solution, as the device effectively has no internet connection during the Festival). I found its results on clear, well-recorded speech from my laptop incredibly disappointing, and did not resemble what I recorded at all. It would have been far worse with the background noise at the festival and random voices of attendees.
  • There were some minor wiring/soldering issues that had to be addressed on Saturday morning during the festival. More time for testing would have helped with this?
  • An attendee repeatedly pressed the record button getting it stuck in a loop of recording. This led to an emergency software patch being added to the script to clear the keyboard buffer at the end of every action, and a once second delay between end-of-action, and being ready for the next action.
  • Hopefully I didn't break the micro-HDMI connectors on the Pi, but I had difficulties attaching a small monitor at some point in fixing things on Saturday, and had to do some crazy stuff involving Internet Sharing on my Mac in order to SSH into the Pi to continue fixing things.
  • Over the course of the festival, roughly 85+ recordings had been successfully made. Some serious, some silly, some blank. One Rickroll.

Future Plans:

  • Add an actual “Recording” light driven by the Pi's GPIO to indicate recording is in progress. Use whatever shell GPIO interface is in vogue these days.
story_recorder.txt · Last modified: 2023/10/12 17:18 by sdh7

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki