Harmonic Analyser Midi Temper Piano Tuner License Download Demos Walk - through Links Other Stuff
Midi-Temper Midi Tempering Utilities

Freeware by Fred Nachbaur

"The Harmonic Analyser" started out as a project to investigate the relationship between the way notes are tuned in scales, and the natural harmonic series. You specify how many harmonics to take into account, and the program calculates the nearest harmonic to each tone in the scale. Deviation in percent and cents is given, and any tone can be edited to bring it closer (or further) from the nearest harmonic value.

Harmonic Analyser Screenshot The project has evolved from these humble beginnings into a versatile freeware tempering tool, whose main uses are to improve the authenticity of existing midi performances, and to give an infinite number of possibilities for refinements in new work. The program includes a number of pre-defined temperaments, and gives the midi pitch-bend equivalent for each tone. The tonic note can be changed, so you can (for instance) do a "well" temperament based on a key other than C.

As of Version 2.3, The Harmonic Analyser has been extensively upgraded, sporting many new options to make it even more useful as a midi tool. V2.4 continues expanding potentials with sound preview, subharmonic comparison, and a program configurator. Read What's New for a summary of improvements since the first public release.

The tempering data created by the Harmonic Analyser can be exported for use by Midi-Temper or Piano-Tuner. Program runs on any DOS system (including MS Windows 3.1 and 9x), icon files and instructions included for easy use with Windows. As of V2.3, the two midi tempering programs can be called directly from the Harmonic Analyser environment.

A significant feature is the ability to directly import any of over 2600 different scale temperaments from an archive collected and compiled by Manuel Op de Coul. Download the SCALES.ZIP archive file from his Scala Downloads page, then put it into the same directory as harmonic.exe. (Do not unzip the file!) Individual .SCL files in the standard Scala format can now also be directly imported.

newWalkthrough now available for first-time users.

21/09/99 V2.11: added info screen at end to summarize tempering options.
12/10/99 V2.2 : many new features added
14/10/99 V2.2a : removed a compilation error causing a stop when importing SCALES.ZIP
26/06/00 V2.2b : minor cosmetic touchup
02/02/02 V2.3 : complete overhaul of editor, import/export options, tone-centre handling, integration
06/04/02 V2.3a : restored full path-name functionality, various minor bug fixes.
10/04/02 V2.3b : more bug fixes, including rewrite of .SCL import routines.
06/03/02 V2.4 : Added: subharmonics comparison, "expert" mode, Program Configurator, extended editing (INS, DEL, Reorder), midi note shifting, sound playing options, DOS error trapping. Improved: colour selection, scales.zip navigator.
18/03/02 V2.4a : Repaired bug causing wrong reports of cents deviation from closest harmonic value.
18/04/02 V2.4b : Updated address for Dogstar Musics new web domain.

"Midi-Temper" (V2.4) takes the tempering data exported by Harmonic Analyzer and uses it to temper a pre-existing midi file. The midi may be Type 0 or Type 1, and may contain any number of different instrument patches on any number of channels. The only restriction is that ideally no more than one note (and its octaves) may sound at any given time on any channel. Tempering is accomplished by inserting a pitch-bend before every note-on event in the midi file. Various reset options are provided.

18/09/99 V1.0: Release version.
21/09/99 V1.1: Minor cosmetic touchups.
12/10/99 V1.2: Modified for new .dat file format, arbitrary .dat filenames.
02/02/02 V2.3: Integrated with Harmonic Analyser, coordinated version numbers, cosmetic and UI improvements.
06/02/02 V2.3a : restored full path-name functionality.
10/02/02 V2.3b : reports number of "collisions" (Type 1 midi only) and writes a collisions log file.
06/04/02 V2.4 : Added new options and re-organised options selection. Included are: Facility to adjust existing pitch-bends. Delete controllers if desired. Expanded "verbose" reporting. Improved collision reporting. "Stuck note" and "Pitch over- range" reporting on-screen and in collisn.log. Error trapping now handles errors generated by DOS. Improved enharmonic selection.

"Piano-Tuner" (V2.4) overcomes Midi-Temper's chord or overlapping note limitation. However, it only allows a single instrument patch. It is thus ideally suited for tempering piano or harpsichord sequences (hence the name). If you've ever wondered what a harpsichord sounds like, tempered according to one of the systems in use in Bach's time, here's your chance! It also requires that the source midi be in Type 0 format, easily accomplished using Jeff Glatt's "Midi File Converter".

09/27/99 V1.0: Release version, including automatic call to midi1to0.exe for Type 1 midi files
12/10/99 V1.1: Modified for new .dat file format, arbitrary .dat filenames, more debugging.
02/02/02 V2.3: Integrated with Harmonic Analyser, coordinated version numbers, cosmetic and UI improvements.
06/02/02 V2.3a : restored full path-name functionality.
10/02/02 V2.3b : optimised internal data types for improved speed.
06/03/02 V2.4 : Error trapping now handles errors generated by DOS. Improved enharmonic selection. Automatic Type 1 to Type 0 conversion removed because of conflicting philosophies with author of midi1to0.exe.
"N-tone Demo" (V1.0) This is a little demo I did up well before even contemplating the rest of the programs here. I've decided to provide it as an "afterthought", since it might conceivable be useful for experimenting with n-tone equal-tempered scales. It uses the PC speaker (remember that?) to make beeps in response to key-presses, according to the equally-tempered scale you specify at the outset. Click here to download (35k).

