# Microtonality

Microtonality is a top­ic addressed by many musi­cal sys­tems deal­ing with tonal inter­vals: the use of micro­tones—inter­vals small­er than a semi­tone, also called “microin­t­er­vals”. It may also be extend­ed to include any music using inter­vals not found in the cus­tom­ary west­ern tun­ing of twelve equal inter­vals per octave. In oth­er words, a micro­tone may be thought of as a note that falls between the keys of a piano tuned in equal tem­pera­ment (Wikipedia).

All exam­ples shown on this page are avail­able in the sam­ple set bp3-ctests-main.zip shared via GitHub. Follow instruc­tions on page Bol Processor ‘BP3’ and its PHP inter­face to install BP3 and learn its basic oper­a­tion. Download and install Csound from its dis­tri­b­u­tion page.

## A brief presentation

On elec­tron­ic instru­ments such as the Bol Processor asso­ci­at­ed with Csound, micro­tonal­i­ty is the mat­ter of “micro­ton­al tun­ing”, here mean­ing the con­struc­tion of musi­cal scales alien to the con­ven­tion­al one(s).

Equal tem­pera­ment is an intu­itive mod­el divid­ing the octave (fre­quen­cy ratio 2/1) into 12 “equal” inter­vals called semi­tones. Each semi­tone is assigned a fre­quen­cy ratio of 2 1/12 = 1.059. Tonal inter­vals are gen­er­al­ly mea­sured on a log­a­rith­mic scale by which ratio 2/1 is assigned 1200 cents. Thus, each semi­tone mea­sures 100 cents in a con­ven­tion­al scale system.

An equal-tempered scale is con­ve­nient for mak­ing a piece of music sound iden­ti­cal when trans­posed to a dif­fer­ent key. However, its inter­vals do not match the “nat­ur­al” ones con­struct­ed from inte­ger ratios using num­bers 3, 4, 5. These sim­ple ratios give an impres­sion of con­so­nance as the fre­quen­cies of upper par­tials (har­mon­ics) may coin­cide: if two strings vibrate at a fre­quen­cy ratio of 3/2 (a “per­fect fifth”) then the 3d har­mon­ic of the low­est vibra­tion is at the same fre­quen­cy as the 2nd har­mon­ic of the sharp­er one.

In an equal-tempered scale, the har­mon­ic major third (C - E) mea­sur­ing 400 cents yields a ratio of 1.26 instead of 1.25 (5/4). The major fifth (C -G) also sounds slight­ly “out of tune” with a ratio of 1.498 instead of 1.5 (3/2). These mis­match­es may pro­duce beats rat­ed unpleas­ant in har­mon­ic contexts.

When tun­ing stringed instru­ments (for instance the piano) octaves may be stretched a lit­tle to com­pen­sate a slight inhar­monic­i­ty of upper par­tials pro­duced by vibrat­ing strings (in high­er octaves) as advo­cat­ed by Serge Cordier. A val­ue of 1204 cents sounds fair, with the addi­tion­al advan­tage of mak­ing fifths sound “per­fect” at the ratio of 3/2. In this set­ting, the fre­quen­cy ratio of stretched octaves is 2(1204/1200) = 2.0046. This effect can be repro­duced in elec­tron­ic instru­ments such as dig­i­tal pianos imi­tat­ing mechan­i­cal ones. We will see how to imple­ment it in Bol Processor BP3 + Csound.

Musicologists agree that equal tem­pera­ment has nev­er been accu­rate­ly achieved on clas­si­cal instru­ments such as pipe organs and harp­si­chords. Instrument tuners rather designed rules to ren­der the most pleas­ing inter­vals in spe­cif­ic musi­cal con­texts. In oth­er words, a mechan­i­cal instru­ment should be tuned in com­pli­ance with a style and reper­toire of music. Pierre-Yves Asselin (2000) pub­lished a detailed com­pi­la­tion of tun­ing tech­niques used by European musi­cians and instru­ment mak­ers over the past cen­turies — lis­ten to exam­ples on page Comparing tem­pera­ments. The same flex­i­bil­i­ty can be achieved with sounds pro­duced by “algo­rithms”.

Outside west­ern clas­si­cal music, a myr­i­ad of tonal sys­tems are delib­er­ate­ly reject­ing 12-tone-in-one-octave tonal­i­ty. Arabic-Andalusian music is often described as a “quar­ter­tone” sys­tem divid­ing the octave in 24 inter­vals. Equal-tempered 7-grade scales have been iden­ti­fied on var­i­ous tra­di­tion­al African instru­ments. The grama-murcchana the­o­ret­i­cal mod­el of tonal music in India claims the use of 22 shru­ti-s, pre­sum­ably microin­t­er­vals of unequal sizes (see below).

## The scale() operator in Bol Processor BP3 + Csound

Csound scores are flex­i­ble in terms of rep­re­sent­ing tonal posi­tions. A com­mon con­ven­tion is octave point pitch-class. For instance, note “A4” would be assigned tonal posi­tion “8.09”, which means that it is the 9th note in the 8th octave (in English con­ven­tion). This val­ue yields a note at the dia­pa­son fre­quen­cy (usu­al­ly 440 Hz) on a basic Csound instrument.

It is also pos­si­ble to spec­i­fy the note posi­tion by its fre­quen­cy in cycles per sec­ond (cps mode). This allows a high accu­ra­cy since fre­quen­cies are expressed in float­ing point. In this for­mat, “A4” would for instance be assigned “440.0”. Better than 1‰ accu­ra­cy is not perceptible.

As explained on page Csound tun­ing in BP3, it is pos­si­ble to send to the same Csound instru­ment notes in octave point pitch-class and and cps for­mat. Microtonal scales will indeed use exclu­sive­ly cps. The cps mode is also acti­vat­ed on BP3 when­ev­er the dia­pa­son fre­quen­cy is not exact­ly 440 Hz. To ren­der all fre­quen­cies vis­i­ble, set it for instance to “400.01”…

Let us take a sim­ple exam­ple to demon­strate the use of sev­er­al scales. The gram­mar is:

-se.tryScales
-cs.tryScales
ORD
S --> _scale(0,0) C4 E4 A4 {8,{C4,E4,G4,C5}} {8,{C4,Eb4,G4,C5}} - _scale(piano,C4) C4 E4 A4 {8,{C4,E4,G4,C5}}{8,{C4,Eb4,G4,C5}} - _scale(just into­na­tion,C4) C4 E4 A4 {8,{C4,E4,G4,C5}} {8,{C4,Eb4,G4,C5}}

In this gram­mar, the same sequence is repeat­ed three times with dif­fer­ent tunings:

• _scale(0,0) is the default tun­ing = twelve-tone equal-tempered
• _scale(piano, C4) is the one men­tioned for the piano
• _scale(just into­na­tion, C4) is a (so-called) “just-intonation” scale

Note “C4” appear­ing in these oper­a­tors is the block key, here mean­ing the key that needs to match its equal-tempered val­ue in the tun­ing adjust­ed by the scale.

