Miracle keyboard mappings

Now you've decided that Miracle temperament will change your musical life, here's how to fit it to your keyboard.

the 24 note mapping
absolute pitch
MIDI Relay tuning files
Scala files
Kyma tuning

The 24 note mapping

I use a mapping with 24 notes to the acoustic octave, so that the pattern repeats by octaves. The black notes are tuned to decimal nominals, starting with 0 as C#.

Where there are two white notes between a pair of black keys, the one one the left is tuned a quomma sharp of the one to its right. And the one on the right is tuned a quomma flat of the one on its right. Where there's only one white note between a pair of black notes, it can either be tuned a quomma sharp of the black note to its left, or a quomma flat of the black note to its right.

Whichever rule is applied for those ambiguous notes, so long as it's consistent you get a complete Blackjack scale. The first, where ambiguous notes are a quomma flat of the black note to their right, I call the low mapping. Here's what it looks like:

First keyboard octave

0v 0  1v 1  1^ 2v 2  3v 3  4v 4  4^
C     D     E  F     G     A     B

Second keyboard octave

5v 5  6v 6  6^ 7v 7  8v 8  9v 9  9^
C     D     E  F     G     A     B

This gives you a Blackjack with 1^, 4^ and 6^ as bonus notes. The high mapping makes the other choice for the ambiguous notes.

First keyboard octave

0v 0  0^ 1  1^ 2v 2  2^ 3  2^ 4  4^
C     D     E  F     G     A     B

Second keyboard octave

5v 5  5^ 6  6^ 7v 7  7^ 8  8^ 9  9^
C     D     E  F     G     A     B

With this 2v, 5v and 7v are outside the Blackjack.

Absolute Pitch

