--- /dev/null
+----------------------------------------------------------------------
+MIDI Tuning Standard summary
+----------------------------------------------------------------------
+
+(1) Bulk Tuning Dump Request (Non Real-Time)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 00 tt F7
+
+F0 7E Universal Non-Real Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI Tuning Standard"
+00 sub-ID#2 = "bulk tuning dump request (Non Real-Time)"
+tt tuning program number (0 - 127)
+F7 EOX
+----------------------------------------------------------------------
+
+(2) Bulk Tuning Dump (Non Real-Time)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 01 tt <tuning name> [xx yy zz] ... chksum F7
+
+F0 7E Universal Non-Real Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI Tuning Standard"
+01 sub-ID#2 = "bulk tuning dump (Non Real-Time)"
+tt tuning program number (0 - 127)
+<tuning name> 16 ASCII characters
+[xx yy zz] frequency data for one note (repeated 128 times)
+chksum checksum (XOR of all bytes excluding F0, F7, and chksum)
+F7 EOX
+----------------------------------------------------------------------
+
+(3) Single Note Tuning Change (Real-Time)
+----------------------------------------------------------------------
+F0 7F <device ID> 08 02 tt ll [kk xx yy zz] F7
+
+F0 7F Universal Real Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI Tuning Standard"
+02 sub-ID#2 = "single note tuning change (Real-Time)"
+tt tuning program number (0 - 127)
+ll number of changes (1 change = 1 set of [kk xx yy zz])
+[kk MIDI key number
+ xx yy zz] frequency data for that key (repeated 'll' number of times)
+F7 EOX
+----------------------------------------------------------------------
+
+(4) Bulk Tuning Dump Request (Bank) (Non Real-Time)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 03 bb tt F7
+
+F0 7E Universal Non-Real Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI tuning standard"
+03 sub-ID#2 = "bulk tuning dump request (Bank) (Non Real-Time)"
+bb tuning bank number (0 - 127)
+ (described as 1-128 in MIDI Tuning Specification)
+tt tuning program number (0 - 127)
+F7 EOX
+----------------------------------------------------------------------
+
+(5) Key-Based Tuning Dump (Non Real-Time)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 04 bb tt <tuning name> [xx yy zz] ... chksum F7
+
+F0 7E Universal Non-Real Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI tuning standard"
+04 sub-ID#2 = "key-based tuning dump (Non Real-Time)"
+bb tuning bank number (0 - 127)
+ (described as 1-128 in MIDI Tuning Specification)
+tt tuning program number (0 - 127)
+<tuning name> 16 ASCII characters
+[xx yy zz] frequency data for one note (repeated 128 times)
+chksum checksum (XOR of all bytes excluding F0, F7, and chksum)
+F7 EOX
+----------------------------------------------------------------------
+
+(6) Scale/Octave Tuning Dump 1-Byte Form (Non Real-Time)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 05 bb tt <tuning name> [xx] ... chksum F7
+
+F0 7E Universal Non-Real Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI tuning standard"
+05 sub-ID#2 = "scale/octave tuning dump 1-byte form
+ (Non Real-Time)"
+bb tuning bank number (0 - 127)
+ (described as 1-128 in MIDI Tuning Specification)
+tt tuning program number (0 - 127)
+<tuning name> 16 ASCII characters
+[xx] frequency data for C,C#,... B (12 bytes total)
+ 00H means -64 Cent
+ 40H means +/- 0 Cent
+ 7FH means +63 Cent
+chksum checksum (XOR of all bytes excluding F0, F7, and chksum)
+F7 EOX
+----------------------------------------------------------------------
+
+(7) Scale/Octave Tuning Dump 2-Byte Form (Non Real-Time)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 06 bb tt <tuning name> [xx yy] ... chksum F7
+
+F0 7E Universal Non-Real Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI tuning standard"
+06 sub-ID#2 = "scale/octave tuning dump 2-byte form
+ (Non Real-Time)"
+bb tuning bank number (0 - 127)
+ (described as 1-128 in MIDI Tuning Specification)
+tt tuning program number (0 - 127)
+<tuning name> 16 ASCII characters
+[xx yy] frequency data for C,C#,... B (24 bytes total)
+ 00H 00H means -100 cents (8,192 steps of .012207 cents)
+ 40H 00H means 0 cents (equal temperament)
+ 7FH 7FH means +100 cents (8,191 steps of .012207 cents)
+chksum checksum (XOR of all bytes excluding F0, F7, and chksum)
+F7 EOX
+----------------------------------------------------------------------
+
+(8) Single Note Tuning Change (Bank) (Real-Time)
+----------------------------------------------------------------------
+F0 7F <device ID> 08 07 bb tt ll [kk xx yy zz] ... F7
+
+F0 7F Universal Real Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI tuning standard"
+07 sub-ID#2 = "single note tuning change (Bank) (Real-Time)"
+bb tuning bank number (0 - 127)
+ (described as 1-128 in MIDI Tuning Specification)
+tt tuning program number (0 - 127)
+ll number of changes (1 change = 1 set of [kk xx yy zz])
+[kk MIDI key number
+ xx yy zz] frequency data for that key (repeated 'll' number of times)
+F7 EOX
+----------------------------------------------------------------------
+
+(9) Single Note Tuning Change (Bank) (Non Real-Time)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 07 bb tt ll [kk xx yy zz] ... F7
+
+F0 7E Universal Non-Real Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI tuning standard"
+07 sub-ID#2 = "single note tuning change (Bank) (Non Real-Time)"
+bb tuning bank number (0 - 127)
+ (described as 1-128 in MIDI Tuning Specification)
+tt tuning program number (0 - 127)
+ll number of changes (1 change = 1 set of [kk xx yy zz])
+[kk MIDI key number
+ xx yy zz] frequency data for that key (repeated 'll'number of times)
+F7 EOX
+----------------------------------------------------------------------
+
+(10) Scale/Octave Tuning 1-Byte Form (Real-Time)
+----------------------------------------------------------------------
+F0 7F <device ID> 08 08 ff gg hh [ss] ... F7
+
+F0 7F Universal Real-Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI Tuning Standard"
+08 sub-ID#2 = "scale/octave tuning 1-byte form (Real-Time)"
+ff channel/options byte 1
+ bits 0 to 1 = channel 15 to 16
+ bits 2 to 6 = reserved for future expansion
+gg channel byte 2 - bits 0 to 6 = channel 8 to 14
+hh channel byte 3 - bits 0 to 6 = channel 1 to 7
+[ss] 12 byte tuning offset of 12 semitones from C to B
+ 00H means -64 cents
+ 40H means 0 cents (equal temperament)
+ 7FH means +63 cents
+F7 EOX
+----------------------------------------------------------------------
+
+(11) Scale/Octave Tuning 1-Byte Form (Non Real-Time)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 08 ff gg hh [ss] ... F7
+
+F0 7E Universal Non Real-Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI Tuning Standard"
+08 sub-ID#2 = "scale/octave tuning 1-byte form (Non Real-Time)"
+ff channel/options byte 1
+ bits 0 to 1 = channel 15 to 16
+ bits 2 to 6 = reserved for future expansion
+gg channel byte 2 - bits 0 to 6 = channel 8 to 14
+hh channel byte 3 - bits 0 to 6 = channel 1 to 7
+[ss] 12 byte tuning offset of 12 semitones from C to B
+ 00H means -64 cents
+ 40H means 0 cents (equal temperament)
+ 7FH means +63 cents
+F7 EOX
+----------------------------------------------------------------------
+
+(12) Scale/Octave Tuning 2-Byte Form (Real-Time)
+----------------------------------------------------------------------
+F0 7F <device ID> 08 09 ff gg hh [ss tt] ... F7
+
+F0 7F Universal Real-Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI Tuning Standard"
+09 sub-ID#2 = "scale/octave tuning 2-byte form (Real-Time)"
+ff channel/options byte 1
+ bits 0 to 1 = channel 15 to 16
+ bits 2 to 6 = reserved for future expansion
+gg channel byte 2 - bits 0 to 6 = channel 8 to 14
+hh channel byte 3 - bits 0 to 6 = channel 1 to 7
+[ss tt] 24 byte tuning offset of 2 bytes per semitone from C to B
+ 00H 00H means -100 cents (8,192 steps of .012207 cents)
+ 40H 00H means 0 cents (equal temperament)
+ 7FH 7FH means +100 cents (8,191 steps of .012207 cents)
+F7 EOX
+----------------------------------------------------------------------
+
+(13) Scale/Octave Tuning 2-Byte Form (Non Real-Time)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 09 ff gg hh [ss tt] ... F7
+
+F0 7E Universal Non Real Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI Tuning Standard"
+09 sub-ID#2 = "scale/octave tuning 2-byte form (Non Real-Time)"
+ff channel/options byte 1
+ bits 0 to 1 = channel 15 to 16
+ bits 2 to 6 = reserved for future expansion
+gg channel byte 2 - bits 0 to 6 = channel 8 to 14
+hh channel byte 3 - bits 0 to 6 = channel 1 to 7
+[ss tt] 24 byte tuning offset of 2 bytes per semitone from C to B
+ 00H 00H means -100 cents (8,192 steps of .012207 cents)
+ 40H 00H means 0 cents (equal temperament)
+ 7FH 7FH means +100 cents (8,191 steps of .012207 cents)
+F7 EOX
+----------------------------------------------------------------------
+
+(14) Temperament Tonality Control Tuning (Real-Time)
+----------------------------------------------------------------------
+F0 7F <device ID> 08 0A sf mi F7
+
+F0 7F Universal Real-Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI Tuning Standard"
+0A sub-ID#2 = "temperament tonality control tuning
+ (Real-Time)"
+sf number of sharp/flat (1 byte)
+ 39H means 7 flats
+ 3FH means 1 flat
+ 40H means key of C
+ 41H means 1 sharp
+ 47H means 7 sharps
+mi major/minor (1 byte)
+ 00H means major key
+ 01H means minor key
+ 02H means passing major key
+ 03H means passing minor key
+F7 EOX
+----------------------------------------------------------------------
+
+(15) Temperament Tonality Control Tuning (Non Real-Time)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 0A sf mi F7
+
+F0 7E Universal Non Real-Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI Tuning Standard"
+0A sub-ID#2 = "temperament tonality control tuning
+ (Non Real-Time)"
+sf number of sharp/flat (1 byte)
+ 39H means 7 flats
+ 3FH means 1 flat
+ 40H means key of C
+ 41H means 1 sharp
+ 47H means 7 sharps
+mi major/minor (1 byte)
+ 00H means major key
+ 01H means minor key
+ 02H means passing major key
+ 03H means passing minor key
+F7 EOX
+----------------------------------------------------------------------
+
+(16) Temperament Type Control Tuning (Real-Time)
+----------------------------------------------------------------------
+F0 7F <device ID> 08 0B ff gg hh tt F7
+
+F0 7F Universal Real-Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI Tuning Standard"
+0B sub-ID#2 = "temperament type control tuning (Real-Time)"
+ff channel/options byte 1
+ bits 0 to 1 = channel 15 to 16
+ bit 2 = port A/B
+ bits 3 to 6 = reserved for future expansion
+gg channel byte 2 - bits 0 to 6 = channel 8 to 14
+hh channel byte 3 - bits 0 to 6 = channel 1 to 7
+tt temperament type (1 byte)
+ 00H means equal temperament
+ 01H means Pythagoras tuning
+ 02H means mean-tone tuning
+ 03H means pure intonation
+ 40H means user-defined temperament #0
+ 41H means user-defined temperament #1
+ 42H means user-defined temperament #2
+ 43H means user-defined temperament #3
+F7 EOX
+----------------------------------------------------------------------
+
+(17) Temperament Type Control Tuning (Non Real-Time)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 0B ff gg hh tt F7
+
+F0 7E Universal Non Real Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI Tuning Standard"
+0B sub-ID#2 = "temperament type control tuning (Non Real-Time)"
+ff channel/options byte 1
+ bits 0 to 1 = channel 15 to 16
+ bit 2 = port A/B
+ bits 3 to 6 = reserved for future expansion
+gg channel byte 2 - bits 0 to 6 = channel 8 to 14
+hh channel byte 3 - bits 0 to 6 = channel 1 to 7
+tt temperament type (1 byte)
+ 00H means equal temperament
+ 01H means Pythagoras tuning
+ 02H means mean-tone tuning
+ 03H means pure intonation
+ 40H means user-defined temperament #0
+ 41H means user-defined temperament #1
+ 42H means user-defined temperament #2
+ 43H means user-defined temperament #3
+F7 EOX
+----------------------------------------------------------------------
+
+(18) User-defined Temperament Entry (Non Real-Time)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 0C tt <temper name>
+ ll [fh fl bh bl aa bb cc dd ee ff] ... F7
+
+F0 7E Universal Non Real Time SysEx header
+<device ID> ID of target device (7F = all devices)
+08 sub-ID#1 = "MIDI Tuning Standard"
+0C sub-ID#2 = "user-defined temperament entry (Non Real-Time)"
+tt temperament program number (0 - 63)
+<temper name> 16 ASCII characters
+ll number of formula (1 formula =
+ 1 set of [fh fl bh bl aa bb cc dd ee ff])
+[fh applying pitch bit mask byte 1
+ bits 0 to 3 = circle of fifth forward 8 to 11
+ bits 4 to 5 = reserved for future expansion
+ bit 6 = major flag (reversal)
+ fl applying pitch bit mask byte 2
+ bits 0 to 6 = circle of fifth forward 1 to 7
+ bh applying pitch bit mask byte 3
+ bits 0 to 3 = circle of fifth backward 8 to 11
+ bits 4 to 5 = reserved for future expansion
+ bit 6 = minor flag (reversal)
+ bl applying pitch bit mask byte 4
+ bits 0 to 6 = circle of fifth backward 1 to 7
+ aa bb fraction (aa/bb)
+ cc dd ee ff] power ((cc/dd)^(ee/ff)) (repeated 'll' number of times)
+F7 EOX
+----------------------------------------------------------------------
+
+----------------------------------------------------------------------
+Preset temperament of Temperament Type Control Tuning
+----------------------------------------------------------------------
+
+First, Pythagoras tuning (major) chromatic scale is expressed by the
+following recurrence relations. Here, the index [] is a offset of the
+tonic. The operation results are surely settled between 1 and 2, so
+they will be made into double or half if necessary.
+
+[Pythagoras tuning (major) chromatic scale]
+pytha_maj[ 0] = 1 # C 1
+pytha_maj[ 7] = pytha_maj[ 0] * 3/2 # G 3/2
+pytha_maj[ 2] = pytha_maj[ 7] * 3/2 # D 9/8
+pytha_maj[ 9] = pytha_maj[ 2] * 3/2 # A 27/16
+pytha_maj[ 4] = pytha_maj[ 9] * 3/2 # E 81/64
+pytha_maj[11] = pytha_maj[ 4] * 3/2 # B 243/128
+pytha_maj[ 6] = pytha_maj[11] * 3/2 # F# 729/512
+--
+pytha_maj[ 5] = pytha_maj[ 0] * 2/3 # F 4/3
+pytha_maj[10] = pytha_maj[ 5] * 2/3 # Bb 16/9
+pytha_maj[ 3] = pytha_maj[10] * 2/3 # Eb 32/27
+pytha_maj[ 8] = pytha_maj[ 3] * 2/3 # Ab 128/81
+pytha_maj[ 1] = pytha_maj[ 8] * 2/3 # Db 256/243
+
+On the other hand, pure intonation (major) chromatic scale can be
+expressed by the following recurrence relations. Here, sc means a
+syntonic comma (81/80).
+
+[pure intonation (major) chromatic scale]
+pure_maj[ 0] = 1 # C 1
+pure_maj[ 7] = pure_maj[ 0] * 3/2 # G 3/2
+pure_maj[ 2] = pure_maj[ 7] * 3/2 # D 9/8
+pure_maj[ 9] = pure_maj[ 2] * 3/2 / sc # A 5/3
+pure_maj[ 4] = pure_maj[ 9] * 3/2 # E 5/4
+pure_maj[11] = pure_maj[ 4] * 3/2 # B 15/8
+pure_maj[ 6] = pure_maj[11] * 3/2 # F# 45/32
+--
+pure_maj[ 5] = pure_maj[ 0] * 2/3 # F 4/3
+pure_maj[10] = pure_maj[ 5] * 2/3 * sc # Bb 9/5
+pure_maj[ 3] = pure_maj[10] * 2/3 # Eb 6/5
+pure_maj[ 8] = pure_maj[ 3] * 2/3 # Ab 8/5
+pure_maj[ 1] = pure_maj[ 8] * 2/3 # Db 16/15
+
+It can be understood that pure intonation is similar to Pythagoras
+tuning fundamentally except descending with 1sc at A and rising with
+1sc at B flat while going up and down respectively from the tonic in
+the circle of fifths.
+
+Similarly, expressed Pythagoras tuning and pure intonation (minor)
+chromatic scale by the following recurrence relations. Although the
+fractions written to right-hand side is terrible values, the
+recurrence relations themselves are very simple.
+
+[Pythagoras tuning (minor) chromatic scale]
+pytha_min[ 0] = 1 # C 1
+pytha_min[ 7] = pytha_min[ 0] * 3/2 # G 3/2
+pytha_min[ 2] = pytha_min[ 7] * 3/2 # D 9/8
+pytha_min[ 9] = pytha_min[ 2] * 3/2 # A 27/16
+pytha_min[ 4] = pytha_min[ 9] * 3/2 # E 81/64
+pytha_min[11] = pytha_min[ 4] * 3/2 # B 243/128
+pytha_min[ 6] = pytha_min[11] * 3/2 # F# 729/512
+pytha_min[ 1] = pytha_min[ 6] * 3/2 # C# 2187/2048
+pytha_min[ 8] = pytha_min[ 1] * 3/2 # G# 6561/4096
+pytha_min[ 3] = pytha_min[ 8] * 3/2 # D# 19683/16384
+--
+pytha_min[ 5] = pytha_min[ 0] * 2/3 # F 4/3
+pytha_min[10] = pytha_min[ 5] * 2/3 # Bb 16/9
+
+[pure intonation (minor) chromatic scale]
+pure_min[ 0] = 1 * sc # C 1 * sc
+pure_min[ 7] = pure_min[ 0] * 3/2 # G 3/2 * sc
+pure_min[ 2] = pure_min[ 7] * 3/2 / sc # D 10/9 * sc
+pure_min[ 9] = pure_min[ 2] * 3/2 # A 5/3 * sc
+pure_min[ 4] = pure_min[ 9] * 3/2 # E 5/4 * sc
+pure_min[11] = pure_min[ 4] * 3/2 # B 15/8 * sc
+pure_min[ 6] = pure_min[11] * 3/2 / sc # F# 25/18 * sc
+pure_min[ 1] = pure_min[ 6] * 3/2 # C# 25/24 * sc
+pure_min[ 8] = pure_min[ 1] * 3/2 # G# 25/16 * sc
+pure_min[ 3] = pure_min[ 8] * 3/2 # D# 75/64 * sc
+--
+pure_min[ 5] = pure_min[ 0] * 2/3 # F 4/3 * sc
+pure_min[10] = pure_min[ 5] * 2/3 # Bb 16/9 * sc
+
+The differences from the major tuning are that the boundary of
+Pythagoras tuning goes up three positions, that the positions of
+descending with syntonic comma are changed, and that pure intonation
+is adjusted 1sc higher so that melodic parts' tonic (Pythagoras
+tuning) and harmonic parts' tonic (pure intonation) are overlapped.
+
+By the way, mean-tone tuning is also prepared besides Pythagoras
+tuning and pure intonation as preset temperament of TiMidity++. While
+mean-tone tuning (major) is based on the general one whose major
+thirds are pure, mean-tone tuning (minor) is based on Salinas tuning
+whose minor thirds are pure. Both mean-tone tuning (major) chromatic
+scale and mean-tone tuning (minor) chromatic scale can be expressed by
+the following recurrence relations.
+
+[mean-tone tuning (major) chromatic scale]
+mt_maj[ 0] = 1 # C 1
+mt_maj[ 7] = mt_maj[ 0] * 5^(1/4) # G 5^(1/4)
+mt_maj[ 2] = mt_maj[ 7] * 5^(1/4) # D 5^(1/2) / 2
+mt_maj[ 9] = mt_maj[ 2] * 5^(1/4) # A 5^(3/4) / 2
+mt_maj[ 4] = mt_maj[ 9] * 5^(1/4) # E 5/4
+mt_maj[11] = mt_maj[ 4] * 5^(1/4) # B 5^(5/4) / 4
+mt_maj[ 6] = mt_maj[11] * 5^(1/4) # F# 5^(3/2) / 8
+--
+mt_maj[ 5] = mt_maj[ 0] / 5^(1/4) # F 2 / 5^(1/4)
+mt_maj[10] = mt_maj[ 5] / 5^(1/4) # Bb 4 / 5^(1/2)
+mt_maj[ 3] = mt_maj[10] / 5^(1/4) # Eb 4 / 5^(3/4)
+mt_maj[ 8] = mt_maj[ 3] / 5^(1/4) # Ab 8/5
+mt_maj[ 1] = mt_maj[ 8] / 5^(1/4) # Db 8 / 5^(5/4)
+
+[mean-tone tuning (minor) chromatic scale]
+mt_min[ 0] = 1 * sc # C 1 * sc
+mt_min[ 7] = mt_min[ 0] * (10/3)^(1/3) # G (10/3)^(1/3) * sc
+mt_min[ 2] = mt_min[ 7] * (10/3)^(1/3) # D (10/3)^(2/3) / 2 * sc
+mt_min[ 9] = mt_min[ 2] * (10/3)^(1/3) # A 5/3 * sc
+mt_min[ 4] = mt_min[ 9] * (10/3)^(1/3) # E (10/3)^(4/3) / 4 * sc
+mt_min[11] = mt_min[ 4] * (10/3)^(1/3) # B (10/3)^(5/3) / 4 * sc
+mt_min[ 6] = mt_min[11] * (10/3)^(1/3) # F# 25/18 * sc
+mt_min[ 1] = mt_min[ 6] * (10/3)^(1/3) # C# (10/3)^(7/3) / 16 * sc
+mt_min[ 8] = mt_min[ 1] * (10/3)^(1/3) # G# (10/3)^(8/3) / 16 * sc
+mt_min[ 3] = mt_min[ 8] * (10/3)^(1/3) # D# 125/108 * sc
+--
+mt_min[ 5] = mt_min[ 0] / (10/3)^(1/3) # F 2 / (10/3)^(1/3) * sc
+mt_min[10] = mt_min[ 5] / (10/3)^(1/3) # Bb 4 / (10/3)^(2/3) * sc
+
+The point that the boundary of mean-tone tuning goes up three
+positions, and that mean-tone tuning is adjusted 1sc higher, are the
+same situation as Pythagoras tuning and pure intonation.
+
+Now, I think that mean-tone tuning could use for a harmony-melody
+because of the characteristic that is more harmony-like than
+Pythagoras tuning, and a scale is not uneven like pure intonation.
+
+----------------------------------------------------------------------
+The major/minor in the temperament tonality
+----------------------------------------------------------------------
+
+The basic chords used in general music in C major are not only C, G, F
+but also Am, Em, Dm which appear frequently. There may also be Cm,
+Gm, Fm, A, E, D, and so on. Since these chords are not supported only
+in pure intonation (C major), players need to change temperaments
+according to progress of music.
+
+To solve the issue, TiMidity++ prepares
+
+(1) pure intonation (C major)
+ based on the pitch of C in Pythagoras tuning (C major)
+(2) pure intonation (A minor)
+ based on the pitch of A in Pythagoras tuning (A minor)
+(3) pure intonation (passing C major)
+ based on the pitch of A in Pythagoras tuning (C major)
+(4) pure intonation (passing A minor)
+ based on the pitch of C in Pythagoras tuning (A minor)
+
+I will explain more precisely. The following table gives the lattice
+(Cartesian model) of the scale system:
+
+-----------------------------------------------------------------------------
+D-- A-- E-- B-- F#-- C#-- G#-- D#-- A#-- E#-- B#-- F##-- C##--
+Bb- F- C- G- D- A- E- B- F#- C#- G#- D#- A#-
+Gb Db Ab Eb Bb F C G D A E B F#
+Ebb+ Bbb+ Fb+ Cb+ Gb+ Db+ Ab+ Eb+ Bb+ F+ C+ G+ D+
+Cbb++ Gbb++ Dbb++ Abb++ Ebb++ Bbb++ Fb++ Cb++ Gb++ Db++ Ab++ Eb++ Bb++
+-----------------------------------------------------------------------------
+
+The notation "ABCDEFG" is according to Pythagoras tuning. The
+notation "+", "-", "++" and "--" mean 1sc higher, 1sc lower, 2sc
+higher and 2sc lower respectively.
+
+A certain pure intonation is given as 12 sounds arranged by the
+rectangle of 4x3 from the lattice. For example, C tuning, A tuning,
+A- tuning and C+ tuning are given as following tables respectively:
+
+[C tuning (C major)]
+----------------------
+A- E- B- F#-
+F C G D
+Db+ Ab+ Eb+ Bb+
+----------------------
+
+[A tuning (A minor)]
+----------------------
+F#- C#- G#- D#-
+D A E B
+Bb+ F+ C+ G+
+----------------------
+
+[C+ tuning (passing C major)]
+----------------------
+A E B F#
+F+ C+ G+ D+
+Db++ Ab++ Eb++ Bb++
+----------------------
+
+[A- tuning (passing A minor)]
+----------------------
+F#-- C#-- G#-- D#--
+D- A- E- B-
+Bb F C G
+----------------------
+
+I think it is nice to select the tuning combination whose pitch of
+parallel key is slightly lower for major music, and slightly higher
+for minor music.
+
+----------------------------------------------------------------------
+User-defined temperament entry
+----------------------------------------------------------------------
+
+The function of user-defined temperament entry (experimental) is
+implemented in TiMidity++. This corresponds to (18) of MIDI Tuning
+Standard summary (see the end of this document). For example, it can
+generate various temperaments by the following SysEx's.
+
+[equal temperament]
+f0 7e 00 08 0c 00 ; temper prog number
+65 71 75 61 6c 00 00 00 00 00 00 00 00 00 00 00 ; "equal"
+01 ; number of formula
+0f 7f 00 00 01 01 02 01 07 0c ; (both) 2^(7/12)
+f7
+
+[Pythagoras tuning]
+f0 7e 00 08 0c 01 ; temper prog number
+50 79 74 68 61 67 6f 72 61 73 00 00 00 00 00 00 ; "Pythagoras"
+02 ; number of formula
+00 3f 40 1f 03 02 01 01 00 01 ; (maj) 3/2
+43 7f 00 03 03 02 01 01 00 01 ; (min) 3/2
+f7
+
+[mean-tone tuning]
+f0 7e 00 08 0c 02 ; temper prog number
+6d 65 61 6e 2d 74 6f 6e 65 00 00 00 00 00 00 00 ; "mean-tone"
+02 ; number of formula
+00 3f 40 1f 01 01 05 01 01 04 ; (maj) 5^(1/4)
+43 7f 00 03 01 01 0a 03 01 03 ; (min) (10/3)^(1/3)
+f7
+
+[pure intonation]
+f0 7e 00 08 0c 03 ; temper prog number
+70 75 72 65 20 69 6e 74 6f 6e 61 74 69 6f 6e 00 ; "pure intonation"
+04 ; number of formula
+00 3f 40 1f 03 02 01 01 00 01 ; (maj) 3/2
+00 04 40 02 05 01 02 03 04 01 ; (maj) 5*(2/3)^4
+43 7f 00 03 03 02 01 01 00 01 ; (min) 3/2
+40 22 00 00 05 01 02 03 04 01 ; (min) 5*(2/3)^4
+f7
+
+[Kirnberger-3]
+f0 7e 00 08 0c 00 ; temper prog number
+4b 69 72 6e 62 65 72 67 65 72 2d 33 00 00 00 00 ; "Kirnberger-3"
+02 ; number of formula
+00 0f 00 00 01 01 05 01 01 04 ; (both) 5^(1/4)
+00 30 00 1f 03 02 01 01 00 01 ; (both) 3/2
+f7
+
+[Hirashima temperament]
+f0 7e 00 08 0c 01 ; temper prog number
+48 69 72 61 73 68 69 6d 61 00 00 00 00 00 00 00 ; "Hirashima"
+02 ; number of formula
+00 1f 00 03 01 01 05 01 01 04 ; (both) 5^(1/4)
+00 00 00 3c 03 02 01 01 00 01 ; (both) 3/2
+f7
+
+[Werckmeister-3]
+f0 7e 00 08 0c 02 ; temper prog number
+57 65 72 63 6b 6d 65 69 73 74 65 72 2d 33 00 00 ; "Werckmeister-3"
+02 ; number of formula
+00 07 00 00 01 09 02 01 0f 04 ; (both) 2^(15/4)/9
+00 18 00 3f 03 02 01 01 00 01 ; (both) 3/2
+f7
+
+[well-temperament]
+f0 7e 00 08 0c 03 ; temper prog number
+77 65 6c 6c 2d 74 65 6d 70 65 72 00 00 00 00 00 ; "well-temper"
+02 ; number of formula
+00 07 00 00 01 09 02 01 0f 04 ; (both) 2^(15/4)/9
+00 00 01 7f 03 02 01 01 00 01 ; (both) 3/2
+f7
+
+TAMUKI Shoichi <tamuki@linet.gr.jp>
--- /dev/null
+----------------------------------------------------------------------
+MIDI Tuning Standard³µÎ¬
+----------------------------------------------------------------------
+
+(1) ¥Ð¥ë¥¯²»Äø¥À¥ó¥×Í×µá(Èó¥ê¥¢¥ë¥¿¥¤¥à)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 00 tt F7
+
+F0 7E ¥æ¥Ë¥Ð¡¼¥µ¥ë¡¦Èó¥ê¥¢¥ë¥¿¥¤¥àSysEx.¥Ø¥Ã¥À
+<device ID> ÂоݥǥХ¤¥¹ID(7F¡§Á´¥Ç¥Ð¥¤¥¹)
+08 ¥µ¥ÖID#1¡§¡ÈMIDI¥Á¥å¡¼¥Ë¥ó¥°É¸½à¡É
+00 ¥µ¥ÖID#2¡§¡È¥Ð¥ë¥¯²»Äø¥À¥ó¥×Í×µá(Èó¥ê¥¢¥ë¥¿¥¤¥à)¡É
+tt ²»Äø¥×¥í¥°¥é¥àÈÖ¹æ(0¡Á127)
+F7 EOX
+----------------------------------------------------------------------
+
+(2) ¥Ð¥ë¥¯²»Äø¥À¥ó¥×(Èó¥ê¥¢¥ë¥¿¥¤¥à)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 01 tt <tuning name> [xx yy zz] ... chksum F7
+
+F0 7E ¥æ¥Ë¥Ð¡¼¥µ¥ë¡¦Èó¥ê¥¢¥ë¥¿¥¤¥àSysEx.¥Ø¥Ã¥À
+<device ID> ÂоݥǥХ¤¥¹ID(7F¡§Á´¥Ç¥Ð¥¤¥¹)
+08 ¥µ¥ÖID#1¡§¡ÈMIDI¥Á¥å¡¼¥Ë¥ó¥°É¸½à¡É
+01 ¥µ¥ÖID#2¡§¡È¥Ð¥ë¥¯²»Äø¥À¥ó¥×(Èó¥ê¥¢¥ë¥¿¥¤¥à)¡É
+tt ²»Äø¥×¥í¥°¥é¥àÈÖ¹æ(0¡Á127)
+<tuning name> ²»Äø̾(ASCII16ʸ»ú)
+[xx yy zz] ñ²»¤Î²»Äø¥Ç¡¼¥¿(128²ó·«¤êÊÖ¤·)
+chksum ¥Á¥§¥Ã¥¯¥µ¥à(F0,F7,chksum¤ò½ü¤¤¤¿Á´¥Ð¥¤¥È¤ÎXOR)
+F7 EOX
+----------------------------------------------------------------------
+
+(3) ¥¡¼Ã±°Ì²»ÄøÊѹ¹(¥ê¥¢¥ë¥¿¥¤¥à)
+----------------------------------------------------------------------
+F0 7F <device ID> 08 02 tt ll [kk xx yy zz] ... F7
+
+F0 7F ¥æ¥Ë¥Ð¡¼¥µ¥ë¡¦¥ê¥¢¥ë¥¿¥¤¥àSysEx.¥Ø¥Ã¥À
+<device ID> ÂоݥǥХ¤¥¹ID(7F¡§Á´¥Ç¥Ð¥¤¥¹)
+08 ¥µ¥ÖID#1¡§¡ÈMIDI¥Á¥å¡¼¥Ë¥ó¥°É¸½à¡É
+02 ¥µ¥ÖID#2¡§¡È¥¡¼Ã±°Ì²»ÄøÊѹ¹(¥ê¥¢¥ë¥¿¥¤¥à)¡É
+tt ²»Äø¥×¥í¥°¥é¥àÈÖ¹æ(0¡Á127)
+ll Êѹ¹¤Î¿ô([kk xx yy zz]¤Î¥»¥Ã¥È)
+[kk MIDI¥¡¼ÈÖ¹æ
+ xx yy zz] ¥¡¼¤Î²»Äø¥Ç¡¼¥¿(Êѹ¹²ó·«¤êÊÖ¤·)
+F7 EOX
+----------------------------------------------------------------------
+
+(4) ³ÈÄ¥¥Ð¥ë¥¯²»Äø¥À¥ó¥×Í×µá(Èó¥ê¥¢¥ë¥¿¥¤¥à)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 03 bb tt F7
+
+F0 7E ¥æ¥Ë¥Ð¡¼¥µ¥ë¡¦Èó¥ê¥¢¥ë¥¿¥¤¥àSysEx.¥Ø¥Ã¥À
+<device ID> ÂоݥǥХ¤¥¹ID(7F¡§Á´¥Ç¥Ð¥¤¥¹)
+08 ¥µ¥ÖID#1¡§¡ÈMIDI¥Á¥å¡¼¥Ë¥ó¥°É¸½à¡É
+03 ¥µ¥ÖID#2¡§¡È³ÈÄ¥¥Ð¥ë¥¯²»Äø¥À¥ó¥×Í×µá(Èó¥ê¥¢¥ë¥¿¥¤¥à)¡É
+bb ²»Äø¥Ð¥ó¥¯ÈÖ¹æ(0¡Á127)
+tt ²»Äø¥×¥í¥°¥é¥àÈÖ¹æ(0¡Á127)
+F7 EOX
+----------------------------------------------------------------------
+
+(5) ³ÈÄ¥¥Ð¥ë¥¯²»Äø¥À¥ó¥×(Èó¥ê¥¢¥ë¥¿¥¤¥à)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 04 bb tt <tuning name> [xx yy zz] ... chksum F7
+
+F0 7E ¥æ¥Ë¥Ð¡¼¥µ¥ë¡¦Èó¥ê¥¢¥ë¥¿¥¤¥àSysEx.¥Ø¥Ã¥À
+<device ID> ±þÅú¥Ç¥Ð¥¤¥¹ID(7F¡§Á´¥Ç¥Ð¥¤¥¹)
+08 ¥µ¥ÖID#1¡§¡ÈMIDI¥Á¥å¡¼¥Ë¥ó¥°É¸½à¡É
+04 ¥µ¥ÖID#2¡§¡È³ÈÄ¥¥Ð¥ë¥¯²»Äø¥À¥ó¥×(Èó¥ê¥¢¥ë¥¿¥¤¥à)¡É
+bb ²»Äø¥Ð¥ó¥¯ÈÖ¹æ(0¡Á127)
+tt ²»Äø¥×¥í¥°¥é¥àÈÖ¹æ(0¡Á127)
+<tuning name> ²»Äø̾(ASCII16ʸ»ú)
+[xx yy zz] ñ²»¤Î²»Äø¥Ç¡¼¥¿(128²ó·«¤êÊÖ¤·)
+chksum ¥Á¥§¥Ã¥¯¥µ¥à(F0,F7,chksum¤ò½ü¤¤¤¿Á´¥Ð¥¤¥È¤ÎXOR)
+F7 EOX
+----------------------------------------------------------------------
+
+(6) ¥¹¥±¡¼¥ë/¥ª¥¯¥¿¡¼¥Ö²»Äø¥À¥ó¥× 1¥Ð¥¤¥È·Á¼°(Èó¥ê¥¢¥ë¥¿¥¤¥à)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 05 bb tt <tuning name> [xx] ... chksum F7
+
+F0 7E ¥æ¥Ë¥Ð¡¼¥µ¥ë¡¦Èó¥ê¥¢¥ë¥¿¥¤¥àSysEx.¥Ø¥Ã¥À
+<device ID> ÂоݥǥХ¤¥¹ID(7F¡§Á´¥Ç¥Ð¥¤¥¹)
+08 ¥µ¥ÖID#1¡§¡ÈMIDI¥Á¥å¡¼¥Ë¥ó¥°É¸½à¡É
+05 ¥µ¥ÖID#2¡§¡È¥¹¥±¡¼¥ë/¥ª¥¯¥¿¡¼¥Ö²»Äø¥À¥ó¥×
+ 1¥Ð¥¤¥È·Á¼°(Èó¥ê¥¢¥ë¥¿¥¤¥à)¡É
+bb ²»Äø¥Ð¥ó¥¯ÈÖ¹æ(0¡Á127)
+tt ²»Äø¥×¥í¥°¥é¥àÈÖ¹æ(0¡Á127)
+<tuning name> ²»Äø̾(ASCII16ʸ»ú)
+[xx] 12Ⱦ²»(¥É¡Á¥·)¥Á¥å¡¼¥Ë¥ó¥°¡¦¥ª¥Õ¥»¥Ã¥È(12¥Ð¥¤¥È)
+ 00H¡§¡Ý64¥»¥ó¥È
+ 40H¡§¡Þ 0¥»¥ó¥È(Ê¿¶ÑΧ)
+ 7FH¡§¡Ü63¥»¥ó¥È
+chksum ¥Á¥§¥Ã¥¯¥µ¥à(F0,F7,chksum¤ò½ü¤¤¤¿Á´¥Ð¥¤¥È¤ÎXOR)
+F7 EOX
+----------------------------------------------------------------------
+
+(7) ¥¹¥±¡¼¥ë/¥ª¥¯¥¿¡¼¥Ö²»Äø¥À¥ó¥× 2¥Ð¥¤¥È·Á¼°(Èó¥ê¥¢¥ë¥¿¥¤¥à)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 06 bb tt <tuning name> [xx yy] ... chksum F7
+
+F0 7E ¥æ¥Ë¥Ð¡¼¥µ¥ë¡¦Èó¥ê¥¢¥ë¥¿¥¤¥àSysEx.¥Ø¥Ã¥À
+<device ID> ÂоݥǥХ¤¥¹ID(7F¡§Á´¥Ç¥Ð¥¤¥¹)
+08 ¥µ¥ÖID#1¡§¡ÈMIDI¥Á¥å¡¼¥Ë¥ó¥°É¸½à¡É
+06 ¥µ¥ÖID#2¡§¡È¥¹¥±¡¼¥ë/¥ª¥¯¥¿¡¼¥Ö²»Äø¥À¥ó¥×
+ 2¥Ð¥¤¥È·Á¼°(Èó¥ê¥¢¥ë¥¿¥¤¥à)¡É
+bb ²»Äø¥Ð¥ó¥¯ÈÖ¹æ(0¡Á127)
+tt ²»Äø¥×¥í¥°¥é¥àÈÖ¹æ(0¡Á127)
+<tuning name> ²»Äø̾(ASCII16ʸ»ú)
+[xx yy] 12Ⱦ²»(¥É¡Á¥·)¥Á¥å¡¼¥Ë¥ó¥°¡¦¥ª¥Õ¥»¥Ã¥È(24¥Ð¥¤¥È)
+ 00H 00H¡§¡Ý100¥»¥ó¥È(0.012207¥»¥ó¥È¤Î8,192ÃÊ)
+ 40H 00H¡§¡Þ 0¥»¥ó¥È(Ê¿¶ÑΧ)
+ 7FH 7FH¡§¡Ü100¥»¥ó¥È(0.012207¥»¥ó¥È¤Î8,191ÃÊ)
+chksum ¥Á¥§¥Ã¥¯¥µ¥à(F0,F7,chksum¤ò½ü¤¤¤¿Á´¥Ð¥¤¥È¤ÎXOR)
+F7 EOX
+----------------------------------------------------------------------
+
+(8) ³ÈÄ¥¥¡¼Ã±°Ì²»ÄøÊѹ¹(¥ê¥¢¥ë¥¿¥¤¥à)
+----------------------------------------------------------------------
+F0 7F <device ID> 08 07 bb tt ll [kk xx yy zz] ... F7
+
+F0 7F ¥æ¥Ë¥Ð¡¼¥µ¥ë¡¦¥ê¥¢¥ë¥¿¥¤¥àSysEx.¥Ø¥Ã¥À
+<device ID> ÂоݥǥХ¤¥¹ID(7F¡§Á´¥Ç¥Ð¥¤¥¹)
+08 ¥µ¥ÖID#1¡§¡ÈMIDI¥Á¥å¡¼¥Ë¥ó¥°É¸½à¡É
+07 ¥µ¥ÖID#2¡§¡È³ÈÄ¥¥¡¼Ã±°Ì²»ÄøÊѹ¹(¥ê¥¢¥ë¥¿¥¤¥à)¡É
+bb ²»Äø¥Ð¥ó¥¯ÈÖ¹æ(0¡Á127)
+tt ²»Äø¥×¥í¥°¥é¥àÈÖ¹æ(0¡Á127)
+ll Êѹ¹¤Î¿ô([kk xx yy zz]¤Î¥»¥Ã¥È)
+[kk MIDI¥¡¼ÈÖ¹æ
+ xx yy zz] ¥¡¼¤Î²»Äø¥Ç¡¼¥¿(Êѹ¹²ó·«¤êÊÖ¤·)
+F7 EOX
+----------------------------------------------------------------------
+
+(9) ³ÈÄ¥¥¡¼Ã±°Ì²»ÄøÊѹ¹(Èó¥ê¥¢¥ë¥¿¥¤¥à)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 07 bb tt ll [kk xx yy zz] ... F7
+
+F0 7E ¥æ¥Ë¥Ð¡¼¥µ¥ë¡¦Èó¥ê¥¢¥ë¥¿¥¤¥àSysEx.¥Ø¥Ã¥À
+<device ID> ÂоݥǥХ¤¥¹ID(7F¡§Á´¥Ç¥Ð¥¤¥¹)
+08 ¥µ¥ÖID#1¡§¡ÈMIDI¥Á¥å¡¼¥Ë¥ó¥°É¸½à¡É
+07 ¥µ¥ÖID#2¡§¡È³ÈÄ¥¥¡¼Ã±°Ì²»ÄøÊѹ¹(Èó¥ê¥¢¥ë¥¿¥¤¥à)¡É
+bb ²»Äø¥Ð¥ó¥¯ÈÖ¹æ(0¡Á127)
+tt ²»Äø¥×¥í¥°¥é¥àÈÖ¹æ(0¡Á127)
+ll Êѹ¹¤Î¿ô([kk xx yy zz]¤Î¥»¥Ã¥È)
+[kk MIDI¥¡¼ÈÖ¹æ
+ xx yy zz] ¥¡¼¤Î²»Äø¥Ç¡¼¥¿(Êѹ¹²ó·«¤êÊÖ¤·)
+F7 EOX
+----------------------------------------------------------------------
+
+(10) ¥¹¥±¡¼¥ë/¥ª¥¯¥¿¡¼¥Ö¡¦¥Á¥å¡¼¥Ë¥ó¥° 1¥Ð¥¤¥È·Á¼°(¥ê¥¢¥ë¥¿¥¤¥à)
+----------------------------------------------------------------------
+F0 7F <device ID> 08 08 ff gg hh [ss] ... F7
+
+F0 7F ¥æ¥Ë¥Ð¡¼¥µ¥ë¡¦¥ê¥¢¥ë¥¿¥¤¥àSysEx.¥Ø¥Ã¥À
+<device ID> ÂоݥǥХ¤¥¹ID(7F¡§Á´¥Ç¥Ð¥¤¥¹)
+08 ¥µ¥ÖID#1¡§¡ÈMIDI¥Á¥å¡¼¥Ë¥ó¥°É¸½à¡É
+08 ¥µ¥ÖID#2¡§¡È¥¹¥±¡¼¥ë/¥ª¥¯¥¿¡¼¥Ö¡¦¥Á¥å¡¼¥Ë¥ó¥°
+ 1¥Ð¥¤¥È·Á¼°(¥ê¥¢¥ë¥¿¥¤¥à)¡É
+ff ¥Á¥ã¥ó¥Í¥ë/¥ª¥×¥·¥ç¥ó¡¦¥Ð¥¤¥È1
+ ¥Ó¥Ã¥È0¡Á1¡§¥Á¥ã¥ó¥Í¥ë15¡Á16
+ ¥Ó¥Ã¥È2¡Á6¡§¾Íè¤Î³ÈÄ¥¤Î¤¿¤áͽÌó
+gg ¥Á¥ã¥ó¥Í¥ë¡¦¥Ð¥¤¥È2
+ ¥Ó¥Ã¥È0¡Á6¡§¥Á¥ã¥ó¥Í¥ë8¡Á14
+hh ¥Á¥ã¥ó¥Í¥ë¡¦¥Ð¥¤¥È3
+ ¥Ó¥Ã¥È0¡Á6¡§¥Á¥ã¥ó¥Í¥ë1¡Á7
+[ss] 12Ⱦ²»(¥É¡Á¥·)¥Á¥å¡¼¥Ë¥ó¥°¡¦¥ª¥Õ¥»¥Ã¥È(12¥Ð¥¤¥È)
+ 00H¡§¡Ý64¥»¥ó¥È
+ 40H¡§¡Þ 0¥»¥ó¥È(Ê¿¶ÑΧ)
+ 7FH¡§¡Ü63¥»¥ó¥È
+F7 EOX
+----------------------------------------------------------------------
+
+(11) ¥¹¥±¡¼¥ë/¥ª¥¯¥¿¡¼¥Ö¡¦¥Á¥å¡¼¥Ë¥ó¥° 1¥Ð¥¤¥È·Á¼°(Èó¥ê¥¢¥ë¥¿¥¤¥à)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 08 ff gg hh [ss] ... F7
+
+F0 7E ¥æ¥Ë¥Ð¡¼¥µ¥ë¡¦Èó¥ê¥¢¥ë¥¿¥¤¥àSysEx.¥Ø¥Ã¥À
+<device ID> ÂоݥǥХ¤¥¹ID(7F¡§Á´¥Ç¥Ð¥¤¥¹)
+08 ¥µ¥ÖID#1¡§¡ÈMIDI¥Á¥å¡¼¥Ë¥ó¥°É¸½à¡É
+08 ¥µ¥ÖID#2¡§¡È¥¹¥±¡¼¥ë/¥ª¥¯¥¿¡¼¥Ö¡¦¥Á¥å¡¼¥Ë¥ó¥°
+ 1¥Ð¥¤¥È·Á¼°(Èó¥ê¥¢¥ë¥¿¥¤¥à)¡É
+ff ¥Á¥ã¥ó¥Í¥ë/¥ª¥×¥·¥ç¥ó¡¦¥Ð¥¤¥È1
+ ¥Ó¥Ã¥È0¡Á1¡§¥Á¥ã¥ó¥Í¥ë15¡Á16
+ ¥Ó¥Ã¥È2¡Á6¡§¾Íè¤Î³ÈÄ¥¤Î¤¿¤áͽÌó
+gg ¥Á¥ã¥ó¥Í¥ë¡¦¥Ð¥¤¥È2
+ ¥Ó¥Ã¥È0¡Á6¡§¥Á¥ã¥ó¥Í¥ë8¡Á14
+hh ¥Á¥ã¥ó¥Í¥ë¡¦¥Ð¥¤¥È3
+ ¥Ó¥Ã¥È0¡Á6¡§¥Á¥ã¥ó¥Í¥ë1¡Á7
+[ss] 12Ⱦ²»(¥É¡Á¥·)¥Á¥å¡¼¥Ë¥ó¥°¡¦¥ª¥Õ¥»¥Ã¥È(12¥Ð¥¤¥È)
+ 00H¡§¡Ý64¥»¥ó¥È
+ 40H¡§¡Þ 0¥»¥ó¥È(Ê¿¶ÑΧ)
+ 7FH¡§¡Ü63¥»¥ó¥È
+F7 EOX
+----------------------------------------------------------------------
+
+(12) ¥¹¥±¡¼¥ë/¥ª¥¯¥¿¡¼¥Ö¡¦¥Á¥å¡¼¥Ë¥ó¥° 2¥Ð¥¤¥È·Á¼°(¥ê¥¢¥ë¥¿¥¤¥à)
+----------------------------------------------------------------------
+F0 7F <device ID> 08 09 ff gg hh [ss tt] ... F7
+
+F0 7F ¥æ¥Ë¥Ð¡¼¥µ¥ë¡¦¥ê¥¢¥ë¥¿¥¤¥àSysEx.¥Ø¥Ã¥À
+<device ID> ÂоݥǥХ¤¥¹ID(7F¡§Á´¥Ç¥Ð¥¤¥¹)
+08 ¥µ¥ÖID#1¡§¡ÈMIDI¥Á¥å¡¼¥Ë¥ó¥°É¸½à¡É
+09 ¥µ¥ÖID#2¡§¡È¥¹¥±¡¼¥ë/¥ª¥¯¥¿¡¼¥Ö¡¦¥Á¥å¡¼¥Ë¥ó¥°
+ 2¥Ð¥¤¥È·Á¼°(¥ê¥¢¥ë¥¿¥¤¥à)¡É
+ff ¥Á¥ã¥ó¥Í¥ë/¥ª¥×¥·¥ç¥ó¡¦¥Ð¥¤¥È1
+ ¥Ó¥Ã¥È0¡Á1¡§¥Á¥ã¥ó¥Í¥ë15¡Á16
+ ¥Ó¥Ã¥È2¡Á6¡§¾Íè¤Î³ÈÄ¥¤Î¤¿¤áͽÌó
+gg ¥Á¥ã¥ó¥Í¥ë¡¦¥Ð¥¤¥È2
+ ¥Ó¥Ã¥È0¡Á6¡§¥Á¥ã¥ó¥Í¥ë8¡Á14
+hh ¥Á¥ã¥ó¥Í¥ë¡¦¥Ð¥¤¥È3
+ ¥Ó¥Ã¥È0¡Á6¡§¥Á¥ã¥ó¥Í¥ë1¡Á7
+[ss tt] 12Ⱦ²»(¥É¡Á¥·)¥Á¥å¡¼¥Ë¥ó¥°¡¦¥ª¥Õ¥»¥Ã¥È(24¥Ð¥¤¥È)
+ 00H 00H¡§¡Ý100¥»¥ó¥È(0.012207¥»¥ó¥È¤Î8,192ÃÊ)
+ 40H 00H¡§¡Þ 0¥»¥ó¥È(Ê¿¶ÑΧ)
+ 7FH 7FH¡§¡Ü100¥»¥ó¥È(0.012207¥»¥ó¥È¤Î8,191ÃÊ)
+F7 EOX
+----------------------------------------------------------------------
+
+(13) ¥¹¥±¡¼¥ë/¥ª¥¯¥¿¡¼¥Ö¡¦¥Á¥å¡¼¥Ë¥ó¥° 2¥Ð¥¤¥È·Á¼°(Èó¥ê¥¢¥ë¥¿¥¤¥à)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 09 ff gg hh [ss tt] ... F7
+
+F0 7E ¥æ¥Ë¥Ð¡¼¥µ¥ë¡¦Èó¥ê¥¢¥ë¥¿¥¤¥àSysEx.¥Ø¥Ã¥À
+<device ID> ÂоݥǥХ¤¥¹ID(7F¡§Á´¥Ç¥Ð¥¤¥¹)
+08 ¥µ¥ÖID#1¡§¡ÈMIDI¥Á¥å¡¼¥Ë¥ó¥°É¸½à¡É
+09 ¥µ¥ÖID#2¡§¡È¥¹¥±¡¼¥ë/¥ª¥¯¥¿¡¼¥Ö¡¦¥Á¥å¡¼¥Ë¥ó¥°
+ 2¥Ð¥¤¥È·Á¼°(Èó¥ê¥¢¥ë¥¿¥¤¥à)¡É
+ff ¥Á¥ã¥ó¥Í¥ë/¥ª¥×¥·¥ç¥ó¡¦¥Ð¥¤¥È1
+ ¥Ó¥Ã¥È0¡Á1¡§¥Á¥ã¥ó¥Í¥ë15¡Á16
+ ¥Ó¥Ã¥È2¡Á6¡§¾Íè¤Î³ÈÄ¥¤Î¤¿¤áͽÌó
+gg ¥Á¥ã¥ó¥Í¥ë¡¦¥Ð¥¤¥È2
+ ¥Ó¥Ã¥È0¡Á6¡§¥Á¥ã¥ó¥Í¥ë8¡Á14
+hh ¥Á¥ã¥ó¥Í¥ë¡¦¥Ð¥¤¥È3
+ ¥Ó¥Ã¥È0¡Á6¡§¥Á¥ã¥ó¥Í¥ë1¡Á7
+[ss tt] 12Ⱦ²»(¥É¡Á¥·)¥Á¥å¡¼¥Ë¥ó¥°¡¦¥ª¥Õ¥»¥Ã¥È(24¥Ð¥¤¥È)
+ 00H 00H¡§¡Ý100¥»¥ó¥È(0.012207¥»¥ó¥È¤Î8,192ÃÊ)
+ 40H 00H¡§¡Þ 0¥»¥ó¥È(Ê¿¶ÑΧ)
+ 7FH 7FH¡§¡Ü100¥»¥ó¥È(0.012207¥»¥ó¥È¤Î8,191ÃÊ)
+F7 EOX
+----------------------------------------------------------------------
+
+(14) ²»Î§Ä´ÀÀ©¸æ¥Á¥å¡¼¥Ë¥ó¥°(¥ê¥¢¥ë¥¿¥¤¥à)
+----------------------------------------------------------------------
+F0 7F <device ID> 08 0A sf mi F7
+
+F0 7F ¥æ¥Ë¥Ð¡¼¥µ¥ë¡¦¥ê¥¢¥ë¥¿¥¤¥àSysEx.¥Ø¥Ã¥À
+<device ID> ÂоݥǥХ¤¥¹ID(7F¡§Á´¥Ç¥Ð¥¤¥¹)
+08 ¥µ¥ÖID#1¡§¡ÈMIDI¥Á¥å¡¼¥Ë¥ó¥°É¸½à¡É
+0A ¥µ¥ÖID#2¡§¡È²»Î§Ä´ÀÀ©¸æ¥Á¥å¡¼¥Ë¥ó¥°(¥ê¥¢¥ë¥¿¥¤¥à)¡É
+sf Ä´¹æ¤Î¿ô(1¥Ð¥¤¥È)
+ 39H¡§¢õ¡ß7
+ 3FH¡§¢õ¡ß1
+ 40H¡§Ä´¹æ¤Ê¤·
+ 41H¡§¢ô¡ß1
+ 47H¡§¢ô¡ß7
+mi ĹĴ/ûĴ(1¥Ð¥¤¥È)
+ 00H¡§Ä¹Ä´
+ 01H¡§Ã»Ä´
+ 02H¡§·Ð²áŪĹĴ
+ 03H¡§·Ð²áŪûĴ
+F7 EOX
+----------------------------------------------------------------------
+
+(15) ²»Î§Ä´ÀÀ©¸æ¥Á¥å¡¼¥Ë¥ó¥°(Èó¥ê¥¢¥ë¥¿¥¤¥à)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 0A sf mi F7
+
+F0 7E ¥æ¥Ë¥Ð¡¼¥µ¥ë¡¦Èó¥ê¥¢¥ë¥¿¥¤¥àSysEx.¥Ø¥Ã¥À
+<device ID> ÂоݥǥХ¤¥¹ID(7F¡§Á´¥Ç¥Ð¥¤¥¹)
+08 ¥µ¥ÖID#1¡§¡ÈMIDI¥Á¥å¡¼¥Ë¥ó¥°É¸½à¡É
+0A ¥µ¥ÖID#2¡§¡È²»Î§Ä´ÀÀ©¸æ¥Á¥å¡¼¥Ë¥ó¥°(Èó¥ê¥¢¥ë¥¿¥¤¥à)¡É
+sf Ä´¹æ¤Î¿ô(1¥Ð¥¤¥È)
+ 39H¡§¢õ¡ß7
+ 3FH¡§¢õ¡ß1
+ 40H¡§Ä´¹æ¤Ê¤·
+ 41H¡§¢ô¡ß1
+ 47H¡§¢ô¡ß7
+mi ĹĴ/ûĴ(1¥Ð¥¤¥È)
+ 00H¡§Ä¹Ä´
+ 01H¡§Ã»Ä´
+ 02H¡§·Ð²áŪĹĴ
+ 03H¡§·Ð²áŪûĴ
+F7 EOX
+----------------------------------------------------------------------
+
+(16) ²»Î§¼ïÊÌÀ©¸æ¥Á¥å¡¼¥Ë¥ó¥°(¥ê¥¢¥ë¥¿¥¤¥à)
+----------------------------------------------------------------------
+F0 7F <device ID> 08 0B ff gg hh tt F7
+
+F0 7F ¥æ¥Ë¥Ð¡¼¥µ¥ë¡¦¥ê¥¢¥ë¥¿¥¤¥àSysEx.¥Ø¥Ã¥À
+<device ID> ÂоݥǥХ¤¥¹ID(7F¡§Á´¥Ç¥Ð¥¤¥¹)
+08 ¥µ¥ÖID#1¡§¡ÈMIDI¥Á¥å¡¼¥Ë¥ó¥°É¸½à¡É
+0B ¥µ¥ÖID#2¡§¡È²»Î§¼ïÊÌÀ©¸æ¥Á¥å¡¼¥Ë¥ó¥°(¥ê¥¢¥ë¥¿¥¤¥à)¡É
+ff ¥Á¥ã¥ó¥Í¥ë/¥ª¥×¥·¥ç¥ó¡¦¥Ð¥¤¥È1
+ ¥Ó¥Ã¥È0¡Á1¡§¥Á¥ã¥ó¥Í¥ë15¡Á16
+ ¥Ó¥Ã¥È2¡§¥Ý¡¼¥ÈA/B
+ ¥Ó¥Ã¥È3¡Á6¡§¾Íè¤Î³ÈÄ¥¤Î¤¿¤áͽÌó
+gg ¥Á¥ã¥ó¥Í¥ë¡¦¥Ð¥¤¥È2
+ ¥Ó¥Ã¥È0¡Á6¡§¥Á¥ã¥ó¥Í¥ë8¡Á14
+hh ¥Á¥ã¥ó¥Í¥ë¡¦¥Ð¥¤¥È3
+ ¥Ó¥Ã¥È0¡Á6¡§¥Á¥ã¥ó¥Í¥ë1¡Á7
+tt ²»Î§¼ïÊÌ(1¥Ð¥¤¥È)
+ 00H¡§Ê¿¶ÑΧ
+ 01H¡§¥Ô¥¿¥´¥é¥¹²»Î§
+ 02H¡§ÃæÁ´²»Î§
+ 03H¡§½ãÀµÎ§
+ 40H¡§¥æ¡¼¥¶ÄêµÁ²»Î§#0
+ 41H¡§¥æ¡¼¥¶ÄêµÁ²»Î§#1
+ 42H¡§¥æ¡¼¥¶ÄêµÁ²»Î§#2
+ 43H¡§¥æ¡¼¥¶ÄêµÁ²»Î§#3
+F7 EOX
+----------------------------------------------------------------------
+
+(17) ²»Î§¼ïÊÌÀ©¸æ¥Á¥å¡¼¥Ë¥ó¥°(Èó¥ê¥¢¥ë¥¿¥¤¥à)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 0B ff gg hh tt F7
+
+F0 7E ¥æ¥Ë¥Ð¡¼¥µ¥ë¡¦Èó¥ê¥¢¥ë¥¿¥¤¥àSysEx.¥Ø¥Ã¥À
+<device ID> ÂоݥǥХ¤¥¹ID(7F¡§Á´¥Ç¥Ð¥¤¥¹)
+08 ¥µ¥ÖID#1¡§¡ÈMIDI¥Á¥å¡¼¥Ë¥ó¥°É¸½à¡É
+0B ¥µ¥ÖID#2¡§¡È²»Î§¼ïÊÌÀ©¸æ¥Á¥å¡¼¥Ë¥ó¥°(Èó¥ê¥¢¥ë¥¿¥¤¥à)¡É
+ff ¥Á¥ã¥ó¥Í¥ë/¥ª¥×¥·¥ç¥ó¡¦¥Ð¥¤¥È1
+ ¥Ó¥Ã¥È0¡Á1¡§¥Á¥ã¥ó¥Í¥ë15¡Á16
+ ¥Ó¥Ã¥È2¡§¥Ý¡¼¥ÈA/B
+ ¥Ó¥Ã¥È3¡Á6¡§¾Íè¤Î³ÈÄ¥¤Î¤¿¤áͽÌó
+gg ¥Á¥ã¥ó¥Í¥ë¡¦¥Ð¥¤¥È2
+ ¥Ó¥Ã¥È0¡Á6¡§¥Á¥ã¥ó¥Í¥ë8¡Á14
+hh ¥Á¥ã¥ó¥Í¥ë¡¦¥Ð¥¤¥È3
+ ¥Ó¥Ã¥È0¡Á6¡§¥Á¥ã¥ó¥Í¥ë1¡Á7
+tt ²»Î§¼ïÊÌ(1¥Ð¥¤¥È)
+ 00H¡§Ê¿¶ÑΧ
+ 01H¡§¥Ô¥¿¥´¥é¥¹²»Î§
+ 02H¡§ÃæÁ´²»Î§
+ 03H¡§½ãÀµÎ§
+ 40H¡§¥æ¡¼¥¶ÄêµÁ²»Î§#0
+ 41H¡§¥æ¡¼¥¶ÄêµÁ²»Î§#1
+ 42H¡§¥æ¡¼¥¶ÄêµÁ²»Î§#2
+ 43H¡§¥æ¡¼¥¶ÄêµÁ²»Î§#3
+F7 EOX
+----------------------------------------------------------------------
+
+(18) ¥æ¡¼¥¶ÄêµÁ²»Î§ÅÐÏ¿(Èó¥ê¥¢¥ë¥¿¥¤¥à)
+----------------------------------------------------------------------
+F0 7E <device ID> 08 0C tt <temper name>
+ ll [fh fl bh bl aa bb cc dd ee ff] ... F7
+
+F0 7E ¥æ¥Ë¥Ð¡¼¥µ¥ë¡¦Èó¥ê¥¢¥ë¥¿¥¤¥àSysEx.¥Ø¥Ã¥À
+<device ID> ÂоݥǥХ¤¥¹ID(7F¡§Á´¥Ç¥Ð¥¤¥¹)
+08 ¥µ¥ÖID#1¡§¡ÈMIDI¥Á¥å¡¼¥Ë¥ó¥°É¸½à¡É
+0C ¥µ¥ÖID#2¡§¡È¥æ¡¼¥¶ÄêµÁ²»Î§¥À¥ó¥×(Èó¥ê¥¢¥ë¥¿¥¤¥à)¡É
+tt ²»Î§¥×¥í¥°¥é¥àÈÖ¹æ(0¡Á63)
+<temper name> ²»Î§Ì¾(ASCII16ʸ»ú)
+ll Äê¼°¤Î¿ô([fh fl bh bl aa bb cc dd ee ff]¤Î¥»¥Ã¥È)
+[fh ŬÍѲ»Äø¥Ó¥Ã¥È¥Þ¥¹¥¯¡¦¥Ð¥¤¥È1
+ ¥Ó¥Ã¥È0¡Á3¡§¸ÞÅÙ·÷¾å¾º8¡Á11ÃÊ
+ ¥Ó¥Ã¥È4¡Á5¡§¾Íè¤Î³ÈÄ¥¤Î¤¿¤áͽÌó
+ ¥Ó¥Ã¥È6¡§Ä¹Ä´¥Õ¥é¥°(¥ê¥Ð¡¼¥µ¥ë)
+ fl ŬÍѲ»Äø¥Ó¥Ã¥È¥Þ¥¹¥¯¡¦¥Ð¥¤¥È2
+ ¥Ó¥Ã¥È0¡Á6¡§¸ÞÅÙ·÷¾å¾º1¡Á7ÃÊ
+ bh ŬÍѲ»Äø¥Ó¥Ã¥È¥Þ¥¹¥¯¡¦¥Ð¥¤¥È3
+ ¥Ó¥Ã¥È0¡Á3¡§¸ÞÅÙ·÷²¼¹ß8¡Á11ÃÊ
+ ¥Ó¥Ã¥È4¡Á5¡§¾Íè¤Î³ÈÄ¥¤Î¤¿¤áͽÌó
+ ¥Ó¥Ã¥È6¡§Ã»Ä´¥Õ¥é¥°(¥ê¥Ð¡¼¥µ¥ë)
+ bl ŬÍѲ»Äø¥Ó¥Ã¥È¥Þ¥¹¥¯¡¦¥Ð¥¤¥È4
+ ¥Ó¥Ã¥È0¡Á6¡§¸ÞÅÙ·÷²¼¹ß1¡Á7ÃÊ
+ aa bb ʬ¿ô(aa/bb)
+ cc dd ee ff] ¤Ù¤¾è((cc/dd)^(ee/ff))(Äê¼°¤Î¿ô²ó·«¤êÊÖ¤·)
+F7 EOX
+----------------------------------------------------------------------
+
+----------------------------------------------------------------------
+²»Î§¼ïÊÌÀ©¸æ¥Á¥å¡¼¥Ë¥ó¥°¤Î¥×¥ê¥»¥Ã¥È²»Î§
+----------------------------------------------------------------------
+
+¤Þ¤º¡¤¥Ô¥¿¥´¥é¥¹²»Î§(ĹĴ)Ⱦ²»³¬¤ò¡¤²¼µ¤Î¤è¤¦¤ÊÁ²²½¼°¤Çɽ¸½¤·¤Æ¤ª¤¤Þ
+¤¹¡£¤³¤³¤Ç¡¤[]Æâ¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¡¤¼ç²»¤ò´ð½à¤È¤·¤¿¥ª¥Õ¥»¥Ã¥È¤Ç¡¤±é»»·ë
+²Ì¤¬É¬¤º1¤È2¤Î´Ö¤Ë¼ý¤Þ¤ë¤è¤¦¤Ë¡¤É¬Íפ˱þ¤¸¤Æ2Çܤޤ¿¤Ï1/2Çܤ·¤Æ¤¤¤Þ¤¹¡£
+
+[¥Ô¥¿¥´¥é¥¹²»Î§(ĹĴ)Ⱦ²»³¬]
+pytha_maj[ 0] = 1 # C 1
+pytha_maj[ 7] = pytha_maj[ 0] * 3/2 # G 3/2
+pytha_maj[ 2] = pytha_maj[ 7] * 3/2 # D 9/8
+pytha_maj[ 9] = pytha_maj[ 2] * 3/2 # A 27/16
+pytha_maj[ 4] = pytha_maj[ 9] * 3/2 # E 81/64
+pytha_maj[11] = pytha_maj[ 4] * 3/2 # B 243/128
+pytha_maj[ 6] = pytha_maj[11] * 3/2 # F# 729/512
+--
+pytha_maj[ 5] = pytha_maj[ 0] * 2/3 # F 4/3
+pytha_maj[10] = pytha_maj[ 5] * 2/3 # Bb 16/9
+pytha_maj[ 3] = pytha_maj[10] * 2/3 # Eb 32/27
+pytha_maj[ 8] = pytha_maj[ 3] * 2/3 # Ab 128/81
+pytha_maj[ 1] = pytha_maj[ 8] * 2/3 # Db 256/243
+
+¤³¤ì¤ËÂФ·¡¤½ãÀµÎ§(ĹĴ)Ⱦ²»³¬¤Ï¡¤²¼µ¤Î¤è¤¦¤ÊÁ²²½¼°¤Çɽ¸½¤¹¤ë¤³¤È¤¬¤Ç
+¤¤Þ¤¹¡£¤³¤³¤Ç¡¤sc¤Ï¥·¥ó¥È¥Ë¥Ã¥¯¡¦¥³¥ó¥Þ(=81/80)¤Î°ÕÌ£¤Ç¤¹¡£
+
+[½ãÀµÎ§(ĹĴ)Ⱦ²»³¬]
+pure_maj[ 0] = 1 # C 1
+pure_maj[ 7] = pure_maj[ 0] * 3/2 # G 3/2
+pure_maj[ 2] = pure_maj[ 7] * 3/2 # D 9/8
+pure_maj[ 9] = pure_maj[ 2] * 3/2 / sc # A 5/3
+pure_maj[ 4] = pure_maj[ 9] * 3/2 # E 5/4
+pure_maj[11] = pure_maj[ 4] * 3/2 # B 15/8
+pure_maj[ 6] = pure_maj[11] * 3/2 # F# 45/32
+--
+pure_maj[ 5] = pure_maj[ 0] * 2/3 # F 4/3
+pure_maj[10] = pure_maj[ 5] * 2/3 * sc # Bb 9/5
+pure_maj[ 3] = pure_maj[10] * 2/3 # Eb 6/5
+pure_maj[ 8] = pure_maj[ 3] * 2/3 # Ab 8/5
+pure_maj[ 1] = pure_maj[ 8] * 2/3 # Db 16/15
+
+¼ç²»¤«¤é¸ÞÅÙ·÷¾å¾º»þ¤ËA¤Ç1sc²¼¹ß¡¤¸ÞÅÙ·÷²¼¹ß»þ¤ËBb¤Ç1sc¾å¾º¤¹¤ëÅÀ°Ê³°¤Ï¡¤
+´ðËÜŪ¤Ë¥Ô¥¿¥´¥é¥¹²»Î§¤ÈƱ¤¸¤È¤¤¤¦¤³¤È¤¬Íý²ò¤Ç¤¤Þ¤¹¡£
+
+ƱÍͤˡ¤¥Ô¥¿¥´¥é¥¹²»Î§(ûĴ)Ⱦ²»³¬¤È½ãÀµÎ§(ĹĴ)Ⱦ²»³¬¤ò¡¤²¼µ¤Î¤è¤¦¤Ê
+Á²²½¼°¤Çɽ¸½¤·¤Æ¤ß¤Þ¤¹¡£±¦Â¦¤Ë½ñ¤«¤ì¤¿Ê¬¿ô¤Ï¡¤¤â¤Î¤¹¤´¤¤ÃͤˤʤäƤ¤¤Þ
+¤¹¤¬¡¤Á²²½¼°¼«ÂΤϤȤƤ⥷¥ó¥×¥ë¤Ç¤¹¡£
+
+[¥Ô¥¿¥´¥é¥¹²»Î§(ûĴ)Ⱦ²»³¬]
+pytha_min[ 0] = 1 # C 1
+pytha_min[ 7] = pytha_min[ 0] * 3/2 # G 3/2
+pytha_min[ 2] = pytha_min[ 7] * 3/2 # D 9/8
+pytha_min[ 9] = pytha_min[ 2] * 3/2 # A 27/16
+pytha_min[ 4] = pytha_min[ 9] * 3/2 # E 81/64
+pytha_min[11] = pytha_min[ 4] * 3/2 # B 243/128
+pytha_min[ 6] = pytha_min[11] * 3/2 # F# 729/512
+pytha_min[ 1] = pytha_min[ 6] * 3/2 # C# 2187/2048
+pytha_min[ 8] = pytha_min[ 1] * 3/2 # G# 6561/4096
+pytha_min[ 3] = pytha_min[ 8] * 3/2 # D# 19683/16384
+--
+pytha_min[ 5] = pytha_min[ 0] * 2/3 # F 4/3
+pytha_min[10] = pytha_min[ 5] * 2/3 # Bb 16/9
+
+[½ãÀµÎ§(ûĴ)Ⱦ²»³¬]
+pure_min[ 0] = 1 * sc # C 1 * sc
+pure_min[ 7] = pure_min[ 0] * 3/2 # G 3/2 * sc
+pure_min[ 2] = pure_min[ 7] * 3/2 / sc # D 10/9 * sc
+pure_min[ 9] = pure_min[ 2] * 3/2 # A 5/3 * sc
+pure_min[ 4] = pure_min[ 9] * 3/2 # E 5/4 * sc
+pure_min[11] = pure_min[ 4] * 3/2 # B 15/8 * sc
+pure_min[ 6] = pure_min[11] * 3/2 / sc # F# 25/18 * sc
+pure_min[ 1] = pure_min[ 6] * 3/2 # C# 25/24 * sc
+pure_min[ 8] = pure_min[ 1] * 3/2 # G# 25/16 * sc
+pure_min[ 3] = pure_min[ 8] * 3/2 # D# 75/64 * sc
+--
+pure_min[ 5] = pure_min[ 0] * 2/3 # F 4/3 * sc
+pure_min[10] = pure_min[ 5] * 2/3 # Bb 16/9 * sc
+
+ĹĴ¤È¤Î°ã¤¤¤Ï¡¤¥Ô¥¿¥´¥é¥¹²»Î§¤Î¶³¦°ÌÃÖ¤¬´°Á´5ÅÙ3¤Äʬ¾å¾º¤·¤Æ¤¤¤ë¤Î¤È¡¤
+¥·¥ó¥È¥Ë¥Ã¥¯¡¦¥³¥ó¥Þ¾å¾º/²¼¹ß¤Î°ÌÃÖ¡¤¤ª¤è¤ÓÀûΧ¥Ñ¡¼¥È(¥Ô¥¿¥´¥é¥¹²»Î§)¤È
+ȼÁեѡ¼¥È(½ãÀµÎ§)¤ÇûĴ¤Î¼ç²»¤¬°ìÃפ¹¤ë¤è¤¦¤Ë¡¤½ãÀµÎ§¤ò1sc¹â¤¯Ä´À°¤·¤Æ
+¤¤¤ëÅÀ¤Ç¤¹¡£
+
+¤È¤³¤í¤Ç¡¤TiMidity++¤Î¥×¥ê¥»¥Ã¥È²»Î§¤È¤·¤Æ¡¤¥Ô¥¿¥´¥é¥¹²»Î§¡¤½ãÀµÎ§¤Î¾
+¤Ë¡¤ÃæÁ´²»Î§¤âÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ÃæÁ´²»Î§(ĹĴ)¤Ï¡¤Ä¹3ÅÙ¤¬½ãÀµ¤È¤¤¤¦°ìÈÌ
+Ū¤Ê¤â¤Î¤Ê¤Î¤ËÂФ·¡¤ÃæÁ´²»Î§(ûĴ)¤Ï¡¤Ã»3ÅÙ¤¬½ãÀµ¤Ê¥µ¥ê¥Ê¥¹²»Î§¤È¤¤¤¦¹½
+À®¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ÃæÁ´²»Î§(ĹĴ)Ⱦ²»³¬¤ÈÃæÁ´²»Î§(ûĴ)Ⱦ²»³¬¤Ï¡¤²¼µ¤Î
+¤è¤¦¤ÊÁ²²½¼°¤Çɽ¸½¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
+
+[ÃæÁ´²»Î§(ĹĴ)Ⱦ²»³¬]
+mt_maj[ 0] = 1 # C 1
+mt_maj[ 7] = mt_maj[ 0] * 5^(1/4) # G 5^(1/4)
+mt_maj[ 2] = mt_maj[ 7] * 5^(1/4) # D 5^(1/2) / 2
+mt_maj[ 9] = mt_maj[ 2] * 5^(1/4) # A 5^(3/4) / 2
+mt_maj[ 4] = mt_maj[ 9] * 5^(1/4) # E 5/4
+mt_maj[11] = mt_maj[ 4] * 5^(1/4) # B 5^(5/4) / 4
+mt_maj[ 6] = mt_maj[11] * 5^(1/4) # F# 5^(3/2) / 8
+--
+mt_maj[ 5] = mt_maj[ 0] / 5^(1/4) # F 2 / 5^(1/4)
+mt_maj[10] = mt_maj[ 5] / 5^(1/4) # Bb 4 / 5^(1/2)
+mt_maj[ 3] = mt_maj[10] / 5^(1/4) # Eb 4 / 5^(3/4)
+mt_maj[ 8] = mt_maj[ 3] / 5^(1/4) # Ab 8/5
+mt_maj[ 1] = mt_maj[ 8] / 5^(1/4) # Db 8 / 5^(5/4)
+
+[ÃæÁ´²»Î§(ûĴ)Ⱦ²»³¬]
+mt_min[ 0] = 1 * sc # C 1 * sc
+mt_min[ 7] = mt_min[ 0] * (10/3)^(1/3) # G (10/3)^(1/3) * sc
+mt_min[ 2] = mt_min[ 7] * (10/3)^(1/3) # D (10/3)^(2/3) / 2 * sc
+mt_min[ 9] = mt_min[ 2] * (10/3)^(1/3) # A 5/3 * sc
+mt_min[ 4] = mt_min[ 9] * (10/3)^(1/3) # E (10/3)^(4/3) / 4 * sc
+mt_min[11] = mt_min[ 4] * (10/3)^(1/3) # B (10/3)^(5/3) / 4 * sc
+mt_min[ 6] = mt_min[11] * (10/3)^(1/3) # F# 25/18 * sc
+mt_min[ 1] = mt_min[ 6] * (10/3)^(1/3) # C# (10/3)^(7/3) / 16 * sc
+mt_min[ 8] = mt_min[ 1] * (10/3)^(1/3) # G# (10/3)^(8/3) / 16 * sc
+mt_min[ 3] = mt_min[ 8] * (10/3)^(1/3) # D# 125/108 * sc
+--
+mt_min[ 5] = mt_min[ 0] / (10/3)^(1/3) # F 2 / (10/3)^(1/3) * sc
+mt_min[10] = mt_min[ 5] / (10/3)^(1/3) # Bb 4 / (10/3)^(2/3) * sc
+
+ÃæÁ´²»Î§(ûĴ)¤Î¶³¦°ÌÃÖ¤¬´°Á´5ÅÙ3¤Äʬ¾å¾º¤·¤Æ¤¤¤ë¤Î¤È¡¤Á´ÂΤò1sc¹â¤¯Ä´
+À°¤·¤Æ¤¤¤ëÅÀ¤Ï¡¤¥Ô¥¿¥´¥é¥¹²»Î§(ûĴ)¤È½ãÀµÎ§(ûĴ)¤ÈƱ¤¸»ö¾ð¤Ç¤¹¡£
+
+¤µ¤Æ¡¤¤³¤ÎÃæÁ´²»Î§¤ÎÍÑÅӤǤ¹¤¬¡¤¥Ô¥¿¥´¥é¥¹²»Î§¤è¤êÏÂÀ¼Åª¤Ç¤¢¤ê¡¤¤«¤Ä½ã
+ÀµÎ§¤Î¤è¤¦¤Ë²»³¬¤¬Æ̱ú¤·¤Ê¤¤¤È¤¤¤¦ÆÃÀ¤«¤é¡¤ÏÂÀ¼Åª¤Ê¥á¥í¥Ç¥£¤Ë»È¤¨¤ë¤Î
+¤Ç¤Ï¤Ê¤¤¤À¤í¤¦¤«¤È¹Í¤¨¤Æ¤¤¤Þ¤¹¡£
+
+----------------------------------------------------------------------
+²»Î§Ä´À¤Ë¤ª¤±¤ëĹĴ/ûĴ
+----------------------------------------------------------------------
+
+°ìÈÌŪ¤Ê¥ÏĹĴ¤Î¶Ê¤Ç»È¤ï¤ì¤ë¼çÍ×»°Ï²»¤Ï¡¤C¡¤G¡¤F¤À¤±¤Ç¤Ê¤¯Am¡¤Em¡¤Dm¤â
+ÉÑÈˤ˸½¤ì¤Þ¤¹¡£¤Þ¤¿¡¤Cm¡¤Gm¡¤Fm¡¤A¡¤E¡¤D¤Ê¤É¤â¤¢¤êÆÀ¤Þ¤¹¡£¤³¤ì¤é¤Î¥³¡¼
+¥É¤Ï¡¤½ãÀµÎ§(¥ÏĹĴ)¤À¤±¤Ç¤ÏÂбþ¤Ç¤¤Ê¤¤¤Î¤Ç¡¤¥×¥ì¡¼¥ä¡¼¤Ï¶Ê¤Î¿Ê¹Ô¤Ë¹ç
+¤ï¤»¤Æ²»Î§¤òÊѹ¹¤¹¤ë¤³¤È¤¬É¬ÍפǤ¹¡£
+
+¤³¤ÎÌäÂê¤ò²ò·è¤¹¤ë¤¿¤á¡¤TiMidity++¤Ç¤Ï²¼µ¤Î²»Î§¤òÍÑ°Õ¤·¤Æ¤¤¤Þ¤¹¡£
+
+(1) ¥Ô¥¿¥´¥é¥¹²»Î§(¥ÏĹĴ)¤ÎC¤Î¥Ô¥Ã¥Á¤ò´ð½à¤È¤·¤¿½ãÀµÎ§(¥ÏĹĴ)
+(2) ¥Ô¥¿¥´¥é¥¹²»Î§(¥¤Ã»Ä´)¤ÎA¤Î¥Ô¥Ã¥Á¤ò´ð½à¤È¤·¤¿½ãÀµÎ§(¥¤Ã»Ä´)
+(3) ¥Ô¥¿¥´¥é¥¹²»Î§(¥ÏĹĴ)¤ÎA¤Î¥Ô¥Ã¥Á¤ò´ð½à¤È¤·¤¿½ãÀµÎ§(·Ð²áŪ¥ÏĹĴ)
+(4) ¥Ô¥¿¥´¥é¥¹²»Î§(¥¤Ã»Ä´)¤ÎC¤Î¥Ô¥Ã¥Á¤ò´ð½à¤È¤·¤¿½ãÀµÎ§(·Ð²áŪ¥¤Ã»Ä´)
+
+¤â¤¦¾¯¤·ÀºÌ©¤ÊµÄÏÀ¤ò¤·¤Þ¤¹¡£²¼µ¤Î¤è¤¦¤Ê²»·ÏÌÖ¤ò¹Í¤¨¤Æ¤ß¤Þ¤·¤ç¤¦¡£
+
+-----------------------------------------------------------------------------
+D-- A-- E-- B-- F#-- C#-- G#-- D#-- A#-- E#-- B#-- F##-- C##--
+Bb- F- C- G- D- A- E- B- F#- C#- G#- D#- A#-
+Gb Db Ab Eb Bb F C G D A E B F#
+Ebb+ Bbb+ Fb+ Cb+ Gb+ Db+ Ab+ Eb+ Bb+ F+ C+ G+ D+
+Cbb++ Gbb++ Dbb++ Abb++ Ebb++ Bbb++ Fb++ Cb++ Gb++ Db++ Ab++ Eb++ Bb++
+-----------------------------------------------------------------------------
+
+¡ÈABCDEFG¡É¤Îɽµ¤Ï¥Ô¥¿¥´¥é¥¹²»Î§¤Ë½¾¤¤¤Þ¤¹¡£¤Þ¤¿¡È+¡É¡È-¡É¡È++¡É¡È--¡É
+¤Îɽµ¤Ï¡¤¤½¤ì¤¾¤ì1sc¾å¾º¡¤1sc²¼¹ß¡¤2sc¾å¾º¡¤2sc²¼¹ß¤ò°ÕÌ£¤·¤Þ¤¹¡£
+
+¤³¤Î²»·ÏÌÖ¤«¤é¡¤4¡ß3¤ÎĹÊý·Á¤ËʤÖ12¤Î²»¤ò¼è¤ê½Ð¤»¤Ð¡¤1¤Ä¤Î½ãÀµÎ§¥Á¥å¡¼
+¥Ë¥ó¥°¤òÀßÄê¤Ç¤¤Þ¤¹¡£Î㤨¤Ð¡¤C¥Á¥å¡¼¥Ë¥ó¥°¡¤A¥Á¥å¡¼¥Ë¥ó¥°¡¤A-¥Á¥å¡¼¥Ë
+¥ó¥°¡¤C+¥Á¥å¡¼¥Ë¥ó¥°¤Ï¡¤¤½¤ì¤¾¤ì²¼µ¤Î¤è¤¦¤Ëɽ¸½¤Ç¤¤Þ¤¹¡£
+
+[C¥Á¥å¡¼¥Ë¥ó¥°(¥ÏĹĴ)]
+----------------------
+A- E- B- F#-
+F C G D
+Db+ Ab+ Eb+ Bb+
+----------------------
+
+[A¥Á¥å¡¼¥Ë¥ó¥°(¥¤Ã»Ä´)]
+----------------------
+F#- C#- G#- D#-
+D A E B
+Bb+ F+ C+ G+
+----------------------
+
+[C+¥Á¥å¡¼¥Ë¥ó¥°(·Ð²áŪ¥ÏĹĴ)]
+----------------------
+A E B F#
+F+ C+ G+ D+
+Db++ Ab++ Eb++ Bb++
+----------------------
+
+[A-¥Á¥å¡¼¥Ë¥ó¥°(·Ð²áŪ¥¤Ã»Ä´)]
+----------------------
+F#-- C#-- G#-- D#--
+D- A- E- B-
+Bb F C G
+----------------------
+
+ĹĴ¼çÂΤζʤˤÏÊ¿¹ÔÄ´¥Á¥å¡¼¥Ë¥ó¥°¤Î²»Äø¤ò¶Ï¤«¤Ë²¼¤²¤¿¥Á¥å¡¼¥Ë¥ó¥°¤ÎÁÈ
+¤ß¹ç¤ï¤»¤ò¡¤Ã»Ä´¼çÂΤζʤˤÏÊ¿¹ÔÄ´¥Á¥å¡¼¥Ë¥ó¥°¤Î²»Äø¤ò¶Ï¤«¤Ë¾å¤²¤¿¥Á¥å
+¡¼¥Ë¥ó¥°¤ÎÁȤ߹ç¤ï¤»¤ò´ðËܤËÁªÂò¤¹¤ì¤Ð¡¤¤¹¤³¤Ö¤ëÎɹ¥¤Ê·ë²Ì¤Ë¤Ê¤ë¤È»×¤¤
+¤Þ¤¹¡£
+
+----------------------------------------------------------------------
+¥æ¡¼¥¶ÄêµÁ²»Î§ÅÐÏ¿
+----------------------------------------------------------------------
+
+TiMidity++¤Ï¡¤¥æ¡¼¥¶ÄêµÁ²»Î§¤ÎÅÐÏ¿µ¡Ç½¤ò¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£MIDI Tuning
+Standard³µÎ¬(ËÜʸ½ñ¤ÎËöÈø¤ò»²¾È)¤Î(18)¤ËÁêÅö¤·¤Þ¤¹¡£Î㤨¤Ð¡¤²¼µ¤Î¤è¤¦
+¤ÊSysEx.¤òÍ¿¤¨¤ë¤³¤È¤Ë¤è¤ê¡¤ÍÍ¡¹¤Ê²»Î§¤ÎÀ¸À®¤¬²Äǽ¤Ç¤¹¡£
+
+[Ê¿¶ÑΧ]
+f0 7e 00 08 0c 00 ; ²»Î§¥×¥í¥°¥é¥àÈÖ¹æ
+65 71 75 61 6c 00 00 00 00 00 00 00 00 00 00 00 ; "equal"
+01 ; Äê¼°¤Î¿ô
+0f 7f 00 00 01 01 02 01 07 0c ; (ξÊý) 2^(7/12)
+f7
+
+[¥Ô¥¿¥´¥é¥¹²»Î§]
+f0 7e 00 08 0c 01 ; ²»Î§¥×¥í¥°¥é¥àÈÖ¹æ
+50 79 74 68 61 67 6f 72 61 73 00 00 00 00 00 00 ; "Pythagoras"
+02 ; Äê¼°¤Î¿ô
+00 3f 40 1f 03 02 01 01 00 01 ; (ĹĴ) 3/2
+43 7f 00 03 03 02 01 01 00 01 ; (ûĴ) 3/2
+f7
+
+[ÃæÁ´²»Î§]
+f0 7e 00 08 0c 02 ; ²»Î§¥×¥í¥°¥é¥àÈÖ¹æ
+6d 65 61 6e 2d 74 6f 6e 65 00 00 00 00 00 00 00 ; "mean-tone"
+02 ; Äê¼°¤Î¿ô
+00 3f 40 1f 01 01 05 01 01 04 ; (ĹĴ) 5^(1/4)
+43 7f 00 03 01 01 0a 03 01 03 ; (ûĴ) (10/3)^(1/3)
+f7
+
+[½ãÀµÎ§]
+f0 7e 00 08 0c 03 ; ²»Î§¥×¥í¥°¥é¥àÈÖ¹æ
+70 75 72 65 20 69 6e 74 6f 6e 61 74 69 6f 6e 00 ; "pure intonation"
+04 ; Äê¼°¤Î¿ô
+00 3f 40 1f 03 02 01 01 00 01 ; (ĹĴ) 3/2
+00 04 40 02 05 01 02 03 04 01 ; (ĹĴ) 5*(2/3)^4
+43 7f 00 03 03 02 01 01 00 01 ; (ûĴ) 3/2
+40 22 00 00 05 01 02 03 04 01 ; (ûĴ) 5*(2/3)^4
+f7
+
+[¥¥ë¥ó¥Ù¥ë¥¬¡¼Âè»°ÈÖ]
+f0 7e 00 08 0c 00 ; ²»Î§¥×¥í¥°¥é¥àÈÖ¹æ
+4b 69 72 6e 62 65 72 67 65 72 2d 33 00 00 00 00 ; "Kirnberger-3"
+02 ; Äê¼°¤Î¿ô
+00 0f 00 00 01 01 05 01 01 04 ; (ξÊý) 5^(1/4)
+00 30 00 1f 03 02 01 01 00 01 ; (ξÊý) 3/2
+f7
+
+[Ê¿Åçã»Ê²»Î§]
+f0 7e 00 08 0c 01 ; ²»Î§¥×¥í¥°¥é¥àÈÖ¹æ
+48 69 72 61 73 68 69 6d 61 00 00 00 00 00 00 00 ; "Hirashima"
+02 ; Äê¼°¤Î¿ô
+00 1f 00 03 01 01 05 01 01 04 ; (ξÊý) 5^(1/4)
+00 00 00 3c 03 02 01 01 00 01 ; (ξÊý) 3/2
+f7
+
+[¥ô¥§¥ë¥¯¥Þ¥¤¥¹¥¿¡¼Âè»°ÈÖ]
+f0 7e 00 08 0c 02 ; ²»Î§¥×¥í¥°¥é¥àÈÖ¹æ
+57 65 72 63 6b 6d 65 69 73 74 65 72 2d 33 00 00 ; "Werckmeister-3"
+02 ; Äê¼°¤Î¿ô
+00 07 00 00 01 09 02 01 0f 04 ; (ξÊý) 2^(15/4)/9
+00 18 00 3f 03 02 01 01 00 01 ; (ξÊý) 3/2
+f7
+
+[¥¦¥§¥ë¥Æ¥ó¥Ú¥é¥á¥ó¥È]
+f0 7e 00 08 0c 03 ; ²»Î§¥×¥í¥°¥é¥àÈÖ¹æ
+77 65 6c 6c 2d 74 65 6d 70 65 72 00 00 00 00 00 ; "well-temper"
+02 ; Äê¼°¤Î¿ô
+00 07 00 00 01 09 02 01 0f 04 ; (ξÊý) 2^(15/4)/9
+00 00 01 7f 03 02 01 01 00 01 ; (ξÊý) 3/2
+f7
+
+Åĸþ Àµ°ì <tamuki@linet.gr.jp>