▼MIDP2.0メモ▼
サウンドファイル(mmf/spf)を同時再生する
サウンドを同時再生するプログラムを作成する。
サウンドファイルの準備
JSCLでは、を同時再生可能。
- SMAF/Phrase(spf):4和音×4トラック
- SMAF(mmf):16和音×1トラック
S!アプリのサイトで提供されているサウンドから適当に取得。
- bgm.spf
- bgmb.spf(bgm.spfと同期再生)
- se.mmf
プログラム
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