史上第一個聲音播放程序第二版

使用命令行參數(shù)

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
        // 構(gòu)建播放器對象
        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();
    }

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,270評論 2 33
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢閱讀 100,748評論 9 468
  • 生命在于我們,只是滄海一粟,然而,卻承載了太多的情非得已。有些人魂牽夢縈,卻只適合放在心底;有些人波瀾不驚,卻適合...
    壹念塵埃閱讀 332評論 0 1
  • 若干年前建成的大廣場是這個城市的福利,今晚回家,福利場上更見福利。 每晚的廣場舞大軍不見了,可是更加熱鬧非凡...
    qingqingnier閱讀 447評論 0 0
  • 我很喜歡重情義,善良,顏值高,情節(jié)縝密,演技好,畫面清楚的東西
    6f6505e7c114閱讀 213評論 0 1

友情鏈接更多精彩內(nèi)容