It may be nec­es­sary to hear sev­er­al times the sound ren­der­ing to grasp minute differences:

The sound is pro­duced by Csound instru­ment “new-vina.orc” designed by Srikumar Karaikudi Subramanian to imi­tate the Sarasvati vina, a long-stringed instru­ment played in South India — lis­ten to his demo: Sarasvati vina. This type of instru­ment is able to stress minute tonal subtleties.

Beats are audi­ble on the equal-tempered ver­sion, yet a lit­tle less on the piano ver­sion and almost absent of the just-intonation ren­der­ing. Looking at the Csound score makes an easy check of the­o­ret­i­cal models:

f1 0 256 1 “vina-wave-table.aiff” 0 4 0

t 0.000 60.000
i1 0.000 1.000 8.00 90.000 90.000 0.000 0.000 0.000 0.000 ; C4
i1 1.000 1.000 8.04 90.000 90.000 0.000 0.000 0.000 0.000 ; E4
i1 2.000 1.000 8.09 90.000 90.000 0.000 0.000 0.000 0.000 ; A4
i1 3.000 8.000 8.00 90.000 90.000 0.000 0.000 0.000 0.000 ; C4
i1 3.000 8.000 8.04 90.000 90.000 0.000 0.000 0.000 0.000 ; E4
i1 3.000 8.000 8.07 90.000 90.000 0.000 0.000 0.000 0.000 ; G4
i1 3.000 8.000 9.00 90.000 90.000 0.000 0.000 0.000 0.000 ; C5
i1 11.000 8.000 8.00 90.000 90.000 0.000 0.000 0.000 0.000 ; C4
i1 11.000 8.000 8.03 90.000 90.000 0.000 0.000 0.000 0.000 ; Eb4
i1 11.000 8.000 8.07 90.000 90.000 0.000 0.000 0.000 0.000 ; G4
i1 11.000 8.000 9.00 90.000 90.000 0.000 0.000 0.000 0.000 ; C5

i1 20.000 1.000 261.630 90.000 90.000 0.000 0.000 0.000 0.000 ; dop3
i1 21.000 1.000 329.915 90.000 90.000 0.000 0.000 0.000 0.000 ; mip3
i1 22.000 1.000 440.585 90.000 90.000 0.000 0.000 0.000 0.000 ; lap3
i1 23.000 8.000 261.630 90.000 90.000 0.000 0.000 0.000 0.000 ; dop3
i1 23.000 8.000 329.915 90.000 90.000 0.000 0.000 0.000 0.000 ; mip3
i1 23.000 8.000 392.445 90.000 90.000 0.000 0.000 0.000 0.000 ; solp3
i1 23.000 8.000 524.463 90.000 90.000 0.000 0.000 0.000 0.000 ; dop4
i1 31.000 8.000 261.630 90.000 90.000 0.000 0.000 0.000 0.000 ; dop3
i1 31.000 8.000 311.340 90.000 90.000 0.000 0.000 0.000 0.000 ; mibp3
i1 31.000 8.000 392.445 90.000 90.000 0.000 0.000 0.000 0.000 ; solp3
i1 31.000 8.000 524.463 90.000 90.000 0.000 0.000 0.000 0.000 ; dop4

i1 40.000 1.000 261.630 90.000 90.000 0.000 0.000 0.000 0.000 ; Cj4
i1 41.000 1.000 327.038 90.000 90.000 0.000 0.000 0.000 0.000 ; Ej4
i1 42.000 1.000 436.137 90.000 90.000 0.000 0.000 0.000 0.000 ; Aj4
i1 43.000 8.000 261.630 90.000 90.000 0.000 0.000 0.000 0.000 ; Cj4
i1 43.000 8.000 327.038 90.000 90.000 0.000 0.000 0.000 0.000 ; Ej4
i1 43.000 8.000 392.445 90.000 90.000 0.000 0.000 0.000 0.000 ; Gj4
i1 43.000 8.000 523.260 90.000 90.000 0.000 0.000 0.000 0.000 ; Cj5
i1 51.000 8.000 261.630 90.000 90.000 0.000 0.000 0.000 0.000 ; Cj4
i1 51.000 8.000 313.956 90.000 90.000 0.000 0.000 0.000 0.000 ; Dj#4
i1 51.000 8.000 392.445 90.000 90.000 0.000 0.000 0.000 0.000 ; Gj4
i1 51.000 8.000 523.260 90.000 90.000 0.000 0.000 0.000 0.000 ; Cj5
s

In the Csound score, note names have been auto­mat­i­cal­ly replaced with their trans­la­tions in the def­i­n­i­tions of scales piano and just into­na­tion (see below). For instance, in the piano scale of this exam­ple, ‘C4’, ‘D4’, ‘E4’… have been replaced with ‘do3’, ‘re3’, ‘mi3’ and a mark­er ‘p’ has been insert­ed: ‘dop3’, ‘rep3’, ‘mip3’… Similarly, just into­na­tion notes are labelled ‘Cj4’, ‘Dj4’, ‘Ej4’ etc. This renam­ing is option­al since all these scales are made of 12 grades with iden­ti­cal key posi­tions, but it is used here to make the Csound score more explicit.

The use of “C4” as a block key results in that it is always ren­dered at fre­quen­cy 261.630 Hz. Consequently, “A4” is at 440 Hz in the first occur­rence and a bit high­er in the piano ver­sion due to the octave stretch­ing with ratio 524.463 / 261.630 = 2.0046 = 1204 cents.

Finally, we notice that, as pre­dict­ed by the mod­el, the per­fect major fifth (C - G) yields equal posi­tions (392.445 Hz) in the piano and just into­na­tion scales.

➡ In real­i­ty, the “just into­na­tion” frag­ment in this exam­ple would be out of tune if we fol­low the frame­work of tonal­i­ty sug­gest­ed by Asselin (2000) and con­firmed by an exten­sion of the ancient grama-murcchana sys­tem in India. In the last “C minor” chord {C4,Eb4,G4,C5}, notes “C4”, “C5” and “G4” should be low­ered by a syn­ton­ic com­ma. This means that play­ing just into­na­tion in west­ern har­mo­ny demands more than a sin­gle just-intonation scale: each har­mon­ic con­text requires its own spe­cif­ic tun­ing, which indeed can­not be achieved on key­board instru­ments. A method for build­ing just-intonation scales and using them in Bol Processor music is exposed on page Just into­na­tion: a gen­er­al frame­work.

## Looking at two scales

From the gram­mar page “-gr.tryScales” we can fol­low the Csound resource file “-cs.tryScales” con­tain­ing scale and instru­ment def­i­n­i­tions. The same file con­tains instruction

f1 0 256 1 “vina-wave-table.aiff” 0 4 0

telling the Csound instru­ment to use the “vina” waveform.

Below is a rep­re­sen­ta­tion of the piano scale (Cordier’s equal temperament):

