Pitch.java
1    package chromesthesia1;
2    
3    import note.SNote;
4    import painter.SPainter;
5    import shapes.SRectangle;
6    
7    import java.awt.*;
8    
9    public class Pitch {
10   
11       //INSTANCE VARIABLES
12       private String abcName;
13       private SPainter painter;
14       private SRectangle box;
15       private SNote note;
16       private Color color;
17   
18       public Pitch(String abcName, SPainter painter) {
19           this.abcName = abcName;
20           this.painter = painter;
21           this.box = new SRectangle(painter.painterHeight-50, painter.painterWidth-50);
22           this.note = createNoteForThisPitch(abcName);
23           this.color = getPitchClassColor(abcName.substring(0,1).toUpperCase());
24       }
25   
26       public String toString(){
27           return "[ " + abcName + " | " + note.degree() + " | " + color + " ]";
28       }
29   
30       public String abcName(){
31           return abcName;
32       }
33   
34       private SNote createNoteForThisPitch(String abcPitchClassName){
35           SNote note = new SNote();
36           if(abcPitchClassName.equals("C")){
37               //nothing to do
38           } else if(abcPitchClassName.equals("C,")){
39               note.lp(7);
40           } else if (abcPitchClassName.equals("c")){
41               note.rp(7);
42           } else if (abcPitchClassName.equals("D")){
43               note.rp(1);
44           } else if(abcPitchClassName.equals("D,")){
45               note.lp(6);
46           } else if(abcPitchClassName.equals("d")){
47               note.rp(8);
48           } else if(abcPitchClassName.equals("E")){
49               note.rp(2) ;
50           } else if(abcPitchClassName.equals("E,")){
51               note.lp(5);
52           } else if(abcPitchClassName.equals("e")){
53               note.rp(9);
54           } else if (abcPitchClassName.equals("F")) {
55               note.rp(3);
56           } else if(abcPitchClassName.equals("F,")){
57               note.lp(5);
58           } else if(abcPitchClassName.equals("f")){
59               note.rp(1);
60           } else if(abcPitchClassName.equals("G")) {
61               note.rp(8);
62           } else if (abcPitchClassName.equals("G,")) {
63               note.lp(2);
64           } else if (abcPitchClassName.equals("g")) {
65               note.lp(3);
66           } else if (abcPitchClassName.equals("A")) {
67               note.lp(4);
68           } else if (abcPitchClassName.equals("A,")){
69               note.rp(9);
70           } else if (abcPitchClassName.equals("a")) {
71               note.rp(3);
72           } else if (abcPitchClassName.equals("B")) {
73               note.lp(12);
74           } else if (abcPitchClassName.equals("B,")) {
75               note.rp(4);
76           } else if (abcPitchClassName.equals("b")) {
77               note.rp(2);
78           }
79           return note;
80       }
81   
82       private Color getPitchClassColor(String letter){
83           if (letter.equals("C")){
84               return Color.blue;
85           } else if(letter.equals("D")){
86               return Color.GREEN;
87           } else if(letter.equals("E")){
88               return new Color(127,0,127);
89           } else if (letter.equals("F")){
90               return new Color(243,7,157);
91           } else if (letter.equals("G")) {
92               return new Color(38, 255, 243);
93           } else if (letter.equals("A")) {
94               return new Color(252, 149, 4);
95           } else if (letter.equals("B")) {
96               return new Color(215, 0, 41);
97           } else {
98               return Color.black;
99           }
100      }
101  
102      public void play(String d){
103          painter.setColor(color);
104          painter.paint(box);
105          painter.setColor(randomColor());
106          painter.draw(box);
107          if(d.equals("1")){
108              note.play();
109          }
110      }
111  
112      private static Color randomColor() {
113          int rv = (int)(Math.random()*256);
114          int gv = (int)(Math.random()*256);
115          int bv = (int)(Math.random()*256);
116          return new Color(rv, bv, gv);
117      }
118  }
119