back to list

Adaptive JI and Aaron's et_compose (MIDI)

🔗Margo Schulter <mschulter@...>

3/4/2005 1:44:55 PM

Hello, everyone, and I'd like to celebrate the official release of a
beta version of Aaron Johnson's very useful program et_compose by
sharing a MIDI rendition of a piece by Orlando di Lasso that I did in
adaptive JI using this program.

This experiment provides an opportunity to showcase some of the
features of et_compose, and also to consider further a question which
Paul Erlich has raised about the complications of realizing adaptive
JI in practice.

As you have explained, Aaron, et_compose is a Python-language program
which therefore requires a system with an implementation of Python;
and also the very useful helper program t2mf ("text to MIDI file) by
Piet Oostrum, which comes with the companion program mf2t ("text to
MIDI file") used to prepare a text rendering of the MIDI file for the
Lasso piece, LassoPrologue.mf2t (link given below).

Paul, you commented that my Gesualdo _Gagliarda_ rendition using
Vicentino's adaptive JI system with two 1/4-comma meantone chains at
1/4-comma apart produced some prominent sonorities with beating of a
kind unexpected in this variety of tuning. Since that piece and this
version of Lasso's _Prologue_ from his _Prophetiae Sibyllarum_ have
the same MIDI instruments, why don't I give links to the MIDI files
for both pieces as well as the ogg and mp3 versions of the Gesualdo
piece, so that people can compare, check the MIDI pitch bend messages,
or experiment with different MIDI instrumentations and timbres:

<http://www.bestii.com/~mschulter/LassoPrologue.mid>
<http://www.bestii.com/~mschulter/LassoPrologue.mf2t>
<http://www.bestii.com/~mschulter/GesualdoGagliardaAJI.mid>
<http://www.bestii.com/~mschulter/GesualdoGagliardaAJI.ogg>
<http://www.bestii.com/~mschulter/GesualdoGagliardaAJI.mp3>

The Lasso piece is the prologue in his four-voice vocal cycle
_Prophetiae Sibyllarum_, "The Prophecies of the Sibyls," written in a
"chromatic" style announced in the opening words of this prologue, and
often dated to the early 1550's -- the same epoch that Vicentino was
experimenting with chromatic and enharmonic music on his archicembalo
or superharpsichord documented in his treatise of 1555.

While the Gesualdo piece was coded with the versatile EXAMPLE feature
in Manuel Op de Coul's Scala, the Lasso illustrates another approach:
Aaron's et_compose. Each program has its own conventions.

A quick comment on the matter of _intentionally_ impure sonorities,
maybe more notably relevant to the Lasso. In Vicentino's adaptive JI
system, there are typically two "versions" of a given note at 1/4
syntonic comma or about 5.38 cents apart, and one can shift between
these versions with little melodic disturbance.

A complication, however, is the _rhythmic_ alteration that would be
required if one voice has a sustained note while others move to a new
sonority which would require a retuning of that note in order to
achieve vertical JI. Here a tempered sonority might harmonically, if
very subtly, complement the rhythmic diversity of the parts -- as a
suspension dissonance does at a much more obvious level.

However, Paul, you mentioned hearing beating in the Gesualdo piece at
"many of the harmonic points of rest" -- and this comment, plus the
mostly note-against-note motion of that piece leads me to suspect
something other than intentionally impure sonorities, as I mentioned
in my other post.

Also, for the curious, here's a link to the et_compose source file for
the Lasso piece:

<http://www.bestii.com/~mschulter/LassoPrologue_etc>

In this file, notes are specified in a division of 1,200,000-EDO --
that is, in thousands of a cent, which I find intuitive. The statement
'div=1200000' at the start of the first voice '1: ' chooses this
division; the default, interestingly, is 19, possibly reflecting
Aaron's interest in 19-EDO (e.g. _The Juggler_ and his harpsichord
rendition of John Bull's _Ut, re, mi, fa, sol, la_).

A note is specified by a rhythmic value (e.g. "1/1" for a whole note,
"1/2" for a half note) followed by a pitch value of octave number,
period, and location within a C-C octave as measured in steps of the
chosen division, here 1,200,000-EDO. Thus

4: 1/1 5.701955
3: 1/1 5.386314
2: 1/1 5.0
1: 1/1 4.0

would show a note with a rhythmic value of "1/1" in each voice forming
a just sonority with a ratio of 2:4:5:6 (C-C-E-G).

In each line, a stated rhythmic value or octave number implicitly
applies to any subsequent notes until/unless a new value is stated.
As in some 16th-century keyboard scores, simultaneous notes often but
not always are roughly aligned vertically -- when they are, this can
help in proofing.

Since there's been some discussion of Aaron's Gaussian rhythm
"humanization" of MIDI files produced with et_compose, I might offer
this piece as one example of what Aaron's algorithm (drawing on a
feature of the Python language) does. Here repeating a link to a text
version of the MIDI file, made with Piet van Oostrum's very useful
program mf2t, might be convenient:

<http://www.bestii.com/~mschulter/LassoPrologue.mf2t>

In reading this mf2t file, I should add that it's helpful to know that
with et_compose notes for each voice alternate between two adjacently
numbered MIDI channels -- voice 1 between channels 1 and 2, for
example, and likewise voice 2 (channels 3 and 4), voice 3 (5 and 6)
and voice 4 (7 and 8).

Here the MIDI resolution for a quarter note or crotchet is 5000,
meaning that such a note is represented as 5000 MIDI timing units;
thus each 4/2 measure takes 40000 such units. Since in this piece the
shortest values are some ornamental eighth notes or quavers, 'note on'
messages would normally occur at MIDI timings evenly divisible by
2500.

However, here the Gaussian rhythm variable 'gar' is set to 'gar=125',
which means, if I understand correctly, that MIDI events will be timed
with a randomization factor based on a normal curve with a standard
deviation of 125/5000 of a quarter note or crotchet. One illustration
of how the algorithm can translate into practice comes at the opening
of measure 3, where all voices simultaneously sound new notes. Without
the randomization, each 'note on' message should occur at 80000 units.

However, the actual note on messages occur at 79964 (voice 3 or
tenor), 80048 (voice 1 or soprano), 80098 (voice 4 or bass) and 80307
(voice 2 or alto).

Anyway, it's a pleasure to make this music and documentation for the
Lasso piece available as a celebration of some of the potentials of
et_compose.

Peace and love,

Margo Schulter
mschulter@...

🔗Paul Erlich <paul@...>

3/4/2005 3:27:43 PM

Hi Margo,

I'll have to compare your realizations later. Thanks for preparing
them!

--- In MakeMicroMusic@yahoogroups.com, Margo Schulter
<mschulter@c...> wrote:

> A complication, however, is the _rhythmic_ alteration that would be
> required if one voice has a sustained note while others move to a
new
> sonority which would require a retuning of that note in order to
> achieve vertical JI.

I wouldn't think that would be a complication in a computer/synth
realization. The note would simply be retuned while already sounding,
without being attacked anew and disturbing the rhythm. 1/4-comma
shifts are small enough that they don't sound like performance
defects when applied to an already sounding note, while 1/2-comma
shifts do (to my ear, at moderate tempos).

> In this file, notes are specified in a division of 1,200,000-EDO --
> that is, in thousands of a cent, which I find intuitive.

Have you made any tests as to what these instructions translate into
after they've been interpreted by your sound-producing hardware (or
software)? You may not always be getting what you're asking for;
probably the resolution is far coarser than thousands of a cent, and
there can be other problems as well (as Joe Monzo once documented).