patternsExample.vcv (26.9 KB) @jeremy Wentworth’s Patterns module is based on an idea I discussed on the forums here, where I noted that if you XOR two outputs (or more) of a clock divisor, you get a pattern of clocks with ‘rests’ in it. In other words /1 + /7 means there are 6 regular pulses, but no pulse on the 7th, in a repeating pattern.
This is useful when generating clock sequences for Sequencer modules, as it takes the sequencer pattern – say, 8 steps, and turn it into a much longer pattern. The notes repeat, but against a shifting rhythm.
But there is an interesting problem it took me a while to understand:
- When XOR-ing two divisions of a clock, if one divisor is divisible by the other, the effect is to skip the clocks where both divisors are active. EG XOR /1 and /3 and you get two pulses followed by a 1 pulse gap.
- If there’s no even division of the two divisors, the pulses of the two divisors are added together. For example /2 and /3, you get every other clock combined with every 3rd clock, and the clocks both come through except when the pulse is divisible by both 2 and 3. So the XOR of two clocks is additive – mostly – until you reach a pulse count that is divisible by both.
Which brings me to a couple of suggestion for JW Patterns:
- Add clock for each row. So you can do things like use the clocks out of one row to input into another, for even more complex patterns.
- Add reset for each row. That way you can reset the counters in interesting ways, i.e. reset based on another row.
This ends up being very complex and unpredictable after a while but the cool thing is that it always makes a finite length, repeating pattern. And complex, repeating patterns are always more interesting than strictly random patterns.
The example patch uses Patterns, Gridseq and Chronoblob to make a patch that sounds almost random, but isn’t.