ysyang16 / WebProgramming

0 stars 7 forks source link

Update 버튼 만들기 #1

Open ysyang16 opened 6 years ago

ysyang16 commented 6 years ago

과제

  1. Stop and Start 를 구현하는 update 버튼 만들기
  2. 체크박스를 전체 off 로 하는 reset 버튼 만들기
kyungkeonchung commented 6 years ago

package ckk;

import java.awt.; import javax.swing.; import javax.sound.midi.; import java.util.; import java.awt.event.*;

public class BeatBox {

JPanel mainPanel;
ArrayList<JCheckBox> checkboxList;
Sequencer sequencer;
Sequence sequence;
Track track;
JFrame theFrame;

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 BeatBox().buildGUI();
}

public void buildGUI() {
    theFrame = new JFrame("CKK BEATBOX");
    theFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    BorderLayout layout = new BorderLayout();
    JPanel background = new JPanel(layout);
    background.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));

    checkboxList = new ArrayList<JCheckBox>();
    Box buttonBox = new Box(BoxLayout.Y_AXIS);

    JButton start = new JButton("Start");
    start.addActionListener(new MyStartListener());
    buttonBox.add(start);         

    JButton stop = new JButton("Stop");
    stop.addActionListener(new MyStopListener());
    buttonBox.add(stop);

    JButton update = new JButton("Update");
    update.addActionListener(new MyUpdateListener());
    buttonBox.add(update);

    JButton upTempo = new JButton("Tempo Up");
    upTempo.addActionListener(new MyUpTempoListener());
    buttonBox.add(upTempo);

    JButton downTempo = new JButton("Tempo Down");
    downTempo.addActionListener(new MyDownTempoListener());
    buttonBox.add(downTempo);

    JButton reset=new JButton("reset");
    reset.addActionListener(new MyResetListener()); 
    buttonBox.add(reset); 

    Box nameBox = new Box(BoxLayout.Y_AXIS);
    for (int i = 0; i < 16; i++) {
       nameBox.add(new Label(instrumentNames[i]));
    }

    background.add(BorderLayout.EAST, buttonBox);
    background.add(BorderLayout.WEST, nameBox);

    theFrame.getContentPane().add(background);

    GridLayout grid = new GridLayout(16,16);
    grid.setVgap(1);
    grid.setHgap(2);
    mainPanel = new JPanel(grid);
    background.add(BorderLayout.CENTER, mainPanel);

    for (int i = 0; i < 256; i++) {                    
        JCheckBox c = new JCheckBox();
        c.setSelected(false);
        checkboxList.add(c);
        mainPanel.add(c);            
    } // end loop

    setUpMidi();

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

public void setUpMidi() {
  try {
    sequencer = MidiSystem.getSequencer();
    sequencer.open();
    sequence = new Sequence(Sequence.PPQ,4);
    track = sequence.createTrack();
    sequencer.setTempoInBPM(120);

  } catch(Exception e) {e.printStackTrace();}
} // close method

public void buildTrackAndStart() {
  int[] trackList = null;

  sequence.deleteTrack(track);
  track = sequence.createTrack();

    for (int i = 0; i < 16; i++) {
      trackList = new int[16];

      int key = instruments[i];   

      for (int j = 0; j < 16; j++ ) {         
          JCheckBox jc = (JCheckBox) checkboxList.get(j + (16*i));
          if ( jc.isSelected()) {
             trackList[j] = key;
          } else {
             trackList[j] = 0;
          }                    
       } // close inner loop

       makeTracks(trackList);
       track.add(makeEvent(176,1,127,0,16));  
   } // close outer

   track.add(makeEvent(192,9,1,0,15));      
   try {
       sequencer.setSequence(sequence); 
     sequencer.setLoopCount(sequencer.LOOP_CONTINUOUSLY);                   
       sequencer.start();
       sequencer.setTempoInBPM(120);
   } catch(Exception e) {e.printStackTrace();}
} // close buildTrackAndStart method

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

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

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

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

 public class MyUpdateListener implements ActionListener{
    public void actionPerformed(ActionEvent e) {
           sequencer.stop();
           buildTrackAndStart();
    }
 }

 public class MyResetListener implements ActionListener{   
     public void actionPerformed(ActionEvent a) {
         for(int i=0; i<256; i++){ 
             (checkboxList.get(i)).setSelected(false); 
             }
         } 
     } 

public void makeTracks(int[] list) {        

   for (int i = 0; i < 16; i++) {
      int key = list[i];

      if (key != 0) {
         track.add(makeEvent(144,9,key, 100, i));
         track.add(makeEvent(128,9,key, 100, i+1));
      }
   }
}

