+import javax.sound.midi.*;
import javax.swing.*;
import java.awt.*;
/**
- *
+ * A graphical representation of the time signature of the current sequence.
*
* @author Andersson, Andreen, Lanneskog, Pehrson
* @version 1
public class MooViewCounter extends JPanel {
- //public static final int LINE_LENGTH;
- //private int linelenght;
- //private String check;
- //private Line[];
-
+ private int measure, halfBeat, beat, halfNote;
+ private static final int CELL_HEIGHT = 10;
+
/**
- * Creates
+ * Creates an musical ruler depending on the timesignature
*/
-// private int timeSig1, timeSig2;
-
- /*public MooViewCounter (int ts1, int ts2) {
- timeSig1 = ts1;
- timeSig2 = ts2;
-
+
+ public MooViewCounter (MetaMessage[] timeSigs) {
+ int timeSig1 = 4, timeSig2 = 4; // ...for now
+ setBackground(Moosique.getGUI().bgColor);
+ setPreferredSize(new Dimension(35, 200 * CELL_HEIGHT));
+
switch (timeSig2) {
- case 1: = 0; break;
- case 2: linelenght = 0; break;
- case 4: linelenght = 10; break;
- case 8: linelenght = 0; break;
- case 16: linelenght = 0; break;
+ case 16: measure = timeSig1; // 1/16
+ break;
+ case 8: measure = timeSig1 * 2; // 1/16
+ halfBeat = measure / timeSig1; // 1/8
+ break;
+ case 4: measure = timeSig1 * 4; // 1/16
+ halfBeat = beat / 2; // 1/8
+ beat = measure / timeSig1; // 1/4
+ break;
+ case 2: measure = timeSig1 * 8; // 1/16
+ halfBeat = beat / 2; // 1/8
+ beat = halfNote / 2; // 1/4
+ halfNote = measure / timeSig1; // 1/2
+ break;
+ case 1: measure = timeSig1 * 16; // 1/16
+ halfBeat = beat / 2; // 1/8
+ beat = halfNote / 2; // 1/4
+ halfNote = measure / 2; // 1/2
+ break;
}
- }*/
-
+
+ }
public void paintComponent(Graphics g) {
super.paintComponent(g);
- setBackground(Color.white);
if (!(g instanceof Graphics2D)) return;
Graphics2D g2 = (Graphics2D)g;
- setPreferredSize(new Dimension(50,200*10));
+ g2.setColor(Color.black);
for (int c = 0; c < 200; c++) {
- g2.drawLine(0,c*10,20,c*10);
- g2.drawLine(0,c*5,10,c*5);
- //for (int i = 0; i < (timeSig1-1); i++) {
- // g2.drawLine(0,c*timesig1,linelenght,c*timesign1);
- //}
+ g2.drawLine(0, c * CELL_HEIGHT, 5, c * CELL_HEIGHT); // 1/16
+ g2.drawLine(0, c * CELL_HEIGHT * halfBeat, 10, c * CELL_HEIGHT * halfBeat); // 1/8
+ g2.drawLine(0, c * CELL_HEIGHT * beat, 15, c * CELL_HEIGHT * beat); // 1/4
+ g2.drawLine(0, c * CELL_HEIGHT * halfNote, 20, c * CELL_HEIGHT * halfNote); // 1/2
+ g2.drawLine(0, c * CELL_HEIGHT * measure, 30, c * CELL_HEIGHT * measure); // 1/1
}
}
}
\ No newline at end of file