Terms of Use

The distribution packages are offered for free, not-for-profit use and circulation. See License for further information. Midi-Temp and Piano-Tuner use Piet van Oostrom's freeware "mf2t" midi-to-text converters for intermediate processing. Harmonic Analyser uses pkunzip.exe for extracting archives data.

Download Fred Nachbaur's Midi Tempering Utilities

Download the entire kit-and-kaboodle (V2.4b, HARM24B.EXE) at once by clicking HERE. Save it to a temporary or archive directory on your hard drive. Unzip harm24b.exe (318k) by running the self-extracting executable from within any flavour of PC Windows. The default directory is C:\HARMONIC, but you can specify a different directory (folder) if you prefer. Installing over any V2.3x version of the software is permitted; however, if you have V2.2 or older, it is suggested that the old program be removed first after moving any files you want to keep, since the various file types are now organised into their own subdirectories (created during install).

This program suite does not write to the Windows registry, or any other Windows component, except as specified by you during the creation of links (shortcuts).

If you wish to use the MidiTemper and/or PianoTuner midi tempering options, it is highly recommended that you have a good Midi File converter to allow conversion between Type 0 and Type 1 midi formats. An excellent program is Jeff Glatt's freeware Midi File Converter.

If you still have pre-V2.2 "DAT" data files, convert them to V2.2 format first by importing and re-exporting from Harmonic Analyser V2.2 before upgrading to the V2.4 version. The old V2.1 format is no longer supported in current builds.

The programs run just fine under any version of DOS 3.30 or later. You will need PKUNZIP.EXE either in your hard drive's root directory, or in your DOS path. Copy the HARM24A.EXE self-extracting zip file into your root directory, create the program directory using the command "MD C:\HARMONIC" and install the package using the command line:


These programs are fully compatible with most versions of Windows, with the possible exception of Windows 2000 (keyboard issues). If you're not familiar with running DOS programs under Windows, please take the time to read the documentation in the \DOCS subdirectory (or read the html versions by clicking on the title headers for each program above).

A Walkthrough is now available, for first-time users or for experienced users wanting to take a tour of the new 2.4 version. Included are midi files of actual compositions (my original "Caverns of the Heart" and a piano reduction by Anthony Wilson) meeting the requirements for tempering using MidiTemper and PianoTuner, respectively. A text version of the walkthrough file is also included in the distribution package.

Copyright ©1999, 2002 by Fred Nachbaur

If you wish to experiment with the SCALES.ZIP archive, download it from the following site:


Last known update: 25 July 2004 (3141 files)

Download it into your working directory, but don't unzip it. Harmonic.exe will automagically extract files from it as required. If you're downloading an updated version, delete the file "scales.ndx" from your working directory before launching harmonic.exe; the program will re-create the new index based on the contents of the new scales.zip file.


Does tempering midi files make them more realistic or authentic-sounding? You be the judge. Click on the "HA" icon on the left for un-tempered midi, or on the "MT" icon on the right for the tempered (using Midi-Temp) but otherwise identical midi.
Un-Tempered Divertimento Tempered Divertimento
Original Tempered

This is my "Divertimento No. 1 on a Study by Sor." In the tempered version, the two flutes use the "Natural" temperament, the 'cello and bass use the "Pythagorean" temperament, and the guitar (being a fretted instrument) remains Equal-tempered. Do you hear how the notes on certain chords "rub" against each other?

This next one (tempered by Piano Tuner) is a bit more subtle. You've undoubtedly heard of J.S. Bach's"The Well-Tempered Klavier." There were several "Well" temperaments in use at his time, and while we don't know exactly which one he had in mind, it could well have been the "Werckmeister" temperament. This is the temperament used in the following short medley of two simple J.S. Bach pieces; "Minuet in G" (sequenced by Damien Hall) and "Bouree for Lute" (arranged for keyboard and sequenced by Zachary Audler.) Again, the icon on the left is the unchanged Equal-tempered file, and the icon on the right is the Werckmeister-tempered file.
Un-Tempered Bach Medley Tempered Bach Medley
Original Tempered

You might have to listen to each file several times to appreciate the difference. One feature of the "well" temperaments is that each key has its own unique sound. Note how the Bouree (in A minor) has a distinctly different tonality than the Minuet in G in the tempered version.

For another example, download my Werckmeister-tempered version of Schubert's Arpeggione Sonata

Finally, (this would be in the "shameless plug" category), download (for free) and listen to the three movements of "The Changeling", my Virtual Concerto for Electric Guitar and Orchestra. This was, again, tempered using Werckmeister on C, giving the work a smooth silky E-flat feel. Click on the image below to go straight to my IUMA site.

