史上第一个声音播放程序第二版

使用命令行参数

package book.java;

import java.nio.channels.ShutdownChannelGroupException;

import javax.sound.midi.MidiEvent;
import javax.sound.midi.MidiSystem;
import javax.sound.midi.Sequence;
import javax.sound.midi.Sequencer;
import javax.sound.midi.ShortMessage;
import javax.sound.midi.Track;

public class MideSound {

    public MideSound() {
        // TODO Auto-generated constructor stub
    }

    public void play(int instrument, int note) {
        //获得播放器并打开
        try {
        Sequencer player = MidiSystem.getSequencer();
        player.open();
        
        Sequence seq = new Sequence(Sequence.SMPTE_30DROP, 4);
        
        Track track = seq.createTrack();

        ShortMessage cMessage = new ShortMessage();
        cMessage.setMessage(192, 1, instrument, 0);
        MidiEvent first = new MidiEvent(cMessage, 1);
        track.add(first);
        
        ShortMessage aMessage = new ShortMessage();
        aMessage.setMessage(144, 1, note, 100);
        MidiEvent noteOn = new MidiEvent(aMessage, 1);
        track.add(noteOn);
        
        ShortMessage bMessage = new ShortMessage();
        bMessage.setMessage(144, 1, note, 100);
        MidiEvent noteOff = new MidiEvent(bMessage, 16);
        track.add(noteOff);
        
        player.setSequence(seq);
        player.start();
        } catch(Exception ex) {
            ex.printStackTrace();
        } 
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        // 构建播放器对象
        MideSound mini = new MideSound();
        if (args.length < 2) {
            System.out.println("Don't forget the instrument and note args!");
        } else {
            int instrument = Integer.parseInt(args[0]);
            int note = Integer.parseInt(args[1]);
            mini.play(instrument, note);
        }
        mini.play();
    }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,244评论 2 33
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,664评论 9 468
  • 生命在于我们,只是沧海一粟,然而,却承载了太多的情非得已。有些人魂牵梦萦,却只适合放在心底;有些人波澜不惊,却适合...
    壹念尘埃阅读 300评论 0 1
  • 若干年前建成的大广场是这个城市的福利,今晚回家,福利场上更见福利。 每晚的广场舞大军不见了,可是更加热闹非凡...
    qingqingnier阅读 391评论 0 0
  • 我很喜欢重情义,善良,颜值高,情节缜密,演技好,画面清楚的东西
    6f6505e7c114阅读 209评论 0 1