Quasit — an inspired stochastic generator

Inspired by the Stochastic Inspiration Generator, Quasit is another entry in the Monstrous sequencer series.

One of the difficulties in creating generative melodic elements is that randomly distributed notes can achieve periods of coherence, but ultimately, the distribution of those random pitches produces something that struggles to feel purposeful. The SIG (and this patch) attempts to address this by allowing you to weigh the likelihood of certain notes being selected — for instance, you can emphasize the root, third, and fifth, while sprinkling in some perfect fourths or sixths for variety.

Along with controlling the likelihood of notes produced, the range of those notes is also probabilistically weighted across a six octave range.

The octave range of each note can be shifted, allowing for inversions, bass emphasis, and other opportunities.

You also have control over the rhythmic probability, too — use eighth notes, with a dash of sixteenth notes for flavor, for instance.

Pitch sequences and rhythm sequences can be looped, individually or separately (lock in a melody while new rhythms are generated against it, or lock in a rhythm while a new melody follows it).

Changes in note, octave, and rhythm can be calculated at four different rates: per step, per quarter note, per whole note, and per bar. This allows you to moderate when changes occur and impose more structure onto the generative features.

This is one of those patches that is easier to demonstrate, I think, than to explain, so I encourage you to check out the video walkthrough (I apologize, but the sound of the music generated in the video is quite low in volume. It sounded fine/possibly too loud when I was recording it. But I recorded it in OBS, which mixes all the audio to one track, so I didn’t really have a means to fix it once recorded. It is audible, but not as audible as I would have liked).

The patch produces no sound on its own. But it does produce both CV and MIDI (and accepts CV and MIDI clock).


On the FIRST PAGE, there are controls for the probability of: the octave a note will play in, the note that will be played, and the rhythm the note will use.

You can adjust the likelihood of each option by changing the values on this page. Those options are weighted against one another to determine the outcome. A quick practical explanation of what that means:

If an option is set to .0001, but all the other options are set to .0000, then that option will be selected each time, because it’s the only option that has any likelihood. If another option is set to .0002, then it will occur 66% of the time, while the first option will occur 33%, because it has been given twice as much weight. The important thing to keep in mind is that the weight of each option is relative to the weight of all other options, not absolute.

(Note: If all options are set to .0000, the last option of the set will always be selected: the highest octave, the G# note, played at 32nd note speeds. For this reason, if you are trying to change between two options, e.g. move from quarter notes to 8th notes, it can be useful to do this gradually, rather than set the active option to .0000 before turning up the option you want to switch to.)

The octave ranges from 0 (bass notes, A0 to G#1) to 5 (high pitched notes, A5 to G#6).

The notes are layed out like a keyboard, beginning with A. Sharps are placed above the note (e.g. A# is placed above A).

The rhythm options are spread across two rows. The top row is longer rhythms, from 1 bar length to dotted quarter notes. The bottom row is short rhythms, from quarter notes to 32nd notes.

So, by manipulating these values you can determine the likelihood of certain notes playing at certain rates.

There are also a few other options on this page.

In the top right corner is a “reset clock” button. If you are using a mix of eighth and quarter notes, then return to just quarter notes, you may find that your notes are offset to the incoming clock (pushed off by an eighth note in this example). The “reset clock” button will allow you to reset the internal clock’s phase to the incoming clock.

Continuing down the right column, there are buttons to “loop the rhythm” and “loop the pitch.” (For Zebu, there are also buttons to do this with the user buttons in the bottom left corner of the control plate. There are also buttons to do this on the page with extended loop controls. There are lots of places to do this, in other words, but I wanted to make sure there was a set for the main page.) When these loops are active, the associated button will light up.

Again continuing down the column, there are controls for “Gate chance.” At 1, every gate will fire. As the gate chance decreases, rests will randomly be inserted.

“Microtiming” applies a random delay to the gate output. This can provide a more “human feel” to the sequences generated. It is fixed maximum, tied to the length of a 16th note, so it may be less noticable on longer notes, which will be moved less off the grid relative to their duration).

There is also a flashing “Tap tempo” button that shows the speed of the base clock. This can be used for reference to the received, base tempo, or to set a tempo in the absence of CV clock or MIDI clock.

On the SECOND PAGE, there are controls for how often changes are calculated as well as some extended controls for the pitch and rhythm loops.

The top three rows allow you to determine how often changes occur for notes, octaves, and rhythms.

This was an invention of mine to help impose even more order and structure to the patch. When notes, octaves, and rhythms are changing on each step, things can become quite chaotic, no matter how much probability is thrown at them. By allowing you to customize when changes occur, different structures can be imposed on the output to give more intentional results.

So for each of these options (note, octave, rhythm — there are keys at the beginning of each row to tell you which is affected by the subsequent buttons) you can calculate new values:

Every step (essentially every time a new gate is generated; this is probably the “default” condition, where new things are generated on each step).

Every quarter note.

Every whole note.

Every bar.

The advantage of this system is that, for instance, you can have mostly quarter notes, but then in the period of a quarter note, have a flurry of sixteenth notes to break things up. Or you could have a bassline where the note repeats for a bar before changing to another. Or many other options to impose a sense of order or progression to the changes. Super fun options to play with (in my opinion).

There are also a couple of extended controls for the pitch and rhythm loops on this page.

Once again, there are UI buttons for looping these, which can be set separately (loop one or the other or both, or neither).

There is a “length” control. This moves across the following number of steps: 3, 4, 5, 6, 7, 8, 12, 16. I decided against having the length control cover 1-16 for CPU reasons and also because these seemed like the most useful loop lengths anyhow.

There is also a “stability” control. The loops function as Turing machine/shift registers. That means that you can set them to change over time (slowly, with high stability, where a stability of 1.000 will loop indefinitely) or quickly (as stability decreases).

On this page, there is also a control that allows you to transpose the auxiliary output. The auxiliary or “delayed” output is taken from the last step in the shift register/loop. You can transpose it, if you want to operate, for instance, in another octave with this complementary/related output.

On the THIRD PAGE are a set of buttons that allow you transpose given notes by octaves. This can be useful, for instance, if you want to establish notes in a given scale (e.g. C major can be distinguished from A minor by transposing the A and B up an octave). It can also be used to create inversions, or performatively to add variation, etc..

Each note has two buttons. The notes are once again laid out according to a keyboard from A to G#. The top button transposes the given note up and octave. The bottom button transposes the note down an octave. When this occurs, the color of the buttons changes. Aqua is default/no change.

There is a key on the side of the page to indicate what color represents what octave, from magenta (+2 octaves) to yellow (-2 octaves). There are colors/octaves beyond these, but if you decide to use them, the trend (and your ears) should make clear what change is occuring.

You can use these buttons to exceed the default octave ranges of the patch (e.g. transposing all notes down one octave makes the lowest possible pitch -A1 instead of A0).

If you use one of my patches in something uploaded to social media, please consider tagging me or sharing a link on the patch page! Also, please consider liking it on Patchstorage!

Youtube: @ChristopherHMJacques
IG: https://www.instagram.com/chmjacques/
Reddit: https://www.reddit.com/user/chmjacques
Patchstorage: https://patchstorage.com/author/christopher-h-m-jacques/
Bandcamp: https://christopherhmjacques.bandcamp.com/

Leave a Reply

  • Platform:
  • Category: Sequencer Utility
  • Revision: 0.1
  • License: Creative Commons Attribution Share Alike 4.0
  • Modified: 8 months ago
  • Views: 1051
    Likes: 10
    Downloads: 305