一个简单音乐播放器的java实现(一)
2016-02-23 12:51
597 查看
写在前面
这几天正在读head first系列的书籍,现在正好读的是java。这本书讲的深入浅出,环环相扣,非常精彩,不妨安利给大家,顺便把我学习过程中的一些心得体会已经实例分享出来。
(1)播放器–Sequencer(实际上播放音乐的控件,可将其想象为一个CD player);
(2)被播放的音乐–Sequence(想象它是一张CD,但是在我们的程序里它只包含一首歌曲);
(3)音乐存储的信息–Track(Sequence中用来存储音乐信息的那一部分)
(4)实际的音乐信息–MidiEvent(包含播放时长,播放记录等)
(2)创造一个新的Sequence:
(3)在这个Sequence中得到一个新Track:
(4)用MidiEvents来填充Track并将该Sequence放入到Sequencer中:
(5)开始播放:
(2)异常处理 try–catch
注:可能存在异常错误MidiUnavailableException,必须捕获或声明以便抛出
至此,一个最最简单的音乐播放器就完成了。当然,因为用的是非常简单的MidiEvent,所以运行程序大家只能听到一个四秒钟左右的叮——声。
后续还会继续对音乐播放器进行完善,大家可以阅读后文,或者直接移步参阅书籍 Head First Java 中的第十一章到十四章。
这几天正在读head first系列的书籍,现在正好读的是java。这本书讲的深入浅出,环环相扣,非常精彩,不妨安利给大家,顺便把我学习过程中的一些心得体会已经实例分享出来。
1.一个最简单音乐播放器的需求
我们需要四样东西:(1)播放器–Sequencer(实际上播放音乐的控件,可将其想象为一个CD player);
(2)被播放的音乐–Sequence(想象它是一张CD,但是在我们的程序里它只包含一首歌曲);
(3)音乐存储的信息–Track(Sequence中用来存储音乐信息的那一部分)
(4)实际的音乐信息–MidiEvent(包含播放时长,播放记录等)
2.一个最简单音乐播放器的五步骤实现
(1)创造一个Sequencer并打开:Sequencer player = MidiSystem.getSequencer(); player.open();
(2)创造一个新的Sequence:
Sequence seq = new Sequence(timing, 4);
(3)在这个Sequence中得到一个新Track:
Track track = seq.createTrack();
(4)用MidiEvents来填充Track并将该Sequence放入到Sequencer中:
track.add(myMidiEvent1); player.setSequence(seq);
(5)开始播放:
player.start();
3.其他需要考虑的要素
(1)需导入专门的包——javax.soud.midi.*(2)异常处理 try–catch
注:可能存在异常错误MidiUnavailableException,必须捕获或声明以便抛出
4.实例代码
import javax.sound.midi.*; // The midi package is necessary
public class MiniMusicApp {
public static void main(String[] args) {
MiniMusicApp mini = new MiniMusicApp();
mini.play();
}
public void play() {
try {
// Get a sequencer and open it
Sequencer player = MidiSystem.getSequencer(); player.open();
Sequence seq = new Sequence(Sequence.PPQ, 4); //Treat the arguments as Ready-bake arguments
Track track = seq.createTrack(); // Ask the sequence for a track
// Put some MidiEvents into the Track, the setMessage() method is what we should really care
ShortMessage a = new ShortMessage();
a.setMessage(144, 1, 44, 100);
MidiEvent noteOn = new MidiEvent(a, 1);
track.add(noteOn);
ShortMessage b = new ShortMessage();
b.setMessage(128, 1, 44, 100);
MidiEvent noteOff = new MidiEvent(b, 16);
track.add(noteOff);
player.setSequence(seq); // Give the sequence to the Sequencer
// like pushing a CD to a CD player
player.start(); // Start the sequencer like pushing PLAY
}
catch(Exception ex) {
ex.printStackTrace();
}
} // Close play
} // Close class
至此,一个最最简单的音乐播放器就完成了。当然,因为用的是非常简单的MidiEvent,所以运行程序大家只能听到一个四秒钟左右的叮——声。
后续还会继续对音乐播放器进行完善,大家可以阅读后文,或者直接移步参阅书籍 Head First Java 中的第十一章到十四章。
相关文章推荐
- jenkins调整jdk版本不生效的解决办法
- 大坑----java生成xls,xlsx文件的行数啊
- 初学Struts
- JAVA反射系列之Field,java.lang.reflect.Field使用获取方法。
- MyEclipse 2014 搭建 Android 开发环境
- java反射机制详解
- JAVA锁漫谈,最好的锁是无锁
- JAVA学习笔记(一):一个小爬虫的例子
- Java编程思想 第1章 对象导论
- 转:java读文件时判断其编码格式(亲测可用)
- Java笔记20:迭代器模式
- 出现java.lang.UnsupportedClassVersionError 错误的原因
- java 深入了解String
- 如何在Mac系统安装eclipse并运行java程序?
- Java反射机制深入研究
- java泛型中<? super T> 和<? extends T>的区别---转发
- LEETCODE 17 Letter Combinations of a Phone Number (JAVA题解)
- openCV_java 图像二值化
- Java 回顾笔记6 (上午)_继承
- Java中的ReentrantLock和synchronized两种锁定机制的对比