Pitch.java
1    
2    /* 
3     *The Pitch class models the pitch of a note in a manner that will facilitate 
4     * the chromesthetic processing of the pitch. A pitch object will have five 
5     * properties: 
6     * -String name | ABC notation pitch name 
7     * - SPainter painter | the painting agent 
8     * - Note note | a note that will be set to the pitch corresponding to the 
9     * ABC notation pitch name 
10    * -SRectangle box | an SRectangle object that will chromesthetically 
11    *  represent the pitch 
12    * -Color color | the color associated with the pitch for the presumed 
13    *  chromesthete 
14    */
15   package chromesthesia1;
16   import java.awt.Color;
17   import note.SNote;
18   import painter.SPainter;
19   import shapes.SRectangle;
20   
21   public class Pitch {
22       private String abcName;
23       private SPainter painter;
24       private SRectangle box;
25       private SNote note;
26       private Color color;
27   
28       public Pitch(String abcName, SPainter painter){
29           this.abcName = abcName;
30           this.painter = painter;
31           this.box = new SRectangle(painter.painterHeight-50, painter.painterWidth-50);
32           this.note = createNoteForThisPitch(abcName);
33           this.color = getPitchClassColor(abcName.substring(0,1).toUpperCase());
34       }
35       public String toString(){
36           return "[" +  abcName + " | " + note.degree() + " | " + color + "]";
37       }
38       public String abcName(){
39           return abcName;
40       }
41       public SNote createNoteForThisPitch(String abcPitchClassName){
42           SNote note = new SNote();
43           if ( abcPitchClassName.equals("C")){
44               //nothing to do
45           }else if (abcPitchClassName.equals("C,")){
46               note.lp(7);
47           }else if (abcPitchClassName.equals("c")){
48               note.rp(7);
49           }else if (abcPitchClassName.equals("D")){
50               note.rp(1);
51           }else if (abcPitchClassName.equals("D,")){
52               note.lp(6);
53           }else if (abcPitchClassName.equals("d")){
54               note.rp(8);
55           }else if (abcPitchClassName.equals("E")){
56               note.rp(2);
57           }else if ( abcPitchClassName.equals("E,")){
58               note.lp(5);
59           }else if ( abcPitchClassName.equals("e")){
60               note.rp(9);
61           }else if ( abcPitchClassName.equals("F")){
62               note.lp(3);
63           }else if ( abcPitchClassName.equals("F,")){
64               note.rp(7);
65           }else if ( abcPitchClassName.equals("f")){
66               note.rp(1);
67           }else if ( abcPitchClassName.equals("G")){
68               note.lp(4);
69           }else if ( abcPitchClassName.equals("G,")){
70               note.rp();
71           }else if (abcPitchClassName.equals("g")){
72               note.rp();
73           }else if ( abcPitchClassName.equals("A")){
74               note.lp();
75           }else if ( abcPitchClassName.equals("A,")){
76               note.rp();
77           }else if ( abcPitchClassName.equals("a")){
78               note.rp();
79           }else if( abcPitchClassName.equals("B")){
80               note.lp();
81           }else if ( abcPitchClassName.equals("B,")){
82               note.rp();
83           }else if ( abcPitchClassName.equals("b")){
84               note.rp();
85           }
86           return note;
87       }
88       private Color getPitchClassColor(String letter){
89           if ( letter.equals("C")){
90               return Color.BLUE;
91           }else if (letter.equals("D")){
92               return Color.GREEN;
93           }else if ( letter.equals("E")){
94               return new Color(127,0,127);
95           }else if (letter.equals("F")){
96               return new Color(128,59,63);
97           }else if (letter.equals("G")){
98               return  new Color(200,100,0);
99           }else if (letter.equals("A")){
100              return new Color(255,20,90);
101          }else if (letter.equals("B")){
102              return new Color(196,250,75);
103          }else {
104              return Color.BLACK;
105          }
106      }
107      public void play(String d){
108          painter.setColor(color);
109          painter.paint(box);
110          painter.setColor(randomColor());
111          painter.draw(box);
112          if ( d.equals("1")){
113              note.play();
114          }
115      }
116      private static Color randomColor(){
117          int rv = (int)(Math.random()*256);
118          int gv = (int)(Math.random()*256);
119          int bv = (int)(Math.random()*256);
120          return new Color(rv,gv,bv);
121      }
122  }
123