This is a fractal AC piece in C major with 4/4 timing. Sort of. The C major scale is chosen from 53-TET, and the 4/4 beats are divided up strangely to demonstrate the capabilities of my rhythm programming system, which is done in Python, inspired by Jacob Joaquim's dseq language. The fractal is applied in various ways, most obviously to the sequencing of the pluck instrument, but also to provide tonal variation to rhythm instruments.
The piece features many new or improved instruments, as I work to create a larger orchestra for my AC system.
| Attachment | Size |
|---|---|
| nearly-10.ogg | 6.06 MB |



"C Major" Scale
Here is the scale information :
Note__Interval in cents___JI approximation___Actual 53-TET ratioC_____0 cents_____________1/1________________1.0
D_____203.77358 cents_____9/8________________1.124911
E\____384.90566 cents_____5/4________________1.248983
F_____498.11321 cents_____4/3________________1.333385
G_____701.88679 cents_____3/2________________1.499940
A\____883.01887 cents_____5/3________________1.665377
B\____1086.79245 cents____15/8_______________1.873401
C_____1200 cents__________2/1________________2.0
The usage here is similar to that of modulation within a "well-tempered" C major scale. The "E\" note name is from standard 53-TET notation.
RPS
The major advantage of the rhythm programming system (RPS) to me is that I can easily integrate other algorithms with it, such as the fractal, fractal transform (lookahead and polyrhythmic), duration calculation, and constrained random algorithms used so far in this piece. The way it is designed allows what I think is a very compact and easily readable rhythmic representation which is also more flexible than conventional methods.
Like Jacob Joaquim's dseq language (the inspiration for my system), I represent my rhythm with ASCII symbols. I have added more symbols than Jacob's version, with 64 amplitude values from 0 to 63 being represented as follows :
-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz>
A rhythm is represented as a Python list of strings, for example :
rhythmbd = ['L','D','--A--','F']
This example also demonstrates the time division design of the RPS. This rhythm would represent a standard bar consisting of four beats (quarter notes). I could easily change this from a 4/4 rhythm to a 5/4 rhythm by adding another beat.
rhythmbd = ['L','D','--A--','F','G']
The third beat demonstrates that time division also applies within each beat, so the '--A--' represents a rhythmic event at the third of five time divisions of the beat (quarternote).
This allows a very compact and readable representation of the rhythm of multiple instruments. Here is an example from the current version :
rhythmp0 = ['aH','WPT','Y5BDF','UJLSQTV']
rhythmhh = ['NGA--A','PF-B9G','GBID8','Q-F-L-P']
rhythmsd = ['---tT-','-i-','--a--','---j---']
rhythmbd = ['L','D','--A--','F']
rhythmgu = ['-','-','----M','-']
rhythmec = ['H','-','-','-']
rhythmab = ['-','---H--','----H','-']
Baboon
Baboon is a UDO wrapper I made for the babo opcode, a physical model reverberator. Using it to emulate an "ideal room", I then positioned the instruments around the room and set the virtual listener to the centre of the room. This was done with all the instruments except Plucky.
Hopefully this should create the illusion of actual instruments playing in the same physical room. I think to some extent it does, but perhaps that is wishful thinking to justify the big increase in render times this change has engendered. No more real time rendering once you get more than a couple of instruments running through Baboon.
I uploaded a copy of the Baboon UDO to the UDO repository.