@Lugia, thanks for that detailed and interesting breakdown re: making derived counterpoint.
I'm following a bunch of what you laid out, but there are parts I'm not able to envision, mostly around creating & controlling the contrapuntal pitch control. HERE is how I would do it based on what I know today:
Step 1: create a "model" sequence of pitch and timing information (as possible using most sequencers, including Vector). Here the nomenclature I'm using is the "model" is the primary line; the "counterpoint voice" is derived from or fit to the "model." Basically Hindemith's terminology from his spectacular books, but a bit more vernacular.
Step 2: create multiple counterpoint voices that can later be selected from or switched, with substeps as follow
2a contrary motion: the contrary motion counterpoint can be derived from the INVERSION of the model. Scaling, DC offset, and quantization are applied to move this voice to the desired range (above or below the model), constrain its movement to an acceptable pitch max / min, and quantize the results within a PC set complementing the active "model" note (and driven by Intellijel Scale's shift function)
2b oblique (held) motion: uses a sample and hold function to maintain the pitch level of the prior actual counterpoint voice. Quantized the same as 2a above
2c similar motion: is derived from the actual model pitch values (since they move in the same direction). Scaling, DC offset, and quantization can be applied in manners similar to 2a above
Step 3: psuedo-random selection of the counterpoint pitch information (2a,2b,2c above). Route the total gate information (logical "or") to be used for contrapuntal rhythms into a dual Bernouli gate like Branches. Use top gate as "contrary vs. other motion selector" and set at say 50%. Chain the "other motion" output from BernouliA to the input of BernouliB and split that to "oblique vs similar motion" and set the oblique side to 60% and the similar side to 40%. That would give a total weighting from the 3 Bernouli gate outputs as 50% contrary, 30% oblique, 20% similar.
Step 4: here's where I start getting into territory I really don't have a grasp of yet. Take the gate results from Step 3 and route them to what? IMO it needs to some type of "triggered gate" with at least 3 channels, such that if it receives a trigger on channel 1, it opens a gate and holds it open until a trigger is received on a different channel. I don't yet know of any modules that do this type of thing. Any ideas here folks?
Step 5: the pitch info from steps 2a,2b,2c and the three-channel gate on/off info from step 4 would go into a multi-channel summing VCA. I think Intellijel Quad VCA would be fine for this. The 3 pieces of pitch info (2a,2b,2c) enter the VCA and are turned on/off by the 3-channel gate info from step 4. The summing VCA sums the results and outputs A SINGLE CONTINUOUS PITCH VALUE which can be used to drive the counterpoint voice's pitch.
Voila! Those steps 1-5, if implemented adequately, would yield psuedo-random counterpoint pitch information.
Here are the issues I see with this signal chain:
1) I don't have a candidate module ID'd for step 4
2) it seems this approach might require 3 copies of Scales, which seems somewhat wasteful of $s and HP if not absolutely required
3) I'm thinking there should be a more efficient way to design this control scheme, but I haven't ID'd it yet, above is the best I can spell out so far
In fairness, this is a "someday" patch for future IRL, not a tomorrow patch. BUT with the Ladik store seemingly open again, it will be possible (and not so costly in $s or HP) for me to add some key logic modules I'm missing. AND as I'm super interested in advancing my working command of compositional control schemes in modular and their DAW-based equivalents, I want to press ahead on this and related challenges, even if the results are only "paper solutions" (not IRL) for the time being.
Comments? Questions? Thanks all!