public  MidiEvent makeEvent(int comd, int chan, int one, int two, int tick) {
    MidiEvent event = null;
    try {
        ShortMessage a = new ShortMessage();
        a.setMessage(comd, chan, one, two);
        event = new MidiEvent(a, tick);

    } catch(Exception e) {e.printStackTrace(); }
    return event;
}

} // close class

shinheebeen commented 6 years ago

import java.awt.; import javax.swing.; import java.io.; import javax.sound.midi.; import java.util.; import java.awt.event.;

public class BeatBox {

  JPanel mainPanel;
  ArrayList<JCheckBox> checkboxList;
  Sequencer sequencer;
  Sequence sequence;
  Sequence mySequence = null;
  Track track;
  JFrame theFrame;

  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 BeatBox().buildGUI();
  }

  public void buildGUI() {
      theFrame = new JFrame("Test BeatBox");
      theFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      BorderLayout layout = new BorderLayout();
      JPanel background = new JPanel(layout);
      background.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));

      checkboxList = new ArrayList<JCheckBox>();
      Box buttonBox = new Box(BoxLayout.Y_AXIS);

      JButton start = new JButton("Start");
      start.addActionListener(new MyStartListener());
      buttonBox.add(start);

      JButton stop = new JButton("Stop");
      stop.addActionListener(new MyStopListener());
      buttonBox.add(stop);

      JButton update=new JButton("Update");
      update.addActionListener(new MyUpdateListener());
      buttonBox.add(update);

      JButton upTempo = new JButton("Tempo Up");
      upTempo.addActionListener(new MyUpTempoListener());
      buttonBox.add(upTempo);

       JButton downTempo = new JButton("Tempo Down");
      downTempo.addActionListener(new MyDownTempoListener());
      buttonBox.add(downTempo);

      JButton reset=new JButton("reset");
      reset.addActionListener(new MyResetListener());
      buttonBox.add(reset);

      Box nameBox = new Box(BoxLayout.Y_AXIS);
      for (int i = 0; i < 16; i++) {
          nameBox.add(new Label(instrumentNames[i]));
      }

      background.add(BorderLayout.EAST, buttonBox);
      background.add(BorderLayout.WEST, nameBox);

      theFrame.getContentPane().add(background);

      GridLayout grid = new GridLayout(16,16);
      grid.setVgap(1);
      grid.setHgap(2);
      mainPanel = new JPanel(grid);
      background.add(BorderLayout.CENTER, mainPanel);

      for (int i = 0; i < 256; i++) {                    
            JCheckBox c = new JCheckBox();
            c.setSelected(false);
            checkboxList.add(c);
            mainPanel.add(c);            
      }

      setUpMidi();

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

 public void setUpMidi() {
   try {
    sequencer = MidiSystem.getSequencer();
    sequencer.open();
    sequence = new Sequence(Sequence.PPQ,4);
    track = sequence.createTrack();
    sequencer.setTempoInBPM(120);

   } catch(Exception e) {e.printStackTrace();}
}

 public void buildTrackAndStart() {

    int[] trackList = null;

    sequence.deleteTrack(track);
    track = sequence.createTrack();

  for (int i = 0; i < 16; i++) {
     trackList = new int[16];

     int key = instruments[i];

     for (int j = 0; j < 16; j++ ) {         
           JCheckBox jc = (JCheckBox) checkboxList.get(j + (16*i));

          if ( jc.isSelected()) {
             trackList[j] = key;
          } else {
             trackList[j] = 0;
          }       
      } 

   makeTracks(trackList);
 } 

 track.add(makeEvent(192,9,1,0,15));

   try {

       sequencer.setSequence(sequence);  
       sequencer.setLoopCount(sequencer.LOOP_CONTINUOUSLY);                  
       sequencer.start();
       sequencer.setTempoInBPM(120);
   } catch(Exception e) {e.printStackTrace();}

  } // close method

//============================================================== inner class listeners

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

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

public class MyUpdateListener implements ActionListener{
      public void actionPerformed(ActionEvent a){
            sequencer.stop();
            buildTrackAndStart();
      }
}

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

public class MyDownTempoListener implements ActionListener {
    public void actionPerformed(ActionEvent a) {
        float tempoFactor = sequencer.getTempoFactor();
        sequencer.setTempoFactor((float)(tempoFactor * .97));
    }
}

  public class MyResetListener implements ActionListener{

        public void actionPerformed(ActionEvent a){
              for(int i=0; i<256; i++){
                   (checkboxList.get(i)).setSelected(false);

              }
               sequencer.stop();
             }
  }

 public void makeTracks(int[] list) {

     for (int i = 0; i < 16; i++) {
       int key = list[i];

       if (key != 0) {
           track.add(makeEvent(144,9,key, 100, i));
           track.add(makeEvent(128,9,key, 100, i + 1));
       }
     }
  }

 public  MidiEvent makeEvent(int comd, int chan, int one, int two, int tick) {
      MidiEvent event = null;
      try {
        ShortMessage a = new ShortMessage();
        a.setMessage(comd, chan, one, two);
        event = new MidiEvent(a, tick);

        }catch(Exception e) { }
      return event;
   }

}

smrlswja9963 commented 6 years ago
      JButton stopstart = new JButton("update");
      stopstart.addActionListener(new MystopandstartListener());
      buttonBox.add(stopstart);

      JButton Reset = new JButton("reset");
      Reset.addActionListener(new MyResetListener());
      buttonBox.add(reset);

      public class MystopandstartListener implements ActionListener {
      public void actionPerformed(ActionEvent a) {
      sequencer.stop();
      buildTrackAndStart();

      public class MyResetListener implements ActionListener {
      public void actionPerformed(ActionEvent a) {
        sequencer.stop();
        clearframe();

      public void clearframe() {
      for(int i=0; i<256; i++) {
        JCheckBox Jc = checkboxList.get(i);
        Jc.setSelected(false);
            }   
}
LeeBoHyeon commented 6 years ago

JButton update = new JButton("update");
update.addActionListener(new MyUpdateListener()); buttonBox.add(update);
JButton reset = new JButton("reset");
reset.addActionListener(new MyResetListener()); buttonBox.add(reset);

public class MyUpdateListener implements ActionListener { public void actionPerformed(ActionEvent a) { sequencer.stop(); buildTrackAndStart(); } } public class MyResetListener implements ActionListener { public void actionPerformed(ActionEvent a) { for (int i = 0; i < 256; i++) { JCheckBox check = (JCheckBox) checkboxList.get(i); check.setSelected(false); } sequencer.stop(); } }

mihyeon79 commented 6 years ago

import java.awt.; import javax.swing.; import java.io.; import javax.sound.midi.; import java.util.; import java.awt.event.;

public class UpDateBeatBoxSaveOnly { // implements MetaEventListener

  JPanel mainPanel;
  ArrayList<JCheckBox> checkboxList;
  // int bpm = 120;
  Sequencer sequencer;
  Sequence sequence;
  Sequence mySequence = null;
  Track track;
  JFrame theFrame;

  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 UpDateBeatBoxSaveOnly().buildGUI();
  }

  public void buildGUI() {
      theFrame = new JFrame("Cyber BeatBox");
      theFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      BorderLayout layout = new BorderLayout();
      JPanel background = new JPanel(layout);
      background.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));

      checkboxList = new ArrayList<JCheckBox>();
      Box buttonBox = new Box(BoxLayout.Y_AXIS);

      JButton start = new JButton("Start");
      start.addActionListener(new MyStartListener());
      buttonBox.add(start);

      JButton stop = new JButton("Stop");
      stop.addActionListener(new MyStopListener());
      buttonBox.add(stop);

      JButton upTempo = new JButton("Tempo Up");
      upTempo.addActionListener(new MyUpTempoListener());
      buttonBox.add(upTempo);

       JButton downTempo = new JButton("Tempo Down");
      downTempo.addActionListener(new MyDownTempoListener());
      buttonBox.add(downTempo);

      JButton saveIt = new JButton("Serialize It");  // new button
      saveIt.addActionListener(new MySendListener());
      buttonBox.add(saveIt);

      JButton restore = new JButton("Restore");     // new button
      restore.addActionListener(new MyReadInListener());
      buttonBox.add(restore);

      JButton update = new JButton("UpDate");
      update.addActionListener(new MyUpDateListener());
      buttonBox.add(update);

      JButton reset = new JButton("Reset");
      reset.addActionListener(new MyResetListener());
      buttonBox.add(reset);

      Box nameBox = new Box(BoxLayout.Y_AXIS);
      for (int i = 0; i < 16; i++) {
          nameBox.add(new Label(instrumentNames[i]));
      }

      background.add(BorderLayout.EAST, buttonBox);
      background.add(BorderLayout.WEST, nameBox);

      theFrame.getContentPane().add(background);

      GridLayout grid = new GridLayout(16,16);
      grid.setVgap(1);
      grid.setHgap(2);
      mainPanel = new JPanel(grid);
      background.add(BorderLayout.CENTER, mainPanel);

      for (int i = 0; i < 256; i++) {                    
            JCheckBox c = new JCheckBox();
            c.setSelected(false);
            checkboxList.add(c);
            mainPanel.add(c);            
      } // end loop

      setUpMidi();

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

 public void setUpMidi() {
   try {
    sequencer = MidiSystem.getSequencer();
    sequencer.open();
    // sequencer.addMetaEventListener(this);
    sequence = new Sequence(Sequence.PPQ,4);
    track = sequence.createTrack();
    sequencer.setTempoInBPM(120);

   } catch(Exception e) {e.printStackTrace();}
} // close method

/ public class MyCheckBoxListener implements ItemListener { public void itemStateChanged(ItemEvent ev) {
// might add real-time removal or addition, probably not because of timing } } // close inner class
/

 public void buildTrackAndStart() {
    // this will hold the instruments for each vertical column,
    // in other words, each tick (may have multiple instruments)
    int[] trackList = null;

    sequence.deleteTrack(track);
    track = sequence.createTrack();

  for (int i = 0; i < 16; i++) {
     trackList = new int[16];

     int key = instruments[i];

     for (int j = 0; j < 16; j++ ) {         
           JCheckBox jc = (JCheckBox) checkboxList.get(j + (16*i));

          if ( jc.isSelected()) {
             trackList[j] = key;
          } else {
             trackList[j] = 0;
          }       
      } // close inner

   makeTracks(trackList);
 } // close outer

 track.add(makeEvent(192,9,1,0,15)); // - so we always go to full 16 beats 

   try {

       sequencer.setSequence(sequence);  
       sequencer.setLoopCount(sequencer.LOOP_CONTINUOUSLY);                  
       sequencer.start();
       sequencer.setTempoInBPM(120);
   } catch(Exception e) {e.printStackTrace();}

  } // close method

//============================================================== inner class listeners

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

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

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

public class MyDownTempoListener implements ActionListener {
    public void actionPerformed(ActionEvent a) {
        float tempoFactor = sequencer.getTempoFactor();
        sequencer.setTempoFactor((float)(tempoFactor * .97));
    }
}

public class MySendListener implements ActionListener {    // new - save
   public void actionPerformed(ActionEvent a) {
      // 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);
         if (check.isSelected()) {
            checkboxState[i] = true;
         }
      }

     try {
        FileOutputStream fileStream = new FileOutputStream(
            new File("Checkbox.ser"));
        ObjectOutputStream os = new ObjectOutputStream(fileStream);
        os.writeObject(checkboxState);
     } catch(Exception ex) {
         ex.printStackTrace();
     }

   } // close method
 } // close inner class

public class MyReadInListener implements ActionListener {  // new - restore
    public void actionPerformed(ActionEvent a) {
      // read in the thing

      boolean[] checkboxState = null;
      try {
          FileInputStream fileIn = new FileInputStream(
              new File("Checkbox.ser"));
          ObjectInputStream is = new ObjectInputStream(fileIn);
          checkboxState = (boolean[]) is.readObject();

      } catch(Exception ex) {ex.printStackTrace();}

          // now reset the sequence to be this
      for (int i = 0; i < 256; i++) {
         JCheckBox check = (JCheckBox) checkboxList.get(i);
         if (checkboxState[i]) {
            check.setSelected(true);
         } else {
            check.setSelected(false);
         }
     } 

    // now stop sequence and restart
    sequencer.stop(); 
    buildTrackAndStart();
  } // close method

} // close inner class

public class MyUpDateListener implements ActionListener {

public void actionPerformed(ActionEvent arg0) {

sequencer.stop(); buildTrackAndStart();

}

}

public class MyResetListener implements ActionListener{

 public void actionPerformed(ActionEvent a) {
  for(int i = 0; i<256; i++) {
   (checkboxList.get(i)).setSelected(false);
  }
  sequencer.stop();
 }
}

//==============================================================

 public void makeTracks(int[] list) {

     for (int i = 0; i < 16; i++) {
       int key = list[i];

       if (key != 0) {
           track.add(makeEvent(144,9,key, 100, i));
           track.add(makeEvent(128,9,key, 100, i + 1));
       }
     }
  }

 public  MidiEvent makeEvent(int comd, int chan, int one, int two, int tick) {
      MidiEvent event = null;
      try {
        ShortMessage a = new ShortMessage();
        a.setMessage(comd, chan, one, two);
        event = new MidiEvent(a, tick);

        }catch(Exception e) { }
      return event;
   }
phonyuo commented 6 years ago

import java.awt.; import javax.swing.; import javax.sound.midi.; import java.util.; import java.awt.event.*;

public class BeatBox {

JPanel mainPanel; ArrayList checkboxList; Sequencer sequencer; Sequence sequence; Track track; JFrame theFrame;

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 BeatBox().buildGUI(); }

public void buildGUI() { theFrame = new JFrame("CKK BEATBOX"); theFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); BorderLayout layout = new BorderLayout(); JPanel background = new JPanel(layout); background.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));

checkboxList = new ArrayList<JCheckBox>();
Box buttonBox = new Box(BoxLayout.Y_AXIS);

JButton start = new JButton("Start");
start.addActionListener(new MyStartListener());
buttonBox.add(start);         

JButton stop = new JButton("Stop");
stop.addActionListener(new MyStopListener());
buttonBox.add(stop);

JButton update = new JButton("Update");
update.addActionListener(new MyUpdateListener());
buttonBox.add(update);

JButton upTempo = new JButton("Tempo Up");
upTempo.addActionListener(new MyUpTempoListener());
buttonBox.add(upTempo);

JButton downTempo = new JButton("Tempo Down");
downTempo.addActionListener(new MyDownTempoListener());
buttonBox.add(downTempo);

JButton reset=new JButton("reset");
reset.addActionListener(new MyResetListener()); 
buttonBox.add(reset); 

Box nameBox = new Box(BoxLayout.Y_AXIS);
for (int i = 0; i < 16; i++) {
   nameBox.add(new Label(instrumentNames[i]));
}

background.add(BorderLayout.EAST, buttonBox);
background.add(BorderLayout.WEST, nameBox);

theFrame.getContentPane().add(background);

GridLayout grid = new GridLayout(16,16);
grid.setVgap(1);
grid.setHgap(2);
mainPanel = new JPanel(grid);
background.add(BorderLayout.CENTER, mainPanel);

for (int i = 0; i < 256; i++) {                    
    JCheckBox c = new JCheckBox();
    c.setSelected(false);
    checkboxList.add(c);
    mainPanel.add(c);            
} // end loop

setUpMidi();

theFrame.setBounds(50,50,300,300);
theFrame.pack();
theFrame.setVisible(true);

} // close method

public void setUpMidi() { try { sequencer = MidiSystem.getSequencer(); sequencer.open(); sequence = new Sequence(Sequence.PPQ,4); track = sequence.createTrack(); sequencer.setTempoInBPM(120);

} catch(Exception e) {e.printStackTrace();} } // close method

public void buildTrackAndStart() { int[] trackList = null;

sequence.deleteTrack(track); track = sequence.createTrack();

for (int i = 0; i < 16; i++) {
  trackList = new int[16];

  int key = instruments[i];   

  for (int j = 0; j < 16; j++ ) {         
      JCheckBox jc = (JCheckBox) checkboxList.get(j + (16*i));
      if ( jc.isSelected()) {
         trackList[j] = key;
      } else {
         trackList[j] = 0;
      }                    
   } // close inner loop

   makeTracks(trackList);
   track.add(makeEvent(176,1,127,0,16));  

} // close outer

track.add(makeEvent(192,9,1,0,15));
try { sequencer.setSequence(sequence); sequencer.setLoopCount(sequencer.LOOP_CONTINUOUSLY);
sequencer.start(); sequencer.setTempoInBPM(120); } catch(Exception e) {e.printStackTrace();} } // close buildTrackAndStart method

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

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

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

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

public class MyUpdateListener implements ActionListener{ public void actionPerformed(ActionEvent e) { sequencer.stop(); buildTrackAndStart(); } }

public class MyResetListener implements ActionListener{
public void actionPerformed(ActionEvent a) { for(int i=0; i<256; i++){ (checkboxList.get(i)).setSelected(false); } } }

public void makeTracks(int[] list) {

for (int i = 0; i < 16; i++) { int key = list[i];

  if (key != 0) {
     track.add(makeEvent(144,9,key, 100, i));
     track.add(makeEvent(128,9,key, 100, i+1));
  }

} }

public MidiEvent makeEvent(int comd, int chan, int one, int two, int tick) { MidiEvent event = null; try { ShortMessage a = new ShortMessage(); a.setMessage(comd, chan, one, two); event = new MidiEvent(a, tick);

} catch(Exception e) {e.printStackTrace(); }
return event;

} } // close class