Machines2 v15

Today’s version includes some output from the preprocessor that is more helpful to understand the choices it has made. It also makes extensive use of the p0 randomization pattern, which causes the preprocessor to go through a list and pick the item that has been least often played. As a result, in this version, there are many sections of the piece that were previously unplayed. I had never used this before, and completely forgot that I had included the code to support such a feature. I’ve been playing with the preprocessor for nearly 23 years, and have no idea when I added the p0 pattern, but there it was in the source code, and I used it in this version of the piece.

I added code to the macro source file to list the choices made at different points in the piece. Here’s an example at the beginning of the piece:

  • 1 vamp, bridge, m
  • ch2 r=10
  • ch3 r=06
  • ch4 r=10
  • ch5 r=04
  • ch6 r=04
  • 16th = 6 – 10 per measure
  • 9:8 uton c a
  • loud = mp
  • a tetrad bridge
  • 4:3 oton d a
  • 8:5 oton d a
  • 16:9 oton d a
  • 1:1 oton d a
  • 4:3 oton d a

The text is in code to help me debug, but it shows what the preprocessor chose. 1 vamp of 480 beats, made up of 8 60 beat measures, played at medium volume. The density is such that channel 2’s notes are played 62% of the time they are called, and silent the remaining 38% of the time. Channel 3 is played only 38% of the time called, and channels 5 & 6 are played only 25% of the time. A sixteenth note gets 6 beats, and there are 10 of them per measure, which is fairly slow. The 16-tone scale is the 9:8 utonality, and the tetrad derived from that scale is primarily the “a” tetrad, with slides from the “c” to the “a”. The “a” tetrad in the utonal scale is 12/12:10:8:7. It makes a sweet minor triad with a sharp 7th. The “c” tetrad is more challenging, with ratios of 46/46:38:31:27. It’s way down in the subharmonic series. The loudness of the bridge is medium. This is an “a” tetrad bridge. The bridge is F major, Ab major, Bb major, C major, F major, which coincidentally is the bridge for Sam & Dave’s “Hold On, I’m Comin'”. Go figure. Here’s the next few measures to get an idea of what you may be hearing.

  • 1 vamp, bridge, f
  • ch2 r=08
  • ch3 r=08
  • ch4 r=04
  • ch5 r=10
  • ch6 r=06
  • 16th = 5 beats – 12 per measure
  • 8:5 oton c d
  • loud = f
  • b tetrad bridge
  • 4:3 oton a b
  • 8:5 oton a b
  • 16:9 oton a b
  • 1:1 oton a b
  • 4:3 oton a b
  • 1 vamp, bridge, m
  • ch2 r=10
  • ch3 r=10
  • ch4 r=06
  • ch5 r=04
  • ch6 r=08
  • 16th = 6 – 10 per measure
  • 9:8 uton c a
  • loud = mf
  • c tetrad bridge
  • 4:3 oton b c
  • 8:5 oton b c
  • 16:9 oton b c
  • 1:1 oton b c
  • 4:3 oton b c
  • 5 vamps, bridge, f
  • ch2 r=08
  • ch3 r=04
  • ch4 r=08
  • ch5 r=10
  • ch6 r=10
  • 16th = 5 beats – 12 per measure
  • 8:5 oton c d
  • loud = ff
  • b tetrad bridge
  • 4:3 oton a b
  • 8:5 oton a b
  • 16:9 oton a b
  • 1:1 oton a b
  • 4:3 oton a b

All in good fun.


or download here:
Machine 2 – v15

Machines2 – v10

The random algorithm in the preprocessor is adjustable. When it is set low, the system will retry the random functions a certain number of times until it gets a different result from the last time through. For example setting the “p” pattern to p0, the randomizer is called until it picks a result that it has never used before, ensuring coverage of all the options over time, but in a random pattern. p values of 1 through 8 try hard to return a different result, but sometimes repeat. p values between 9 and 31 increasingly return the same result. There are special p values. p32 always returns the same result. p33 goes forward through a list, and p34 goes backwards. p35 is the Markov Chain Drunkard’s Walk algorithm.

