My midterm would consist of a small singing music box. It will read songs encoded as punched binary data on a strip of paper (probably standard receipt paper), and then will sing those songs as it draws the paper in a synthesized voice.
The user feeds a strip of punched paper into the back of the music box. The paper is pulled into the box’s drive wheels, and pulled forward for a few lines. At that point, the music box begins singing in a synthesized voice. The paper stops momentarily, until the music box reaches the end of a syllable, at which point the paper is drawn in for a few more lines, keeping time with the music.
Music boxes, piano rolls, and similar automatic musical technologies share some deep philosophical roots with modern digital computing (roots that have become obscured as computers have moved away from punched cards and tape for memory, towards optical and magnetic media. This exposes those roots, while also reimagining a traditional interface for the music box (a wooden box that moves through punched media) towards an application it was never intended for (reproduction of the human voice).
- SpeakJet voice synthesis chip
- Arduino (preferably on separate breadboard)
- Audio amplifier circuit of some sort (I’ve used LM386, but I’ll also investigate other options)
- Stepper motor
- Linkage between the stepper motor and a wheeled drive shaft
- LEDs and photoresistors for data input
- Miscellaneous resistors/transistors/capacitors for circuitry
- Thin sheets of wood for laser cutting (I’d like to move to something nicer than ply)
The music box will take DC input to power the microprocessor, data reader, and feed motor. The Arduino will store the minimum amount of information necessary to run the SpeakJet chip. Most of the program data will come from the paper feed. Each line (or each collection of lines) will encode a syllable, a pitch, and an amount of time to wait. The Arduino will interpret these bytes, further translate them into an appropriate signal for the SpeakJet, and output audio. The paper feed will be designed to only read in the necessary paper for the current note, in order to better follow the pace of the song. For now, I imagine that pauses in the song will be fixed, but for future extensibility, the music box could also support a MIDI metronome signal in order to synchronize with other devices or music boxes.