Commit 83c15e80 authored by Trisha Gee's avatar Trisha Gee
Browse files

[Ch15] Formatting and warnings for BeatBoxFinal

parent 1cc71acb
Loading
Loading
Loading
Loading
+65 −81
Changes for src/main/java/appA/BeatBoxFinal.java: 65 added lines, 81 removed lines.
Original line number Diff line number Diff line
@@ -16,29 +16,27 @@ import java.util.Iterator;
import java.util.Vector;

public class BeatBoxFinal {
  JFrame theFrame;
  JPanel mainPanel;
  JList incomingList;
  JTextField userMessage;
  ArrayList<JCheckBox> checkboxList;
  int nextNum;
  Vector<String> listVector = new Vector<String>();
  String userName;
  ObjectOutputStream out;
  ObjectInputStream in;
  HashMap<String, boolean[]> otherSeqsMap = new HashMap<String, boolean[]>();

  Sequencer sequencer;
  Sequence sequence;
  Sequence mySequence = null;
  Track track;


  String[] instrumentNames = {" Bass Drum", " Closed Hi-Hat", " Open Hi-Hat", "Acoustic Snare", " Crash Cymbal", " Hand Clap", " High Tom", " Hi Bongo", "Maracas", "Whistle", " Low Conga", "Cowbell", "Vibraslap", "Low- mid Tom", " High Agogo", " Open Hi Conga"};
  private JList<String> incomingList;
  private JTextField userMessage;
  private ArrayList<JCheckBox> checkboxList;
  private int nextNum;
  private final Vector<String> listVector = new Vector<>();
  private String userName;
  private ObjectOutputStream out;
  private ObjectInputStream in;
  private final HashMap<String, boolean[]> otherSeqsMap = new HashMap<>();

  private Sequencer sequencer;
  private Sequence sequence;
  private final Sequence mySequence = null;
  private Track track;

  String[] instrumentNames = {"Bass Drum", "Closed Hi-Hat", "Open Hi-Hat", "Acoustic Snare", "Crash Cymbal",
          "Hand Clap", "High Tom", "Hi Bongo", "Maracas", "Whistle", "Low Conga", "Cowbell", "Vibraslap", "Low-mid Tom",
          "High Agogo", "Open Hi Conga"};

  int[] instruments = {35, 42, 46, 38, 49, 39, 50, 60, 70, 72, 64, 56, 58, 47, 67, 63};


  public static void main(String[] args) {
    new BeatBoxFinal().startUp(args[0]);  // args[0] is your user ID/screen name
  }
@@ -53,20 +51,19 @@ public class BeatBoxFinal {
      Thread remote = new Thread(new RemoteReader());
      remote.start();
    } catch (Exception ex) {
      System.out.println("couldn’t connect-you’ll have to play alone.");
      System.out.println("Couldn't connect-you'll have to play alone.");
    }
    setUpMidi();
    buildGUI();
  } // close startUp
  }

  public void buildGUI() {

    theFrame = new JFrame("Cyber BeatBox");
    JFrame theFrame = new JFrame("Cyber BeatBox");
    BorderLayout layout = new BorderLayout();
    JPanel background = new JPanel(layout);
    background.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));

    checkboxList = new ArrayList<JCheckBox>();
    checkboxList = new ArrayList<>();

    Box buttonBox = new Box(BoxLayout.Y_AXIS);
    JButton start = new JButton("Start");
