Guitar Codex Plus 1.0

GuitarCodex_PlusJava Sound & Music Software

Descrição:

GuitarCodexPlus 1.0 pode ser baixado do nosso site aqui de graça. O arquivo GuitarCodex Plus.jar está zipado junto com suas imagens de uso. As versões mais populares do programa são 4.5 e 1.0. O programa fica na subcategoria Produção de Música, que fica dentro de Multimídia. Esse software foi originalmente criado por Robert Leh.

Publisher’s description:

GuitarCodex Plus is a guitar application with a midi interface for players of all levels. You can use it as a tablature chord dictionary and more. GuitarCodex Plus allows you to see and hear chords, scales and displays associated guitar chords in a graphical representation.

Please note all the files in this package are subject to copyright.

Copyright (c) 2002 Robert Leh (r.leh@microtools.de). All Rights Reserved.

Permission to use, copy, and distribute this software and its documentation for NON-COMMERCIAL purposes and without fee is hereby granted provided that this copyright notice appears in all copies. You may not reverse engineer or decompile the software.

THE AUTHOR MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THIS SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. THE AUTHOR SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.

Link download: GuitarCodex_Plus.rar 137KB

http://www.4shared.com/zip/K1HP9_9Eba/GuitarCodex_Plus.html

Drummer: Java Sound MIDI

DrummerAlgum tempo estou estudando essa API do Java a Java Sound e estou começando a enrede-la, mas aos poucos vou indo… Estou implementando essa bateria meio tosca mesmo só pra aprender a lidar com ela (API) andei vendo vários exemplos pela internet, mas se alguém puder ajudar, contribuir serei grato.

import javax.sound.midi.*;

import java.awt.Cursor;
import java.awt.Font;
import java.awt.Rectangle;
import java.awt.event.*;
import javax.swing.*;

/**
 * This program the MIDI percussion channel with a Swing window. It monitors
 * keystrokes and mouse motion in the window and uses them to create music.
 * Keycodes between 35 and 81, inclusive, generate different percussive sounds.
 * See the VK_ constants in java.awt.event.KeyEvent, or just experiment. Mouse
 * position controls volume: move the mouse to the right of the window to
 * increase the volume.
 */

// http://www.onjava.com/pub/a/onjava/excerpt/jenut3_ch17/index1.html?page=2
public class Drummer extends JFrame {

    private static final long serialVersionUID = 1L;

    private static JLabel jlbInformations = null;
    private static JLabel jlbInstrument = null;
    private static JLabel Cymbal = null;
    private static JLabel Cymbal01 = null;
    private static JLabel Cymbal02 = null;
    private static JLabel Cymbal03 = null;

    private static JLabel Drum = null;
    private static JLabel Drum01 = null;
    private static JLabel Drum02 = null;
    private static JLabel Drum03 = null;

    // The channel we play on: 10 is for percussion
    MidiChannel channel;
    // Default volume is 50%
    int velocity = 64;

    public static void main(String[] args) throws MidiUnavailableException {
        // We don't need a Sequencer in this example, since we send MIDI
        // events directly to the Synthesizer instead.
        Synthesizer synthesizer = MidiSystem.getSynthesizer();
        synthesizer.open();
        JFrame frame = new Drummer(synthesizer);

        frame.add(jlbInformations, null);
        frame.add(jlbInstrument, null);
        frame.add(Cymbal, null);
        frame.add(Cymbal01, null);
        frame.add(Cymbal02, null);
        frame.add(Cymbal03, null);

        frame.add(Drum, null);
        frame.add(Drum01, null);
        frame.add(Drum02, null);
        frame.add(Drum03, null);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // We use window width as volume control        
        frame.setSize(800, 600);
        // Tamanho fixo do programa, sem alteração
        frame.setResizable(false);
        // Deixa o programa no meio da tela, centralizado
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }

