int startingNote = 0;
boolean impossible = false;
//represents all possible chords
ChordTemplate fullSpectrum[] = new ChordTemplate[progression.size()];
//represent the current chords
Chord chordArray[] = new Chord[progression.size()];
//allows the program to step back as many times as possible to revoice a progression
ArrayList<Chord> backupVector[] = new ArrayList[progression.size()];
//times that a current chord has been checked and has 0 voicings
int times[] = new int[progression.size()];
//initialize all times to zero
for (int i = 0; i < times.length; i++)
times[i] = 0;
//For the entire progression....
for (int i = progression.size() - 1; i > -1; i--) {
parent.appendInfo("i = " + i + ", ");
String currentSymbolID = progression.getIdentifier(i);
String nextSymbolID = progression.getIdentifier(i+1);
if (i != progression.size() - 1) {
parent.appendInfo(nextSymbolID + " to " + currentSymbolID + " = ");
} else {
parent.appendInfo(currentSymbolID + " = ");
}
backupVector[i] = new ArrayList<Chord>();
//get the starting note
startingNote = getStartingNote(currentSymbolID);
//get all the possible notes for that chord
fullSpectrum[i] = new ChordTemplate();
fullSpectrum[i] = createChord(currentSymbolID,
startingNote,
fullSpectrum[i]);
//get all possible combinations of that chord (and doublings)