All inter­vals have been set in a sin­gle click after enter­ing “1204” as the size of the octave in cents, which fixed the last ratio to 2.004 (approx­i­mat­ed as 501/250). Then but­ton “INTERPOLATE” was clicked to cal­cu­late inter­me­di­ate ratios.

The scale is dis­played as a cir­cu­lar graph click­ing the “IMAGE” link:

The dis­play con­firms that the posi­tion of “G” (“solp”) is ratio 3/2 or 702 cents. However, the tonal dis­tance between “G” (“solp”) and “D” (“rep”) is slight­ly small­er (699 cents), which means that this scale is not a pure cycle of fifths as the lat­ter would have end­ed up, after 12 steps, with an octave stretched by one Pythagorean com­ma (scale “twelve_fifths” in “-cs.tryScales”):

The basekey is the key aimed at pro­duc­ing base­freq. Here base­freq is set to 261.630 Hz for key #60 which is usu­al­ly the “mid­dle C” on a piano key­board. Parameter base­freq has an effect on the pitch which is fur­ther adjust­ed by the val­ue of the dia­pa­son entered in “-se.tryScales”. If the dia­pa­son were set to 430 Hz, the fre­quen­cy of “C4” would be 261.630 x 430 / 440 = 255.68 Hz.

Parameter baseoc­tave is not stored in the Csound func­tion table, but it is required by Bol Processor to name notes prop­er­ly. This scale uses the French note con­ven­tion by which key #60 is named “do3” instead of “C4”. Therefore baseoc­tave = 3.

## Temperament

At the bot­tom of the “Scale” page is a form for con­struct­ing scales in musi­cal tem­pera­ment. The range of this pro­ce­dure is larg­er than usu­al because the inter­face makes it pos­si­ble to mod­i­fy any series of inter­vals, not only fifths and fourths.

Bol Processor pro­ce­dures for the pro­duc­tion of tem­pered scales (and all scales in gen­er­al) may be used both for visualizing/hearing inter­vals and chords derived from a the­o­ret­i­cal descrip­tion of the scale, and for check­ing that a pro­ce­dure for tun­ing mechan­i­cal instru­ment is com­pli­ant with its the­o­ret­i­cal descrip­tion. Below is an exam­ple of both approach­es applied to Zarlino’s mean­tone temperament.

The long sto­ry of tem­pera­ment in European music is exposed in Pierre-Yves Asselin’s the­sis (2000 p. 139-150). During the 16th and 17th cen­turies, European musi­cians tend­ed to pre­fer “pure” major thirds (fre­quen­cy ratio 5/4) at the cost of com­pro­mis­ing the size of fifths. This was named “pure third mean­tone tem­pera­ment”, gen­er­al­ly achieved by decreas­ing the size of cer­tain fifths by a frac­tion of the syn­ton­ic com­ma. After this peri­od there was anoth­er fash­ion of using per­fect fifths (fre­quen­cy ratio 3/2) and com­pro­mis­ing the size of major thirds in the same way. Both options — and many more — are imple­ment­ed on Bol Processor’s inter­face. Algorithmic tun­ing is indeed eas­i­er to achieve than the tun­ing of mechan­i­cal instruments!

### Zarlino, theory

Let us try Zarlino’s mean­tone tem­pera­ment (Asselin 2000 p. 85-87) which became pop­u­lar in the 16th and 17th cen­turies. It is made of 12 fifths start­ing from “E♭” (“mi♭”) up to “G#” (“sol#”) dimin­ished by 2/7 of a syn­ton­ic com­ma — that is 6 cents.

This should not be con­fused with Zarlino’s “nat­ur­al scale” which is an instance of just into­na­tion.

In the­o­ry, this is achieved in two steps from the posi­tion of “C” which is known in advance.

First we enter the start note “do” and the sequence of fifths “do, sol, re…, sol#”, spec­i­fy­ing ratios equal to 3/2 with a mod­i­fi­ca­tion of -2/7 com­ma (see picture).

Then we do the same with fourths (descend­ing fifths) start­ing from “do” (“C”) down to “mi♭” (“E♭”).

The result is shown by click­ing the IMAGE link:

In this tem­pera­ment, har­mon­ic major thirds (green con­nec­tions on the graph) are equal and slight­ly small­er (384 cents) than the “pure” ones (ratio 5/4 or 386 cents). Semitones between unal­tered and altered notes are equal (71 cents). All major tones are equal (192 cents) except “do#-mi♭” and “sol#-sib” (242 cents).

Noticeable dis­so­nance is found in the “sol#-mi♭” fifth (746 cents, i.e. an extra 2 + 1/7 com­mas = 44 cents) and major thirds such as “sol#-do”, “do#-fa”, “fa#-sib” and “si-mi♭” which are larg­er (433 cents) than Pythagorean major thirds (408 cents). Evidently, these inter­vals are not sup­posed to be used in the musi­cal reper­toire to which this tun­ing is applied…

### Comparison

A lay per­son may won­der whether small tonal adjust­ments — often less than the quar­ter of a semi­tone — pro­duce notice­able effects on the musi­cal works using these tun­ing sys­tems. Comparative exper­i­ments are easy on Bol Processor.

Let us for instance play one (among the bil­lion vari­a­tions) of Mozart’s musi­cal dice game with tun­ing options select­ed by acti­vat­ing a first rule in “-gr.Mozart”:

// gram#1[1] S --> _vel(80)_tempo(3/4) _scale(0,0) A B // Equal tem­pera­ment
// gram#1[2] S --> _vel(80) _tempo(3/4) _scale(piano,0) A B // Equal tem­pera­ment (Cordier)
// gram#1[3] S --> _vel(80) _tempo(3/4) _scale(Zarlino_temp,0) A B // Zarlino’s tem­pera­ment
// gram#1[4] S --> _vel(80) _tempo(3/4) Ajust Bjust // Just intonation

Musical pro­duc­tions are list­ed below. The ran­dom seed has been set to 998 (in “-se.Mozart”) as this vari­a­tion con­tains a greater num­ber of chords, and the per­for­mance has been slowed down by “_tempo(3/4)”.

It is impor­tant to remem­ber that among these options only the first three ones (tem­pera­ments) are acces­si­ble to fixed-pitch instru­ments with 12-grade key­boards. The last one (just into­na­tion) requires a “retun­ing” of each har­mon­ic con­tent — read page Just into­na­tion: a gen­er­al frame­work.

The first option (equal tem­pera­ment) is the tun­ing by default of most elec­tron­ic instruments:

The sec­ond option is an equal tem­pera­ment with octaves stretched by 4 cents, as advo­cat­ed by Serge Cordier (see above):

The third option is Zarlino’s temperament:

The last option is “just intonation”:

### Zarlino: a simulation of physical tuning

Tuning mechan­i­cal instru­ments (such as a harp­si­chord) demands pro­ce­dures dif­fer­ent from the pro­gram­ming of “tem­pered” scales on Bol Processor. However, using the com­put­er makes it pos­si­ble to quick­ly ver­i­fy that the mechan­i­cal pro­ce­dure would yield the expect­ed result. Let us demon­strate it with Zarlino’s temperament.

