|Arduino Mega (with MIDI Shield) Inserted in Place of the Key Assigner's 8049 Microprocessor|
OK, stepping back to the proper place in the story, the last work that I had reported was on extracting the timing of the control signals generated by the 8049 microprocessor that is at the heart of the Polysix's key assigner. My plan is to replace the 8049 with an Arduino, so I needed full knowledge of all the control signals. Since that post, I've begun developing software for an Arduino Mega 2560 to recreate all of the control signals generated by the Polysix's 8049. That work has been going well, so I felt that it was time to actually start plugging into the Polysix...it was time to make the rubber hit the road.
To physically get the control signals from the key assigner PCB to the Arduino (and back), my plan is pop the 40-pin 8049 out of its DIP socket in the Polysix and to connect a bunch of wires between the Arduino and the now-empty socket in the Polysix. Basically, this is a less elegant version of same approach used by these folks, who are replacing the microprocessor in a Prophet 600 with another type hobbyist microprocessor, the Teensy++. Whereas the Teensy already comes in a nice 40-pin DIP form and can be dropped directly into the Prophet 600 board (with a minor mod), the pin-out for the Polysix is radically different -- too different to enable easy use of the Teensy. So, unfortunately, I'm stuck using the much-larger Arduino Mega.
To get the wires from the empty 8049 socket on the Polysix PCB to the Arduino, I've chosen to take a new 40-in DIP socket, to solder a bunch of wires to it, and to insert the newly-wired socket into the empty 8049 socket. Unfortunately, as you can see in the picture below, a plastic DIP socket isn't really meant to be soldered to -- you can see in the picture that the plastic around each soldered pin got quite melted. It would be really easy to push a pin right on through the socket's frame. Be careful!
|Soldering a Wires to a Soft-Plastic 40-Pin DIP Socket|
Of course, you just can solder wires all willy-nilly -- you have to have a plan of which pin from the 8049 socket is needed for what purpose. So, after looking at the Polysix schematic, I came found that I needed 27 wires to attach to 27 of the 8049's connections (see my hand-drawn pin-out below). Add another wire for power and another for ground and that's a total of 29 connections. With that number of connections, you can see why I needed an Arduino Mega instead one of the more-common (and cheaper) Arduino variants.
|Signals from the Polysix 8049 that I Need to Bring to the Arduino Mega|
|My Colorfully-Wired DIP Socket Inserted in Place of the Polysix 8049 Processor.|
Did it work? Well, no. Software always has bugs. Did it work eventually? Yes. Totally.
As of right now, I've got the following Polysix functions working correctly: Poly, Unison, Chord, Hold, and the Octave knob. The only Key Assigner mode that is not yet implemented is the Arpeggiator. I even have a few new functions already implemented: (1) a sustain pedal, and (2) user toggling between retrigger every note (like a normal Polysix) and no-retrigger when playing legato (like a Moog). I'm particularly enjoying the sustain pedal functionality.
Now that I've demonstrated that it works, the next step is to begin to install it more permanently into the Polysix. Then, I can install the new keybed (along with its controller). At that point, I can finally start implementing the aftertouch and velocity sensitivity. What a long road!