    private void playCymbal() {
        // 120 = Reverse Cymbal
        int opcion = 120;

        try {
            // 60 = C "middle C"; start of 4th octave
            int listaNotas = 60;
            // Sintetizador midi é obtido
            Synthesizer sintetizador = MidiSystem.getSynthesizer();
            // Abre o sintetizador para reproduzir sons
            sintetizador.open();
            // Os canais do sintetizador são obtidos
            MidiChannel canales = sintetizador.getChannels()[0];
            // Carrega-se o banco de som
            Soundbank bancoSonidos = sintetizador.getDefaultSoundbank();
            // Carrega-se a lista de som
            sintetizador.loadAllInstruments(bancoSonidos);
            // Carrega-se os instrumentos
            Instrument[] listaInstrumentos = sintetizador
                    .getLoadedInstruments();
            // int upperRange = listaInstrumentos.length - 1;

            Instrument instrumento = listaInstrumentos[opcion];

            Patch patch = instrumento.getPatch();
            canales.programChange(patch.getBank(), patch.getProgram());

            canales.noteOn(listaNotas, 100);

            canales.allNotesOff();

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

    }

    private void playSnare() {
        // 38 = Acoustic Snare
        int opcion = 38;

        try {
            // 60 = C "middle C"; start of 4th octave
            int listaNotas = 60;
            // Sintetizador midi é obtido
            Synthesizer sintetizador = MidiSystem.getSynthesizer();
            // Abre o sintetizador para reproduzir sons
            sintetizador.open();
            // Os canais do sintetizador são obtidos
            MidiChannel canales = sintetizador.getChannels()[9];
            // Carrega-se o banco de som
            Soundbank bancoSonidos = sintetizador.getDefaultSoundbank();
            // Carrega-se a lista de som
            sintetizador.loadAllInstruments(bancoSonidos);
            // Carrega-se os instrumentos
            Instrument[] listaInstrumentos = sintetizador
                    .getLoadedInstruments();
            // int upperRange = listaInstrumentos.length - 1;

            Instrument instrumento = listaInstrumentos[opcion];

            Patch patch = instrumento.getPatch();
            canales.programChange(patch.getBank(), patch.getProgram());

            canales.noteOn(listaNotas, 100);

            canales.allNotesOff();

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

    }

    public Drummer(Synthesizer synth) {
        super("Java MIDI Sound Drums - J. Marcos B.");

        // Channel 10 is the GeneralMidi percussion channel. In Java code, we
        // number channels from 0 and use channel 9 instead.
        channel = synth.getChannels()[9];

        addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent e) {
                int key = e.getKeyCode();
                if (key >= 35 && key <= 81) {
                    channel.noteOn(key, velocity);

                    try {
                        Synthesizer synth = MidiSystem.getSynthesizer();
                        Instrument[] instruments = synth.getDefaultSoundbank()
                                .getInstruments();
                        // for (int i = 0; i < instruments.length; i++) {
                        Instrument instrument = instruments[key];
                        System.out.println(key + " Instrument: "
                                + instrument.getName());
                        jlbInstrument.setText("Instrument: "
                                + instrument.getName());
                        // }
                    } catch (MidiUnavailableException e1) {
                        e1.printStackTrace();
                    }

                }
            }

            public void keyReleased(KeyEvent e) {
                int key = e.getKeyCode();
                if (key >= 35 && key <= 81)
                    channel.noteOff(key);
            }
        });

        addMouseMotionListener(new MouseMotionAdapter() {
            public void mouseMoved(MouseEvent e) {
                velocity = e.getX();
            }
        });