On the com­put­er we had pro­grammed a series of 7 ascend­ing fifths dimin­ished by 2/7 com­ma from“do” to “do#”. This is impos­si­ble to achieve “by ear” on a mechan­i­cal instru­ment. Pierre-Yves Asselin (2000 p. 86) revealed the method illus­trat­ed below.

1st step

From “do”, tune two suc­ces­sive major thirds. This pro­duces a “sol#” posi­tioned at fre­quen­cy ratio 25/16 (773 cents) above “do”.

This “sol#” is actu­al­ly “SOL#+2” of the 2nd-order har­mon­ic fifths down­ward series in Asselin’s tun­ing frame­work (2000 p. 62) — read page Just into­na­tion: a gen­er­al frame­work. It is not exact­ly the one expect­ed on Zarlino’s mean­tone tem­pera­ment, although close to it. It will be labeled “sol2#”.

2nd step

From “sol2#” tune down a per­fect fifth yield­ing “do#”.

Beware to pro­gram a per­fect fifth spec­i­fied as “add 0/1 com­ma” on the form. There is also a form for cre­at­ing series of per­fect fifths that can be used for this step.

The result­ing “do#” (ratio 1.04166) is exact­ly 52/3/23, the one expect­ed in Zarlino’s mean­tone tem­pera­ment (Asselin 2000 p. 194).

3d step

Tune 7 equal fifths between “do” and “do#”. Equalizing fifths is a typ­i­cal pro­ce­dure for tun­ing mechan­i­cal instru­ments. A gen­er­al pro­ce­dure is avail­able on Bol Processor to equal­ize inter­vals over a series of notes. Here we spec­i­fy that these inter­vals should be close to frac­tion 3/2, even though we know that they will end up as fifths dimin­ished by 2/7 comma.

Missing notes “sol, re ‚la, si, fa#” are cre­at­ed. For note “mi” which is already exist­ing, the machine checks that its cur­rent posi­tion is close to the one pre­dict­ed by the approx­i­mate fraction.

The graph reveals that the cal­cu­lat­ed posi­tion of “mi” (ratio 1.248) is slight­ly off its pre­vi­ous posi­tion (1.25) but this dif­fer­ence is neg­li­gi­ble. We keep both posi­tions on the graph, know­ing that only one occurs on a phys­i­cal tuning.

4th step

Now tune down 3 fifths dimin­ished by 2/7 com­ma from “do” to “mi♭”. This can be done by repro­duc­ing “by ear” inter­vals cre­at­ed in the pre­vi­ous step. Another method is to tune “mi♭” one major third below “sol” as shown on the form.

5th step

Once “mi♭” has been tuned we can tune three equal (in fact dimin­ished by 2/7 com­ma) fifths between “mi♭” and “do”. Again the “equal­ize inter­vals” pro­ce­dure is used to this effect. At this stage, the posi­tions of “si♭” and “fa” are created.

The result is shown on the fol­low­ing graph:

On this graph, ratio 1.563 for “sol#” is close (with­in 7 cents) to 1.557 of Zarlino’s tem­pera­ment. On a mechan­i­cal instru­ment, since “mi” tuned by equal­iz­ing fifths (3d step) was at posi­tion 1.248, adjust­ing the “mi-sol#” major third to a 5/4 ratio would set “sol#” at a bet­ter ratio (1.56).

### More temperaments

All tem­pera­ments list­ed in Asselin’s the­sis can be eas­i­ly pro­grammed on the Bol Processor. Let us take for exam­ple a clas­si­cal mean­tone tun­ing (Asselin 2000 p. 76) pop­u­lar in the 16th-17th cen­turies, also known as Chaumont (Asselin 2000 p. 109) . It aimed at pro­duc­ing “pure thirds” (ration 5/4). It is made of a series of fifths from “mi♭” (“E♭”) to “sol#” (“G#”) dimin­ished by 1/4 com­ma. The prob­lem is that the tun­ing scheme — unlike Zarlino’s mean­tone — does not start from “do” (“C”). There are two solutions.

The first solu­tion is to break the series of fifths in two parts: first cre­ate the “do, sol, re, la, mi, si, fa#, do#, sol#” series of ascend­ing fifths, then the “do, fa, si♭, mi♭” series of descend­ing fifths.

In the sec­ond solu­tion we direct­ly cre­ate the “mi♭, si♭, fa, do, sol, re, la, mi, si, fa#, do#, sol#” series of ascend­ing fifths, yield­ing the graph shown below.

This tun­ing is cor­rect but it can­not be used by the Bol Processor con­sole because of the dis­place­ment of the ref­er­ence. Complicated pro­ce­dures would be required to set the dia­pa­son (A4 fre­quen­cy) to the desired stan­dard and assign prop­er key num­bers to notes of the scale.

Fortunately, the prob­lem is solved in a sin­gle click by reset­ing the base of the scale to note “do”, which amounts to a rota­tion of the graph.

We take this oppor­tu­ni­ty to replace the Italian/French with the English note convention.

The result is the clas­si­cal mean­tone scale tun­ing which is remark­able for its large num­ber of har­mon­ic major thirds (cir­ca 5/4):

The same meth­ods can be used to imple­ment anoth­er tem­pera­ment pop­u­lar at the same time (16th-17th c.) which aims at enhanc­ing pure minor thirds (Asselin 2000 p. 83). It can also be described as a series of ascend­ing fifths from “mi♭” to “sol#” with a dif­fer­ent adjust­ment: fifths are dimin­ished by 1/3 comma.

In this tun­ing, minor thirds are sized 316 cents (har­mon­ic minor third, fre­quen­cy ratio 6/5) with the excep­tion of “A#-C#”, “D#-F#” and “F-G#” all sized 352 cents:

The BACH tem­pera­ment designed by Johann Peter Kellner for 18th cen­tu­ry music (Asselin 2000 p. 101-103) con­tains two vari­eties of fifths (see tun­ing scheme).

It can be pro­grammed in 3 steps:

1. A series of descend­ing fifths from “do-sol-re-la-mi”, dimin­ished by 1/5 comma;
2. A series of ascend­ing per­fect fifths from “do” to “sol♭”;
3. An ascend­ing per­fect fifth from “mi” to “si”.

The last inter­val is a remain­ing fifth “si-sol♭” (“B-G♭”) exact­ly dimin­ished by 1/5 com­ma (i.e. 697 cents).

The result is close to Werkmeister III (1691) (Asselin 2000 p. 94) with all posi­tions close to the Pythagorean/harmonic series used for just into­na­tion.

