Sonic Pi Monthly Challenge #6

Here’s a link to my submission, “Modes of the Fasilitonic,” which I’m characterizing as microtonal jazz: a guitarist comps over some changes with the rhythm section (drums, no bass, so the guitar goes low), then a trumpet and tenor exchange lines over the chord changes. I use 19-EDO for my tuning and a 12-note scale specified by the intervals [0, 2, 2, 1, 2, 2, 2, 1, 2, 2, 2, 1] in 19-EDO (the “FASILITONIC”) that I thought sounded good with the chord intervals 1, 7, 10, 12, 14, and 17, which are spaced kind of like a 13th chord would be in diatonic jazz. The tonics move through a circle of eighths (as opposed to the diatonic circle of fifths), with the actual chords based at first on the III-VIII progression, which I thought sounds good while moving things forward, as II-V’s do in 12-EDO. Subsequently, there are other chords indicated by my mode function, for example (mode 13, FASILITONIC) would be the 12-note scale you get when you start at note 13 of the FASILITONIC. If you set the tuning to 12-EDO, mode 5 would be the scale you get when you play the 8 notes starting from G if your scale is DIATONIC.

My sequencer FASÍLITU, which is Finally A Sequencer Í Like To Use, makes temporal modulation and microtonality fluid for live coding performance with hardware and plugins. It microtunes polyphonically in real time using MTS or pitch bend, depending on the synth. In this one, I use pitch bend microtuning in all eight channels of an Omnisphere multi for the chords.

You fasilitu a form on its stage like this:

fasilitu form, root, config

A root is a [MIDI octave, degree] pair so that you can put in any number for degree to accommodate the microtuning in effect. If the number’s too big, it goes into the next octave in the expected way. A config contains parameters of all the synths to be output to, such as the microtuning and modulations for CC, OSC, channels, ports, and other stuff. A form specifies an array of intervals and a stage, which is a pattern of tacti and rests to traverse those intervals. A stage is a pattern of 1’s and 0’s represented by binary integers like this:

0b10001000 (like a kick)
0b00100010 (like a snare)
0b11111111 (like a ride)

All the tacti perform in one beat so that you can alternate tuplet patterns like this:

0b10001000, 0b1000100, 0b101

In addition to the video, I can paste the code here if anyone’s interested, but running it requires the FASÍLITU library that I developed, which is rather large to paste here.

2 Likes