AudioClip.
, getAudioClip(), , , , play(), loop() stop() .
Applet newAudioclp(URL address), , address, , Audioclip. , .
, , WAV, AU SND.
.
package javaaudio1;
import java.applet.Applet;
import java.applet.AudioClip;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
public class AudioApplet1 extends Applet
{
public void init()
{
// AudioClip
// getAudioClip Applet,
// .
AudioClip ac;
Try
{
ac = getAudioClip(new URL("http://localhost/audio/javaaudio.wav"));
ac.play();
}
catch (MalformedURLException ex)
{
Logger.getLogger(AudioApplet1.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
Java, SUN J2SDK 1.3, , , AU, WAVE, AIFF, MIDI, , .
, javax.sound.sampled, javax.sound.midi, javax.sound.sampled.spi javax.sound.midi.spi. Java Sound API.
, JVM, : (digital audio) (sample rate) 8 000 48 000 (quantization) 8 16 , MIDI- (sequences) 0 1.
AU, WAVE AIFF. .
Clip. , , .
SourceDataLine. , .
AudioFormat. : AudioFormat(float sampleRate, int sampleSize, int channels, boolean signed, boolean bigEndian) sampleRate ( 44 100 ), sampleSize, ( 16), channels (1 , 2 ), , signed == true, , bigEndian. , . .
|
|
getAudioFiieFormato AudioSystem, getFormato AudioFiieFormat.
AudioFormat, DataLine. inf (line) clip SourceDataLine. , . getLine () AudioSystem. Audioinputstream. AudioFormat getFormat ().
n loop(n) loop (Clip.LOOP_CONTINUOUSLY). n m setLoopPoints(n, m).
, Clip.
package javaaudio2;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.DataLine;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Main
{
public static void main(String[] args)
{
final PlayAudio pa = new PlayAudio("D:\\javaaudio.wav");
// .
JFrame f = new JFrame("Audio");
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout());
Button start = new Button("Play");
start.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
pa.play();
}
});
Button stop = new Button("Stop");
stop.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
pa.stop();
}
});
panel.add(start);
panel.add(stop);
f.add(panel);
f.setSize(300,100);
f.setLocation(200,200);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
class PlayAudio
{
Clip line;
public PlayAudio(String file)
{
try
{
// , .
File f = new File(file);
// .
AudioFileFormat aff = AudioSystem.getAudioFileFormat(f);
// .
AudioFormat af = aff.getFormat();
// ,
// .
DataLine.Info info = new DataLine.Info(Clip.class, af);
// , .
if (!AudioSystem.isLineSupported(info))
{
System.err.println("Line is not supported.");
System.exit(0);
}
// .
|
|
line = (Clip) AudioSystem.getLine(info);
// .
AudioInputStream ais = AudioSystem.getAudioInputStream(f);
// .
line.open(ais);
}
catch (Exception e)
{
System.err.println(e);
}
}
public void play()
{
line.start();
}
public void stop()
{
line.stop();
}
}
, SourceDataLine, .
package javaaudio3;
import java.io.File;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.SourceDataLine;
public class Main
{
public static void main(String[] args)
{
PlayAudioLine pal = new PlayAudioLine("D:\\javaaudio.wav");
pal.play();
}
}
class PlayAudioLine
{
String file;
PlayAudioLine(String file)
{
this.file = file;
}
public void play()
{
AudioInputStream ais = null;
SourceDataLine line = null;
byte[] b = new byte[2048]; //
try
{
File f = new File(file);
// f
ais = AudioSystem.getAudioInputStream(f);
//
AudioFormat af = ais.getFormat();
// info
DataLine.Info info = new DataLine.Info(SourceDataLine.class, af);
// ,
if (!AudioSystem.isLineSupported(info))
{
System.err.println("Line is not supported.");
System.exit(0);
}
//
line = (SourceDataLine) AudioSystem.getLine(info);
//
line.open(af);
line.start();
//
int num = 0;
//
while ((num = ais.read(b))!= -1)
{
line.write(b, 0, num);
}
//
line.drain();
//
ais.close();
}
catch (Exception e)
{
System.err.println(e);
}
line.close();
}
}
MIDI-
MIDI- (sequence) (sequencer) , MlDI-, . (tracks), MIDI- (events). (channel). , (synthesizer).
MIDI- , , . start (). stop(), ""
setMicrosecondPositionf(long mcs) setTickPosition(long tick).
MIDI-.
package javaaudiomidi;
import javax.sound.midi.*;
import java.io.*;
public class Main
{
public static void main(String[] args)
{
JavaAudioMidi jam = new JavaAudioMidi("D:\\javaaudio.mid");
jam.play();
}
}
class JavaAudioMidi
{
String file;
public JavaAudioMidi(String file)
{
this.file = file;
}
public void play()
{
try
{
File f = new File(file);
//
Sequencer sequencer = MidiSystem.getSequencer();
// ,
if (sequencer == null)
{
System.err.println("Sequencer is not supported.");
System.exit(0);
}
//
|
|
sequencer.open();
// MIDI-
Sequence seq = MidiSystem.getSequence(f);
//
sequencer.setSequence(seq);
//
sequencer.start();
}
catch (Exception e)
{
System.err.println(e);
}
}
}
1. .
2. drawImage Image?
3. FilteredlmageSource?
4. , .
5. Java Sound API?