Procedures for tun­ing tem­pera­ments with the Bol Processor some­times dif­fer from the ones used for phys­i­cal instru­ments. An exam­ple is Werckmeister IV (Asselin 2000 p. 96) and Werckmeister V (p. 99). To tune Werckmeister IV on a instru­ment (see pic­ture), we start with the tun­ing of sequence G C F Bb Eb Ab Db Gb B E as per­fect descend­ing fifths. Then inter­po­late three fifths (dimin­ished by 1/3 com­ma) between G and E. Then retune G so that G D becomes a per­fect fifth, which reduces C G by 1/3 com­ma. The same is done on E so that A E becomes a per­fect fifth and E B is dimin­ished by 1/3 com­ma. Similar adjust­ments are done to retune Bb, and final­ly Ab and Db to reach inter­vals shown on the picture.

On Bol Processor the same pro­ce­dure can be fol­lowed if the 1/3 com­ma cor­rec­tion is replaced with 7 cents. Another pro­ce­dure amounts to “adding” inter­vals, which is accept­able on a dig­i­tal mod­el because of the accu­ra­cy. This pro­ce­dure is auto­mat­i­cal­ly sum­marised at the bot­tom of the “scale” page:

Werckmeister IV tem­pera­ment (Asselin 2000 p. 96)
Added fifths down: “do,fa” start­ing frac­tion 1/1
Created mean­tone down­ward notes “fa,sib” frac­tion 3/2 adjust­ed -1/3 com­ma
Created mean­tone down­ward notes “sib,mib,sol#” frac­tion 3/2 adjust­ed 1/3 com­ma
Created mean­tone down­ward notes “sol#,do#” frac­tion 3/2
Created mean­tone down­ward notes “do#,fa#” frac­tion 3/2 adjust­ed -1/3 com­ma
Created mean­tone down­ward notes “fa#,si” frac­tion 3/2
Created mean­tone down­ward notes “si,mi” frac­tion 3/2 adjust­ed -1/3 com­ma
Created mean­tone down­ward notes “mi,la” frac­tion 3/2
Created mean­tone upward notes “do,sol” frac­tion 3/2 adjust­ed -1/3 com­ma
Created mean­tone upward notes “sol,re” frac­tion 3/2

Let us com­pare a few tem­pera­ments on ascend­ing unal­tered and descend­ing altered scales…

Eighteen tem­pera­ments described by Pierre-Yves Asselin (2000) have been pro­grammed in the “-cs.trTunings” Csound resource. These can be checked against diverse musi­cal works, read pages Comparing tem­pera­ments and Tonal analy­sis of musi­cal works.

As Schlick’s tem­pera­ment was not ful­ly doc­u­ment­ed, we set up “do-la♭” as a pure major third and “mi-sol#” as a major third increased by 2/3 com­ma. Consequently, “sol#” and “la♭” remain distinct.

Implementations of tem­pera­ments in the Bol Processor may be tak­en as ref­er­ence because (1) errors might have occurred and (2) it is impor­tant to know for which musi­cal reper­toire each tem­pera­ment has been designed. Also read in detail chap­ter VIII Musique et tem­péra­ments (Asselin 2000 p. 139-180) expos­ing the his­to­ry of tem­pera­ment along with musi­cal exam­ples dis­cussed in terms of instru­ment tuning.

Circular graphs dis­play notice­able inter­vals — per­fect fifths, wolf fifths, har­mon­ic and Pythagorean major thirds — in a broad range of incer­ti­tude. For exam­ple, in the Tartini-Vallotti tem­pera­ment shown above, “C-E” is list­ed as a har­mon­ic major third (green seg­ment) although it is a lit­tle larg­er (+7 cents) than a “pure” major third (ratio 5/4). The safe pro­ce­dure for check­ing the com­pli­ance of this tun­ing with its descrip­tion is to read devi­a­tions in the inter­val list (see picture).

In a few tem­pera­ments, the sizes of fifths are not explic­it­ly giv­en as the instru­ment tuner is instruct­ed to tune slight­ly larg­er (than per­fect) or slight­ly small­er fifths. This is the case with D’Alembert-Rousseau tem­pera­ment (Asselin 2000 p. 119) in which the series “do, fa, sib, mi♭, sol#” is expect­ed to be slight­ly larg­er and “sol#, do#, fa#, si, mi” slight­ly small­er… In addi­tion, the frame­work should be “com­plete”, which implies the absence of a left-over frac­tion of com­ma when clos­ing the cycle of fifths.

In this exam­ple, con­di­tions were met increas­ing by 1/12 com­ma (+2 cents) the slight­ly larg­er fifths “do, fa, sib, mi♭, sol#”. To close the cycle appro­pri­ate­ly, the last series “sol#, do#, fa#, si, mi” was declared as equal­ized inter­vals. This result­ed in slight­ly small­er fifths dimin­ished by 2 cents reflect­ing the slight­ly larg­er ones. Incidently, this adjust­ment of -1/12 com­ma is also the one required for con­struct­ing an equal-tempered scale.

The entire process of build­ing scales is auto­mat­i­cal­ly record­ed in the Comments area of the “scale” page, for instance “d_alembert_rousseau”:

D’Alembert-Rousseau tem­pera­ment (Asselin 2000 p. 119)
Created mean­tone upward notes “do,sol,re,la,mi” frac­tion 3/2 adjust­ed -1/4 com­ma
Created mean­tone down­ward notes “do,fa,sib,mib,sol#” frac­tion 3/2 adjust­ed 1/12 com­ma
Equalized inter­vals over series “sol#,do#,fa#,si,mi” approx frac­tion 2/3 adjust­ed 2.2 cents to ratio = 0.668

It took us about 8 min­utes to under­stand the pro­ce­dure and anoth­er 8 min­utes to tune the scale as per D’Alembert-Rousseau…

A com­par­i­son of tem­pera­ments applied to sev­er­al pieces of Baroque music is avail­able on page Comparing tem­pera­ments.

The whole set of tun­ing schemes cur­rent­ly imple­ment­ed on Bol Processor is rep­re­sent­ed on this page : https://bolprocessor.org/misc/figs/list-scales.php

We will use a mod­el of ancient Indian musi­col­o­gy to demon­strate divi­sions of more than 12 grades per octave. This mod­el is an inter­pre­ta­tion of the descrip­tion of basic scales (gra­ma) and their trans­po­si­tions (mur­ccha­na) in Bharata Muni’s Natya Shastra, a trea­tise dat­ing back to a peri­od between 400 BCE and 200 CE — read page The two-vina exper­i­ment.

The grama-murcchana mod­el and its appli­ca­tion to west­ern har­mo­ny are described on page Just into­na­tion: a gen­er­al frame­work. Its appli­ca­tion to Hindustani music is pre­sent­ed on page Raga into­na­tion.

E.J. Arnold (1982) had designed a device for demon­strat­ing the trans­po­si­tion of scales in Bharata’s mod­el. The actu­al divi­sion of the octave is 23 steps, yet this amounts to hav­ing 22 option­al posi­tions (shru­ti-s) giv­en that the base note has only one option.