        ImageIcon cymbal = new ImageIcon(getClass().getResource(
                "images/Cymbal.png"));
        Cymbal = new JLabel(cymbal);
        Cymbal.setBounds(new Rectangle(10, 90, 135, 150));
        Cymbal.setCursor(new Cursor(Cursor.HAND_CURSOR));
        Cymbal.setToolTipText("Cymbal");
        Cymbal.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent e) {

                playCymbal();
            }
        });

        ImageIcon cymbal01 = new ImageIcon(getClass().getResource(
                "images/Cymbal.png"));
        Cymbal01 = new JLabel(cymbal01);
        Cymbal01.setBounds(new Rectangle(150, 50, 135, 150));
        Cymbal01.setCursor(new Cursor(Cursor.HAND_CURSOR));
        Cymbal01.setToolTipText("Cymbal");
        Cymbal01.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent e) {

                playCymbal();
            }
        });

        ImageIcon cymbal02 = new ImageIcon(getClass().getResource(
                "images/Cymbal.png"));
        Cymbal02 = new JLabel(cymbal02);
        Cymbal02.setBounds(new Rectangle(450, 50, 135, 150));
        Cymbal02.setCursor(new Cursor(Cursor.HAND_CURSOR));
        Cymbal02.setToolTipText("Cymbal");
        Cymbal02.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent e) {

                playCymbal();
            }
        });

        ImageIcon cymbal03 = new ImageIcon(getClass().getResource(
                "images/Cymbal.png"));
        Cymbal03 = new JLabel(cymbal03);
        Cymbal03.setBounds(new Rectangle(590, 90, 135, 150));
        Cymbal03.setCursor(new Cursor(Cursor.HAND_CURSOR));
        Cymbal03.setToolTipText("Cymbal");
        Cymbal03.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent e) {

                playCymbal();
            }
        });

        // setBounds(coluna , linha , largura , altura );
        ImageIcon drum = new ImageIcon(getClass().getResource(
                "images/Snare.png"));
        Drum = new JLabel(drum);
        Drum.setBounds(new Rectangle(245, 50, 135, 150));
        Drum.setCursor(new Cursor(Cursor.HAND_CURSOR));
        Drum.setToolTipText("Snare");
        Drum.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent e) {

                playSnare();
            }
        });

        ImageIcon drum01 = new ImageIcon(getClass().getResource(
                "images/Snare.png"));
        Drum01 = new JLabel(drum01);
        Drum01.setBounds(new Rectangle(245, 165, 135, 150));
        Drum01.setCursor(new Cursor(Cursor.HAND_CURSOR));
        Drum01.setToolTipText("Snare");
        Drum01.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent e) {

                playSnare();
            }
        });

        ImageIcon drum02 = new ImageIcon(getClass().getResource(
                "images/Snare.png"));
        Drum02 = new JLabel(drum02);
        Drum02.setBounds(new Rectangle(365, 50, 135, 150));
        Drum02.setCursor(new Cursor(Cursor.HAND_CURSOR));
        Drum02.setToolTipText("Snare");
        Drum02.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent e) {

                playSnare();
            }
        });

        ImageIcon drum03 = new ImageIcon(getClass().getResource(
                "images/Snare.png"));
        Drum03 = new JLabel(drum03);
        Drum03.setBounds(new Rectangle(245, 265, 135, 150));
        Drum03.setCursor(new Cursor(Cursor.HAND_CURSOR));
        Drum03.setToolTipText("Snare");
        Drum03.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent e) {

                playSnare();
            }
        });

        jlbInformations = new JLabel();
        jlbInformations.setBounds(new Rectangle(30, 450, 800, 100));
        jlbInformations
                .setText("<html>This the MIDI percussion channel program to create music generate different percussive sounds. "
                        + "<br/>Just an experiment, press the following keys: 1234567890-= qeiopadfghjkl cbnm,.; Right/Left arrow keys, Up/Down arrow keys "
                        + "<br/>and move the mouse to the right of the window to increase the volume.</html>");

        jlbInstrument = new JLabel();
        jlbInstrument.setBounds(new Rectangle(10, 350, 800, 100));
        jlbInstrument.setHorizontalAlignment(SwingConstants.CENTER);
        jlbInstrument.setFont(new Font("Arial", Font.BOLD, 28));

    }
}

Gostei vou fazer mais coisas com ela. Sugestões?

Link para download:

