package lancs.mobilemedia.core.ui.screens; import java.io.InputStream; import javax.microedition.lcdui.Canvas; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.Gauge; import javax.microedition.lcdui.Graphics; import javax.microedition.lcdui.Item; import javax.microedition.lcdui.ItemStateListener; import javax.microedition.media.Manager; import javax.microedition.media.Player; import javax.microedition.media.control.PitchControl; import javax.microedition.media.control.TempoControl; import javax.microedition.media.control.VolumeControl; import lancs.mobilemedia.core.ui.MainUIMidlet; import lancs.mobilemedia.core.ui.controller.AbstractController; import de.ovgu.cide.jakutil.*; public class PlayMediaScreen extends Canvas implements ItemStateListener { public static final Command start=new Command("Start",Command.BACK,0); public static final Command back=new Command("Back",Command.ITEM,1); public static final Command stop=new Command("Stop",Command.ITEM,1); Player midiPlayer=null; VolumeControl volControl=null; PitchControl pitchControl=null; TempoControl tempoControl=null; Form form=null; Gauge volGauge=null; Gauge pitchGauge=null; Gauge tempoGauge=null; public PlayMediaScreen( MainUIMidlet midlet, InputStream storedMusic, String type, AbstractController controller){ try { midiPlayer=Manager.createPlayer(storedMusic,type); midiPlayer.prefetch(); volControl=(VolumeControl)midiPlayer.getControl("javax.microedition.media.control.VolumeControl"); pitchControl=(PitchControl)midiPlayer.getControl("javax.microedition.media.control.PitchControl"); tempoControl=(TempoControl)midiPlayer.getControl("javax.microedition.media.control.TempoControl"); form=new Form("MIDI Player",null); form.addCommand(back); form.addCommand(start); form.addCommand(stop); this.hook55(); form.setCommandListener(controller); volGauge=new Gauge("Volume: 50",true,100,50); tempoGauge=new Gauge("Tempo: 120",true,30,12); pitchGauge=new Gauge("Pitch: 0",true,10,5); form.append(volGauge); form.append(tempoGauge); form.append(pitchGauge); form.setItemStateListener(this); Display.getDisplay(midlet).setCurrent(form); } catch ( Exception e) { System.err.println(e); } } public void itemStateChanged( final Item item){ if (!(item instanceof Gauge)) return; Gauge gauge=(Gauge)item; int val=gauge.getValue(); if (item == volGauge) { volControl.setLevel(val); volGauge.setLabel("Volume: " + val); } if (item == tempoGauge && tempoControl != null) { tempoControl.setTempo((val) * 10 * 1000); tempoGauge.setLabel("Tempo: " + (val * 10)); } if (item == pitchGauge && pitchControl != null) { pitchControl.setPitch((val - 5) * 12 * 1000); pitchGauge.setLabel("Pitch: " + (val - 5)); } } public void startPlay(){ try { if (midiPlayer != null) { midiPlayer.start(); } } catch ( Exception e) { System.err.println(e); } } public void pausePlay(){ try { if (midiPlayer != null) { midiPlayer.stop(); } } catch ( Exception e) { System.err.println(e); } } protected void paint( Graphics arg0){ } protected void hook55() throws Exception { } }