The agreed Blackjack standard is centered on B[ (the quartertone below B), or midway between G and D. The suggested tonic is G. On the low keyboard mapping 0 is C, G is 6 and D is 2v. On the high keyboard mapping 0 is B[, D is 3 and G is 7^. I'm going for the low alternative, because C is nicer than B[ and it means the Blackjack nominal is at least on a black key. The only thing going for the low mapping is that it does happen to map G to a G key.

This also indulges me in having the decimal note indicated by the first decimal place of the base 2 logarithm of the frequency in Hz. I'm standardising on C as 2^8.04 Hz or 263.2 Hz.

MIDI Relay Tuning Files

You can cut and paste these or, if I remember, I'll upload them.

low mapping reference C

--------------------snip-------------------
!low version of 24 note Miracle tuning
!tuning to 72-equal
tonic 64 8.04
coords 2
s   0.09722222
q   0.02777778
notes 24
0  0 -1
1  0 0
2  1 -1
3  1 0
4  1 1
5  2 -1
6  2 0
7  3 -1
8  3 0
9  4 -1
10 4 0
11 4 1
12 5 -1
13 5 0
14 6 -1
15 6 0
16 6 1
17 7 -1
18 7 0
19 8 -1
20 8 0
21 9 -1
22 9 0
23 9 1
24 10 1
--------------------snip-------------------

high mapping reference C

--------------------snip-------------------
!high version of 24 note Miracle tuning
!tuning to 72-equal
tonic 64 8.04
coords 2
s   0.09722222
q   0.02777778
notes 24
0  0 -1
1  0 0
2  0 1
3  1 0
4  1 1
5  2 -1
6  2 0
7  2 1
8  3 0
9  3 1
10 4 0
11 4 1
12 5 -1
13 5 0
14 5 1
15 6 0
16 6 1
17 7 -1
18 7 0
19 7 1
20 8 0
21 8 1
22 9 0
23 9 1
24 10 1
--------------------snip-------------------

I might add other absolute pitches one day, and tuning files for a straight 21 note Blackjack, but that'll do for now.

Scala files

low mapping

--------------------snip-------------------
! miracle_24lo.scl
!
24 note mapping for Miracle scale
!
! low version, tuned to 72-equal
!
24
!
33.3333333333333333
116.666666666666667
150.0
183.333333333333333
233.333333333333333
266.666666666666667
350.0
383.333333333333333
466.666666666666667
500.0
533.333333333333333
583.333333333333333
616.666666666666667
700.0
733.333333333333333
766.666666666666667
816.666666666666667
850.0
933.333333333333333
966.666666666666667
1050.0
1083.33333333333333
1116.66666666666667
1200.0
--------------------snip-------------------

high mapping

--------------------snip-------------------
! miracle_24hi.scl
!
24 note mapping for Erlich/Keenan Miracle scale
!
! high version, tuned to 72-equal
!
24
!
33.3333333333333333
66.6666666666666667
150.0
183.333333333333333
233.333333333333333
266.666666666666667
300.0
383.333333333333333
416.666666666666667
500.0
533.333333333333333
583.333333333333333
616.666666666666667
650.0
733.333333333333333
766.666666666666667
816.666666666666667
850.0
883.333333333333333
966.666666666666667
1000.0
1083.33333333333333
1116.66666666666667
1200.0
--------------------snip-------------------

keyboard mapping for reference C

--------------------snip-------------------
! Size of map (greater than or equal to the number of notes in the scale 
! to be mapped). Zero means linear mapping.
0
! First MIDI note number to retune:
0
! Last MIDI note number to retune:
127
! Middle note where scale degree 0 is mapped to:
60
! Reference note for which frequency is given:
61
! Frequency to tune the above note to (floating point e.g. 440.0):
263.2
! Scale degree to consider as formal octave (determines difference in pitch 
! between adjacent mapping patterns):
24
--------------------snip-------------------

keyboard mapping for reference A

! Size of map (greater than or equal to the number of notes in the scale 
! to be mapped). Zero means linear mapping.
0
! First MIDI note number to retune:
0
! Last MIDI note number to retune:
127
! Middle note where scale degree 0 is mapped to:
60
! Reference note for which frequency is given:
79
! Frequency to tune the above note to (floating point e.g. 440.0):
440.0
! Scale degree to consider as formal octave (determines difference in pitch 
! between adjacent mapping patterns):
24
--------------------snip-------------------

I might add other absolute pitches one day, but that'll do for now.

Kyma Tuning

Not many people have Kyma. But if you do, you can get a bit clever. Stick this into the Map box of a MIDIMapper


"Two different tunings: you can use either or crossfade between them"

"24 note Miracle tuning on the sharp side"
!High31 is: (
  `MIDIKeyNumber -60 //12 * 15
  + (
    (`MIDIKeyNumber - 60 mod: 12)
    of: { #(-1 0 1 3 4 5 6 7 9 10 12 13)}
  )
  "corrected to give pure 24-note octaves"
  + (`MIDIKeyNumber -60 //24)
* 12/31) nn + 4c nn + (!PitchBend*2) nn.


"24 note Miracle tuning on the flat side"
!Low31 is: (
  `MIDIKeyNumber -60 //12 * 15
  +
  (
      (`MIDIKeyNumber - 60 mod: 12)
      of: { #(-1 0 2 3 4 5 6 8 9 11 12 13)}
  )
  "correct to give pure 24-note octaves"
  + (`MIDIKeyNumber -60 //24)
* 12/31) nn + 4c nn + (!PitchBend*2) nn.


"24 note Miracle tuning on the sharp side"
!High41 is: (
  `MIDIKeyNumber -60 //12 * 20
  + (
    (`MIDIKeyNumber - 60 mod: 12)
    of: { #(-1 0 1 4 5 7 8 9 12 13 16 17)}
  )
  "corrected to give pure 24-note octaves"
  + (`MIDIKeyNumber -60 //24)
* 12/41) nn + 4c nn + (!PitchBend*2) nn.


"24 note Miracle tuning on the flat side"
!Low41 is: (
  `MIDIKeyNumber -60 //12 * 20
  +
  (
      (`MIDIKeyNumber - 60 mod: 12)
      of: { #(-1 0 3 4 5 7 8 11 12 15 16 17)}
  )
  "correct to give pure 24-note octaves"
  + (`MIDIKeyNumber -60 //24)
* 12/41) nn + 4c nn + (!PitchBend*2) nn.

Then make any Frequency fields

(
(!High41-!Low41 * !Swapper + !Low41) 
-
(!High31-!Low31 * !Swapper + !Low31) 
*!Chorus
+
(!High31-!Low31 * !Swapper + !Low31) 
)
nn

You can set !Chorus to be a continous controller, and !Swapper to be a switch (default off). Move !Chorus between 0 and 1, and the tuning varies between 31- and 41-equal. 72-equal is around 0.5. Put your foot on the switch, and you get the high mapping instead of the low one.


home page
my microtonal documents