My first algorithmic composition using Chuck.
I started with the idea of using bitwise operators to transform rhythmic pattern. Suppose there is a existing pattern and applying bitwise operation with a random seed will transform the pattern into a new pattern. Since the existing pattern will affect in creating a new pattern, I expected both coherence and variation in the transformed pattern and it will be another seed for the next new pattern in a recursive manner.
I tested four bitwise operations and simulate the transformation and I found conceptually, AND OR NOT operation is not appropriate to rhythmic transformation. AND operation will only remove existing onset, not add anything and OR does the exact opposite, which will always end up with silence or an isochronous pattern. NOT operation only does flipping. In the meantime, XOR does balanced transformation, if it’s sparse rhythm, it is more probable to add more, if it’s dense rhythm, it is likely to remove some of onset.
All my rhythm patterns are generated by XOR operation with a random number in range (0,255). There is a probability(25%) whether the algorithm will transform existing rhythmic pattern at each cycle( 8 bits or beats). The algorithm only generates 4 channels of MIDI notes. Inte bit interval is a parameter that I can choose in real time. For each cycle, the algorithm play the rhythmic pattern with one pitch material. At each cycle, the algorithm decide whether to apply a new pitch material. New note is determined by picking an interval from the current note. The interval can be a semitone or intervals in pentatonic scale(0,2,4,7,9) assuming that the current one is the root note(0) so that next pitch can be somewhat relavant to the previous tone.