MicroTone gives you the ability to create arbitrary microtonal tunings that can be used with virtually any synthesizer or sound card. Only minimal support of the MIDI Pitch Bend specification is required of the hardware. If you can set the Pitch Bend range to +/- 1 semitone (just about any synth or card can do this), then you can work with microtonal music.
The program does not generate music, rather it generates a set of tables that will translate MIDI notes of an arbitrary tuning table (such as Just Intonation) into MIDI Notes and Pitch Bend values that will give the correct pitch for each scale step.
It is very easy to create tuning tables by typing in the steps as ratios or cents values; by cutting and pasting the values into the input window, or by compiling a list of scales from the 3000+ set of free Scala tuning tables. Once a MicroTone table is created, it is available as a binary file that can be read by a MIDI composing program; and the fully descriptive tuning table can be saved as a text file.
Although MicroTone produces MIDI data that is not specific to any particular hardware or software, it was created primarily for use by ArtWonk and MusicWonk, with the binary tables it produces in the standard Tuning Table format used by the MidiTone module. This module is similar to the standard MIDI Voice module, with the extra complexity of combining the MIDI Pitch Bend and Note messages automatically handled, so you only need to select the tuning table you want to use, then send the MIDI note values just as you would with MIDI Voice modules.
MicroTone creates tuning tables from three types of input: a single number to produce equal tuning tables of any size, tuning ratios, and cents values. The easiest way to get started is to just type a number into the top, input window and then click on the long button labeled "Create Tuning Table." To illustrate, create a standard 12-tone chromatic scale by typing 12 in the input window. Then click on the Create Tuning Table button. The large output window will show:
12-Tone Step Cents Note PBend Ratio 00 0 0 0 1:1 unison 01 100 1 0 1.059:1 equal minor second 02 200 2 0 1.122:1 equal major second 03 300 3 0 1.189:1 equal minor third 04 400 4 0 1.26:1 equal major third 05 500 5 0 1.335:1 equal forth 06 600 6 0 1.414:1 equal tritone 07 700 7 0 1.498:1 equal fifth 08 800 8 0 1.587:1 equal minor sixth 09 900 9 0 1.682:1 equal major sixth 10 1000 10 0 1.782:1 equal minor seventh 11 1100 11 0 1.888:1 equal major seventh
So far, this is exactly what you get with every MIDI keyboard, so there is not much point to it except as a reference. Try creating a Just Intonation scale. Click on the "Clear In" button just under the top input window to clear the input. Then cut & paste the following ratio values to the input window:
1/1 16/15 9/8 6/5 5/4 4/3 45/32 3/2 8/5 5/3 9/5 15/8
...Now click on the Create Tuning Table button and you get:
12 <unnamed> Step Cents Note PBend Ratio 00 0 0 0 1:1 unison 01 113 1 8 16:15 minor diatonic semitone 02 205 2 3 9:8 major whole tone 03 316 3 10 6:5 minor third 04 386 3 55 5:4 major third 05 498 4 63 4:3 perfect fourth 06 591 5 58 45:32 tritone 07 702 7 1 3:2 perfect fifth 08 814 8 9 8:5 minor sixth 09 884 8 54 5:3 major sixth 10 1017 10 11 9:5 just minor seventh 11 1088 10 56 15:8 classic major seventh
The title of the table always starts with a number, which is the number of steps to the scale. Although scales that span more than an octave are possible, the basic assumption is that each table starts on an octave, the 1:1 or unison note. This ultimately can be any value you like, but logically it is always scale step 0, the place to start. Generally, your scales should not end on the octave above the root, 2/1 or 1200 cents, as this will cause the scale steps to be increased by 1.
The Cents column, above, shows the scale values in Cents or 1/100th of a semitone. The next two columns, labeled "Note" and "PBend" are the MIDI Note and Pitch Bend values that will give the proper pitch for the scale step. the Ratio column shows the scale step as a ratio. When the step resolves to a small whole number ratio, it is given as such, and the traditional interval name is listed; when the ratios are fractional they are listed as a ratio to 1, such as 1.059:1. Except for the standard 12 equal tone scale, no interval names are printed with fractional ratios.
Clear In: Clears the top input window and also the small Name
Clear Out: Clears the output window of all text.
Clear All: Like clicking on both the Clear In and Clear Out.
Show Ratio checkbox: Check (default) to show ratio information of a scale
Root Implied: Creates an implied 0 (root) scale step if none is in the data.
Create Tuning Table: Like it says.
Save Table: Saves the tuning table data to a .pbt file.
Edit Table: Pops up the table editor (see below).
Use Current Slot: Overwrite the current slot when making a tune table.
Get Scale: Gets the scale from the table data and puts it in the windows.
Name input box: Type the name of the table here before creating the scale.
S button: Sets current slot to the name in the Name box.
Current Slot drop down menu: Select the current slot to get/create a table.
E button: Edit the current slot - Like Get Scale, but puts ratios into the input window.
Save Text: Saves the contents of the output window into a .txt file.
Compile Scala: Compiles a list of Scala scale files (see below).
The Clear buttons simply clears the window areas. They do no processing, and they cause no data other than what is being shown in the windows to be erased.
Use the Root Implied checkbox when you are creating a tuning table from data that has no (or an implied) root of 1/1 or 0 cents. Most commonly this applies to Scala scale data.
While the MIDI standard does not recognize microtuning - it assumes only 12-tone equal tuning - there are two work around ways to achieve microtonal tuning on MIDI instruments. One is through use of System Exclusive tuning tables that are internal to the synthesizer, and the other is to send MIDI Pitch Bend information with each note. There are advantages and disadvantages to each method.
The advantage of internal tables is you only have to send the System Exclusive table information, then you send notes normally. The main disadvantage of System Exclusive tuning tables is that each manufacturer uses a different format, and different synths have different tuning table capabilities, and many synths do not support tuning tables at all. This makes things especially difficult if you are using synths from different manufacturers.
The main disadvantage to using Pitch Bend is each simultaneous note, such as notes in a chord, must be assigned its own MIDI channel. Also, as there is more MIDI data being sent out there can be MIDI clogging issues with slower hardware. However almost all synths support Pitch Bend as well as some limited ability to set the Pitch Bend range; and once set all synths respond identically, so there is no problem in using different synths on the same piece.
While one MIDI channel will usually support several simultaneous notes, there is only one Pitch Bend parameter per MIDI channel, and almost always only one Pitch Bend Range setting per synthesizer. Thus, the Pitch Bend Range must be set for each synth, and then each channel must be dedicated to a single music line. If you want chords you must set up individual channels for each note of the chord.
If you are using ArtWonk or MusicWonk for your microtonal compositions you only need to use the MidiTone module instead of the MIDI Voice module for your final MIDI Note sends. All the details are handled in the background automatically. For those who are interested, here are the details:
There are two steps to the process. One is setting up the proper Pitch Bend Range, and the other is sending the Pitch Bend data with each MIDI note.
MicroTone uses a Pitch Bend Range of +/- 1 Pitch Bend step per semitone. This range gives 64 steps per semitone, which is 1.5625 cents per PB step. This is a little more than a desirable 1 cent per step; it was chosen as a compromise to accommodate the widest range of synths (and it works well enough - see the Benchmarks for proof). The default Pitch Bend range for most synths is +/- 2 half steps per PB step, which is too course to give accurate results. So the first step is to set the proper Pitch Bend Range. This is done automatically in a standardized way through MIDI Registered Parameter Control messages.
Once the range is properly set up, then the module simply needs to send a Pitch Bend message prior to each Note message - as provided in the Note and PBend columns of the print out, or (in binary form) in the Tables file.
Although the text output window gives you instant and detailed feedback about the scale you have created, the real value of MicroTone is in the tables files it builds.
These table files are in the Algorithmic Arts .pbt Pitch Bend Tuning Table format of 128 binary byte sequences, each with a text name label of up to 20 characters. Our software reads the files and processes the data automatically, and you are quite safe ignoring the details. However for those who want to know the details, here they are:
For each of the 128 tables: Steps 0-62 are the MIDI Key value for each of the up to 63 scale steps starting from 0; Step 63 is reserved and should not be changed; Steps 64-126 are the Pitch Bend value for each scale step (but 64 must be added to make the signed 128-bit MIDI Pitch Bend value positive); and Step 127 is the number of the highest scale step used (scale steps -1).
Click on the Edit Table button to pop up the Table Editor. It will show a list of all scale tables that have been created. Clicking once on one of the 128 slots makes it current; double clicking on a slot makes it current and dismisses the Table Editor, putting you back into the main part of the program.
Use the Load and Save buttons to load a .pbt file or save the current table into a named .pbt file. Algorithmic Arts programs all use a defult .pbt file named "default.pbt" in their program directories, which they will load by default; and they will all load a named .pbt file automatically when it is in the same directory and has the same name as the patch file being loaded.
You can edit the table - move items around, or delete them - with the buttons on the bottom left of the Editor. For multiple selections, click and drag or use Click-Shift and Click-Control combinations in the usual Windows manner. Copy, Cut, and Paste works as expected, except that Cut leaves the cut area erased but not closed up. This is to prevent items from moving up in the list and thus changing their index in programs that are indexing into the table.
Open and Close open and close a gap, respectively. Works with single or multiple selection as described above. Any slots that are pushed beyond the end of the table are lost (but you can undo)
Undo is a single step swap with the last action. This means you can undo your last action, and you can undo the undo, but you can not do multiple undos.
Scala is a powerful software tool for experimentation with musical tunings, such as just intonation scales, equal and historical temperaments, microtonal and macrotonal scales, and non-Western scales. It supports scale creation, editing, comparison, analysis, storage, tuning of electronic instruments, and MIDI file generation and tuning conversion. Scala is a free program that works on multiple platforms. For more about Scala resources see:
Huygens Fokker - Scala
In addition to providing a very powerful program, the Huygens Scala site also provides a comprehensive collection of over 3000 scales.
You can think of a Scala scale file as two parts - a one line description in the contents.txt file, and the scale file itself, scalename.scl. The one line description looks like this:
OLYMPOS.SCL 5 Scale of ancient Greek flutist Olympos, 6th century BC as reported by Partch
..with the file name first, followed by the number of steps in the scale, and then a brief description of what the scale is.
The scale file itself contains the same information, plus the actual scale values. It looks like this:
! Olympos.scl ! Scale of ancient Greek flutist Olympos, 6th century BC as reported by Partch 5 ! 16/15 4/3 64/45 16/9 2/1
There are two ways you can use Scala scale files with MicroTone. One is to copy and paste the information into the top input window and then click on the Create Tuning Table button. The other is to make a text file that contains lines from the description file, and then click on the Compile Scala button to compile all the files you have description lines on at once.
To create a scale from a single Scala file, you can either copy just the scale values or you can copy the entire file. If you copy the entire file, MicroTone will recognize it as a Scala file (by the ! as the first character of the file.), and it will properly process the file. If you copy just the scale data, you must also set the "Root implied" checkbox (Scala scale files do not include the root), and you must avoid including the last 2/1 or 1200 cents part of the scale. The easiest thing to do, of course, is use Ctrl-A to select the entire text of the file, and just copy the whole thing into the input window, and click on the Create button.
To compile some number of Scala files all at once, first copy the documentation lines from either the files themselves or from the contents.txt file into a new text file. There is no point in trying compile more then 128 files at a time because the MicroTone table can only hold 128 scales. Save the text file you created in the same directory that has the Scala files. This is essential because MicroTone will only look in the same directory as the source text file for the .scl files. Set the current scale number to the slot you want to start with (with the Current Slot drop down menu), and click on the Compile Scala button. You should see a read out of the files it processed, the number of errors, and an error message by each file it failed to process.
The Scala file compiler doesn't really need the entire documentation line to know what file to process - it only needs the filename at the start of the line. So if you prefer, you can just give it a list of .scl files, one per line, and it will process those just as well. Also, if you want to "comment out" some of the files in your list, just put some non filename character, such as "#" at the start of the line. You will get an error message for each file skipped, but it will properly skip the commented files and process the others.
The tables below show 4 different scales that were processed with MicroTone, and then played back with the MidiTone module. We used a CreativeLabs SoundBlaster Live! audio card set to "MIDI Synth A" and we measured the resultant frequencies with the highly recommended G-tune high-performance musical instrument tuner and frequency measurement utility. This is a shareware program, with a 30 day free trial period. You can download G-tune, to conduct your own benchmarks, at the JHC website:
In the tables below, the column labeled Step is the scale step; Key is the actual MIDI key sent. Freq(ency) Cents and Ratio are all calculated values, what the scale is supposed to be.
Note is the MIDI Note message value that actually gets sent to the sound card, and PBend is the Pitch Bend message that gets sent just prior to the Note. The actual Pitch Bend value sent is offset by 64 to make the signed 128-bit MIDI Pitch Bend value positive. The PB c column is the Cents value that is back calculated from the Note and PBend that are sent to the synth. This shows mathematical accuracy of the PitchBend resolution, which is 1.5625 cents per PB step.
Finally, PB Freq shows the actual, measured frequency of each step. Compare this with the calculated frequency to see how accurate the real world output is. Note that in the first table "Equal" there is always 0 Pitch Bend - this table is the normal MIDI 12-tone equal tempered scale, unaffected by Pitch Bend. It is included as a standard to show the normal variance of playback frequency from calculated frequency in the sound card we used for the benchmarks.
Equal Step Key Freq PB Freq Cents PB c Note PBend Ratio Interval 00 69 440.0 hz 440.2 hz 0.0 0 0 0 1:1 unison 01 70 466.2 hz 466.4 hz 100.0 100 1 0 1.059:1 equal minor second 02 71 493.9 hz 494.1 hz 200.0 200 2 0 1.122:1 equal major second 03 72 523.3 hz 523.6 hz 300.0 300 3 0 1.189:1 equal minor third 04 73 554.4 hz 554.7 hz 400.0 400 4 0 1.26:1 equal major third 05 74 587.3 hz 587.8 hz 500.0 500 5 0 1.335:1 equal forth 06 75 622.3 hz 622.7 hz 600.0 600 6 0 1.414:1 equal tritone 07 76 659.3 hz 659.7 hz 700.0 700 7 0 1.498:1 equal fifth 08 77 698.5 hz 698.9 hz 800.0 800 8 0 1.587:1 equal minor sixth 09 78 740.0 hz 740.5 hz 900.0 900 9 0 1.682:1 equal major sixth 10 79 784.0 hz 784.5 hz 1000.0 1000 10 0 1.782:1 equal minor seventh 11 80 830.6 hz 831.3 hz 1100.0 1100 11 0 1.888:1 equal major seventh Just Step Key Freq PB Freq Cents PB c Note PBend Ratio Interval 00 69 440.0 hz 440.2 hz 0.0 0 0 0 1:1 unison 01 70 469.3 hz 469.8 hz 111.7 113 1 8 16:15 minor diatonic semitone 02 71 495.0 hz 495.4 hz 203.9 205 2 3 9:8 major whole tone 03 72 528.0 hz 528.3 hz 315.6 316 3 10 6:5 minor third 04 73 550.0 hz 550.2 hz 386.3 386 3 55 5:4 major third 05 74 586.7 hz 587.0 hz 498.0 498 4 63 4:3 perfect fourth 06 75 618.8 hz 619.2 hz 590.2 591 5 58 45:32 tritone 07 76 660.0 hz 660.2 hz 702.0 702 7 1 3:2 perfect fifth 08 77 704.0 hz 704.6 hz 813.7 814 8 9 8:5 minor sixth 09 78 733.3 hz 733.8 hz 884.4 884 8 54 5:3 major sixth 10 79 792.0 hz 792.2 hz 1018.0 1017 10 11 9:5 just minor seventh 11 80 825.0 hz 825.1 hz 1088.0 1088 10 56 15:8 classic major seventh Pythagorean Step Key Freq PB Freq Cents PB c Note PBend Ratio Interval 00 69 440.0 hz 440.2 hz 0.0 0 0 0 1:1 unison 01 70 469.9 hz 470.2 hz 113.7 114 1 9 2187:2048 apotome 02 71 495.0 hz 495.4 hz 203.9 205 2 3 9:8 major whole tone 03 72 528.6 hz 528.8 hz 317.6 317 3 11 19683:16384 Pythagorean augmented second 04 73 556.9 hz 557.1 hz 407.8 408 4 5 81:64 Pythagorean major third 05 74 586.7 hz 587.0 hz 498.0 498 4 63 4:3 perfect fourth 06 75 626.5 hz 627.1 hz 611.7 613 6 8 729:512 Pythagorean tritone 07 76 660.0 hz 660.2 hz 702.0 702 7 1 3:2 perfect fifth 08 77 704.8 hz 705.2 hz 815.6 816 8 10 6561:4096 Pythagorean augmented fifth 09 78 742.5 hz 743.1 hz 905.9 906 9 4 27:16 Pythagorean major sixth 10 79 792.9 hz 793.7 hz 1020.0 1020 10 13 59049:32768 Pythagorean augmented sixth 11 80 835.3 hz 835.6 hz 1110.0 1109 11 6 243:128 Pythagorean major seventh 19-Tone Step Key Freq PB Freq Cents PB c Note PBend Ratio Ratio Interval 00 69 440.0 hz 440.2 hz 0.0 0 0 0 1.0:1 1:1 unison 01 70 456.3 hz 456.4 hz 63.2 63 0 40 1.037:1 28:27 1/3-tone 02 71 473.3 hz 473.6 hz 126.3 127 1 17 1.076:1 1.076:1 03 72 490.9 hz 491.0 hz 189.5 189 1 57 1.116:1 1.115:1 04 73 509.1 hz 509.5 hz 252.6 253 2 34 1.157:1 81:70 Al-Hwarizmi's lute middle finger 05 74 528.0 hz 528.3 hz 315.8 316 3 10 1.2:1 6:5 minor third 06 75 547.7 hz 548.1 hz 378.9 380 3 51 1.245:1 1.245:1 07 76 568.0 hz 568.4 hz 442.1 442 4 27 1.291:1 1.291:1 08 77 589.1 hz 589.1 hz 505.3 505 5 3 1.339:1 1.338:1 09 78 611.0 hz 611.5 hz 568.4 569 5 44 1.389:1 25:18 classic augmented fourth 10 79 633.7 hz 633.9 hz 631.6 631 6 20 1.44:1 36:25 classic diminished fifth 11 80 657.3 hz 657.9 hz 694.7 695 6 61 1.494:1 1.494:1 12 81 681.7 hz 682.0 hz 757.9 758 7 37 1.549:1 1.549:1 13 82 707.0 hz 707.2 hz 821.1 820 8 13 1.607:1 1.606:1 14 83 733.3 hz 733.8 hz 884.2 884 8 54 1.667:1 5:3 major sixth 15 84 760.5 hz 760.7 hz 947.4 947 9 30 1.728:1 216:125 acute diminished seventh 16 85 788.8 hz 789.4 hz 1010.0 1011 10 7 1.793:1 1.793:1 17 86 818.1 hz 818.4 hz 1074.0 1073 10 47 1.859:1 1.859:1 18 87 848.5 hz 849.3 hz 1137.0 1138 11 24 1.928:1 27:14 septimal major seventh
Copyright © 2000-2010 by John Dunn and Algorithmic Arts. All Rights Reserved.