westlicht / performer

PER|FORMER Eurorack Sequencer
https://westlicht.github.io/performer
MIT License
232 stars 70 forks source link

Parallel transpose issue with other modules #317

Open shsCT opened 3 years ago

shsCT commented 3 years ago

Hello!

So I’ve hit quite a puzzle. I understand the logic behind using voltage tables for scales; but it’s creating quite a challenge when you want to say, transpose the performer tracks via cv input in real-time simultaneously along with other modules that will also diatonically transpose via a cv.

Example: 1) I’ve got a cv from a keyboard sent through a buff mult to a) Performer, b) Metropoliis, and c) WMD Arpitect. 2) All are set first to an internal scale of semitones. 3) Everybody transposes together and as expected throughout the keyboard’s range. 4) Set all three modules to MAJOR. 5) As you walk up the keyboard in a major (C for ex.) scale, the Metropolis and Arpitect do as expected; the modules transpose to an A when you hit an A on keyboard. But because the Performer is now using a scale table of 7 values, a C# transposes the Performer to the second scale degree - a D. An A on the keyboard will actually transpose to the third scale degree an octave higher - an E - because that’s 10 scale degree steps higher. Obviously that’s problematic for collective simultaneous live performance diatonic transposition. 6) I thought I could get around this by setting up a 12step user scale in the performer and just manually enter a 12 degree scale (in either chromatic or voltage mode) where I manually quantized non-diatonic pitches (sharps) down or up to major notes - similar to say the Ableton midi quantizer. That almost worked; except that once you set the second degree step c# to a C (where it needs to be for triads transposed up the scale to quantize diatonically correctly) there is no longer a B read by the cv input/transpose route on the Performer; the transposed root jumps from an A in transposition directly to a C and skips B altogether (even though B is still the last entry in the scale list. My hunch is this has something to do with the interpolation of the scale table possibly, though weirdly if there’s no transposition applied, that table functions correctly and if you use the midi keyboard to walk up the major scale a B is triggered by a B.

I could be missing something here? Otherwise, I think It’s pretty vital for the Performer to at least have an option to treat scales in a more traditional fashion - if only for transposition purposes. There’s really no other sequencer in Euro like it (I love it so much I own three of them!), and the current design implementation (if I understand this correctly) is preventing me from using it in one of it’s most powerful ways!

As a sidebar (I think) issue, I’ve also noticed that you have to set the transpose route min/max values to I.e. -13/-1 to follow the proper transpose input pitch as opposed to -12/0 to get the keyboard to not transpose 1 semitone off on a C. Maybe that’s somehow related?

Help! :)