📄 musiceffects.java
字号:
addCommand(finishSetupCommand);
setCommandListener(finishSetupCommandListener);
}
public void itemStateChanged(Item item) {
if (item == null)
return;
else if (item == wetLevelGauge)
try {
chorusControl.setWetLevel(wetLevelGauge.getValue() * 100 / MAX_GAUGE_VALUE);
} catch (Exception e) {
System.out.println(e);
}
else if (item == modulationRateGauge)
try {
//System.out.println("mr=" + (minModulationRate + modulationRateGauge.getValue() * (maxModulationRate - minModulationRate) / MAX_GAUGE_VALUE));
chorusControl.setModulationRate(minModulationRate + modulationRateGauge.getValue() * (maxModulationRate - minModulationRate) / MAX_GAUGE_VALUE);
} catch (Exception e) {
System.out.println(e);
}
else if (item == modulationDepthGauge)
try {
chorusControl.setModulationDepth(modulationDepthGauge.getValue() * maxModulationDepth / MAX_GAUGE_VALUE);
} catch (Exception e) {
System.out.println(e);
}
else if (item == averageDelayGauge)
try {
chorusControl.setAverageDelay(averageDelayGauge.getValue() * maxAverageDelay / MAX_GAUGE_VALUE);
} catch (Exception e) {
System.out.println(e);
}
else if (item == presetChoice) {
if (0 == presetChoice.getSelectedIndex())
chorusControl.setEnabled(false);
else {
if (!chorusControl.isEnabled())
chorusControl.setEnabled(true);
chorusControl.setPreset(presetChoice.getString(presetChoice.getSelectedIndex()));
}
updateControls();
}
}
public void updateControls() {
//System.out.println("Wet level = " + chorusControl.getWetLevel());
//System.out.println("Modulation rate (" + minModulationRate + " to " + maxModulationRate + ") = " + chorusControl.getModulationRate());
//System.out.println("Modulation depth = " + chorusControl.getModulationDepth());
//System.out.println("Average delay = " + chorusControl.getAverageDelay());
wetLevelGauge .setValue(chorusControl.getWetLevel() * MAX_GAUGE_VALUE / 100);
modulationRateGauge .setValue((chorusControl.getModulationRate() - minModulationRate) * MAX_GAUGE_VALUE / (maxModulationRate - minModulationRate));
modulationDepthGauge.setValue(chorusControl.getModulationDepth() * MAX_GAUGE_VALUE / maxModulationDepth);
averageDelayGauge .setValue(chorusControl.getAverageDelay() * MAX_GAUGE_VALUE / maxAverageDelay);
}
}
// mainForm stuff
public class MainForm extends Form implements ItemStateListener {
//ChoiceGroup playersChoice = new ChoiceGroup("Music selector", Choice.MULTIPLE);
final static int BASS_CONTROL_NUM = 2;
Gauge volumeGauge = new Gauge("Volume", true, MAX_GAUGE_VALUE, MAX_GAUGE_VALUE);
Gauge panGauge = new Gauge("Pan", true, MAX_GAUGE_VALUE, MAX_GAUGE_VALUE / 2);
Gauge bassGauge = new Gauge("Bass", true, MAX_GAUGE_VALUE, 0);
Gauge trebleGauge = new Gauge("Treble", true, MAX_GAUGE_VALUE, 0);
StringItem equalizerButton = new StringItem("Advanced equalizer setup", null, Item.BUTTON);
StringItem reverbButton = new StringItem("Setup reverberation", null, Item.BUTTON);
StringItem chorusButton = new StringItem("Setup chorus", null, Item.BUTTON);
ChoiceGroup audioVirtualizerChoice = new ChoiceGroup("Audio virtualizer preset", Choice.EXCLUSIVE);
public MainForm() {
super("Advanced Music Player");
volumeGauge.setLayout(Item.LAYOUT_EXPAND);
panGauge .setLayout(Item.LAYOUT_EXPAND);
bassGauge .setLayout(Item.LAYOUT_EXPAND);
trebleGauge.setLayout(Item.LAYOUT_EXPAND);
equalizerButton.setLayout(Item.LAYOUT_CENTER);
reverbButton .setLayout(Item.LAYOUT_CENTER);
chorusButton .setLayout(Item.LAYOUT_CENTER);
equalizerButton.setDefaultCommand(setupItemCommand);
reverbButton .setDefaultCommand(setupItemCommand);
chorusButton .setDefaultCommand(setupItemCommand);
equalizerButton.setItemCommandListener(new SetupItemCommandListener(equalizerForm));
reverbButton .setItemCommandListener(new SetupItemCommandListener(reverbForm));
chorusButton .setItemCommandListener(new SetupItemCommandListener(chorusForm));
//playersChoice.append("mono loop (Barretto)", null);
//playersChoice.append("stereo sample (Dixieland)", null);
//playersChoice.setSelectedIndex(0, play);
//playersChoice.setSelectedIndex(1, playStereo);
audioVirtualizerChoice.append("OFF", null);
String [] avPresets = audioVirtualizerControl.getPresetNames();
if (avPresets != null && avPresets.length != 0)
for (int i = 0 ; i < avPresets.length; ++i)
audioVirtualizerChoice.append(avPresets[i], null);
if (avPresets.length == 0)
audioVirtualizerChoice.append("ON", null);
//append(playersChoice);
append(volumeGauge);
append(panGauge);
append(bassGauge);
append(trebleGauge);
append(equalizerButton);
append(reverbButton);
append(chorusButton);
append(audioVirtualizerChoice);
setItemStateListener(this);
addCommand(exitCommand);
setCommandListener(new ExitCommandListener());
}
public void itemStateChanged(Item item) {
if (item == null)
return;
/* else if (item == playersChoice) {
if (play != playersChoice.isSelected(0)) {
try {
if (play)
player.stop();
else
player.start();
} catch (MediaException e) {}
play = !play;
}
if (playStereo != playersChoice.isSelected(1)) {
try {
if (playStereo)
stereoPlayer.stop();
else
stereoPlayer.start();
} catch (MediaException e) {}
playStereo = !playStereo;
}
}*/
else if (item == volumeGauge)
volumeControl.setLevel(volumeGauge.getValue() * 100 / volumeGauge.getMaxValue());
else if (item == panGauge)
panControl.setPan(panGauge.getValue() * 200 / panGauge.getMaxValue() - 100);
else if (item == bassGauge)
equalizerControl.setBass(bassGauge.getValue() * 100 / bassGauge.getMaxValue());
else if (item == trebleGauge)
equalizerControl.setTreble(trebleGauge.getValue() * 100 / bassGauge.getMaxValue());
else if (item == audioVirtualizerChoice)
if (0 == audioVirtualizerChoice.getSelectedIndex())
audioVirtualizerControl.setEnabled(false);
else {
if (!audioVirtualizerControl.isEnabled())
audioVirtualizerControl.setEnabled(true);
String preset = audioVirtualizerChoice.getString(audioVirtualizerChoice.getSelectedIndex());
if (!preset.equals("ON"))
audioVirtualizerControl.setPreset(preset);
}
}
public void updateControls(int equalizerMode) {
volumeGauge.setValue(volumeControl.getLevel() * volumeGauge.getMaxValue() / 100);
panGauge.setValue((100 + panControl.getPan()) * panGauge.getMaxValue() / 200);
if (equalizerMode == EqualizerForm.MODE_BASS_TREBLE) {
if (get(BASS_CONTROL_NUM) != bassGauge) {
insert(BASS_CONTROL_NUM, bassGauge);
insert(BASS_CONTROL_NUM + 1, trebleGauge);
}
bassGauge .setValue(equalizerControl.getBass () * bassGauge.getMaxValue() / 100);
trebleGauge.setValue(equalizerControl.getTreble() * trebleGauge.getMaxValue() / 100);
} else {
if (get(BASS_CONTROL_NUM) == bassGauge) {
delete(BASS_CONTROL_NUM + 1);
delete(BASS_CONTROL_NUM);
}
}
}
}
EqualizerForm equalizerForm;
ReverbForm reverbForm;
ChorusForm chorusForm;
MainForm mainForm;
// } UI stuff
// Media stuff
boolean play = true;
//boolean playStereo = false;
Player player;
//Player stereoPlayer;
VolumeControl volumeControl;
PanControl panControl;
EqualizerControl equalizerControl;
ReverbControl reverbControl;
ReverbSourceControl reverbSourceControl;
ChorusControl chorusControl;
AudioVirtualizerControl audioVirtualizerControl;
// MIDlet implementation
public MusicEffects() {
try {
String [] s = Manager.getSupportedContentTypes(null);
System.out.println("Supported audio types:");
for (int i = 0; i < s.length; i++)
if (s[i].startsWith("audio"))
System.out.println(" " + s[i]);
System.out.println("Supported sample rates: " + System.getProperty("audio.samplerates"));
System.out.println("Creating WAV player...");
player = Manager.createPlayer(getClass().getResourceAsStream("music.wav"), "audio/x-wav");
player.setLoopCount(-1);
//System.out.println("Creating WAV stereo player...");
//stereoPlayer = Manager.createPlayer(getClass().getResourceAsStream("stereomusic.wav"), "audio/x-wav");
//stereoPlayer.setLoopCount(-1);
EffectModule effectModule = GlobalManager.createEffectModule();
effectModule.addPlayer(player);
//effectModule.addPlayer(stereoPlayer);
player.realize();
//stereoPlayer.realize();
System.out.println("GlobalManager controls:");
printArray(GlobalManager.getControls());
System.out.println("Player controls:");
printArray(player.getControls());
System.out.println("EffectModule controls:");
printArray(effectModule.getControls());
System.out.println("Creating audio controls...");
volumeControl = (VolumeControl)GlobalManager.getControl("javax.microedition.media.control.VolumeControl");
panControl = (PanControl)effectModule.getControl("javax.microedition.amms.control.PanControl");
equalizerControl = (EqualizerControl)effectModule.getControl("javax.microedition.amms.control.audioeffect.EqualizerControl");
equalizerControl.setEnabled(true);
//System.out.println("Creating reverb control...");
reverbControl = (ReverbControl)GlobalManager.getControl("javax.microedition.amms.control.audioeffect.ReverbControl");
//System.out.println("Creating reverb source control...");
reverbSourceControl = (ReverbSourceControl)effectModule.getControl("javax.microedition.amms.control.audioeffect.ReverbSourceControl");
chorusControl = (ChorusControl)effectModule.getControl("javax.microedition.amms.control.audioeffect.ChorusControl");
audioVirtualizerControl = (AudioVirtualizerControl)GlobalManager.getControl("javax.microedition.amms.control.audioeffect.AudioVirtualizerControl");
System.out.println("Creating equalizerForm...");
equalizerForm = new EqualizerForm();
System.out.println("Creating reverbForm...");
reverbForm = new ReverbForm();
System.out.println("Creating chorusForm...");
chorusForm = new ChorusForm();
System.out.println("Creating mainForm...");
mainForm = new MainForm();
mainForm.updateControls(EqualizerForm.MODE_BASS_TREBLE);
System.out.println("Init done!");
} catch (Exception e)
{
e.printStackTrace();
System.out.println(e);
}
}
public void startApp() {
try {
Display.getDisplay(this).setCurrent(mainForm);
if (play)
player.start();
//if (playStereo)
// stereoPlayer.start();
} catch (MediaException e) {}
}
public void pauseApp() {
System.out.println("About to pauseApp...");
try {
player.stop();
//stereoPlayer.stop();
} catch (MediaException e) {}
}
public void destroyApp(boolean unconditional) {
player.close();
//stereoPlayer.close();
}
protected final static void printArray(Object [] s) {
if (s == null || s.length == 0)
System.out.println(" (empty)");
for (int i = 0; i < s.length; ++i)
System.out.println(" " + s[i]);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -