Midi Guitar Chord Finder User's Guide
By Glenn Robitaille
midigtr@worldnet.att.net
.
Download.
The latest version of the Midi Guitar Finder can be found at http://home.att.net/~midigtr/midigtr.zip . This includes a fiew DLL's, and a README.TXT.
The latest version of the User Guide can be found at http://home.att.net/~midigtr/mididoc.zip
There is a large number of places to find Midi files on the Internet. Here are a few links to get you started:
http://www.harmony-central.com/MIDI
http://www.busprod.com/joker/clmidi.html
Introduction.
MIDI (Musical Instrument Digital Interface) is a standard protocol that allows computers to play musical instruments, including the synthesizers built into sound cards. It allows computers to record sequences of notes, which could then be modified, stored, and played back.
Unlike WAV files, MIDI does not store the actual sounds. MIDI files contain a series of note-on and note-off messages. At any given time a combination of these notes may create a chord.
The Midi Guitar Chord Finder (midigtr.exe) recognizes chords, and display graphic representation of the guitar fingering of that chord, while playing the midi file.
It provides the ability to:
There are a number of ways to play any given chord on a guitar. This program will display the fingering that the average guitarist is likely to use. Advanced guitarists will know equivalent fingerings and can experiment until it sounds right.
User Interface.

This is an example of the user interface. It consists of:
|
Drop-down Menus |
Described below |
|
Beat = XXX Position = YYY |
The current beat within the song, and the current MIDI position (number of ticks) when the display was last updated. The display is updated once per beat. |
|
Previous Chord |
The previously recognized chord |
|
Current/Next |
The chord recognized at the time of the last screen update. |
|
Upcoming |
Upcoming chord diagrams |
Chord diagrams look like this:

The File menu looks like this. It is fairly self explanatory.

The Settings menu looks like this.

|
Mute |
Mute Tracks. Tracks are not actually muted until then next time you play the file. |
|
Transpose |
Transpose Tracks. Tracks are not actually transposed until then next time you play the file. |
|
Set Temp |
Set the tempo (slow it down or speed it up). If the midi file contains change tempo commands, this may be temporary. |
|
Set Resolution |
This sets the midi resolution -- the lowest divisions into which a quarter note is divided. Most users will have no use for this. I might actually remove this. |
|
Timer Period |
This sets the timer period. Most users will have no use for this. I might actually remove this. |
|
Logging |
This sets a number of logging options. |
The play menu looks like this. It is fairly self explanatory.

The Monitor menu looks like this. It will open either the Monitor Channels or Monitor Tracks dialog windows.

The Output Device menu lets you select your Midi output device. If you get no sound, you probably need to select another output device. If you want to hear things through your sound card + speakers, you probably want to use a "Synth" or "MIDI Mapper" device.

The tool bar is a shortcut to menu items listed above.
![]()
These buttons are equivalent to:
FILE | OPEN
PLAY | STOP
PLAY | START
PLAY | PAUSE
SETTINGS | TRANSPOSE
SETTINGS | MUTE
MONITOR | TRACKS
MONITOR | CHANNELS
SETTINGS | SET TEMPO
SETTINGS | LOGGING
Dialog Windows.
Transpose
.Transposing music means playing it in a key that is different from the one in which it is written. You may want to do this so it is easier to sing along with it, or so that you can play it using chords that are easier to play.
The Transpose dialog box allows you to transposes the pitches of notes on specific tracks up or down by a fixed number of steps. Set the transpose amount to the number of half-steps – a negative number to transpose down, a positive number to transpose up. You can transpose by a single octave in either direction (-12 to +12).

Selected tracks are transposed by the transpose amount. If the file is playing, this will not take affect until you stop, then play.
If you transpose drum tracks, you will probably find that it sounds strange. Bass drum's may become cymbals, etc.
Mute.

Selected tracks are muted. If the file is playing, this will not take affect until you stop, then play.

Selected tracks are monitored, to recognize chords. If the file is playing, this will not take affect until you stop, then play.

