Saturday, January 18, 2014

Polysix - Poly-Unison Mode

As many of you may be aware, I've modified my Korg Polysix by replacing the Key Assigner CPU with an Arduino.  This means that I have a lot of control over how the Polysix manages its voices and pitches, which is how I could do things like add portamento, detuning, and single-trigger mode.  Well, having such control over the voices has let me add a new operating mode, "Poly-Unison" mode.  This mode assigns two voices for each note received from the keybed instead of just one voice.  As a result, the Polysix feels a bit like the richer-sounding dual-oscillator polysynths that came before.  It's fun!  Check it out!

Background:  Normally, in "Poly" mode, the Polysix has six voices, but each voice only has a single-oscillator.  This is in contrast to fancier polysynths such as the Prophets, the Oberheims, and the Roland Jupiter polysynths that all had two oscillators for each of their voices.  The dual oscillators give each voice a richer sound.  The Korg Polysix and the Roland Juno series moved to single-oscillator voices to save money to make the synths more affordable, but at the expense of less rich sound.  To add some richness back into the sound of these single-oscillator synths, Korg and Roland added Chorus and other effects.  While these effects helped, the sound was still not as complex and "alive" as the dual-oscillator synths.  I wanted to see what the Polysix might sound like if its voices had dual-oscillators.  So, I pursued this "Poly-Unison" modification.

All Software:  Given that I had already performed some major hardware modifications by adding the Arduino and the DAC to enable arbitrary voice and pitch management within my Polysix, the creation of this "Poly-Unison" mode was simply a software modification to my Arduino software.  The concept is simple: whenever a new note is received from the keybed (or MIDI) start two of the Polysix's voices instead of one.  That's pretty straight-forward.

User Interface:  One challenge is figuring out how to use the limited number of controls on the Polysix's control panel to activate the new mode.  I chose to re-use the existing buttons to look for a combination key press of the "Poly" and "Unison" buttons, as shown below.  The baseline behavior is like with an unmodified ("stock") Polysix.  Press-and-release the "Poly" button to get Poly mode or press-and-release the "Unison" button to get Unison mode.  For my new mode, press-and-hold the "Poly" button and then press-and-release the "Unison" button to get the Poly-Unison mode.  The lights show up properly to indicate the new state.

Detuning:  Simply enabled my Polysix to assign two voices to each note is not fully capturing the functionality of the dual-oscillator polysynths of the past.  A key feature of having two oscillators is being able to detune one oscillator relative to the other.  It is the detuning between the two pitches that gives each note the richness that so many people like.  To make this Poly-Unison experiment a success, I need to be able to detune the voices. Luckily for me, I had already added adjustable detuning to my Polysix's Unison mode.  It was a small software change to enable detuning to my Poly-Unison mode.

User Interface for Detuning:  In my previous post discussing detuning, I  mentioned how I re-used the Polysix's "Arpeggio" button to control the detuning.  Below is a more-full explanation.  First, to activate detuning, simply press and release the "Arpeggio" button.  Fine.  To increase or decrease the amount of detuning, press-and-hold the "Arpeggio" button and then turn the "Speed" knob.  Since the "Arpeggio" and "Speed" controls are so close, you can do it with one hand while still playing the keyboard with the other hand.  As you can see in the video at the top of this post, it works pretty nicely.  To deactivate the detuning, simply press-and-release the "Arpeggio" button again.  It'll remember the detune setting the next time that you activate the detuning.

But What About the Arpeggiator?  You might wonder, if I'm using the "Arpeggio" button for detuning, how do I activate and deactivate the Arpeggiator?  The answer is that I repurposed one of the two little switches on the back of the Polysix to be a kind of "mode" switch for my control panel.  Specifically, I'm using the "High/Low" switch that controls the sensitivity of receiving data "From Tape".  Since I don't use this feature, i rewired this switch to connect to my Arduino.  When set in one position, it tells my Arduino to listen to the Arpeggiator controls normally -- as controls for the Arpeggiator.  When set in the other position, it tells my Arduino to listen to the Arpeggiator controls as commands for detuning, portamento, and aftertouch.  It's a pretty nice little system!

Next Steps:  As you can see in the video, the Poly-Unison mode works pretty nicely.  In this setup, two voices are assigned to each note.  In this mode, each of the two voices is playing the same note.  The next step would be to do a Poly-Chord-Memory mode where two voices are used, but they could be set to different notes.  That would be cool, too!

Another next step would be to enable "oscillator sync" between the linked voices.  That would really bring my Polysix into line with the features of the old two-oscillator polysynths.  But, I'm not really sure how to do that, and I think that it would require some tricky hardware changes.   Any suggestions?

Update: I shared my Arduino code here