/* iアプリ, MIDP でのサウンド Time-stamp: "2006/01/25 Wed 20:04 hig" Saburo Higuchi 2003-2005 http://www.math.ryukoku.ac.jp/~hig/ プログラム解説等 http://www.a.math.ryukoku.ac.jp/~hig/course/juniors_2005/07/ */ import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import com.jblend.media.smaf.phrase.*; // SMAF/Phrase サウンドを使う /** IApplication または MIDlet を継承するクラス */ public class SoundSample extends MIDlet { /** 起動するときに呼ばれる メソッド. 必須. */ public void startApp(){ SoundCanvas cc = new SoundCanvas(this); Display.getDisplay(this).setCurrent(cc); } public void pauseApp(){} public void destroyApp(boolean unconditional){} } class SoundCanvas extends Canvas implements PhraseTrackListener { SoundSample parent; String message="123を押してね"; final int nfile=3; String [] filename; int initial=1; int melody; Phrase [] ms; PhraseTrack [] tr; PhrasePlayer ap; SoundCanvas(SoundSample parent){ this.parent=parent; ap= PhrasePlayer.getPlayer(); ms = new Phrase[nfile]; tr = new PhraseTrack[nfile]; // サウンドファイルの読み込み filename = new String [nfile]; // SMAF/Phrase のファイルを vodafone のサイト // http://developers.vodafone.jp/dp/tool_dl/soundlib/ // から download して res に入れよう filename[0]="jb2001.spf"; filename[1]="jse103.spf"; filename[2]="jse2102.spf"; try { for(int i=0; i=0 && initial < nfile ){ melody=initial; tr[initial].play(); } } public void paint(Graphics g){ g.setColor(255,255,255); g.fillRect(0,0,getWidth(),getHeight()); // 画面を消す g.setColor(0,0,0); g.drawString(message,0,getHeight() ,Graphics.LEFT|Graphics.BOTTOM); } // implements PhaseTrackListener ならこれが必要 public void eventOccurred(int event){ // 演奏終了などのイベント処理 } /** ゲームアクション, キー が押されたとき */ protected synchronized void keyPressed(int keyCode){ if ( keyCode==KEY_NUM1 ){ // .stop() することもできるが, しないと重ねて鳴る tr[0].play(); message = "1キーが押された"; } else if ( keyCode==KEY_NUM2 ){ tr[1].play(); message = "2キーが押された"; } else if ( keyCode==KEY_NUM3 ){ tr[2].play(); message = "3キーが押された"; } repaint(); // paint メソッドを呼ぶ. } /** ゲームアクション, キー が離されたとき */ protected synchronized void keyReleased(int keyCode){ // これは検出しない. } /** ゲームアクション, キー が押されたままのとき */ protected synchronized void keyRepeated(int keyCode){ // これは検出しない. } } /* Local Variables: mode: java End: */