This version of Machine2 uses the following structure:

p22&how-many-1m*. p35&how-many-1f*. &how-many-*. &how-many-*. &how-many-*.
p8&how-many-*. p12&how-many-*. p18&how-many-*. p20&how-many-*.
p22&how-many-*. p35&how-many-*. &how-many-*. &how-many-*. p33&how-many-*.
p28&how-many-1m*. p30&end-many-1p*. p30&end-many-1p*.

It calls a routine called &how-many-*. which is a list that looks like this:

.how-many-5f &pick-rhy-*.&pick-key-*.&loudness-f*.&combine-480-*. &combine-480-*. &combine-480-*. &combine-480-*. &chorus-480-*. &vel.d480d*5
.how-many-5m &pick-rhy-*.&pick-key-*.&loudness-m*.&combine-480-*. &combine-480-*. &combine-480-*. &combine-480-*. &chorus-480-*. &vel.d480d*5
.how-many-4f &pick-rhy-*.&pick-key-*.&loudness-f*.&combine-480-*. &combine-480-*. &combine-480-*. &chorus-480-*. &vel.d480d*4
.how-many-4m &pick-rhy-*.&pick-key-*.&loudness-m*.&combine-480-*. &combine-480-*. &combine-480-*. &chorus-480-*. &vel.d480d*4
.how-many-2f &pick-rhy-*.&pick-key-*.&loudness-f*.&combine-480-*. &chorus-480-*. &vel.d480d*2
.how-many-2m &pick-rhy-*.&pick-key-*.&loudness-m*.&combine-480-*. &chorus-480-*. &vel.d480d*2
.how-many-2p &pick-rhy-*.&pick-key-*.&loudness-p*.&combine-480-*. &chorus-480-*. &vel.d480d*2
.how-many-6f &pick-rhy-*.&pick-key-*.&loudness-f*.&combine-480-*. &combine-480-*. &combine-480-*. &combine-480-*. &combine-480-*. &chorus-480-*. &vel.d480d*6
.how-many-6m &pick-rhy-*.&pick-key-*.&loudness-m*.&combine-480-*. &combine-480-*. &combine-480-*. &combine-480-*. &combine-480-*. &chorus-480-*. &vel.d480d*6
.how-many-3f &pick-rhy-*.&pick-key-*.&loudness-f*.&combine-480-*. &combine-480-*. &chorus-480-*. &vel.d480d*3
.how-many-3m &pick-rhy-*.&pick-key-*.&loudness-m*.&combine-480-*. &combine-480-*. &chorus-480-*. &vel.d480d*3
.how-many-3p &pick-rhy-*.&pick-key-*.&loudness-p*.&combine-480-*. &combine-480-*. &chorus-480-*. &vel.d480d*3
.how-many-1f &pick-rhy-*.&pick-key-*.&loudness-f*.&combine-480-*. &chorus-480-*. &chorus-480-*. &vel.d480d*3
.how-many-1m &pick-rhy-*.&pick-key-*.&loudness-m*.&combine-480-*. &chorus-480-*. &chorus-480-*. &vel.d480d*3
.end-many-1pp &pick-rhy-*.&pick-key-*.&loudness-pp*.&combine-480-*. &chorus-480-*. &vel.d480d*2
.how-many-8f &pick-rhy-*.&pick-key-*.&loudness-f*.&combine-480-*. &combine-480-*. &combine-480-*. &combine-480-*. &combine-480-*. &combine-480-*. &chorus-480-*. &vel.d480d*7
.how-many-8m &pick-rhy-*.&pick-key-*.&loudness-m*.&combine-480-*. &combine-480-*. &combine-480-*. &combine-480-*. &combine-480-*. &combine-480-*. &chorus-480-*. &vel.d480d*7

&how-many*. is a list of different lengths, from 1 to 8 measures in a random rhythm and key and loudness (lists of these are elsewhere in the code). It might return only one 480 beat measure, and the bridge, or it might stay in the key for 8 480 beat measures, followed by the bridge.

The &how-many*. macros are prefaced by different p values. p22 is heavy on repetition. p35 is the Markov Chain Drunkard’s Walk. p8 is the default randomness. p12 is a bit more repetition, but less than 22. The p value increases with each call to p22, which is very repetitive. The last line has p set to 28 and 30, which are almost an ostinato. It makes a nice ending with a quiet loudness level.

or download here:
Machine 2 – v10

Machine 2 – v1

This is another “Machines” piece. I’ve generated six versions, and this is the first. I thought I post #1 because it has some nice sections that get complex and loud, then quiet and simple. The others are very different, but interesting nonetheless.

The basic idea is a trip through a set of chord changes that are relatively conventional, with a chorus taken from the chorus of the Sam & Dave song “Hold On, I’m Comin'”. F major, Ab major, Bb major, C major, back to F major. But the algorithm can chose either those four note chords, or the other tetrads in each key. So instead of starting and ending on F major, it can start on G neutral, or F# major, or E major, the other three tetrads in the 16 note otonal scale. But they are much harsher than the first tetrad, and can be more challenging to listen to. There is a lot of tempo variety in the piece, and changes of density as well. There are many lists of lists of lists that the algorithm can chose from. Randomness can be either limited, broad, or sequential. This creates a lot of variety.


or download here:
Machine 2 – v1

Machine #7

This is a new piece that works with tetrads (4 note chords) derived from the 31-limit tonality diamond. They are either played alone, or other tetrads are glided or trilled up or down to reach the target tetrad. For example, one tetrad is made from the 4:5:6:7 chord. It might be played alone, or another tetrad, perhaps one based on 9:11:27:31 is used to glide to the 4:5:6:7 tetrad. The 16 tone utonality or otonality scales include otonal scales based on 16:9, 4:3, and 1:1, and the utonal scales originate on 9:8 or 5:4. The two additional tetrads are based on 17:21:25:29 and 13:15:19:23. Utonal tetrads are mirrors of these. These are slightly different from the ones I used in People, in order to ensure that all four have nice sounding chords.

The rhythm shifts around a bit, and the randomness also changes from ostinati to drunkard’s walk, to pure random.


or download here:
Machine #7

Machine #1

Here is a new piece I’m working on. There are several things going on here, but I haven’t played with the rhythms yet. More on the way. The algorithm chooses from lots if different utonal and otonal 16 note scales, and plays each four at a time. There’s a chorus where it goes through chords quickly, and a main part that takes more time.


or download here:
Machine #1

The People – Variation 12 #67

This is a final version of variation #12 with a few modifications. I changed some parts to ensure that when playing any one tetrad, the chances of another tetrad slipping through are greatly reduced. Previously the bass part was always in the “a” tetrad even when the upper voices were in the “b”, “c”, or “d” tetrad. That’s no longer the case, as the whole band plays in the same tetrad at the same time. I also modified the volume settings to boost the audio on the extremely quiet parts. The same basic structure is used in this version, with a few more tetrad combinations. Here is the part of the source code where the macros are called to make the music:

@ play variation 12
@ 10765
.8th 28*12
.abcd ba
.flat aa
p35&loudness-m*.&v12-start-*.
&loudness-*.p22&v12-vamp-Dnu-3*. p35&v12-vamp-Bbo-3*. &v12-chor-1-*.
&loudness-*.&v12-vamp-Dnu-3*. &v12-vamp-Bbo-3*. &v12-chor-2-*.
.8th 24*14
.abcd ab
.flat bb
&loudness-*.p22&v12-vamp-Dnu-3*. p35&v12-vamp-Bbo-3*. &v12-chor-1-*.
&loudness-*.&v12-vamp-Dnu-336*4. &v12-vamp-Bbo-336*4. &v12-chor-1-*.
.8th 21*16
.abcd ca
.flat aa
&loudness-*.p22&v12-vamp-Dnu-3*. p35&v12-vamp-Bbo-3*. &v12-chor-1-*.
&loudness-*.&v12-vamp-Dnu-3*. &v12-vamp-Bbo-3*. &v12-chor-2-*.
.8th 24*14
&loudness-*.p22&v12-vamp-Dnu-3*. p35&v12-vamp-Bbo-3*. &v12-chor-1-*.
&loudness-*.&v12-vamp-Dnu-3*. &v12-vamp-Bbo-3*. &v12-chor-2-*.
.8th 28*12
.abcd bc
.flat cc
&loudness-*.p22&v12-vamp-Dnu-336*4. p35&v12-vamp-Bbo-336*4. &v12-chor-1-*.
.8th 24*14
.abcd cd
.flat dd
&loudness-*.p22&v12-vamp-Dnu-336*4. p35&v12-vamp-Bbo-336*4. &v12-chor-1-*.
.8th 21*16
.abcd da
.flat aa
&loudness-*.p22&v12-vamp-Dnu-336*4. p35&v12-vamp-Bbo-336*4. &v12-chor-1-*.
.8th 28*12
.abcd ba
.flat aa
&loudness-*.p22&v12-vamp-Dnu-3*. p35&v12-vamp-Bbo-3*. &v12-chor-1-*.
@ maybe a crescendo at this point? redefine vol4?
.all-ran2 r16
.all-ran3 r16
.all-ran4 r16
.all-ran5 r16
.all-ran6 r16
&loudness-fff.&v12-end-*.


or download here:
People var #12 – 67

The People – Variation 12 #50


This is a new variation that uses the 16 note otonal and utonal scales of the 31-limit tonality diamond differently that the previous ones. In the first 11 variations, I choose pairs of triads to make a hexad for each key. For example, if I was playing in B♭ major, I’d select the otonality on 16:9, and pick one triad based on 4:5:6 from the 16:9, and another based on 7:9:11. The same sort of thing was done for an utonal scale, in this case based on 9:8.

For this variation, I’ve been exploring four note chords. There are four in a 16 note otonal or utonal scale based on the 31-limit tonality diamond. For example, in this variation is still use the 16:9 otonal 16 note scale, but instead of contrasting two triads, I chose to contrast four tetrads (4-note chords). The most consonant is one based on 4:5:6:7/9, shown in tan shading. I refer to that as the “a” tetrad in the chart below. The “b” tetrad, in pink, is based on 9:11:13:15/18, much more challenging to the ear accustomed to 12 tone equal. Keep going up the harmonic series, is the “c” tetrad in blue uses the 17:21:25:29/32, and the “d” tetrad in purple is based on 19:23:27:31/32. These intervals are more challenging.

Here is the 16:9 otonal 16-note scale with the different ratios for each of the four tetrads based on the 16:9 otonality, abc&d.

And the utonal scale based on the 9:8 utonality.

Variation #12 starts out with the “a” tetrad, plus glides and trills starting on the “b” tetrad and moving to the “a”. The next section has “a” tetrads moving to the “b” tetrad. There are more combinations of “c” and “d” that follow, with a return the the b to a tetrads towards the end.

There are sections in between that quickly move through the chords in measures 34 and 36, then back to iterations of the 16:9 otonality and 9:8 utonality.

The piece ends with a legato rendition of measures 33 – 36 as written by Rzewski.

Most of the selections of the lists of lists uses the Markov Chain Drunkard’s Walk algorithm, but I sometimes mix things up by choosing a repetition-heavy randomization, that attempts to repeat the previous choice fairly hard, but not absolutely. It basically picks a random number, and if it’s not the same as the previous one it picked for a particular list, it tries another for a fixed number of iterations. The result is repetition of many but not all selections for a few beats.


or download here:
People var #12 – 50

The People – variation 11 – #45

