Here’s a summary of the tech approach we used for the Brother scrapheap orchestra last year.
We started by cracking printers and scanners open and finding some wires that when zapped with electricity, would move. We tried wiring these wires to a hifi amplifier, so just trying to use the motor as a speaker. We found that we could put any sound we wanted and you could hear it. It was a process of trial and error, we tried following the cables of what looked like a motor and tried to zap it with some electricity to see if it moved, or sometimes we would just probe parts of the printer’s circuit board to see if it would do something.
After that we wrote some arduino code to switch a FET on and off at musical frequencies, so effectively driving the motor with a square wave. We made variations of this – e.g. pulse width modulation allowed us to control the volume to a point, and we could also introduce jitter into the timing to create a variable amount of noise. Quite early on we got the arduino to be controlled by midi, and plugged it into the computer with cheap USB MIDI converters. We did other versions that would power stepper motor drivers instead of FETs so we could control steppers.
Once we were happy with how we wanted to control the motors and steppers, we got Mike Harrison and Stefan Dzisiewski-Smith to design and build us “The PrintRattler” – a PCB based on an arduino, but with added things like MIDI, FET’s and stepper motor drivers to drive LEDs, motors and steppers. We had about 50 of these made.
This board was amazingly made and very versatile and robust. It was definitely worth the extra investment to get good quality connectors.
We got Will Cohen to compose the arrangement of Bob Dylan’s “The Times They Are A Changin” in Apple Logic Pro, which outputted MIDI via a MOTU box. Instead of using MIDI cables we ended up using minijacks as they were cheaper and easier to deal with – MIDI only requires 2 pins out of the 5 in the standard MIDI connector. Each printrattler had a midi input and output (i.e. a MIDI thru) which meant we could daisy chain them. We found that we could drive more than one device on each printrattler, which was a good thing because we ended up blowing a few up, so we didn’t have many to spare!
The software on the print rattler was arduino code. (here’s the code) It was pretty simple – we ended up not needing to use interrupts or anything clever like that. We just had a loop that received a byte of MIDI data if it was there to receive and flip the oscillators if they needed to oscillate – so the main loop was very fast, no delay() calls. Everything was a square wave – just FETs switching on and off plugged into a motor, or pulsing a stepper motor at the frequency of the oscillation.
void loop() { if(MIDI.hasDataWaiting()) { processMidi(MIDI.getByte()); } for(int i = 0; i < numOscillators; i++) { oscillators[i].update(); } }