The result may be described as 11 pairs of note posi­tions yield­ing 211 = 2048 pos­si­ble chro­mat­ic scales. Among these, only 12 are “opti­mal­ly con­so­nant”, i.e. with only one “incor­rect” major fifth (short by 1 syn­ton­ic com­ma = 22 cents). These 12 scales are the ones that may be used in har­mon­ic or modal music to expe­ri­ence the best consonance.

Below is an image of the “gra­ma” scale as dis­played by the edi­tor of BP3:

In this scale we use the Indian sargam con­ven­tion­al nota­tion: sa, re, ga, ma , pa, dha, ni, trans­lat­ed as “C”, “D”, “E”, “F”, “G”, “A”, “B”. Note “re” (“D”), for instance, may be found at four posi­tions: r1 and r2 are the two options for “D♭”, the first one (256/243) being called “Pythagorean” (derived from five descend­ing fifths) and the sec­ond one (16/15) “har­mon­ic” (derived from a descend­ing fifth and a descend­ing major third). Positions r2 and r3 are “D♮” (nat­ur­al) with r3 har­mon­ic (10/9) and r4 Pythagorean (9/8).

There are par­tic­u­lar cas­es (vis­i­ble on the wheel mod­el) as m3 is almost super­posed with p1 and m4 with p2, their dif­fer­ence being an inaudi­ble schis­ma (32805 / 32768 = 1.00112 = 1.9 cents). We use m3p1 and m4p2 to des­ig­nate these merged positions.

Intervals dis­played in cents are the ones iden­ti­fied by west­ern musi­col­o­gists: the Pythagorean lim­ma (256/243 = 90 cents), the syn­ton­ic com­ma (81/80 = 22 cents) and the minor semi­tone (25/24 = 70 cents). This reveals that a shru­ti as described by Bharata may be of 3 dif­fer­ent sizes. However, in its appli­ca­tion to Indian music, this mod­el should be ren­dered “flex­i­ble” with a mea­sure of the syn­ton­ic com­ma (pramāņa ṣru­ti) between 0 and 56.8 cents — read page The two-vina exper­i­ment.

Clicking the IMAGE link yields a cir­cu­lar graph­ic rep­re­sen­ta­tion of the “gra­ma” scale:

Let us play a dia­ton­ic scale fol­low­ing the grama-murcchana mod­el, an occur­rence of west­ern just-intonation scales and the piano stretched-octave tun­ing, again with “C4” (or “sa_4”) as the block key. The gram­mar is named “-gr.tryShruti”:

S --> _tempo(2) _scale(grama, sa_4) sa_4 r4_4 g3_4 m1_4 p4_4 d3_4 n3_4 sa_5 _scale(just into­na­tion, C4) C4 D4 E4 F4 G4 A4 B4 C5 _scale(piano, C4) do4 re4 mi4 fa4 sol4 la4 si4 do5

Differences are hard­ly notice­able for a sim­ple rea­son: the first two ones are iden­ti­cal since this just into­na­tion scale is a par­tic­u­lar instance of grama-murcchana, where­as the piano scale is a fair approx­i­ma­tion of the for­mer ones. This is clear in the fol­low­ing Csound score:

f1 0 256 1 “vina-wave-table.aiff” 0 4 0

t 0.000 60.000
i1 0.000 0.500 261.630 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_4
i1 0.500 0.500 294.334 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; r4_4
i1 1.000 0.500 327.038 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; g3_4
i1 1.500 0.500 348.753 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; m1_4
i1 2.000 0.500 392.445 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; p4_4
i1 2.500 0.500 436.137 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; d3_4
i1 3.000 0.500 490.556 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; n3_4
i1 3.500 0.500 523.260 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_5

i1 4.000 0.500 261.630 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; Cj4
i1 4.500 0.500 294.334 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; Dj4
i1 5.000 0.500 327.038 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; Ej4
i1 5.500 0.500 348.753 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; Fj4
i1 6.000 0.500 392.445 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; Gj4
i1 6.500 0.500 436.137 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; Aj4
i1 7.000 0.500 490.556 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; Bj4
i1 7.500 0.500 523.260 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; Cj5

i1 8.000 0.500 261.630 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; do4
i1 8.500 0.500 293.811 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; re4
i1 9.000 0.500 329.916 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; mi4
i1 9.500 0.500 349.538 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; fa4
i1 10.000 0.500 392.445 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sol4
i1 10.500 0.500 440.585 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; la4
i1 11.000 0.500 494.742 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; si4
i1 11.500 0.500 524.464 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; do5
s

Let us now lis­ten to the 22 shru­tis against a drone (“C” and “G” trans­lat­ed as sa and p4):

S --> scale(grama,sa_4) {9 Full_scale _ _ _ , Drone} - - tempo(3/4) {_retro Full_scale} _ _ _
Full_scale --> sa_4 r1_4 r2_4 r3_4 r4_4 g1_4 g2_4 g3_4 g4_4 m1_4 m2_4 m3p1_4 m4p2_4 p3_4 p4_4 d1_4 d2_4 d3_4 d4_4 n1_4 n2_4 n3_4 n4_4 sa_5
Drone --> _volume(30) Droneseq Droneseq Droneseq Droneseq Droneseq Droneseq Droneseq Droneseq
Droneseq --> {_legato(300) p4_3 sa_4 sa_4 sa_3}

Note the usage of the _retro per­for­mance tool to reverse the order of the Full_scale sequence. The _legato(300) instruc­tion extends the dura­tion of notes up to 3 times their cur­rent dura­tion. This pro­duces a Droneseq sound struc­ture akin to that of the Indian tan­pu­ra.

In the sound ren­der­ing of this exam­ple, a 279 Hz sam­ple wave­form of a Miraj tan­pu­ra has been used to feed the Karplus-Strong algo­rithm.

f1 0 0 1 “tanpura_waveform.aiff” 0 4 0

