/Users/johnr/Dropbox/johnrayworth.info/largeFilesOutsideJSR/__IB-Other/Other/IA-Solutions-2020/Nont/Product/Nont - IA/src/nont/ia/Transpose.java
  1 /*
  2  * To change this license header, choose License Headers in Project Properties.
  3  * To change this template file, choose Tools | Templates
  4  * and open the template in the editor.
  5  */
  6 package nont.ia;
  7 
  8 import java.util.ArrayList;
  9 
 10 /**
 11  *
 12  * @author 15837
 13  */
 14 public class Transpose {
 15     
 16     public Transpose(){
 17         
 18     }
 19     
 20     public String analyzeKey(Song song){
 21         //Precondition: this method takes in a song, Postconditions: analyzes the chords to find the key of the song
 22         
 23         String key = "";
 24         int numSharps = 0;
 25         int numFlats = 0;
 26         ArrayList <String> chordsFound = new ArrayList <String>();
 27         
 28         for(int i = 0; i < song.getChordChart().size(); i++){
 29             if(song.getChordChart().get(i).getOutOfKey() == false){
 30                 if(song.getChordChart().get(i).getBaseChord().toCharArray().length == 2){
 31                     if(song.getChordChart().get(i).getBaseChord().substring(1).equals("")){
 32                         if(chordsFound.isEmpty()){
 33                             numSharps++;
 34                             chordsFound.add(song.getChordChart().get(i).getBaseChord().substring(0, 1));
 35                         }
 36                         else{
 37                             boolean chordAlreadyThere = false;//assume it to not be there
 38                             for(int k = 0; k < chordsFound.size(); k++){
 39                                 if(chordsFound.get(k).equals(song.getChordChart().get(i).getBaseChord().substring(0, 1))){
 40                                     chordAlreadyThere = true;
 41                                 }
 42                             }
 43                             if(!chordAlreadyThere){
 44                                 numSharps++;
 45                                 chordsFound.add(song.getChordChart().get(i).getBaseChord().substring(0, 1));
 46                             }
 47                         }
 48                     }
 49                     else if(song.getChordChart().get(i).getBaseChord().substring(1).equals("")){
 50                         if(chordsFound.isEmpty()){
 51                             numFlats++;
 52                             chordsFound.add(song.getChordChart().get(i).getBaseChord().substring(0, 1));
 53                         }
 54                         else{
 55                             boolean chordAlreadyThere = false;
 56                             for(int k = 0; k < chordsFound.size(); k++){
 57                                 if(chordsFound.get(k).equals(song.getChordChart().get(i).getBaseChord().substring(0, 1))){
 58                                     chordAlreadyThere = true;
 59                                 }
 60                             }
 61                             if(!chordAlreadyThere){
 62                                 numFlats++;
 63                                 chordsFound.add(song.getChordChart().get(i).getBaseChord().substring(0, 1));
 64                             }
 65                         }
 66                     }
 67                 }
 68             }
 69         }
 70         
 71         if (numSharps == 0 && numFlats == 0){
 72             key = "C";
 73         }
 74         
 75         else if (numSharps == 1 && numFlats == 0){
 76             key = "G";
 77         }
 78         
 79         else if (numSharps == 2 && numFlats == 0){
 80             key = "D";
 81         }
 82        
 83         else if (numSharps == 3 && numFlats == 0){
 84             key = "A";
 85         }
 86         
 87         else if (numSharps == 4 && numFlats == 0){
 88             key = "E";
 89         }
 90         
 91         else if (numSharps == 5 && numFlats == 0){
 92             key = "B";
 93         }
 94         
 95         else if (numSharps == 0 && numFlats == 1){
 96             key = "F";
 97         }
 98         
 99         else if (numSharps == 0 && numFlats == 2){
100             key = "B♭";
101         }
102         
103         else if (numSharps == 0 && numFlats == 3){
104             key = "E♭";
105         }
106         
107         else if (numSharps == 0 && numFlats == 4){
108             key = "A♭";
109         }
110         
111         else if (numSharps == 0 && numFlats == 5){
112             key = "D♭";
113         }
114         
115         else if (numSharps == 0 && numFlats == 6){
116             key = "G♭";
117         }
118         
119         return key;
120     }
121     
122     public ArrayList<String> chordProgression(Song song){
123 
124         ArrayList<String> progression = song.getProgression();
125         
126         if (song.getKey().equals("C")){
127             for(int i = 0; i < song.getChordChart().size(); i++){
128                 if(song.getChordChart().get(i).getBaseChord().equals("C")){
129                     progression.add("I");
130                 }
131                 else if(song.getChordChart().get(i).getBaseChord().equals("D")){
132                     progression.add("ii");
133                 }
134                 else if(song.getChordChart().get(i).getBaseChord().equals("E")){
135                     progression.add("iii");
136                 }
137                 else if(song.getChordChart().get(i).getBaseChord().equals("F")){
138                     progression.add("IV");
139                 }
140                 else if(song.getChordChart().get(i).getBaseChord().equals("G")){
141                     progression.add("V");
142                 }
143                 else if(song.getChordChart().get(i).getBaseChord().equals("A")){
144                     progression.add("vi");
145                 }
146                 else if(song.getChordChart().get(i).getBaseChord().equals("B")){
147                     progression.add("vii");
148                 }
149                 else if (song.getChordChart().get(i).getBaseChord().equals("-")){
150                     progression.add("-");
151                 }
152                 else{
153                     progression.add("N/A");
154                 }
155             }
156         }
157         
158         else if (song.getKey().equals("G")){
159             for(int i = 0; i < song.getChordChart().size(); i++){
160                 if(song.getChordChart().get(i).getBaseChord().equals("G")){
161                     progression.add("I");
162                 }
163                 else if(song.getChordChart().get(i).getBaseChord().equals("A")){
164                     progression.add("ii");
165                 }
166                 else if(song.getChordChart().get(i).getBaseChord().equals("B")){
167                     progression.add("iii");
168                 }
169                 else if(song.getChordChart().get(i).getBaseChord().equals("C")){
170                     progression.add("IV");
171                 }
172                 else if(song.getChordChart().get(i).getBaseChord().equals("D")){
173                     progression.add("V");
174                 }
175                 else if(song.getChordChart().get(i).getBaseChord().equals("E")){
176                     progression.add("vi");
177                 }
178                 else if(song.getChordChart().get(i).getBaseChord().equals("F♯")){
179                     progression.add("vii");
180                 }
181                 else if (song.getChordChart().get(i).getBaseChord().equals("-")){
182                     progression.add("-");
183                 }
184                 else{
185                     progression.add("N/A");
186                 }
187             }
188         }
189         
190         else if (song.getKey().equals("D")){
191             for(int i = 0; i < song.getChordChart().size(); i++){
192                 if(song.getChordChart().get(i).getBaseChord().equals("D")){
193                     progression.add("I");
194                 }
195                 else if(song.getChordChart().get(i).getBaseChord().equals("E")){
196                     progression.add("ii");
197                 }
198                 else if(song.getChordChart().get(i).getBaseChord().equals("F♯")){
199                     progression.add("iii");
200                 }
201                 else if(song.getChordChart().get(i).getBaseChord().equals("G")){
202                     progression.add("IV");
203                 }
204                 else if(song.getChordChart().get(i).getBaseChord().equals("A")){
205                     progression.add("V");
206                 }
207                 else if(song.getChordChart().get(i).getBaseChord().equals("B")){
208                     progression.add("vi");
209                 }
210                 else if(song.getChordChart().get(i).getBaseChord().equals("C♯")){
211                     progression.add("vii");
212                 }
213                 else if (song.getChordChart().get(i).getBaseChord().equals("-")){
214                     progression.add("-");
215                 }
216                 else{
217                     progression.add("N/A");
218                 }
219             }
220         }
221         
222         else if (song.getKey().equals("A")){
223             for(int i = 0; i < song.getChordChart().size(); i++){
224                 if(song.getChordChart().get(i).getBaseChord().equals("A")){
225                     progression.add("I");
226                 }
227                 else if(song.getChordChart().get(i).getBaseChord().equals("B")){
228                     progression.add("ii");
229                 }
230                 else if(song.getChordChart().get(i).getBaseChord().equals("C♯")){
231                     progression.add("iii");
232                 }
233                 else if(song.getChordChart().get(i).getBaseChord().equals("D")){
234                     progression.add("IV");
235                 }
236                 else if(song.getChordChart().get(i).getBaseChord().equals("E")){
237                     progression.add("V");
238                 }
239                 else if(song.getChordChart().get(i).getBaseChord().equals("F♯")){
240                     progression.add("vi");
241                 }
242                 else if(song.getChordChart().get(i).getBaseChord().equals("G♯")){
243                     progression.add("vii");
244                 }
245                 else if (song.getChordChart().get(i).getBaseChord().equals("-")){
246                     progression.add("-");
247                 }
248                 else{
249                     progression.add("N/A");
250                 }
251             }
252         }
253         
254         else if (song.getKey().equals("E")){
255             for(int i = 0; i < song.getChordChart().size(); i++){
256                 if(song.getChordChart().get(i).getBaseChord().equals("E")){
257                     progression.add("I");
258                 }
259                 else if(song.getChordChart().get(i).getBaseChord().equals("F♯")){
260                     progression.add("ii");
261                 }
262                 else if(song.getChordChart().get(i).getBaseChord().equals("G♯")){
263                     progression.add("iii");
264                 }
265                 else if(song.getChordChart().get(i).getBaseChord().equals("A")){
266                     progression.add("IV");
267                 }
268                 else if(song.getChordChart().get(i).getBaseChord().equals("B")){
269                     progression.add("V");
270                 }
271                 else if(song.getChordChart().get(i).getBaseChord().equals("C♯")){
272                     progression.add("vi");
273                 }
274                 else if(song.getChordChart().get(i).getBaseChord().equals("D♯")){
275                     progression.add("vii");
276                 }
277                 else if (song.getChordChart().get(i).getBaseChord().equals("-")){
278                     progression.add("-");
279                 }
280                 else{
281                     progression.add("N/A");
282                 }
283             }
284         }
285         
286         else if (song.getKey().equals("B")){
287             for(int i = 0; i < song.getChordChart().size(); i++){
288                 if(song.getChordChart().get(i).getBaseChord().equals("B")){
289                     progression.add("I");
290                 }
291                 else if(song.getChordChart().get(i).getBaseChord().equals("C♯")){
292                     progression.add("ii");
293                 }
294                 else if(song.getChordChart().get(i).getBaseChord().equals("D♯")){
295                     progression.add("iii");
296                 }
297                 else if(song.getChordChart().get(i).getBaseChord().equals("E")){
298                     progression.add("IV");
299                 }
300                 else if(song.getChordChart().get(i).getBaseChord().equals("F♯")){
301                     progression.add("V");
302                 }
303                 else if(song.getChordChart().get(i).getBaseChord().equals("G♯")){
304                     progression.add("vi");
305                 }
306                 else if(song.getChordChart().get(i).getBaseChord().equals("A♯")){
307                     progression.add("vii");
308                 }
309                 else if (song.getChordChart().get(i).getBaseChord().equals("-")){
310                     progression.add("-");
311                 }
312                 else{
313                     progression.add("N/A");
314                 }
315             }
316         }
317         
318         else if (song.getKey().equals("F")){
319             for(int i = 0; i < song.getChordChart().size(); i++){
320                 if(song.getChordChart().get(i).getBaseChord().equals("F")){
321                     progression.add("I");
322                 }
323                 else if(song.getChordChart().get(i).getBaseChord().equals("Gm")){
324                     progression.add("ii");
325                 }
326                 else if(song.getChordChart().get(i).getBaseChord().equals("Am")){
327                     progression.add("iii");
328                 }
329                 else if(song.getChordChart().get(i).getBaseChord().equals("B♭")){
330                     progression.add("IV");
331                 }
332                 else if(song.getChordChart().get(i).getBaseChord().equals("C")){
333                     progression.add("V");
334                 }
335                 else if(song.getChordChart().get(i).getBaseChord().equals("Dm")){
336                     progression.add("vi");
337                 }
338                 else if(song.getChordChart().get(i).getBaseChord().equals("Edim")){
339                     progression.add("vii");
340                 }
341                 else if (song.getChordChart().get(i).getBaseChord().equals("-")){
342                     progression.add("-");
343                 }
344                 else{
345                     progression.add("N/A");
346                 }
347             }
348         }
349         
350         else if (song.getKey().equals("B♭")){
351             for(int i = 0; i < song.getChordChart().size(); i++){
352                 if(song.getChordChart().get(i).getBaseChord().equals("B♭")){
353                     progression.add("I");
354                 }
355                 else if(song.getChordChart().get(i).getBaseChord().equals("C")){
356                     progression.add("ii");
357                 }
358                 else if(song.getChordChart().get(i).getBaseChord().equals("D")){
359                     progression.add("iii");
360                 }
361                 else if(song.getChordChart().get(i).getBaseChord().equals("E♭")){
362                     progression.add("IV");
363                 }
364                 else if(song.getChordChart().get(i).getBaseChord().equals("F")){
365                     progression.add("V");
366                 }
367                 else if(song.getChordChart().get(i).getBaseChord().equals("G")){
368                     progression.add("vi");
369                 }
370                 else if(song.getChordChart().get(i).getBaseChord().equals("A")){
371                     progression.add("vii");
372                 }
373                 else if (song.getChordChart().get(i).getBaseChord().equals("-")){
374                     progression.add("-");
375                 }
376                 else{
377                     progression.add("N/A");
378                 }
379             }
380         }
381         
382         else if (song.getKey().equals("E♭")){
383             for(int i = 0; i < song.getChordChart().size(); i++){
384                 if(song.getChordChart().get(i).getBaseChord().equals("E♭")){
385                     progression.add("I");
386                 }
387                 else if(song.getChordChart().get(i).getBaseChord().equals("F")){
388                     progression.add("ii");
389                 }
390                 else if(song.getChordChart().get(i).getBaseChord().equals("G")){
391                     progression.add("iii");
392                 }
393                 else if(song.getChordChart().get(i).getBaseChord().equals("A♭")){
394                     progression.add("IV");
395                 }
396                 else if(song.getChordChart().get(i).getBaseChord().equals("B♭")){
397                     progression.add("V");
398                 }
399                 else if(song.getChordChart().get(i).getBaseChord().equals("C")){
400                     progression.add("vi");
401                 }
402                 else if(song.getChordChart().get(i).getBaseChord().equals("D")){
403                     progression.add("vii");
404                 }
405                 else if (song.getChordChart().get(i).getBaseChord().equals("-")){
406                     progression.add("-");
407                 }
408                 else{
409                     progression.add("N/A");
410                 }
411             }
412         }
413         
414         else if (song.getKey().equals("A♭")){
415             for(int i = 0; i < song.getChordChart().size(); i++){
416                 if(song.getChordChart().get(i).getBaseChord().equals("A♭")){
417                     progression.add("I");
418                 }
419                 else if(song.getChordChart().get(i).getBaseChord().equals("B♭")){
420                     progression.add("ii");
421                 }
422                 else if(song.getChordChart().get(i).getBaseChord().equals("C")){
423                     progression.add("iii");
424                 }
425                 else if(song.getChordChart().get(i).getBaseChord().equals("D♭")){
426                     progression.add("IV");
427                 }
428                 else if(song.getChordChart().get(i).getBaseChord().equals("E♭")){
429                     progression.add("V");
430                 }
431                 else if(song.getChordChart().get(i).getBaseChord().equals("F")){
432                     progression.add("vi");
433                 }
434                 else if(song.getChordChart().get(i).getBaseChord().equals("G")){
435                     progression.add("vii");
436                 }
437                 else if (song.getChordChart().get(i).getBaseChord().equals("-")){
438                     progression.add("-");
439                 }
440                 else{
441                     progression.add("N/A");
442                 }
443             }
444         }
445         
446         else if (song.getKey().equals("D♭")){
447             for(int i = 0; i < song.getChordChart().size(); i++){
448                 if(song.getChordChart().get(i).getBaseChord().equals("D♭")){
449                     progression.add("I");
450                 }
451                 else if(song.getChordChart().get(i).getBaseChord().equals("E♭")){
452                     progression.add("ii");
453                 }
454                 else if(song.getChordChart().get(i).getBaseChord().equals("F")){
455                     progression.add("iii");
456                 }
457                 else if(song.getChordChart().get(i).getBaseChord().equals("G♭")){
458                     progression.add("IV");
459                 }
460                 else if(song.getChordChart().get(i).getBaseChord().equals("A♭")){
461                     progression.add("V");
462                 }
463                 else if(song.getChordChart().get(i).getBaseChord().equals("B♭")){
464                     progression.add("vi");
465                 }
466                 else if(song.getChordChart().get(i).getBaseChord().equals("C")){
467                     progression.add("vii");
468                 }
469                 else if (song.getChordChart().get(i).getBaseChord().equals("-")){
470                     progression.add("-");
471                 }
472                 else{
473                     progression.add("N/A");
474                 }
475             }
476         }
477         
478         else if (song.getKey().equals("G♭")){
479             for(int i = 0; i < song.getChordChart().size(); i++){
480                 if(song.getChordChart().get(i).getBaseChord().equals("G♭")){
481                     progression.add("I");
482                 }
483                 else if(song.getChordChart().get(i).getBaseChord().equals("A♭")){
484                     progression.add("ii");
485                 }
486                 else if(song.getChordChart().get(i).getBaseChord().equals("B♭")){
487                     progression.add("iii");
488                 }
489                 else if(song.getChordChart().get(i).getBaseChord().equals("C♭")){
490                     progression.add("IV");
491                 }
492                 else if(song.getChordChart().get(i).getBaseChord().equals("D♭")){
493                     progression.add("V");
494                 }
495                 else if(song.getChordChart().get(i).getBaseChord().equals("E♭")){
496                     progression.add("vi");
497                 }
498                 else if(song.getChordChart().get(i).getBaseChord().equals("F")){
499                     progression.add("vii");
500                 }
501                 else if (song.getChordChart().get(i).getBaseChord().equals("-")){
502                     progression.add("-");
503                 }
504                 else{
505                     progression.add("N/A");
506                 }
507             }
508         }
509         
510         return progression;
511         
512     }
513     
514     public ArrayList<String> transposeSong(Song song, String key){
515         
516         ArrayList<String> changeKey = song.getChangeKey();
517         
518         if (key.equals("C")){
519             for(int i = 0; i < song.getChordChart().size(); i++){
520                 if(song.getProgression().get(i).equals("I")){
521                     changeKey.add("C");
522                 }
523                 else if(song.getProgression().get(i).equals("ii")){
524                     changeKey.add("Dm");
525                 }
526                 else if(song.getProgression().get(i).equals("iii")){
527                     changeKey.add("Em");
528                 }
529                 else if(song.getProgression().get(i).equals("IV")){
530                     changeKey.add("F");
531                 }
532                 else if(song.getProgression().get(i).equals("V")){
533                     changeKey.add("G");
534                 }
535                 else if(song.getProgression().get(i).equals("vi")){
536                     changeKey.add("Am");
537                 }
538                 else if(song.getProgression().get(i).equals("vii")){
539                     changeKey.add("Bdim");
540                 }
541                 else if(song.getProgression().get(i).equals("-")){
542                     changeKey.add("-");
543                 }
544                 else{
545                     changeKey.add("N/A");
546                 }
547             }
548         }
549         
550         else if (key.equals("G")){
551             for(int i = 0; i < song.getChordChart().size(); i++){
552                 if(song.getProgression().get(i).equals("I")){
553                     changeKey.add("G");
554                 }
555                 else if(song.getProgression().get(i).equals("ii")){
556                     changeKey.add("Am");
557                 }
558                 else if(song.getProgression().get(i).equals("iii")){
559                     changeKey.add("Bm");
560                 }
561                 else if(song.getProgression().get(i).equals("IV")){
562                     changeKey.add("C");
563                 }
564                 else if(song.getProgression().get(i).equals("V")){
565                     changeKey.add("D");
566                 }
567                 else if(song.getProgression().get(i).equals("vi")){
568                     changeKey.add("Em");
569                 }
570                 else if(song.getProgression().get(i).equals("vii")){
571                     changeKey.add("F♯dim");
572                 } 
573                 else if(song.getProgression().get(i).equals("-")){
574                     changeKey.add("-");
575                 }
576                 else{
577                     changeKey.add("N/A");
578                 }
579             }
580         }
581         
582         else if (key.equals("D")){
583             for(int i = 0; i < song.getChordChart().size(); i++){
584                 if(song.getProgression().get(i).equals("I")){
585                     changeKey.add("D");
586                 }
587                 else if(song.getProgression().get(i).equals("ii")){
588                     changeKey.add("Em");
589                 }
590                 else if(song.getProgression().get(i).equals("iii")){
591                     changeKey.add("F♯m");
592                 }
593                 else if(song.getProgression().get(i).equals("IV")){
594                     changeKey.add("G");
595                 }
596                 else if(song.getProgression().get(i).equals("V")){
597                     changeKey.add("A");
598                 }
599                 else if(song.getProgression().get(i).equals("vi")){
600                     changeKey.add("Bm");
601                 }
602                 else if(song.getProgression().get(i).equals("vii")){
603                     changeKey.add("C♯dim");
604                 } 
605                 else if(song.getProgression().get(i).equals("-")){
606                     changeKey.add("-");
607                 }
608                 else{
609                     changeKey.add("N/A");
610                 }
611             }
612         }
613         
614         else if (key.equals("A")){
615             for(int i = 0; i < song.getChordChart().size(); i++){
616                 if(song.getProgression().get(i).equals("I")){
617                     changeKey.add("A");
618                 }
619                 else if(song.getProgression().get(i).equals("ii")){
620                     changeKey.add("Bm");
621                 }
622                 else if(song.getProgression().get(i).equals("iii")){
623                     changeKey.add("C♯m");
624                 }
625                 else if(song.getProgression().get(i).equals("IV")){
626                     changeKey.add("D");
627                 }
628                 else if(song.getProgression().get(i).equals("V")){
629                     changeKey.add("E");
630                 }
631                 else if(song.getProgression().get(i).equals("vi")){
632                     changeKey.add("F♯m");
633                 }
634                 else if(song.getProgression().get(i).equals("vii")){
635                     changeKey.add("G♯dim");
636                 } 
637                 else if(song.getProgression().get(i).equals("-")){
638                     changeKey.add("-");
639                 }
640                 else{
641                     changeKey.add("N/A");
642                 }
643             }
644         }
645         
646         else if (key.equals("E")){
647             for(int i = 0; i < song.getChordChart().size(); i++){
648                 if(song.getProgression().get(i).equals("I")){
649                     changeKey.add("E");
650                 }
651                 else if(song.getProgression().get(i).equals("ii")){
652                     changeKey.add("F♯m");
653                 }
654                 else if(song.getProgression().get(i).equals("iii")){
655                     changeKey.add("G♯m");
656                 }
657                 else if(song.getProgression().get(i).equals("IV")){
658                     changeKey.add("A");
659                 }
660                 else if(song.getProgression().get(i).equals("V")){
661                     changeKey.add("B");
662                 }
663                 else if(song.getProgression().get(i).equals("vi")){
664                     changeKey.add("C♯m");
665                 }
666                 else if(song.getProgression().get(i).equals("vii")){
667                     changeKey.add("D♯dim");
668                 } 
669                 else if(song.getProgression().get(i).equals("-")){
670                     changeKey.add("-");
671                 }
672                 else{
673                     changeKey.add("N/A");
674                 }
675             }
676         }
677         
678         else if (key.equals("B")){
679             for(int i = 0; i < song.getChordChart().size(); i++){
680                 if(song.getProgression().get(i).equals("I")){
681                     changeKey.add("B");
682                 }
683                 else if(song.getProgression().get(i).equals("ii")){
684                     changeKey.add("C♯m");
685                 }
686                 else if(song.getProgression().get(i).equals("iii")){
687                     changeKey.add("D♯m");
688                 }
689                 else if(song.getProgression().get(i).equals("IV")){
690                     changeKey.add("E");
691                 }
692                 else if(song.getProgression().get(i).equals("V")){
693                     changeKey.add("F♯");
694                 }
695                 else if(song.getProgression().get(i).equals("vi")){
696                     changeKey.add("G♯m");
697                 }
698                 else if(song.getProgression().get(i).equals("vii")){
699                     changeKey.add("A♯dim");
700                 } 
701                 else if(song.getProgression().get(i).equals("-")){
702                     changeKey.add("-");
703                 }
704                 else{
705                     changeKey.add("N/A");
706                 }
707             }
708         }
709         
710         else if (key.equals("F")){
711             for(int i = 0; i < song.getChordChart().size(); i++){
712                 if(song.getProgression().get(i).equals("I")){
713                     changeKey.add("F");
714                 }
715                 else if(song.getProgression().get(i).equals("ii")){
716                     changeKey.add("Gm");
717                 }
718                 else if(song.getProgression().get(i).equals("iii")){
719                     changeKey.add("Am");
720                 }
721                 else if(song.getProgression().get(i).equals("IV")){
722                     changeKey.add("B♭");
723                 }
724                 else if(song.getProgression().get(i).equals("V")){
725                     changeKey.add("C");
726                 }
727                 else if(song.getProgression().get(i).equals("vi")){
728                     changeKey.add("Dm");
729                 }
730                 else if(song.getProgression().get(i).equals("vii")){
731                     changeKey.add("Edim");
732                 }
733                 else if(song.getProgression().get(i).equals("-")){
734                     changeKey.add("-");
735                 }
736                 else{
737                     changeKey.add("N/A");
738                 }
739             }
740         }
741         
742         else if (key.equals("B♭")){
743             for(int i = 0; i < song.getChordChart().size(); i++){
744                 if(song.getProgression().get(i).equals("I")){
745                     changeKey.add("B♭");
746                 }
747                 else if(song.getProgression().get(i).equals("ii")){
748                     changeKey.add("Cm");
749                 }
750                 else if(song.getProgression().get(i).equals("iii")){
751                     changeKey.add("Dm");
752                 }
753                 else if(song.getProgression().get(i).equals("IV")){
754                     changeKey.add("E♭");
755                 }
756                 else if(song.getProgression().get(i).equals("V")){
757                     changeKey.add("F");
758                 }
759                 else if(song.getProgression().get(i).equals("vi")){
760                     changeKey.add("Gm");
761                 }
762                 else if(song.getProgression().get(i).equals("vii")){
763                     changeKey.add("Adim");
764                 }
765                 else if(song.getProgression().get(i).equals("-")){
766                     changeKey.add("-");
767                 }
768                 else{
769                     changeKey.add("N/A");
770                 }
771             }
772         }
773         
774         else if (key.equals("E♭")){
775             for(int i = 0; i < song.getChordChart().size(); i++){
776                 if(song.getProgression().get(i).equals("I")){
777                     changeKey.add("E♭");
778                 }
779                 else if(song.getProgression().get(i).equals("ii")){
780                     changeKey.add("Fm");
781                 }
782                 else if(song.getProgression().get(i).equals("iii")){
783                     changeKey.add("Gm");
784                 }
785                 else if(song.getProgression().get(i).equals("IV")){
786                     changeKey.add("A♭");
787                 }
788                 else if(song.getProgression().get(i).equals("V")){
789                     changeKey.add("B♭");
790                 }
791                 else if(song.getProgression().get(i).equals("vi")){
792                     changeKey.add("Cm");
793                 }
794                 else if(song.getProgression().get(i).equals("vii")){
795                     changeKey.add("Ddim");
796                 }
797                 else if(song.getProgression().get(i).equals("-")){
798                     changeKey.add("-");
799                 }
800                 else{
801                     changeKey.add("N/A");
802                 }
803             }
804         }
805         
806         else if (key.equals("A♭")){
807             for(int i = 0; i < song.getChordChart().size(); i++){
808                 if(song.getProgression().get(i).equals("I")){
809                     changeKey.add("A♭");
810                 }
811                 else if(song.getProgression().get(i).equals("ii")){
812                     changeKey.add("B♭m");
813                 }
814                 else if(song.getProgression().get(i).equals("iii")){
815                     changeKey.add("Cm");
816                 }
817                 else if(song.getProgression().get(i).equals("IV")){
818                     changeKey.add("D♭");
819                 }
820                 else if(song.getProgression().get(i).equals("V")){
821                     changeKey.add("E♭");
822                 }
823                 else if(song.getProgression().get(i).equals("vi")){
824                     changeKey.add("Fm");
825                 }
826                 else if(song.getProgression().get(i).equals("vii")){
827                     changeKey.add("Gdim");
828                 }
829                 else if(song.getProgression().get(i).equals("-")){
830                     changeKey.add("-");
831                 }
832                 else{
833                     changeKey.add("N/A");
834                 }
835             }
836         }
837         
838         else if (key.equals("D♭")){
839             for(int i = 0; i < song.getChordChart().size(); i++){
840                 if(song.getProgression().get(i).equals("I")){
841                     changeKey.add("D♭");
842                 }
843                 else if(song.getProgression().get(i).equals("ii")){
844                     changeKey.add("E♭m");
845                 }
846                 else if(song.getProgression().get(i).equals("iii")){
847                     changeKey.add("Fm");
848                 }
849                 else if(song.getProgression().get(i).equals("IV")){
850                     changeKey.add("G♭");
851                 }
852                 else if(song.getProgression().get(i).equals("V")){
853                     changeKey.add("A♭");
854                 }
855                 else if(song.getProgression().get(i).equals("vi")){
856                     changeKey.add("B♭m");
857                 }
858                 else if(song.getProgression().get(i).equals("vii")){
859                     changeKey.add("Cdim");
860                 }
861                 else if(song.getProgression().get(i).equals("-")){
862                     changeKey.add("-");
863                 }
864                 else{
865                     changeKey.add("N/A");
866                 }
867             }
868         }
869         
870         else if (key.equals("G♭")){
871             for(int i = 0; i < song.getChordChart().size(); i++){
872                 if(song.getProgression().get(i).equals("I")){
873                     changeKey.add("G♭");
874                 }
875                 else if(song.getProgression().get(i).equals("ii")){
876                     changeKey.add("A♭m");
877                 }
878                 else if(song.getProgression().get(i).equals("iii")){
879                     changeKey.add("B♭m");
880                 }
881                 else if(song.getProgression().get(i).equals("IV")){
882                     changeKey.add("C♭");
883                 }
884                 else if(song.getProgression().get(i).equals("V")){
885                     changeKey.add("D♭");
886                 }
887                 else if(song.getProgression().get(i).equals("vi")){
888                     changeKey.add("E♭m");
889                 }
890                 else if(song.getProgression().get(i).equals("vii")){
891                     changeKey.add("Fdim");
892                 }
893                 else if(song.getProgression().get(i).equals("-")){
894                     changeKey.add("-");
895                 }
896                 else{
897                     changeKey.add("N/A");
898                 }
899             }
900         }
901         
902         return changeKey;
903     }
904     
905 }
906