Tuesday, 19 February 2013

Java Sound Code

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.sound.sampled.*;

public class audioapp
                        extends JFrame{

  boolean stopaudioCapture = false;
  ByteArrayOutputStream
                 byteOutputStream;
  AudioFormat adFormat;
  TargetDataLine targetDataLine;
  AudioInputStream InputStream;
  SourceDataLine sourceLine;

  public static void main(String args[]){
    new audioapp();
  }

  public audioapp(){
    final JButton capture =
                new JButton("Capture");
    final JButton stop =
                   new JButton("Stop");
    final JButton play =
               new JButton("Playback");

    capture.setEnabled(true);
    stop.setEnabled(false);
    play.setEnabled(false);

    capture.addActionListener(
      new ActionListener(){
        public void actionPerformed(
                        ActionEvent e){
          capture.setEnabled(false);
          stop.setEnabled(true);
          play.setEnabled(false);
          captureAudio();
        }
      }
    );
    getContentPane().add(capture);

    stop.addActionListener(
      new ActionListener(){
        public void actionPerformed(
                        ActionEvent e){
          capture.setEnabled(true);
          stop.setEnabled(false);
          play.setEnabled(true);
          stopaudioCapture = true;
        }
      }
    );
    getContentPane().add(stop);

    play.addActionListener(
      new ActionListener(){
        public void actionPerformed(
                        ActionEvent e){
                playAudio();
        }
      }
    );
    getContentPane().add(play);

    getContentPane().setLayout(
                     new FlowLayout());
    setTitle("Capture/Playback Demo");
    setDefaultCloseOperation(
                        EXIT_ON_CLOSE);
    setSize(250,70);
    setVisible(true);
  }

  private void captureAudio(){
    try{
      adFormat = getAudioFormat();
      DataLine.Info dataLineInfo =
                new DataLine.Info(
                  TargetDataLine.class,
                   adFormat);
      targetDataLine = (TargetDataLine)
                   AudioSystem.getLine(
                         dataLineInfo);
      targetDataLine.open(adFormat);
      targetDataLine.start();

      Thread captureThread =
                new Thread(
                  new CaptureThread());
      captureThread.start();
    } catch (Exception e) {
      System.out.println(e);
      System.exit(0);
    }
  }

  private void playAudio() {
    try{
      byte audioData[] =
                 byteOutputStream.
                         toByteArray();
      InputStream byteInputStream
            = new ByteArrayInputStream(
                            audioData);
      AudioFormat adFormat =
                      getAudioFormat();
      InputStream =
        new AudioInputStream(
          byteInputStream,
          adFormat,
          audioData.length/adFormat.
                       getFrameSize());
      DataLine.Info dataLineInfo =
                new DataLine.Info(
                  SourceDataLine.class,
                          adFormat);
      sourceLine = (SourceDataLine)
                   AudioSystem.getLine(
                         dataLineInfo);
      sourceLine.open(adFormat);
      sourceLine.start();

      Thread playThread =
          new Thread(new PlayThread());
      playThread.start();
    } catch (Exception e) {
      System.out.println(e);
      System.exit(0);
    }
  }

  private AudioFormat getAudioFormat(){
    float sampleRate = 8000.0F;
    int sampleInbits = 16;
    int channels = 1;
    boolean signed = true;
    boolean bigEndian = false;
    return new AudioFormat(
                      sampleRate,
                      sampleInbits,
                      channels,
                      signed,
                      bigEndian);
  }

class CaptureThread extends Thread{
  byte tempBuffer[] = new byte[10000];
  public void run(){
    byteOutputStream =
           new ByteArrayOutputStream();
    stopaudioCapture = false;
    try{
              while(!stopaudioCapture){
                int cnt = targetDataLine.read(
                    tempBuffer,
                    0,
                    tempBuffer.length);
        if(cnt > 0){
                  byteOutputStream.write(
                   tempBuffer, 0, cnt);
        }
      }
      byteOutputStream.close();
    }catch (Exception e) {
      System.out.println(e);
      System.exit(0);
    }
  }
}

class PlayThread extends Thread{
  byte tempBuffer[] = new byte[10000];

  public void run(){
    try{
      int cnt;
      while((cnt = InputStream.
        read(tempBuffer, 0,
            tempBuffer.length)) != -1){
        if(cnt > 0){
          sourceLine.write(
                   tempBuffer, 0, cnt);
        }
      }
     sourceLine.drain();
      sourceLine.close();
    }catch (Exception e) {
      System.out.println(e);
      System.exit(0);
    }
  }
}
}

Sunday, 27 January 2013

Java Sound Track : MIDI Format Audio Program

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.lang.Integer;
import java.util.Hashtable;
import javax.sound.midi.InvalidMidiDataException;
import javax.sound.midi.MidiSystem;
import javax.sound.midi.MidiUnavailableException;
import javax.sound.midi.Receiver;
import javax.sound.midi.Sequence;
import javax.sound.midi.Sequencer;
import javax.sound.midi.Synthesizer;
import javax.sound.midi.Track;
import javax.sound.midi.Transmitter;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.FloatControl;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import javax.swing.*;
import javax.swing.BoxLayout;
import javax.swing.border.TitledBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import quicktime.std.movies.media.MPEGMedia;

/**
 *
 * @author Amol
 */
public class AsoundPlayer extends JComponent {

        boolean midi;
    Sequence sequence;
    Sequencer sequencer;
    Clip clip;
    boolean playing = false;
    int audioLength;
    int audioPosition = 0;

    JButton play;
    JSlider progress;
    JLabel time;
    Timer timer;

    public static void main(String[ ] args)
        throws IOException,
               UnsupportedAudioFileException,
               LineUnavailableException,
               MidiUnavailableException,
               InvalidMidiDataException
    {
        AsoundPlayer player;


        File file = new File("C:/Users/Amol/Documents/NetBeansProjects/Chapter23/src/chapter23/trippygaia1.mid");
        boolean ismidi;
        try {

            MidiSystem.getMidiFileFormat(file);
            ismidi = true;
        }
        catch(InvalidMidiDataException e) {
            ismidi = false;
        }

        player = new AsoundPlayer(file, ismidi);
        JFrame f = new JFrame("SoundPlayer");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.getContentPane( ).add(player, "Center");
        f.pack( );
        f.setVisible(true);
    }

    public AsoundPlayer(File f, boolean isMidi)
        throws IOException,
               UnsupportedAudioFileException,
               LineUnavailableException,
               MidiUnavailableException,
               InvalidMidiDataException
    {
        if (isMidi) {
            midi = true;
            sequencer = MidiSystem.getSequencer( );
            sequencer.open( );

            Synthesizer synth = MidiSystem.getSynthesizer( );
            synth.open( );

            Transmitter transmitter = sequencer.getTransmitter( );
            Receiver receiver = synth.getReceiver( );
            transmitter.setReceiver(receiver);

            sequence = MidiSystem.getSequence(f);
            sequencer.setSequence(sequence);
            audioLength=(int) sequence.getTickLength();

        }
        else {
           midi = false;
           AudioInputStream ain = AudioSystem.getAudioInputStream(f);
           try {
                DataLine.Info info =
                new DataLine.Info(Clip.class,ain.getFormat( ));
                clip = (Clip) AudioSystem.getLine(info);
                clip.open(ain);
            }
            finally {
                ain.close( );
            }
            audioLength = (int)(clip.getMicrosecondLength( )/1000);
        }

        play = new JButton("Play");
        progress = new JSlider(0, audioLength, 0);
        time = new JLabel("0");

        play.addActionListener(new ActionListener( ) {
                public void actionPerformed(ActionEvent e) {
                    if (playing) stop(); else play();
                }
            });

        progress.addChangeListener(new ChangeListener( ) {
                public void stateChanged(ChangeEvent e) {
                    int value = progress.getValue( );
                    if (midi) time.setText(value + "");
                    else time.setText(value/1000 + "." +
                                      (value%1000)/100);
                    if (value != audioPosition) skip(value);
                }
            });

        timer = new javax.swing.Timer(100, new ActionListener( ) {
                public void actionPerformed(ActionEvent e) { tick( ); }
            });

        Box row = Box.createHorizontalBox( );
        row.add(play);
        row.add(progress);
        row.add(time);

        setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
        this.add(row);

        if (midi) addMidiControls( );
        else addSampledControls( );
    }

    public void play(){
        if(midi){
            sequencer.start();
        }else
                clip.start();
         timer.start();
         play.setText("Stop");
         playing=true;
         }
public void stop(){
    timer.stop();
    if(midi){
        sequencer.stop();
        play.setText("Play");
        playing=false;
        }
        }

public void reset(){
    stop();
    if(midi){
        sequencer.setTickPosition(0);

    }
    else clip.setMicrosecondPosition(0);
    audioPosition=0;
    progress.setValue(0);

}
public void skip(int position){
    if(position<0||position>audioLength)
        return;
        audioPosition = position;
        if(midi)
            sequencer.setTickPosition(position);
        else
            clip.setMicrosecondPosition(position*1000);

        progress.setValue(position);




}

public int getLength(){
    return audioLength;

}
public void tick(){
    if(midi && sequencer.isRunning()){
        audioPosition=(int) sequencer.getTickPosition();
        progress.setValue(audioPosition);

    }else if(!midi&& clip.isActive()){
        audioPosition=(int) (clip.getMicrosecondPosition()/1000);
        progress.setValue(audioPosition);


    }
    else reset();
}

public void addSampledControls(){
    try {
FloatControl gainControl=(FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);
if(gainControl !=null){
    this.add(createSlider(gainControl));
    }
    }
catch (Exception e) {

    }
    try {
        FloatControl panControl= (FloatControl) clip.getControl(FloatControl.Type.PAN);
        if(panControl !=null)
            this.add(createSlider(panControl));
    } catch (Exception e) {
    }



}


JSlider createSlider(final FloatControl c){
    if(c==null)return null;
    final JSlider s=new JSlider(0, 1000);
    final float min =c.getMinimum();
    final float max=c.getMaximum();
    final float width=max-min;
    float fval=c.getValue();
    s.setValue((int) ((fval - min) / width * 1000));
    Hashtable<Integer,JLabel>labels=new Hashtable<Integer,JLabel>();
    labels.put(new Integer(0),new JLabel(c.getMinLabel()));
    labels.put(new Integer(500), new JLabel(c.getMidLabel()));
    labels.put(new Integer(1000), new JLabel(c.getMaxLabel()));
    s.setLabelTable(labels);
    s.setPaintLabels(true);
    s.setBorder(new TitledBorder(c.getType().toString()+""+c.getUnits()));
    s.addChangeListener(new ChangeListener() {

            public void stateChanged(ChangeEvent e) {
                int i = s.getValue();
                float f=min+(i*width/1000.0f);
                c.setValue(f);

            }
        });
    return s;

}
void addMidiControls(){
    final JSlider tempo=new JSlider(50, 200);
    tempo.setValue((int) (sequencer.getTempoFactor()*100));
tempo.setBorder(new TitledBorder("Tempo Adjustment (%)"));
Hashtable labels=new Hashtable();
labels.put(new Integer(50),new JLabel("50%"));
labels.put(new Integer(100),new JLabel("100%"));
labels.put(new Integer(200),new JLabel("200%"));
tempo.setLabelTable(labels);
tempo.setPaintLabels(true);
tempo.addChangeListener(new ChangeListener() {

            public void stateChanged(ChangeEvent e) {

            sequencer.setTempoFactor(tempo.getValue()/100.0f);
            }
        });
        this.add(tempo);
        Track[] tracks=sequence.getTracks();
        for(int i=0;i<tracks.length;i++){
            final int tracknum=i;
            final JCheckBox solo=new JCheckBox("solo");
            final JCheckBox mute=new JCheckBox("mute");
            solo.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {
            sequencer.setTrackSolo(tracknum,solo.isSelected());

                }
            });

            mute.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent e) {
            sequencer.setTrackMute(tracknum,mute.isSelected());


                }
            });
            Box box = Box.createHorizontalBox();
 box.add(new JLabel("Track"+tracknum));
 box.add(box.createHorizontalStrut(10));
 box.add(solo);
 box.add(mute);
 box.add(Box.createVerticalGlue());
 this.add(box);
        }


}

    }

Wednesday, 16 January 2013

Java Swing :- Label Transparent Program


import java.awt.*;
import javax.swing.*;
/*
<APPLET
CODE = layerTrans.class
WIDTH = 350
HEIGHT = 280 >
</APPLET>
*/
public class layerTrans extends JApplet
{
JLabel labels[];
public void init()
{
Container contentPane = getContentPane();
contentPane.setLayout(null);
labels = new JLabel[6];
labels[0] = new JLabel("Label 0");
labels[0].setOpaque(false);
labels[0].setBorder(BorderFactory.createEtchedBorder());
contentPane.add(labels[0]);
labels[1] = new JLabel("Label 1");
labels[1].setOpaque(false);
labels[1].setBorder(BorderFactory.createEtchedBorder());
contentPane.add(labels[1]);
labels[2] = new JLabel("Label 2");
labels[2].setOpaque(false);
labels[2].setBorder(BorderFactory.createEtchedBorder());
contentPane.add(labels[2]);
labels[3] = new JLabel("Label 3");
labels[3].setOpaque(false);
labels[3].setBorder(BorderFactory.createEtchedBorder());
contentPane.add(labels[3]);
labels[4] = new JLabel("Label 4");
labels[4].setOpaque(false);
labels[4].setBorder(BorderFactory.createEtchedBorder());
contentPane.add(labels[4]);
labels[5] = new JLabel("Label 5");
labels[5].setOpaque(false);
labels[5].setBorder(BorderFactory.createEtchedBorder());
contentPane.add(labels[5]);
for(int loop_index = 0; loop_index < 6; loop_index++) {
labels[loop_index].setBounds(40 * loop_index, 40 *
loop_index, 100, 60);
}
}
}