@@ -93,7 +90,7 @@ public class BeatBoxFinal {

    buttonBox.add(userMessage);

    incomingList = new JList();
    incomingList = new JList<>();
    incomingList.addListSelectionListener(new MyListSelectionListener());
    incomingList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    JScrollPane theList = new JScrollPane(incomingList);
@@ -112,7 +109,7 @@ public class BeatBoxFinal {
    GridLayout grid = new GridLayout(16, 16);
    grid.setVgap(1);
    grid.setHgap(2);
    mainPanel = new JPanel(grid);
    JPanel mainPanel = new JPanel(grid);
    background.add(BorderLayout.CENTER, mainPanel);

    for (int i = 0; i < 256; i++) {
@@ -120,12 +117,12 @@ public class BeatBoxFinal {
      c.setSelected(false);
      checkboxList.add(c);
      mainPanel.add(c);
    } // end loop
    }

    theFrame.setBounds(50, 50, 300, 300);
    theFrame.pack();
    theFrame.setVisible(true);
  } // close buildGUI
  }

  public void setUpMidi() {
    try {
@@ -137,24 +134,21 @@ public class BeatBoxFinal {
    } catch (Exception e) {
      e.printStackTrace();
    }

  } // close setUpMidi

  }

  public void buildTrackAndStart() {
    ArrayList<Integer> trackList = null; // this will hold the instruments for each
    ArrayList<Integer> trackList; // this will hold the instruments for each
    sequence.deleteTrack(track);
    track = sequence.createTrack();

    for (int i = 0; i < 16; i++) {

      trackList = new ArrayList<Integer>();
      trackList = new ArrayList<>();

      for (int j = 0; j < 16; j++) {
        JCheckBox jc = (JCheckBox) checkboxList.get(j + (16 * i));
        JCheckBox jc = checkboxList.get(j + (16 * i));
        if (jc.isSelected()) {
          int key = instruments[i];
          trackList.add(new Integer(key));
          trackList.add(key);
        } else {
          trackList.add(null);  // because this slot should be empty in the track
        }
@@ -170,27 +164,26 @@ public class BeatBoxFinal {
    } catch (Exception e) {
      e.printStackTrace();
    }
  } // close method
  }

  public class MyStartListener implements ActionListener {
    public void actionPerformed(ActionEvent a) {
      buildTrackAndStart();
    } // close actionPerformed
  } // close inner class
    }
  }

  public class MyStopListener implements ActionListener {
    public void actionPerformed(ActionEvent a) {
      sequencer.stop();
    } // close actionPerformed
  } // close inner class
    }
  }

  public class MyUpTempoListener implements ActionListener {
    public void actionPerformed(ActionEvent a) {
      float tempoFactor = sequencer.getTempoFactor();
      sequencer.setTempoFactor((float) (tempoFactor * 1.03));
    } // close actionPerformed
  } // close inner class

    }
  }

  public class MyDownTempoListener implements ActionListener {
    public void actionPerformed(ActionEvent a) {
@@ -204,12 +197,11 @@ public class BeatBoxFinal {
      // make an arraylist of just the STATE of the checkboxes
      boolean[] checkboxState = new boolean[256];
      for (int i = 0; i < 256; i++) {
        JCheckBox check = (JCheckBox) checkboxList.get(i);
        JCheckBox check = checkboxList.get(i);
        if (check.isSelected()) {
          checkboxState[i] = true;
        }
      } // close loop
      String messageToSend = null;
      }
      try {
        out.writeObject(userName + nextNum++ + ": " + userMessage.getText());
        out.writeObject(checkboxState);
@@ -217,28 +209,26 @@ public class BeatBoxFinal {
        System.out.println("Sorry dude. Could not send it to the server.");
      }
      userMessage.setText("");
    } // close actionPerformed
  } // close inner class
    }
  }

  public class MyListSelectionListener implements ListSelectionListener {
    public void valueChanged(ListSelectionEvent le) {
      if (!le.getValueIsAdjusting()) {
        String selected = (String) incomingList.getSelectedValue();
        String selected = incomingList.getSelectedValue();
        if (selected != null) {
          // now go to the map, and change the sequence
          boolean[] selectedState = (boolean[]) otherSeqsMap.get(selected);
          boolean[] selectedState = otherSeqsMap.get(selected);
          changeSequence(selectedState);
          sequencer.stop();
          buildTrackAndStart();
        }
      }
    } // close valueChanged
  } // close inner class

    }
  }

  public class RemoteReader implements Runnable {
    boolean[] checkboxState = null;
    String nameToShow = null;
    Object obj = null;

    public void run() {
@@ -251,44 +241,38 @@ public class BeatBoxFinal {
          otherSeqsMap.put(nameToShow, checkboxState);
          listVector.add(nameToShow);
          incomingList.setListData(listVector);
        } // close while
        }
      } catch (Exception ex) {
        ex.printStackTrace();
      }
    } // close run
  } // close inner class
    }
  }

  public class MyPlayMineListener implements ActionListener {
    public void actionPerformed(ActionEvent a) {
      if (mySequence != null) {
        sequence = mySequence;  // restore to my original
        sequence = mySequence;
      }
    }
  }
    } // close actionPerformed
  } // close inner class

  public void changeSequence(boolean[] checkboxState) {
    for (int i = 0; i < 256; i++) {
      JCheckBox check = (JCheckBox) checkboxList.get(i);
      if (checkboxState[i]) {
        check.setSelected(true);
      } else {
        check.setSelected(false);
      JCheckBox check = checkboxList.get(i);
      check.setSelected(checkboxState[i]);
    }
  }
    } // close loop
  } // close changeSequence

  public void makeTracks(ArrayList list) {
    Iterator it = list.iterator();
  public void makeTracks(ArrayList<Integer> list) {
    Iterator<Integer> it = list.iterator();
    for (int i = 0; i < 16; i++) {
      Integer num = (Integer) it.next();
      Integer num = it.next();
      if (num != null) {
        int numKey = num.intValue();
        track.add(makeEvent(144, 9, numKey, 100, i));
        track.add(makeEvent(128, 9, numKey, 100, i + 1));
        track.add(makeEvent(144, 9, num, 100, i));
        track.add(makeEvent(128, 9, num, 100, i + 1));
      }
    }
  }
    } // close loop
  } // close makeTracks()


  public MidiEvent makeEvent(int comd, int chan, int one, int two, int tick) {
    MidiEvent event = null;
@@ -296,12 +280,12 @@ public class BeatBoxFinal {
      ShortMessage a = new ShortMessage();
      a.setMessage(comd, chan, one, two);
      event = new MidiEvent(a, tick);
    } catch (Exception e) {
    } catch (Exception ignored) {
    }
    return event;
  } // close makeEvent
  }

} // close class
}