Drummer.jar | 62 KB |

http://www.4shared.com/file/kSDXbnRece/Drummer.html

Java Sound: Capturing Microphone Data into an Audio File

Java SoundAplicativo desenvolvido mediante a pesquisa e estudo da API Java Sound ao qual encontrei um estudo/tutorial sobre a mesma de Richard G. Baldwin onde você pode encontra o fonte original aqui http://cnx.org/content/m45693/latest/Java2014.htm e um outro exemplo aqui http://cnx.org/content/m45693/latest/Java2008.htm do mesmo autor. O aplicativo tem o objetivo de gravar áudio capturado do microfone do computador e salvar nos formatos: AIFFC, AIFF, AU, SND e WAVE por default já grava em com a extensão WAVE, também voce pode fazer um teste e se gostar salvar esse teste em WAVE.

Aqui estão os códigos fontes:

/**File AudioRecorder02.java
Copyright 2003, Richard G. Baldwin

This program demonstrates the capture of audio
data from a microphone into an audio file.

A GUI appears on the screen containing the
following buttons:
  Capture
  Stop

In addition, five radio buttons appear on the
screen allowing the user to select one of the
following five audio output file formats:

  AIFC
  AIFF
  AU
  SND
  WAVE

When the user clicks the Capture button, input
data from a microphone is captured and saved in
an audio file named junk.xx having the specified
file format.  (xx is the file extension for the
specified file format.  You can easily change the
file name to something other than junk if you
choose to do so.)

Data capture stops and the output file is closed
when the user clicks the Stop button.

It should be possible to play the audio file
using any of a variety of readily available
media players, such as the Windows Media Player.

Not all file types can be created on all systems.
For example, types AIFC and SND produce a &amp;quot;type
not supported&amp;quot; error on my system.

Be sure to release the old file from the media
player before attempting to create a new file
with the same extension.

Tested using SDK 1.4.1 under Win2000
************************************************/

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

public class AudioRecorder02 extends JFrame{

  AudioFormat audioFormat;
  TargetDataLine targetDataLine;

  final JButton captureBtn =
                          new JButton(&amp;quot;Capture&amp;quot;);
  final JButton stopBtn = new JButton(&amp;quot;Stop&amp;quot;);

  final JPanel btnPanel = new JPanel();
  final ButtonGroup btnGroup = new ButtonGroup();
  final JRadioButton aifcBtn =
                        new JRadioButton(&amp;quot;AIFC&amp;quot;);
  final JRadioButton aiffBtn =
                        new JRadioButton(&amp;quot;AIFF&amp;quot;);
  final JRadioButton auBtn =//selected at startup
                     new JRadioButton(&amp;quot;AU&amp;quot;,true);
  final JRadioButton sndBtn =
                         new JRadioButton(&amp;quot;SND&amp;quot;);
  final JRadioButton waveBtn =
                        new JRadioButton(&amp;quot;WAVE&amp;quot;);

  public static void main( String args[]){
    new AudioRecorder02();
  }//end main

  public AudioRecorder02(){//constructor
    captureBtn.setEnabled(true);
    stopBtn.setEnabled(false);

    //Register anonymous listeners
    captureBtn.addActionListener(
      new ActionListener(){
        public void actionPerformed(
                                  ActionEvent e){
          captureBtn.setEnabled(false);
          stopBtn.setEnabled(true);
          //Capture input data from the
          // microphone until the Stop button is
          // clicked.
          captureAudio();
        }//end actionPerformed
      }//end ActionListener
    );//end addActionListener()

    stopBtn.addActionListener(
      new ActionListener(){
        public void actionPerformed(
                                  ActionEvent e){
          captureBtn.setEnabled(true);
          stopBtn.setEnabled(false);
          //Terminate the capturing of input data
          // from the microphone.
          targetDataLine.stop();
          targetDataLine.close();
        }//end actionPerformed
      }//end ActionListener
    );//end addActionListener()

    //Put the buttons in the JFrame
    getContentPane().add(captureBtn);
    getContentPane().add(stopBtn);

    //Include the radio buttons in a group
    btnGroup.add(aifcBtn);
    btnGroup.add(aiffBtn);
    btnGroup.add(auBtn);
    btnGroup.add(sndBtn);
    btnGroup.add(waveBtn);

    //Add the radio buttons to the JPanel
    btnPanel.add(aifcBtn);
    btnPanel.add(aiffBtn);
    btnPanel.add(auBtn);
    btnPanel.add(sndBtn);
    btnPanel.add(waveBtn);

    //Put the JPanel in the JFrame
    getContentPane().add(btnPanel);

    //Finish the GUI and make visible
    getContentPane().setLayout(new FlowLayout());
    setTitle(&amp;quot;Copyright 2003, R.G.Baldwin&amp;quot;);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setSize(300,120);
    setVisible(true);
  }//end constructor

  //This method captures audio input from a
  // microphone and saves it in an audio file.
  private void captureAudio(){
    try{
      //Get things set up for capture
      audioFormat = getAudioFormat();
      DataLine.Info dataLineInfo =
                          new DataLine.Info(
                            TargetDataLine.class,
                            audioFormat);
      targetDataLine = (TargetDataLine)
               AudioSystem.getLine(dataLineInfo);

      //Create a thread to capture the microphone
      // data into an audio file and start the
      // thread running.  It will run until the
      // Stop button is clicked.  This method
      // will return after starting the thread.
      new CaptureThread().start();
    }catch (Exception e) {
      e.printStackTrace();
      System.exit(0);
    }//end catch
  }//end captureAudio method

  //This method creates and returns an
  // AudioFormat object for a given set of format
  // parameters.  If these parameters don't work
  // well for you, try some of the other
  // allowable parameter values, which are shown
  // in comments following the declarations.
  private AudioFormat getAudioFormat(){
    float sampleRate = 8000.0F;
    //8000,11025,16000,22050,44100
    int sampleSizeInBits = 16;
    //8,16
    int channels = 1;
    //1,2
    boolean signed = true;
    //true,false
    boolean bigEndian = false;
    //true,false
    return new AudioFormat(sampleRate,
                           sampleSizeInBits,
                           channels,
                           signed,
                           bigEndian);
  }//end getAudioFormat
//=============================================//

//Inner class to capture data from microphone
// and write it to an output audio file.
class CaptureThread extends Thread{
  public void run(){
    AudioFileFormat.Type fileType = null;
    File audioFile = null;

    //Set the file type and the file extension
    // based on the selected radio button.
    if(aifcBtn.isSelected()){
      fileType = AudioFileFormat.Type.AIFC;
      audioFile = new File(&amp;quot;junk.aifc&amp;quot;);
    }else if(aiffBtn.isSelected()){
      fileType = AudioFileFormat.Type.AIFF;
      audioFile = new File(&amp;quot;junk.aif&amp;quot;);
    }else if(auBtn.isSelected()){
      fileType = AudioFileFormat.Type.AU;
      audioFile = new File(&amp;quot;junk.au&amp;quot;);
    }else if(sndBtn.isSelected()){
      fileType = AudioFileFormat.Type.SND;
      audioFile = new File(&amp;quot;junk.snd&amp;quot;);
    }else if(waveBtn.isSelected()){
      fileType = AudioFileFormat.Type.WAVE;
      audioFile = new File(&amp;quot;junk.wav&amp;quot;);
    }//end if

    try{
      targetDataLine.open(audioFormat);
      targetDataLine.start();
      AudioSystem.write(
            new AudioInputStream(targetDataLine),
            fileType,
            audioFile);
    }catch (Exception e){
      e.printStackTrace();
    }//end catch

  }//end run
}//end inner class CaptureThread
//=============================================//

}//end outer class AudioRecorder02.java

Aqui vai mais um exemplo de Richard.