Java Swing :- Box Program


import java.awt.*;
import javax.swing.*;
/* <APPLET
CODE = boxlayout.class
WIDTH = 250
HEIGHT = 200 >
</APPLET>
*/
public class boxlayout extends JApplet
{
public void init()
{
Container contentPane = getContentPane();
JPanel jpanel1, jpanel2, jpanel3;
jpanel1 = new JPanel();
jpanel2 = new JPanel();
jpanel3 = new JPanel();
jpanel1.setLayout(new BoxLayout(jpanel1, BoxLayout.Y_AXIS));
jpanel2.setLayout(new BoxLayout(jpanel2, BoxLayout.X_AXIS));
jpanel3.setLayout(new BoxLayout(jpanel3, BoxLayout.Y_AXIS));
contentPane.setLayout(new FlowLayout());
jpanel1.add(new JTextField("Text 1"));
jpanel1.add(new JTextField("Text 2"));
jpanel1.add(new JTextField("Text 3"));
jpanel1.add(new JTextField("Text 4"));
jpanel2.add(new JTextField("Text 1"));
jpanel2.add(new JTextField("Text 2"));
jpanel2.add(new JTextField("Text 3"));
jpanel2.add(new JTextField("Text 4"));
jpanel3.add(new JTextField("Text 1"));
jpanel3.add(new JTextField("Text 2"));
jpanel3.add(new JTextField("Text 3"));
jpanel3.add(new JTextField("Text 4"));
contentPane.add(jpanel1);
contentPane.add(jpanel2);
contentPane.add(jpanel3);
}
}

Java Swing :- JLabel using Panel Program


import java.awt.*;
import javax.swing.*;
import javax.swing.border.*;
/*
<APPLET
CODE = box.class
WIDTH = 450
HEIGHT = 400 >
</APPLET>
*/
public class box extends JApplet
{
public void init()
{
Container contentPane = getContentPane();
contentPane.setLayout(new FlowLayout());
JPanel jpanel1 = new JPanel();
jpanel1.setBorder(
BorderFactory.createTitledBorder(
BorderFactory.createEtchedBorder(),
"Glue"));
jpanel1.setLayout(new BoxLayout(jpanel1, BoxLayout.X_AXIS));
jpanel1.add(Box.createGlue());
jpanel1.add(new JTextField("Text 1"));
jpanel1.add(Box.createGlue());
jpanel1.add(new JTextField("Text 2"));
jpanel1.add(Box.createGlue());
jpanel1.add(new JTextField("Text 3"));
jpanel1.add(Box.createGlue());
contentPane.add(jpanel1);
JPanel jpanel2 = new JPanel();
jpanel2.setBorder(
BorderFactory.createTitledBorder(
BorderFactory.createEtchedBorder(),
"Struts"));
jpanel2.setLayout(new BoxLayout(jpanel2, BoxLayout.X_AXIS));
jpanel2.add(new JTextField("Text 1"));
jpanel2.add(Box.createHorizontalStrut(20));
jpanel2.add(new JTextField("Text 2"));
jpanel2.add(Box.createHorizontalStrut(20));
jpanel2.add(new JTextField("Text 3"));
contentPane.add(jpanel2);
JPanel jpanel3 = new JPanel();
jpanel3.setBorder(
BorderFactory.createTitledBorder(
BorderFactory.createEtchedBorder(),
"Rigid"));
jpanel3.setLayout(new BoxLayout(jpanel3, BoxLayout.X_AXIS));
jpanel3.add(Box.createRigidArea(new Dimension(10, 40)));
jpanel3.add(new JTextField("Text 1"));
jpanel3.add(Box.createRigidArea(new Dimension(10, 40)));
jpanel3.add(new JTextField("Text 2"));
jpanel3.add(Box.createRigidArea(new Dimension(10, 40)));
jpanel3.add(new JTextField("Text 3"));
contentPane.add(jpanel3);
JPanel jpanel4 = new JPanel();
jpanel4.setBorder(
BorderFactory.createTitledBorder(
BorderFactory.createEtchedBorder(),
"Glue"));
jpanel4.setLayout(new BoxLayout(jpanel4, BoxLayout.Y_AXIS));
jpanel4.add(Box.createGlue());
jpanel4.add(new JTextField("Text 1"));
jpanel4.add(Box.createGlue());
jpanel4.add(new JTextField("Text 2"));
jpanel4.add(Box.createGlue());
jpanel4.add(new JTextField("Text 3"));
jpanel4.add(Box.createGlue());
contentPane.add(jpanel4);
JPanel jpanel5 = new JPanel();
jpanel5.setBorder(
BorderFactory.createTitledBorder(
BorderFactory.createEtchedBorder(),
"Struts"));
jpanel5.setLayout(new BoxLayout(jpanel5, BoxLayout.Y_AXIS));
jpanel5.add(new JTextField("Text 1"));
jpanel5.add(Box.createVerticalStrut(30));
jpanel5.add(new JTextField("Text 2"));
jpanel5.add(Box.createVerticalStrut(30));
jpanel5.add(new JTextField("Text 3"));
contentPane.add(jpanel5);
JPanel jpanel6 = new JPanel();
jpanel6.setBorder(
BorderFactory.createTitledBorder(
BorderFactory.createEtchedBorder(),
"Rigid"));
jpanel6.setLayout(new BoxLayout(jpanel6, BoxLayout.Y_AXIS));
jpanel6.add(Box.createRigidArea(new Dimension(40, 60)));
jpanel6.add(new JTextField("Text 1"));
jpanel6.add(Box.createRigidArea(new Dimension(40, 60)));
jpanel6.add(new JTextField("Text 2"));
jpanel6.add(Box.createRigidArea(new Dimension(40, 60)));
jpanel6.add(new JTextField("Text 3"));
contentPane.add(jpanel6);
}
}

Java Swing : Menu Program


import javax.swing.*;
/*
  <APPLET
  CODE="Pickupmenu"
  WIDTH=400
  HEIGHT=100>
  </APPLET>
*/
public class Pickupmenu extends JApplet {

  public void init() {
    try {
      SwingUtilities.invokeAndWait(
        new Runnable() {
          public void run() {
            makeGUI();
          }
        }
      );
    } catch (Exception exc) {
      System.out.println("Sorry, your order cannot be processed " +
                         exc);
    }
  }    

  private void makeGUI() {

    JTabbedPane jtp = new JTabbedPane();
    jtp.addTab("Pizza", new Piz());
    jtp.addTab("Toppings", new Top());
    jtp.addTab("Beverage", new Bevr());
jtp.addTab("Add-ons", new AdOn());
  add(jtp);
  }
}

class Piz extends JPanel {

  public Piz() {

    JRadioButton a1 = new JRadioButton("Classic");
    add(a1);
    JRadioButton a2 = new JRadioButton("Hand-tossed");
    add(a2);
    JRadioButton a3 = new JRadioButton("Special Crust");
    add(a3);
  }
}

class Top extends JPanel {

  public Top() {

    JCheckBox b1 = new JCheckBox("Onion");
    add(b1);
    JCheckBox b2 = new JCheckBox("Capsicum");
    add(b2);
    JCheckBox b3 = new JCheckBox("Tomato");
    add(b3);
JCheckBox b4 = new JCheckBox("Plain Cheese");
    add(b3);

  }
}

class Bevr extends JPanel {

  public Bevr() {
   
    JComboBox c = new JComboBox();
    c.addItem("Coke");
    c.addItem("Pepsi");
    c.addItem("7'up");
    c.addItem("Sprite");
    add(c);
  }
}

class AdOn extends JPanel {

  public AdOn() {
   
    JButton d1 = new JButton("Garlic Bread");
add(d1);
    JButton d2 = new JButton("Chocolate Cake");
add(d2);
    JButton d3 = new JButton("Salads");
add(d3);
  }
}

Sunday, 6 January 2013

Java Swing:- ProgressBar Magic Program

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
/*
<APPLET
CODE = progressbarupdate.class
WIDTH = 400
HEIGHT = 200 >
</APPLET>
*/
public class progressbarupdate extends JApplet
{
JProgressBar jprogressbar = new JProgressBar();
JButton jbutton = new JButton("Increment the progress bar");
public void init()
{
Container contentPane = getContentPane();
contentPane.setLayout(new FlowLayout());
contentPane.add(jprogressbar);
contentPane.add(jbutton);
jprogressbar.setStringPainted(true);
jbutton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
jprogressbar.setValue(jprogressbar.getValue() + 5);
}
});
}
}