一个简单音乐播放器用java实现

1.一个最简单音乐播放器的需求

我们需要四样东西:
(1)播放器–Sequencer(实际上播放音乐的控件,可将其想象为一个CD player);
(2)被播放的音乐–Sequence(想象它是一张CD,但是在我们的程序里它只包含一首歌曲);
(3)音乐存储的信息–Track(Sequence中用来存储音乐信息的那一部分)
(4)实际的音乐信息–MidiEvent(包含播放时长,播放记录等)

2.一个最简单音乐播放器的五步骤实现

(1)创造一个Sequencer并打开:

Sequencer player = MidiSystem.getSequencer();
player.open();
1
2
(2)创造一个新的Sequence:

Sequence seq = new Sequence(timing, 4);
1
(3)在这个Sequence中得到一个新Track:

Track track = seq.createTrack();
1
(4)用MidiEvents来填充Track并将该Sequence放入到Sequencer中:

track.add(myMidiEvent1);
player.setSequence(seq);
1
2
(5)开始播放:

player.start();
1
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
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值