Reviving this two year old thread because I’m wanting to do something similar to what is stated in the subject line.
I’d like to create a custom unit (or rather, control? or would it be better to do this in lua and then it’s a bespoke unit? Part of why I’m writing here is in hopes of getting some guidance about the most appropriate path…) that will allow for CV-modulatable selection of chords and voicings shown in the two lists below. The chords are shown as voltage offsets for root, third, fifth, and seventh. The voicings are shown as scale factors for root, third, fifth, and seventh. (Yes, I grabbed the basic musical info from the Qubit Chord manual).
I can think of multiple ways to achieve this, but I’m not sure of the “best” approach. I like Lua, and I’m not afraid to use it, if that will get me a cleaner result. But if that’s the recommendation, I’ll have more questions (like, is there any 0.4 era guidance for the middle layer?)
Here’s those lists:
Chords
Major 7
0.000, 0.333, 0.583, 0.917
Minor 7
0.000, 0.250, 0.583, 0.833
Dominant 7
0.000, 0.333, 0.583, 0.833
Half Diminished
0.000, 0.250, 0.500, 0.833
Diminished
0.000, 0.250, 0.500, 0.750
Sus 2 Major 7
0.000, 0.167, 0.583, 0.917
Sus 4 Minor 7
0.000, 0.417, 0.583, 0.833
Augmented 7
0.000, 0.333, 0.667, 0.833
Voicings
Closed
1.0, 1.0, 1.0, 1.0
Drop 2 Root Position
1.0, 0.5, 1.0, 1.0
Drop 3 Root Position
1.0, 1.0, 0.5, 1.0
First Inversion
2.0, 1.0, 1.0, 1.0
Drop 3 First Inversion
2.0, 1.0, 0.5, 1.0
Drop 4 First Inversion
2.0, 1.0, 1.0, 0.5
Drop 4 Second Inversion
2.0, 2.0, 1.0, 0.5
Second Inversion
2.0, 2.0, 1.0, 1.0
Raise 2 Root Position
1.0, 2.0, 1.0, 1.0
Raise 2/3 Root Position
1.0, 2.0, 2.0, 1.0
Raise 2/3 First Inversion
2.0, 1.0, 2.0, 1.0
Third Inversion
2.0, 2.0, 2.0, 1.0
Spread
0.5, 1.0, 1.0, 2.0
Spread First Inversion
4.0, 0.5, 1.0, 1.0
Spread Second Inversion
2.0, 4.0, 0.5, 1.0
Spread Third Inversion
2.0, 2.0, 4.0, 0.5
Big Spread Energy
0.5, 1.0, 2.0, 4.0
EDIT: Ok, I’m gathering from Middle Layer SDK (aka patching with Lua) that the mentioned files were updated around the 0.4.25 timeframe, which seems fresh enough. So, now I’m looking at ScaleQuantizerUnit.lua and it seems like a good starting point to work from… Somebody stop me if there’s a better way!
I guess the thing that is stumping me now has to do with appropriate signal flow for polyphonic music. It’s simple enough to put an oscillator in a mixer, put several of these side by side, and set the pitch for each, but keeping those pitches coordinated for western harmony… how do I avoid a spaghetti mess when trying to achieve that?
Makes me wonder if my bespoke unit should include the oscillator itself, not just the pitch information, but I was hoping for a more modular approach. Any advice?
Paging @Joe and @odevices (but no hurry of course! happy holidays!)