Erro em java sound do livro use a cabeça

2 respostas
E

oal pessoal tudo bem esto lendo o livro use a cabeça java esto numa parte que eles no livro estao criando uma beat box

mas no capitulo 12 que fala sobre swing ensinando como fazer text are botao tem um seguinte codgo deles da beatbox vou posta para voçes mas nao esto entendendo o mtivo do erro de primeiro fala para eu implemtar uam instarface chamada ControlerEventListener mas da erro e e cloquei desse jeito

import  javax.sound.midi.*;
import  java.io.*;
import  javax.swing.*;
import  java.awt.*;

public class MiniMusicPlayer implements  ControllerEventListener

com os 2 ll vai em Controller depois o 2 erro que nao to entendendo e esse

for (int i = 0 ; i<60 ; i+=4){
				
				r=(int)((Math.random()*50) =!); /* e aqui o erro nao to entendendo o = ! pelo oque eu li isso so pode ser usando if for while  do while mas nao ali me corrija seu eu estiver errado*/ 
				track.add(makeEvent(144,1,r,100,i));
				track.add(makeEvent(176,1,127,0,i));
				track.add(makeEvent(128,1,r,100,i + 2));
			}

ai quando eu apago esse = ! da erro no

sequencer.setSequence(seq);
			sequencer.start();
			sequencer.setTempoInBMP(120);/* aqui que da o erro */

alguem pode me ajudar nesse codigo vo posta ele por completo

import  javax.sound.midi.*;
import  java.io.*;
import  javax.swing.*;
import  java.awt.*;

public class MiniMusicPlayer implements  ControllerEventListener{
	static JFrame f = new JFrame("Meu Tocador de musica de video");
	static MyDrawPanel m1;
	
	public static void main(String args[]){
		MiniMusicPlayer mini = new MiniMusicPlayer();
		mini.go();
		
	}
	
	public void setUpGui(){
		m1 = new MyDrawPanel();
		f.setContentPane(m1);
		f.setBounds(30,30,300,300);
		f.setVisible(true);
		
	}
	
	public void go(){
		setUpGui();
		
		try{
			
			Sequencer sequencer = MidiSystem.getSequencer();
			sequencer.open();
			sequencer.addControllerEventListener(m1,new int [] {127});
			Sequence seq = new Sequence(Sequence.PPQ,4);
			Track track = seq.createTrack();
			
			/*int r = 0;*/
			
			for (int i = 0 ; i<60 ; i+=4){
				
				r=(int)((Math.random()*50) =!);
				track.add(makeEvent(144,1,r,100,i));
				track.add(makeEvent(176,1,127,0,i));
				track.add(makeEvent(128,1,r,100,i + 2));
			}
			
			
			sequencer.setSequence(seq);
			sequencer.start();
			sequencer.setTempoInBMP(120);
		}catch(Exception ex ){ex.printStackTrace();}
		
	
		
	}
	
	public MidiEvent makeEvent (int comd,int chan,int one , int two , int tick){
		MidiEvent event = null;
		try{
			
			ShortMessage a = new ShortMessage();
			a.setMessage(comd,chan,one,two);
			event = new MidiEvent (a,tick);
			
		}catch(Exception e ){
		}
		
		return event;
		
	}
	
	
	class MyDrawPanel extends JPanel implements ControllerEventListener{
		boolean msg = false;
		
		public void controlChange(ShortMessage event){
			msg = true;
			repaint();
			
		}
		
		public void paintComponent(Graphics g){
			if (msg){
				
				Graphics g2 = (Graphics2D) g;
				
				int r = (int)(Math.random()*250);
				int gr = (int)(Math.random()*250);
				int b = (int)(Math.random()*250);
				
				g.setColor(new Color(r,gr,b));
				
				int ht= (int)((Math.random()*120) +10);
				int width = (int) ((Math.random()*120)+10);
				
				int x = (int)((Math.random()*40)+10);
				int y= (int)((Math.random()*40)+10);
				
				g.fillRect(x,y,ht,width);
				
				
			}
		}
	}
}

obrigado

2 Respostas

T

Acho que há algum problema, ou no livro em português, ou então quando você foi digitar algum problema do livro. Não tenho o livro em português aqui…

// errado
r=(int)((Math.random()*50) =!);
// correção?
r=(int)((Math.random()*50) + 1);
E

sim acho mas tem uns erros na versao em portugues do livros mas obrigado!!

Criado 10 de agosto de 2009
Ultima resposta 10 de ago. de 2009
Respostas 2
Participantes 2