t 0.000 60.000
i1 1.125 1.125 261.630 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_4
i1 0.000 4.500 196.223 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; p4_3
i1 2.250 3.375 261.630 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_4
i1 5.625 1.125 261.630 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_4
i1 3.375 4.500 130.815 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_3
i1 4.500 4.500 196.223 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; p4_3
i1 9.000 1.000 261.630 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_4
i1 6.750 3.375 261.630 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_4
i1 10.000 1.000 275.496 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; r1_4
i1 10.125 1.125 261.630 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_4
i1 11.000 1.000 279.159 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; r2_4
i1 7.875 4.500 130.815 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_3
i1 12.000 1.000 290.671 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; r3_4
i1 9.000 4.500 196.223 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; p4_3
i1 13.000 1.000 294.334 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; r4_4
i1 11.250 3.375 261.630 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_4
i1 14.000 1.000 310.032 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; g1_4
i1 14.625 1.125 261.630 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_4
i1 15.000 1.000 313.956 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; g2_4
i1 12.375 4.500 130.815 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_3
i1 16.000 1.000 327.038 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; g3_4
i1 17.000 1.000 331.224 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; g4_4
i1 13.500 4.500 196.223 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; p4_3
i1 18.000 1.000 348.753 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; m1_4
i1 15.750 3.375 261.630 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_4
i1 19.000 1.000 353.201 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; m2_4
i1 19.125 1.125 261.630 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_4
i1 20.000 1.000 367.852 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; m3p1_4
i1 16.875 4.500 130.815 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_3
i1 21.000 1.000 372.038 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; m4p2_4
i1 18.000 4.500 196.223 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; p4_3
i1 22.000 1.000 387.474 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; p3_4
i1 20.250 3.375 261.630 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_4
i1 23.000 1.000 392.445 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; p4_4
i1 23.625 1.125 261.630 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_4
i1 24.000 1.000 413.375 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; d1_4
i1 21.375 4.500 130.815 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_3
i1 25.000 1.000 418.608 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; d2_4
i1 26.000 1.000 436.137 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; d3_4
i1 22.500 4.500 196.223 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; p4_3
i1 27.000 1.000 441.632 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; d4_4
i1 24.750 3.375 261.630 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_4
i1 28.000 1.000 465.178 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; n1_4
i1 28.125 1.125 261.630 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_4
i1 29.000 1.000 470.934 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; n2_4
i1 25.875 4.500 130.815 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_3
i1 30.000 1.000 490.556 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; n3_4
i1 27.000 4.500 196.223 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; p4_3
i1 31.000 1.000 496.574 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; n4_4
i1 29.250 3.375 261.630 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_4
i1 32.625 1.125 261.630 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_4
i1 30.375 4.500 130.815 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_3
i1 32.000 4.000 523.260 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_5
i1 31.500 4.500 196.223 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; p4_3
i1 33.750 4.500 261.630 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_4
i1 38.000 1.333 523.260 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_5
i1 34.875 4.500 130.815 30.000 30.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_3
i1 39.333 1.333 496.574 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; n4_4
i1 40.666 1.334 490.556 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; n3_4
i1 42.000 1.333 470.934 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; n2_4
i1 43.333 1.333 465.178 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; n1_4
i1 44.666 1.334 441.632 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; d4_4
i1 46.000 1.333 436.137 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; d3_4
i1 47.333 1.333 418.608 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; d2_4
i1 48.666 1.334 413.375 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; d1_4
i1 50.000 1.333 392.445 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; p4_4
i1 51.333 1.333 387.474 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; p3_4
i1 52.666 1.334 372.038 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; m4p2_4
i1 54.000 1.333 367.852 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; m3p1_4
i1 55.333 1.333 353.201 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; m2_4
i1 56.666 1.334 348.753 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; m1_4
i1 58.000 1.333 331.224 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; g4_4
i1 59.333 1.333 327.038 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; g3_4
i1 60.666 1.334 313.956 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; g2_4
i1 62.000 1.333 310.032 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; g1_4
i1 63.333 1.333 294.334 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; r4_4
i1 64.666 1.334 290.671 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; r3_4
i1 66.000 1.333 279.159 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; r2_4
i1 67.333 1.333 275.496 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; r1_4
i1 68.666 5.334 261.630 90.000 90.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 ; sa_4
s

Listening to this sequence makes it clear that treat­ing a sequence of shrutis as a “scale” is icon­o­clas­tic to the aes­thet­ics of Hindustani music: most of these notes sound out of tune when played in ref­er­ence to a drone (the tan­pu­ra). As dis­cussed on page The two-vina exper­i­ment, the pres­ence of a drone makes it unlike­ly that mutu­al con­so­nance in melod­ic inter­vals always pre­vails over con­so­nance with the drone’s upper par­tials. If the grama-murcchana sys­tem is of any rel­e­vance to the per­for­mance of clas­si­cal ragas — read page Raga into­na­tion — at least the mod­el should be ren­dered flex­i­ble to meet the prop­er into­na­tion in melod­ic movements.

## Comparing scales

A device for the com­par­i­son of scales is avail­able on the Csound resource page. Click COMPARE TONAL SCALES and select the ones that need to be analysed.

Scales are com­pared 2 by 2, so that a set of n scales will yield n2/2 results dis­played in tables. The fol­low­ing is a com­par­i­son of scales named Amin, Cmaj and equal_tempered. The first two ones are described on page Just into­na­tion: a gen­er­al frame­work.

All com­par­isons deal with 12-grade (chro­mat­ic) scales, mea­sur­ing the sizes of per­fect fifths — some of which may be wolf fifths as explained above. The aver­age dif­fer­ence of fifths is done by sum­ming the squares of dif­fer­ences between the sizes of fifths of iden­ti­cal grades (mea­sured in cents):

$D=\ \sqrt{\frac{\sum_{^{i=1}}^{12}\left(fa_i\ -\ fb_i\right)^2}{12}}$

The dis­tance between Amin and Cmaj is 8.9 cents and the dis­tance between each of these scales and the equal-tempered one is close to 6 cents.

The sec­ond table is the result of a search for the small­est dis­tance when trans­pos­ing one of the scales by 1 to 11 semi­tones. Here we notice that Amin (see image) and Cmaj (see image) are prac­ti­cal­ly equiv­a­lent — being har­mon­i­cal­ly relat­ed — as the dif­fer­ence goes down to 1.2 cents. The best-matching ver­sion of Cmaj is con­struct­ed by trans­pos­ing Amin one fifth up (7 semi­tones), there­fore mov­ing ‘C’ to ‘G’. Read Creation of just-intonation scales for details of this procedure.

This device may be fur­ther devel­oped to pro­duce a clas­si­fi­ca­tion of select­ed tonal scales high­light­ing similar/identical tun­ing schemes.

Another approach of tonal scale com­par­i­son is the mea­sure­ment of match­ings between a musi­cal work and the whole set of doc­u­ment­ed tun­ing pro­ce­dures: read page Tonal analy­sis of musi­cal works.

## The syntactic model

The fol­low­ing are guide­lines for a cor­rect and use­ful imple­men­ta­tion of micro­ton­al scales in BP3. We fol­low sim­ple sequences list­ed in “-gr.tryOneScale”. This gram­mar is linked with “-cs.tryOneScale” host­ing a unique scale just into­na­tion with its notes labelled “Cj”, “Cj#”, “Dj” etc. In “-se.tryOneScale”, the Note con­ven­tion has been set to 0 (English), the ‘C4’ key num­ber to 60 and the Default block key to 60. All these para­me­ters are impor­tant to repro­duce the same effects.

Rule #1: If only 1 micro­ton­al scale is loaded with the gram­mar, it is used by default in all productions.

Example: Let us play:

S --> C4 A4 G4

It pro­duces the fol­low­ing Csound score:

i1 0.000 1.000 261.630 90.000 90.000 0.000 0.000 0.000 0.000 ; Cj4
i1 1.000 1.000 436.137 90.000 90.000 0.000 0.000 0.000 0.000 ; Aj4
i1 2.000 1.000 392.445 90.000 90.000 0.000 0.000 0.000 0.000 ; Gj4

