// #ifdef includeMusic
// [NC] Added in the scenario 07
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;
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);
// #ifdef includeCopyPhoto
// [NC] Added in the scenario 07
public static final Command copy = new Command("Copy", Command.ITEM, 1);
//#endif
// the midi player
Player midiPlayer = null;
// the controls
VolumeControl volControl = null;
PitchControl pitchControl = null;
TempoControl tempoControl = null;
// the visual elements
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);
// #ifdef includeCopyPhoto
// [NC] Added in the scenario 07
form.addCommand(copy);
//#endif
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 {
// start the MIDI player if it was created
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) {
}
}
//#endif