▼MIDP2.0メモ▼
サウンドファイル(mmf/spf)を同時再生する


サウンドを同時再生するプログラムを作成する。



サウンドファイルの準備
JSCLでは、 を同時再生可能。
S!アプリのサイトで提供されているサウンドから適当に取得。

プログラム
PhrasePlayerEx.java
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;

//サウンドを同時再生する(本体)
public class PhrasePlayerEx extends MIDlet {
    static PhrasePlayerCanvas c;

    //コンストラクタ
    public PhrasePlayerEx() {
        c=new PhrasePlayerCanvas();
        Display.getDisplay(this).setCurrent(c);
    }

    //アプリの開始
    public void startApp() {
    }

    //アプリの一時停止
    public void pauseApp() {
    }

    //アプリの終了
    public void destroyApp(boolean flag) {
    }
}


PhrasePlayerCanvas.java
import com.jblend.media.smaf.phrase.*;
import javax.microedition.lcdui.*;

//サウンドを同時再生する(キャンバス)
class PhrasePlayerCanvas extends Canvas {
    private SimplePlayer player;

    //コンストラクタ
    PhrasePlayerCanvas() {
        player=new SimplePlayer();
    }

    //描画
    public void paint(Graphics g) {
        g.setColor(255,255,255);
        g.fillRect(0,0,getWidth(),getHeight());
        g.setColor(0,0,0);
        g.drawString("PhrasePlayerEx",0,   0,g.LEFT|g.TOP);
        g.drawString("1キー:BGM",     0,24*1,g.LEFT|g.TOP);
        g.drawString("2キー:SE",      0,24*2,g.LEFT|g.TOP);
    }

    //キープレスイベント
    public void keyPressed(int keyCode) {
        if (keyCode==0) return;
        switch(keyCode) {
        case KEY_NUM1: player.playBGM("bgm");break;
        case KEY_NUM2: player.playSE("se");break;
        }
    }
}


SimplePlayer.java
import com.jblend.media.smaf.phrase.*;
import javax.microedition.lcdui.*;

//シンプルプレーヤー
public class SimplePlayer {
    private PhrasePlayer     player;//プレイヤー
    private PhraseTrack[]    trackP;//フレーズトラック
    private AudioPhraseTrack trackA;//オーディオトラック

    //コンストラクタ
    public SimplePlayer() {
        player   =PhrasePlayer.getPlayer();
        trackP   =new PhraseTrack[2];
        trackP[0]=player.getTrack();
        trackP[1]=player.getTrack();
        trackA   =player.getAudioTrack();
    }
    
    //BGM(spf)の再生
    public void playBGM(String name) {
        stopBGM();
        try {
            trackP[0].setPhrase(new Phrase("/"+name+".spf"));
        } catch (Exception e) {
        }
        try {
            trackP[1].setPhrase(new Phrase("/"+name+"b.spf"));
            trackP[1].setSubjectTo(trackP[0]);
        } catch (Exception e) {
        }
        try {
            trackP[0].play(0);
        } catch (Exception e) {
        }
    }

    //BGM(spf)の停止
    public void stopBGM() {
        try {
            trackP[0].stop();
            trackP[0].removePhrase();
        } catch (Exception e) {
        }
        trackP[0]=null;
        try {
            trackP[1].stop();
            trackP[1].removePhrase();
        } catch (Exception e) {
        }
        trackP[1]=null;
    }
    
    //SE(mmf)の再生
    public void playSE(String name) {
        stopSE();
        try {
            trackA.setPhrase(new AudioPhrase("/"+name+".mmf"));
            trackA.play();
        } catch (Exception e) {
            trackA=null;
        }
    }
    
    //SE(mmf)の停止
    public void stopSE() {
        try {
            trackA.stop();
            trackA.removePhrase();
        } catch (Exception e) {
        }
    }
}



S!アプリ(C型/P型)用のJADファイルとMANIFESTファイル
PhrasePlayerEx.jad
MIDlet-1: PhrasePlayerEx, , PhrasePlayerEx
MIDlet-Jar-Size: 9459
MIDlet-Jar-URL: PhrasePlayerEx.jar
MIDlet-Name: PhrasePlayerEx
MIDlet-Vendor: My Vendor
MIDlet-Version: 1.0
MicroEdition-Profile: MIDP-1.0
MicroEdition-Configuration: CLDC-1.0
MIDlet-Application-Range: 0,0
MIDlet-OCL: JSCL-1.2.0




−戻る−