Selected channels are monitored, to recognize chords. If the file is playing, this will not take affect until you stop, then play.
A Midi note will only be recognized if it is BOTH on a track being monitored AND it is on a Midi channel being monitored. Most of the time you will probably want to "Select All" on one of the above screens, and then restrict things using the other.
You may ask why we wouldn't want to monitor everything. The best way to explain this is with an example.
Let's say, at a given moment in time, you have:
|
Logical Instrument |
Track Name |
Midi Channel |
Notes playing |
|
Guitar |
Rhythm Guitar |
1 |
C E G |
|
Guitar |
Lead Guitar |
2 |
A |
|
Bass |
Bass |
3 |
C |
|
DrumKit |
Bass Drum |
8 |
A1 |
|
DrumKit |
High-Hat |
8 |
A2 |
|
DrumKit |
Snare Drum |
8 |
B |
If you monitored everything, it would not see that C major chord the guitar is playing, because the notes playing would be
C E G + A + C + A + A + B
è B C E G
By not monitoring the drums, it can correctly see the "C E G" and display a C Major chord.
Note: a common convention is to put the drums on channel 8.
Tempo.

This lets you speed up or slow down the playback speed. Note: some midi files contain tempo change commands. You may set it to one number, and quickly have it changed to something else.
Logging.

This lets you select the log file location, and various logging options.
|
Enable Logging |
If this is checked, basic logging will be performed. If it is not checked, all other logging is disabled. |
|
Log All Monitored Notes |
This will show a dump of all the notes that are monitored. This can be useful, if you want to figure out why it didn't find a chord |
|
Log All Monitored Recognized Chords |
This will display an ASCII representation of the chords that have been recognized. |
|
Log All Midi Events |
This will display every Midi event found in the Midi file. |
|
Log Track Information |
This will log the basic track information. |
Transposing.
There are twelve musical notes: C, C#, D, D#, E, F, F#, G, G#, A, A#, and B. The distance from each of these to the next is a semitone [also know as a half step]. The next note in this sequence is another C, which is played one octave above the previous C. From a musical chord perspective, there is no difference between middle C, or the C one octave below that, or the C one octave above that.
The simplest scale in music is the major scale. This can be thought of as the following steps:
An interval describes the distance between tones. A major third consists of two notes separated by two whole steps. A minor third consists of two notes separated by one whole step plus one half step.
A chord is a combination of two or more tones. The most common chords are combinations of three notes; these are called a triads.
If you raise or lower all the notes being played, they kind of chord (e.g. major, minor) does not change. So a C Major chord, raised by 4 semitones, becomes an E Major chord (C
è C# è D è D# è E). A C Major chord raised by 12 semitones becomes another C Major (it was raised by one octave).
For more on transposition, check out a good music theory book.
Troubleshooting.
|
Problem |
Possible Solution |
|
It doesn't display any chord diagrams |
It is very likely that you are monitoring too much. See the section Monitor Tracks & Channels. |
|
Only one track is displayed. |
Many Midi files have all the notes in one track. Use the Monitor Midi features. |
|
The file doesn't play. Position remains at zero. |
Things won't play if you aren't attached to a valid Output device. Try using other devices. |
|
The file seems to be playing, but nothing can be heard. |
|
|
transpose/mute/monitor not working. |
These features do not take affect while a song is playing. Stop, and then restart. |
|
It doesn't play immediately. |
When you hit the play button, the software parses the contents of the midi files, builds data structures, recognizes the chords, etc. These data structures are used at play-back time to display the chords. If a file is big, it may take a few seconds or more for it to start. If it takes longer than 15 seconds, there might be something wrong. |
Future Releases.
This software was developed as part of my Masters project. It is likely that I may add additional features to this, when I have some free time and the desire to do so. If you have any suggestions for features to add, please send email. If you find any bugs, please send email (do not send attachments, but remember which midi file you were using in case I want it). If you want upgrades, check out my web page from time to time.
Features I am considering adding are: