Commit 29aa6ebb authored by Trisha Gee's avatar Trisha Gee
Browse files

[Ch15] Formatting BeatBox

parent 20d68047
Loading
Loading
Loading
Loading
+27 −34
Changes for src/main/java/ch15/BeatBox.java: 27 added lines, 34 removed lines.
Original line number Diff line number Diff line
package ch15;

import java.awt.*;
import javax.swing.*;
import javax.sound.midi.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;


public class BeatBox {


  JPanel mainPanel;
  ArrayList<JCheckBox> checkboxList;
  Sequencer sequencer;
@@ -76,14 +77,14 @@ public class BeatBox {
      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() {
@@ -94,38 +95,31 @@ public class BeatBox {
      track = sequence.createTrack();
      sequencer.setTempoInBPM(120);

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

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

    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 = 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 {
@@ -134,39 +128,36 @@ public class BeatBox {
      sequencer.setLoopCount(sequencer.LOOP_CONTINUOUSLY);
      sequencer.start();
      sequencer.setTempoInBPM(120);
       } catch(Exception e) {e.printStackTrace();}
    } // close buildTrackAndStart method
            
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  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 void makeTracks(int[] list) {

@@ -187,8 +178,10 @@ public class BeatBox {
      a.setMessage(comd, chan, one, two);
      event = new MidiEvent(a, tick);

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

} // close class
}