My IUMA site

More about temperaments...

Andrew Purdam has a well-presented page on the hows and whys of tempering at his website. Most of the tables used in Harmonic.exe were snagged from data he in turn gleaned from study of other, more arcane sources linked to in his page. Well worth a visit, the information is presented in an easy-to-handle format.

For more information on the rather tricky "5-limit, 19-tone Just Intonation" system, visit Brian M. Ames' page on the topic. He even has a nifty little demo where you can hear chords shift from ordinary old equal-temperament to the 5/19 Just temperament.

Another neat demonstration (this one involving Java applets) is of meantone scales, available at Graham Breed's Meantone Temperament Home Page. He has also written a pair of excellent tempering programs (see the "Other Free Software" section below).

An excellent introductory treatment of the topics of harmonics and temperaments is the section on Tuning, Scales and Temperament at the Physics and Psychophysics of Music site.

A more in-depth treatment from a musical and historical perspective by Pierre Lewis is Understanding Temperaments, he also has a recently (April 2000) updated JavaTuner page which lets you experiment with the sound of different temperaments online. Recommended!

For a truly scholarly work on the subject of Pythagorean tuning (and other topics), check out Margo Schulter's Pythagorean Tuning and Medieval Polyphony site.

Most tempering schemes involve either the relationship of notes to the harmonic series (as does harmonic.exe), or else explore various integer ratios (not necessarily harmonically related). Charles Lucy has spent many years working up a temperament based on an irrational number (Pi), and has an absolutely fascinating webpage on the topic at his Lucy-Tuning site.

Other Free Software...

Manuel Op de Coul, the person who compiled the SCALES.ZIP archive, also has an extraordinary program called Scala. The DOS version is strictly command-line, with some 330 possible command-line options for truly in-depth study of temperaments. Versions for Windows 95 and Linux are also available. Included is the facility to micro-tune any of a large number of synthesizers, so the program is not limited to General Midi - compatible devices. Get Scala at The Scala Home Page.

Graham Breed has written two tempering programs and is offering them for free download from his Graham Breed's Software site. Midi-Relay essentially does in real-time what Miditemp/Pianotuner do to existing midi files. You play your external keyboard, and Midi-Relay tempers the output via your computer's sound card. Midi-Convert converts existing midi files, using either of the two approaches paralleled by Midi-Temper and Piano-Tuner.

Robert Walker has written an impressive fractal music generator, The Fractal Tune Smithy which features very comprehensive tempering options in addition to a many other features that allow you a great degree of flexibility in generating fractal-based music sequences. Well worth checking out, the package has two modes: freeware (with minor restrictions) and reasonably-priced shareware (no restrictions).

Not exactly tempering utilities, but a couple other small programs I've found useful or interesting: Drake Donahue and Barry Graham have both written programs to manipulate midi files in various ways. Drake's Midi Splitter can be used to split chorded midis into multiple channels, and might be useful as an adjunct to other programs. Barry's Midi-Exp expands or inverts note intervals to give new and often startling counterpoints. Get these progs at NWC Scriptorium Helpful Files

A great adjunct to your toolkit is a compact program by Marcel Sluiter called "Tempo.exe". Tap the ENTER key along with a recording of a rubato piece of music, or with the way you hear it in your head, and the program generates a text file compatible with Piet van Oostrom's "mf2t.exe" midi-to-text converter. Great for improving the realism of your classical midis. Get it at Marcel's Music Site

new Also a bit off-topic, but since I don't quite know where else to put it, here is an alternate skin I did up for my favourite midi player, VanBasco's Midi Player. I call it "Mahogany Pastel", it's essentially just a recolouration of the original skin, which is why you won't find it on their skins page.

new While we're off topic... here's a replacement for the awful sndrec32.exe wav recorder that was provided with Windows. If you happen to be one of those unfortunates who didn't get a decent wav recorder with your soundcard, here's the one that came with mine. Not the greatest thing in the world, but it's small and it works. It operates pretty much like the Windows recorder, except that it writes direct to disk and therefore doesn't have the under-one-minute limitation of sndrec32.exe.

Download sndrec32.exe (63k), specifying some temporary location. Go to your Windows directory and rename sndrec32.exe to sndrec32.old. Now move the new file into the Windows directory to replace it.

To use it, bring up the Sound Recorder as before. Select File -> New, and give a filename. Then select the encoding (PCM - the default) and specify a sample rate (usually 44100 Hz, 16-bit, stereo for music quality recordings). Click the Record button, then start your midi player or other application. When done, click the stop button and exit. Note: if you try to resume recording, the program can hang. If this happens, use CNTL-ALT-DELETE → End Task to escape.

To get in touch with me, please e-mail Dogstar Music at

Back to "Fred's Projects"
Go to Dogstar Music's Main Page

---This page last updated Mar. 18, 2002.---
Site Meter
visitors since launch of V2.3 (Feb. 2002). Thanks to all of you.
Valid HTML 4.0!
View my Vistors' Blog (guestbook)
Sign my guestbook