To convert from the pitch frequency to a guitar score written in a comfortable and natural way for a guitarist to play, we need to know some basic characteristics of guitar. Guitarist prefers to play strings within a small area – minimize the finger movement.
|
|
#6 |
#5 |
#4 |
#3 |
#2 |
#1 |
|
0 |
82.41 |
110.00 |
146.83 |
196.00 |
246.94 |
329.63 |
|
1 |
87.31 |
116.54 |
155.56 |
207.65 |
261.63 |
349.23 |
|
2 |
92.50 |
123.47 |
164.81 |
220.00 |
277.18 |
369.99 |
|
3 |
98.00 |
130.81 |
174.61 |
233.08 |
293.66 |
392.00 |
|
4 |
103.83 |
138.59 |
185.00 |
246.94 |
311.13 |
415.30 |
|
5 |
110.00 |
146.83 |
196.00 |
261.63 |
329.63 |
440.00 |
|
6 |
116.54 |
155.56 |
207.65 |
277.18 |
349.23 |
466.16 |
|
7 |
123.47 |
164.81 |
220.00 |
293.66 |
369.99 |
493.88 |
|
8 |
130.81 |
174.61 |
233.08 |
311.13 |
392.00 |
523.25 |
|
9 |
138.59 |
185.00 |
246.94 |
329.63 |
415.30 |
554.37 |
|
10 |
146.83 |
196.00 |
261.63 |
349.23 |
440.00 |
587.33 |
|
11 |
155.56 |
207.65 |
277.18 |
369.99 |
466.16 |
622.25 |
|
12 |
164.81 |
220.00 |
293.66 |
392.00 |
493.88 |
659.26 |
|
13 |
174.61 |
233.08 |
311.13 |
415.30 |
523.25 |
698.46 |
Figure 1. Guitar notes frequency map
For example, C (261.63) is the next note after A (220), a preferred move will be from (3,2) à (2,1) instead of (3, 2) à (3, 5) or (4, 7) à (3, 5), since the distance in the first case is minimized one.
Based on such characteristic, we designed our midi notes to guitar score algorithm. The basic philosophy behind the algorithm is actually trying to find a path going through the whole note sequence with every step minimized. Greedy searching method matches our category perfectly.
A guitar score is actually a combination of string and cell locations, which can be perfectly represented by a two-dimension array – x-axis is the location of cell, y-axis is the location of string.
One guitar pitch frequency can be mapped to several points on the figure 1, some combination of string and cell generate the same pitch frequency. A flexible-length collection structure needs to be used here to store all the possible locations, which can generate the same frequency given a pitch value in the note sequence.

Figure 2. Greedy point searching algorithm

Figure 3. Recursive function to find the minimized cost in every step
Input: wave/midi data
Output: guitar score / generated MIDI from FFT result

Figure 4. System Diagram
(1). Before you run our program, please make sure you have already installed the Java SDK 1.4 or above on your machine. You can download Java 2 Platform, Standard Edition (J2SE) 1.4.2 from http://java.sun.com/j2se/1.4.2/download.html. After you finish install it, you have to set up a PATH environment towards to the bin directory of Java home directory. For Windows 2000 user, right click “My Computer” icon, choose “Property” à “Advanced”à”Environment Variable”, you either can set PATH variable for system or your own account only. Press “Add” if there is no PATH entry or “Edit” if there is. Add the entry point to the bin directory of your JDK home directory.
(2). Unzip the ISE599.zip package at any directory you like. In the dos prompt window, go to the unzipped directory, type “java –jar ISE599.jar” to the run the program.
(3). There are buttons,
Load text file – generate guitar score from the text input
Load midi file – generate guitar score from midi input
Convert to midi from text file – generate midi from text file, which is the result of FFT