/**File AudioCapture01.java
This program demonstrates the capture
and subsequent playback of audio data.

A GUI appears on the screen containing
the following buttons:
Capture
Stop
Playback

Input data from a microphone is
captured and saved in a
ByteArrayOutputStream object when the
user clicks the Capture button.

Data capture stops when the user clicks
the Stop button.

Playback begins when the user clicks
the Playback button.

Tested using SDK 1.4.0 under Win2000
**************************************/

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

public class AudioCapture01
                        extends JFrame{

  boolean stopCapture = false;
  ByteArrayOutputStream
                 byteArrayOutputStream;
  AudioFormat audioFormat;
  TargetDataLine targetDataLine;
  AudioInputStream audioInputStream;
  SourceDataLine sourceDataLine;

  public static void main(
                        String args[]){
    new AudioCapture01();
  }//end main

  public AudioCapture01(){//constructor
    final JButton captureBtn =
                new JButton(&amp;quot;Capture&amp;quot;);
    final JButton stopBtn =
                   new JButton(&amp;quot;Stop&amp;quot;);
    final JButton playBtn =
               new JButton(&amp;quot;Playback&amp;quot;);

    captureBtn.setEnabled(true);
    stopBtn.setEnabled(false);
    playBtn.setEnabled(false);

    //Register anonymous listeners
    captureBtn.addActionListener(
      new ActionListener(){
        public void actionPerformed(
                        ActionEvent e){
          captureBtn.setEnabled(false);
          stopBtn.setEnabled(true);
          playBtn.setEnabled(false);
          //Capture input data from the
          // microphone until the Stop
          // button is clicked.
          captureAudio();
        }//end actionPerformed
      }//end ActionListener
    );//end addActionListener()
    getContentPane().add(captureBtn);

    stopBtn.addActionListener(
      new ActionListener(){
        public void actionPerformed(
                        ActionEvent e){
          captureBtn.setEnabled(true);
          stopBtn.setEnabled(false);
          playBtn.setEnabled(true);
          //Terminate the capturing of
          // input data from the
          // microphone.
          stopCapture = true;
        }//end actionPerformed
      }//end ActionListener
    );//end addActionListener()
    getContentPane().add(stopBtn);

    playBtn.addActionListener(
      new ActionListener(){
        public void actionPerformed(
                        ActionEvent e){
          //Play back all of the data
          // that was saved during
          // capture.
          playAudio();
        }//end actionPerformed
      }//end ActionListener
    );//end addActionListener()
    getContentPane().add(playBtn);

    getContentPane().setLayout(
                     new FlowLayout());
    setTitle(&amp;quot;Capture/Playback Demo&amp;quot;);
    setDefaultCloseOperation(
                        EXIT_ON_CLOSE);
    setSize(250,70);
    setVisible(true);
  }//end constructor

  //This method captures audio input
  // from a microphone and saves it in
  // a ByteArrayOutputStream object.
  private void captureAudio(){
    try{
      //Get everything set up for
      // capture
      audioFormat = getAudioFormat();
      DataLine.Info dataLineInfo =
                new DataLine.Info(
                  TargetDataLine.class,
                   audioFormat);
      targetDataLine = (TargetDataLine)
                   AudioSystem.getLine(
                         dataLineInfo);
      targetDataLine.open(audioFormat);
      targetDataLine.start();

      //Create a thread to capture the
      // microphone data and start it
      // running.  It will run until
      // the Stop button is clicked.
      Thread captureThread =
                new Thread(
                  new CaptureThread());
      captureThread.start();
    } catch (Exception e) {
      System.out.println(e);
      System.exit(0);
    }//end catch
  }//end captureAudio method

  //This method plays back the audio
  // data that has been saved in the
  // ByteArrayOutputStream
  private void playAudio() {
    try{
      //Get everything set up for
      // playback.
      //Get the previously-saved data
      // into a byte array object.
      byte audioData[] =
                 byteArrayOutputStream.
                         toByteArray();
      //Get an input stream on the
      // byte array containing the data
      InputStream byteArrayInputStream
            = new ByteArrayInputStream(
                            audioData);
      AudioFormat audioFormat =
                      getAudioFormat();
      audioInputStream =
        new AudioInputStream(
          byteArrayInputStream,
          audioFormat,
          audioData.length/audioFormat.
                       getFrameSize());
      DataLine.Info dataLineInfo =
                new DataLine.Info(
                  SourceDataLine.class,
                          audioFormat);
      sourceDataLine = (SourceDataLine)
                   AudioSystem.getLine(
                         dataLineInfo);
      sourceDataLine.open(audioFormat);
      sourceDataLine.start();

      //Create a thread to play back
      // the data and start it
      // running.  It will run until
      // all the data has been played
      // back.
      Thread playThread =
          new Thread(new PlayThread());
      playThread.start();
    } catch (Exception e) {
      System.out.println(e);
      System.exit(0);
    }//end catch
  }//end playAudio

  //This method creates and returns an
  // AudioFormat object for a given set
  // of format parameters.  If these
  // parameters don't work well for
  // you, try some of the other
  // allowable parameter values, which
  // are shown in comments following
  // the declarations.
  private AudioFormat getAudioFormat(){
    float sampleRate = 8000.0F;
    //8000,11025,16000,22050,44100
    int sampleSizeInBits = 16;
    //8,16
    int channels = 1;
    //1,2
    boolean signed = true;
    //true,false
    boolean bigEndian = false;
    //true,false
    return new AudioFormat(
                      sampleRate,
                      sampleSizeInBits,
                      channels,
                      signed,
                      bigEndian);
  }//end getAudioFormat
//===================================//

//Inner class to capture data from
// microphone
class CaptureThread extends Thread{
  //An arbitrary-size temporary holding
  // buffer
  byte tempBuffer[] = new byte[10000];
  public void run(){
    byteArrayOutputStream =
           new ByteArrayOutputStream();
    stopCapture = false;
    try{//Loop until stopCapture is set
        // by another thread that
        // services the Stop button.
      while(!stopCapture){
        //Read data from the internal
        // buffer of the data line.
        int cnt = targetDataLine.read(
                    tempBuffer,
                    0,
                    tempBuffer.length);
        if(cnt &amp;gt; 0){
          //Save data in output stream
          // object.
          byteArrayOutputStream.write(
                   tempBuffer, 0, cnt);
        }//end if
      }//end while
      byteArrayOutputStream.close();
    }catch (Exception e) {
      System.out.println(e);
      System.exit(0);
    }//end catch
  }//end run
}//end inner class CaptureThread
//===================================//
//Inner class to play back the data
// that was saved.
class PlayThread extends Thread{
  byte tempBuffer[] = new byte[10000];

  public void run(){
    try{
      int cnt;
      //Keep looping until the input
      // read method returns -1 for
      // empty stream.
      while((cnt = audioInputStream.
        read(tempBuffer, 0,
            tempBuffer.length)) != -1){
        if(cnt &amp;gt; 0){
          //Write data to the internal
          // buffer of the data line
          // where it will be delivered
          // to the speaker.
          sourceDataLine.write(
                   tempBuffer, 0, cnt);
        }//end if
      }//end while
      //Block and wait for internal
      // buffer of the data line to
      // empty.
      sourceDataLine.drain();
      sourceDataLine.close();
    }catch (Exception e) {
      System.out.println(e);
      System.exit(0);
    }//end catch
  }//end run
}//end inner class PlayThread
//===================================//

}//end outer class AudioCapture01.java

Ainda estou estudando essa API quem souber de mais detalhes por favor contribua com o nosso blog postando e/ou comentando aqui. Um abraço a todos que visitam e estudam por aqui quando eu tiver mais novidades eu deixo aqui fiquem sempre de olho. Link para baixar esse aplicativo http://www.4shared.com/file/7V4sc27vce/Record_And_Playback_Demo.html