Eu naum estou conseguindo executar aplicações que reproduzam arquivos MIDI, sempre dispara uma exceção.
Acho que o sistema naum está configurado para suportar…
Alguém poderia me ajudar,
grato.
Java Sound MIdi
7 Respostas
Vc tem o Java Media Framework? Ele suporta uma quantidade grande formatos de áudio e vídeo…
Hum, tenho naum…
Sabe o que é to aprendendo Java com o Livro Aprenda JAVA EM 21 DIAS, livro baum, ai to me familiarizando com a linguagem e por isso só copiando código…
Ai o que eu copiei para reproduzir MIDI naum encontra a sequencia para reproduzi-lá…
Valeu pela resposta hein!!foi bem rapida…
Abraço.
Se vc precisar tocar AVI, MP3, etc. então o Java Media Framework é a pedida. Mas se não me engano o Applet permite tocar MIDI agora faz séculos que não mexo com MIDI. :oops:
rsrsrrs, é eu devo tá bem longe de vc…
Mas deixa eu te explicar, outra código de um applet tb naum executou… e eu fiz tudo como estava ensinando…
Passei o parâmetro corretamente, e nada…
Eu vou te mandar o código, ai se vc puder me ajudar, vc dá uma olhada e me diga o que há de errado…
O problema é som arquivos MIDI ou java.sound.MIdi, pq com os arquivos WAV deu certo…
Flws.
import javax.swing.<em>;
import java.awt.event.</em>;
import javax.sound.midi.*;
import java.awt.GridLayout;
import java.io.File;
public class MidiApplet extends javax.swing.JApplet {
public void init() {
JPanel pane = new JPanel();
MidiPlayer midi = new MidiPlayer(getParameter(“file”));
pane.add(midi);
add(pane);
}
}
class MidiPlayer extends JPanel implements Runnable, ActionListener {
Thread runner;
JButton play = new JButton("Play");
JButton stop = new JButton("Stop");
JLabel message = new JLabel();
JComboBox tempoBox = new JComboBox();
float tempo = 1.0F;
Sequence currentSound;
Sequencer player;
String songFile;
MidiPlayer(String song) {
super();
songFile = song;
play.addActionListener(this);
stop.setEnabled(false);
stop.addActionListener(this);
for (float i = 0.25F; i < 7F; i += 0.25F)
tempoBox.addItem("" + i);
tempoBox.setSelectedItem("1.0");
tempoBox.setEnabled(false);
tempoBox.addActionListener(this);
setLayout(new GridLayout(2, 1));
add(message);
JPanel buttons = new JPanel();
JLabel tempoLabel = new JLabel("Tempo: ");
buttons.add(play);
buttons.add(stop);
buttons.add(tempoLabel);
buttons.add(tempoBox);
add(buttons);
if (songFile == null) {
play.setEnabled(false);
}
}
public void actionPerformed(ActionEvent evt) {
if (evt.getSource() instanceof JButton) {
if (evt.getSource() == play)
play();
else
stop();
} else {
String item = (String)tempoBox.getSelectedItem();
try {
tempo = Float.parseFloat(item);
player.setTempoFactor(tempo);
message.setText("Playing " + songFile + " at "
+ tempo + " tempo");
} catch (NumberFormatException ex) {
message.setText(ex.toString());
}
}
}
void play() {
if (runner == null) {
runner = new Thread(this);
runner.start();
play.setEnabled(false);
stop.setEnabled(true);
tempoBox.setEnabled(true);
}
}
void stop() {
if (runner != null) {
runner = null;
stop.setEnabled(false);
play.setEnabled(true);
tempoBox.setEnabled(false);
}
}
public void run() {
try {
File song = new File(songFile);
currentSound = MidiSystem.getSequence(song);
player = MidiSystem.getSequencer();
} catch (Exception ex) {
message.setText(ex.toString());
}
Thread thisThread = Thread.currentThread();
while (runner == thisThread) {
try {
player.open();
player.setSequence(currentSound);
player.setTempoFactor(tempo);
player.start();
message.setText("Playing " + songFile + " at "
+ tempo + " tempo");
while (player.isRunning() && runner != null) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) { }
}
message.setText("");
player.close();
} catch (Exception ex) {
message.setText(ex.toString());
break;
}
}
}
}
Sempre poste o código dentre as tags [code ] e [/ code].
E qual é a execeção que lança?
rsrsrrs, é eu devo tá bem longe de vc... Mas deixa eu te explicar, outra código de um applet tb naum executou... e eu fiz tudo como estava ensinando... Passei o parâmetro corretamente, e nada... Eu vou te mandar o código, ai se vc puder me ajudar, vc dá uma olhada e me diga o que há de errado... O problema é som arquivos MIDI ou java.sound.MIdi, pq com os arquivos WAV deu certo... Flws.import javax.swing.*; import java.awt.event.*; import javax.sound.midi.*; import java.awt.GridLayout; import java.io.File; public class MidiApplet extends javax.swing.JApplet { public void init() { JPanel pane = new JPanel(); MidiPlayer midi = new MidiPlayer(getParameter("file")); pane.add(midi); add(pane); } } class MidiPlayer extends JPanel implements Runnable, ActionListener { Thread runner; JButton play = new JButton("Play"); JButton stop = new JButton("Stop"); JLabel message = new JLabel(); JComboBox tempoBox = new JComboBox(); float tempo = 1.0F; Sequence currentSound; Sequencer player; String songFile; MidiPlayer(String song) { super(); songFile = song; play.addActionListener(this); stop.setEnabled(false); stop.addActionListener(this); for (float i = 0.25F; i < 7F; i += 0.25F) tempoBox.addItem("" + i); tempoBox.setSelectedItem("1.0"); tempoBox.setEnabled(false); tempoBox.addActionListener(this); setLayout(new GridLayout(2, 1)); add(message); JPanel buttons = new JPanel(); JLabel tempoLabel = new JLabel("Tempo: "); buttons.add(play); buttons.add(stop); buttons.add(tempoLabel); buttons.add(tempoBox); add(buttons); if (songFile == null) { play.setEnabled(false); } } public void actionPerformed(ActionEvent evt) { if (evt.getSource() instanceof JButton) { if (evt.getSource() == play) play(); else stop(); } else { String item = (String)tempoBox.getSelectedItem(); try { tempo = Float.parseFloat(item); player.setTempoFactor(tempo); message.setText("Playing " + songFile + " at " + tempo + " tempo"); } catch (NumberFormatException ex) { message.setText(ex.toString()); } } } void play() { if (runner == null) { runner = new Thread(this); runner.start(); play.setEnabled(false); stop.setEnabled(true); tempoBox.setEnabled(true); } } void stop() { if (runner != null) { runner = null; stop.setEnabled(false); play.setEnabled(true); tempoBox.setEnabled(false); } } public void run() { try { File song = new File(songFile); currentSound = MidiSystem.getSequence(song); player = MidiSystem.getSequencer(); } catch (Exception ex) { message.setText(ex.toString()); } Thread thisThread = Thread.currentThread(); while (runner == thisThread) { try { player.open(); player.setSequence(currentSound); player.setTempoFactor(tempo); player.start(); message.setText("Playing " + songFile + " at " + tempo + " tempo"); while (player.isRunning() && runner != null) { try { Thread.sleep(1000); } catch (InterruptedException e) { } } message.setText(""); player.close(); } catch (Exception ex) { message.setText(ex.toString()); break; } } } }
A exceção é a FileNotFoundException…