The dis­play of “Cj4” etc. makes it clear that just into­na­tion has been used. This is fur­ther con­firmed by ratio 436.137/261.630 = 1.666 = 5/3.

Why not use note labels “Cj4”, “Aj“ ‘ and “Gj4” in the gram­mar? This will only work if the scale is spec­i­fied, for instance:

S --> _scale(just into­na­tion, Cj4) Cj4 Aj4 Gj4

This will yield the same Csound score because the block key is “Cj4” rat­ed to 261.630 Hz in the scale def­i­n­i­tion. Using “Aj4” as the block key would yield:

S --> _scale(just into­na­tion, Aj4) Cj4 Aj4 Gj4

and a sight­ly dif­fer­ent Csound score:

i1 0.000 1.000 263.952 90.000 90.000 0.000 0.000 0.000 0.000 ; Cj4
i1 1.000 1.000 440.007 90.000 90.000 0.000 0.000 0.000 0.000 ; Aj4
i1 2.000 1.000 395.928 90.000 90.000 0.000 0.000 0.000 0.000 ; Gj4

Here, “Aj4” has been set to 440 Hz which is the dia­pa­son fre­quen­cy in “-se.tryOneScale”. Ratios are unchanged, for instance 440.007/263.952 = 5/3.

How can we play equal-tempered inter­vals using this gram­mar? This is achieved by spec­i­fy­ing the default scale: _scale(0,0):

S --> _scale(0,0) C4 A4 G4

yield­ing the fol­low­ing Csound score:

i1 0.000 1.000 8.00 90.000 90.000 0.000 0.000 0.000 0.000 ; C4
i1 1.000 1.000 8.09 90.000 90.000 0.000 0.000 0.000 0.000 ; A4
i1 2.000 1.000 8.07 90.000 90.000 0.000 0.000 0.000 0.000 ; G4

Frequencies are not explic­it because the default Csound score for­mat uses the octave point pitch-class rep­re­sen­ta­tion, for instance “A4” is the 9th pitch-class or the 8th octave (on a stan­dard MIDI instru­ment). To make them explic­it, just set the dia­pa­son to a tiny dif­fer­ent val­ue in “-se.tryOneScale”, for instance 440.0001 Hz. This will produce:

i1 0.000 1.000 261.626 90.000 90.000 0.000 0.000 0.000 0.000 ; C4
i1 1.000 1.000 440.000 90.000 90.000 0.000 0.000 0.000 0.000 ; A4
i1 2.000 1.000 391.996 90.000 90.000 0.000 0.000 0.000 0.000 ; G4

We could expect 261.630 Hz for the fre­quen­cy of “C4” but the 261.626 Hz val­ue dif­fers due to round­ing. The ratio of the dif­fer­ence is 261.630/261.626 = 1.000015 = 0.026 cents!

Rule #2: When pars­ing a sequence of notes, if a micro­ton­al scale has been spec­i­fied the pars­er first attempts to match the note against labels in the cur­rent micro­ton­al scale. In case no match­ing exists, it will try to inter­pret it as per the Note con­ven­tion spec­i­fied in settings.

For instance:

S --> _scale(just into­na­tion, Cj4) Cj4 Aj4 Gj4 D4 F4 E4

Notes in sequence “D4 F4 E4” will be trans­lat­ed to match­ing posi­tions in the just into­na­tion scale. The result is vis­i­ble on the Csound score as well as on the graph­ic display.

This prac­tice is only rel­e­vant to 12-grade tonal scales in which posi­tions are equiv­a­lent — although with slight­ly dif­fer­ing fre­quen­cy ratios. Since the match­ing is based on key num­bers, for instance feed­ing the “gra­ma” (23-grade) micro­ton­al scale (see above) with “C4 D4 E4” would pro­duce “sa_4 r2_4 r4_4″ in which r2_4 is close to “C#4” and r4_4 almost “D4”. This makes sense because the key sequence is 60-62-64. There is cur­rent­ly no gener­ic way of map­ping note posi­tions in scales with dif­fer­ent divi­sions. An addi­tion­al dif­fi­cul­ty would be scales in which the inter­val is dif­fer­ent from 2/1.

We will show lat­er that rule #2 pro­vides a flex­i­bil­i­ty that makes it very easy to insert enhar­mon­ic cor­rec­tions in a musi­cal score by select­ing one among 12 just-intonation chro­mat­ic scales — read page Just into­na­tion: a gen­er­al frame­work.

Rule #3: If the pars­er fails to iden­ti­fy a note in the cur­rent micro­ton­al scale and against the note con­ven­tion, it will try oth­er micro­ton­al scales pre­vi­ous­ly loaded in the sequence.

This can be demon­strat­ed in “-gr.tryScales”. On top of the gram­mar are list­ed the scales that will be sent to the con­sole along with the gram­mar and instruc­tions. Each scale becomes “active” in the gram­mar once a _scale() oper­a­tor has declared it.

Let us try to produce:

S --> _scale(piano,dop4) fap3 _scale(just intonation,69) C4 rep4

Active scales are piano, then just into­na­tion. There are no prob­lems with note “fap3” belong­ing to the piano scale, nor with “C4” which is known in the English note con­ven­tion. As pre­dict­ed by rule #2, note “C4” will be trans­lat­ed to its equiv­a­lent “Cj4” and per­formed in just intonation.

Since the baseoc­tave of scale piano is 3 (see image above), the pitch of “fap3” will be close to that of “F4”.

What will hap­pen to note “rep4”? If scale piano had not been acti­vat­ed, this note would be reject­ed as a syn­tax error. However, fol­low­ing rule #3, the pars­er finds it in the piano scale. This yields key num­ber 74 since baseoc­tave = 3.

The note will be inter­pret­ed as key #74 in the just into­na­tion scale, dis­played as “Dj5”. This is vis­i­ble in the Csound score below and on the graphic.

i1 0.000 1.000 349.538 90.000 90.000 0.000 0.000 0.000 0.000 ; fap3
i1 1.000 1.000 263.952 90.000 90.000 0.000 0.000 0.000 0.000 ; Cj4
i1 2.000 1.000 593.891 90.000 90.000 0.000 0.000 0.000 0.000 ; Dj5

Consequently, notes found in a sequence are always inter­pret­ed as belong­ing to the scale declared at the imme­di­ate left, even if their label belongs to anoth­er scale or to the note convention.

Therefore, it is not a good idea to mix notes belong­ing to dif­fer­ent scales with­out declar­ing the scale pri­or to their occur­rence. A “_scale()” dec­la­ra­tion will best be placed in the begin­ning of each sequence, notably at the begin­ning of the right argu­ment of a rule.

## References

Arnold, E.J. A Mathematical mod­el of the Shruti-Swara-Grama-Murcchana-Jati System. Journal of the Sangit Natak Akademi, New Delhi 1982.

Asselin, P.-Y. Musique et tem­péra­ment. Paris, 1985, repub­lished in 2000: Jobert. Soon avail­able in English.