This is new version of variation #11. For this one, I revised the hexad for A major and E major. These are derived from overtone series of the note a 4:5 ratio below the root of the chord. That is, 1:1 otonality provides a major chord that starts on the 5:4 and includes a standard just major third triad plus another triad that is not. The 4:3 otonality provides a major third chord on the 5:3. The result is a less jarring sound than the previous scales. The tuning uses 9:8 utonality for G minor and D minor, 4:3 otonality for A major, and 1:1 otonality for E major.

I generate the source code for Csound using a text preprocessor I wrote. The preprocessor takes care of sorting out which sample files to use and other tasks. It includes a macro processor component that stores and retrieves text elements that end up as lines of Csound source code. A macro is defined by a period followed by text. What follows is a fragment that defines three macros of varying duration, kind of a vamp in the key of G minor that might last 1680 beats or only 720 beats. An eighth note is either 30, 24 or 20 beats long:

.v11-gmin-vamp-1680 p35&all-480-v11-n66hgd. &all-480-v11-n66hgd. &all-480-v11-n66hgd. &all-240-v11-n66gd. &pick-v11-loud*.&vel.d1680
.v11-gmin-vamp-1200 p35&all-480-v11-n66hgd. &all-480-v11-n66hgd. &all-240-v11-n66gd. &pick-v11-loud*.&vel.d1200
.v11-gmin-vamp-0720 p28&all-480-v11-n66hgd. &all-240-v11-n66gd. &pick-v11-loud*.&vel.d0720
@
.v11-chorus-0960 p35&all-240-v11-n66gd. &all-240-v11-n66EC. &all-240-v11-n66dd. &all-240-v11-n66AF. &pick-v11-loud*.&vel.d0960
.v11-chorus-1920 p35&all-480-v11-n66-gd. &all-480-v11-n66-EC. &all-480-v11-n66-dd. &all-480-v11-n66-AF. &pick-v11-loud*.&vel.d1920

When I want to call the v11-gmin-vamp macro, I append an ampersand to the front of the macro name. Here I make a new macro called v11-middle made up of other macros:

.v11-middle &v11-gmin-vamp-*. &v11-chorus-*. &v11-Emaj-vamp-*. &v11-chorus-*. &v11-dmin-vamp-*. &v11-chorus-*. &v11-Amaj-vamp-*. &v11-chorus-*.

The name of the macro is important, because in the v11-middle macro, I can call any of the three macros that match the first few characters of the macro name, up to the asterisk.

The structure of the piece goes like this:

@ 4*6 * 6 = 120 30 beat eighth note - this is a comment. the @ sign means comment.
@ 5*4 * 6 = 120 24 beat eighth note
@ 6*4 * 5 = 120 20 beat eighth note
@ variation #11 combined
&v11-start.
.8th 4*6
&v11-middle.
.8th 5*4
&v11-middle.
.8th 6*4
&v11-middle.
.8th 5*4
&v11-middle.
.8th 4*6
&v11-middle.&loudness-pp.
&v11-ending.

The v-11-middle parts are about minute or two each, depending on what macros the randomizer has chosen to select.

I’ve been playing around with the randomness selections. This version allows some of the middle parts to deliberately play the same parts over and over again, instead of following the drunkard’s walk Markov chain. Repeats as variation, so to speak. I also made each voice have it’s own density shifts from always playing a note, to almost never playing, which allows the voices to shift focus more.

The .8th 4*6 variable changes the duration of the quarter note. 4*6 uses fits 4 eighth notes to a measure. The 5*4 fits 5, and the 6*4 fits 6. The duration of the measure stays the same, but it speeds up to fit more notes in the measure, then slows down to fit fewer.


or download here:
People var #11 – 45

The People Variation #11 – 42

This is a new variation #11 derived from measures 29-32. Here is the original version of these measures as written by Rzewski. This variation has several different tempi like variation #10. The tuning uses 9:8 utonality for G minor and D minor, 4:3 otonality for A major, and 1:1 otonality for E major. Note that only D minor uses the classic utonal scale, and the Major scales are chosen from a different otonal source scale that does not have the traditional overtone series as scale degrees. I’ll write more as I work on the variation later.


or download here:
People var #11 – 42