Initial commit

A project log for Christmas Orchestra

Taking stepper music to absurd levels, with a dash of Christmas cheer

jeremy-weatherfordJeremy Weatherford 12/03/2014 at 14:410 Comments

Project is well underway, so I thought I'd publish some work-in-progress photos and information.

So far I have the RAMPS board happily driving three different scanners. Two of them have their CCFL lights hooked up to the MOSFETs on RAMPS for blinkenlights. Apparently I blew up the CCFL driver on the third scanner by connecting it backwards, so it has some LED strip lighting instead.

The four floppies were the easiest part, since they have their own electronics onboard. They just need +5V and GND on the power connector, then ENABLE, DIR, and STEP pins connected to the microcontroller. With the pins configured as OUTPUT, their sense is inverted, so digitalWrite(LOW) means to ground the pin, which makes the floppy actually do something. ENABLE needs to be LOW in order to do anything with the stepper (and it turns on the light, as a bonus). The floppies I have are 80 steps in each direction, and have built-in limits (electrical or mechanical) so it doesn't hurt them too bad to run into the limits (I hope, since it's the only way I have to home them).

I have the PC software mostly done, it reads raw MIDI files this time (instead of needing a MIDI-to-XML conversion), maps channels to instruments, reduces them to monophonic note sequences, applies octave shifts as needed and some post-processing (like a staccato effect to repeated notes) and sends commands out via serial to the Arduino.

I'm a little worried about the Arduino software because it's struggling with pitch accuracy when driving 9 instruments (go figure). Some more optimization is definitely in order. I may also have to punt and drop the higher parts down an octave where the timing accuracy isn't as important. I'm already dreaming about using an FPGA as a frequency generator to get the timing more accurate... maybe next time.

Tentatively planning to set up and film this the week of December 8th, stay tuned for updates!