Esse e um tutorial cujo objetivo e criar um simulador de metronomo em Java e analisar seu codigo fonte. Estarei utilizando como base o software criado por mim chamado JMetronomo, lancado em 23/07/2012.Usaremos a versao 7 do Java Development Kit e tambem o NetBeans. Este ultimo nao e essencial, mas ajuda na criacao de formularios e na compilacao.Voce pode baixar o codigo fonte do JMetronomo nesse link.E importante saber um pouco de Java e Orientacao a Objetos para nao ficar totalmente perdido no codigo, porem, creio ter deixado comentarios e analises suficientes para a compreensao. Nao deixe ler o tutorial se ainda nao dominar o assunto, pois assim ja estara estudando esse modelo de programacao de maneira pratica.Para comecar, vamos primeiro entender o funcionamento de um metronomo, utilizando um texto da Wikipedia e um video no Youtube. "O metronomo e um relogio que mede o tempo (andamento) musical. Produzindo pulsos de duracao regular, ele pode ser utilizado para fins de estudo ou interpretacao musical."Fica definido que a funcao do metronomo e medir o tempo musical e que existem dois tipos de metronomo: o mecanico e o eletronico. Seus pulsos sao regulares, isto e, tem uma duracao e intervalo constante. Essa informacao sera fundamental para a realizacao do nosso software, afinal, tambem e a base do funcionamento do metronomo.Um ponto importante presente no video e que ha batidas fortes e fracas, que dependem do tipo de compasso da musica. Apesar de serem sons diferentes, eles nao deixam de formar pulsos regulares.O metronomo que vamos criar tera duas classes basicas:a classe frmMetronomo do formulario, onde o usuario insere a velocidade das batidas em BPM(batidas por minuto) e a quantidade de tempos em um compasso(o primeiro tempo do compasso e o tempo forte e os outros serao tempos fracos);a classe metronomo, onde o computador ira simular um metronomo de acordo com as informacoes fornecidas.Formulario do JMetronomo, criado com auxilio da ferramenta NetBeans:Nesta janela, o usuario pode tanto selecionar a velocidade pelo slidebar como especificar na caixa de texto. Depois, ele seleciona o compasso X por X, sendo que o segundo numero nao altera o funcionamento do compasso, servindo apenas de referencia. O usuario pode iniciar ou parar a execucao do metronomo. Ha ainda botoes que enviam para a minha pagina na internet, exibem informacoes sobre o software e saem do mesmo.Ainda nao vamos programar esta janela. Julgo ser melhor trabalhar primeiro a classe metronomo.Classe metronomo:package jmetronomo;import java.util.Timer;import java.util.TimerTask;import java.io.InputStream;import java.io.FileInputStream; import java.io.File;import sun.audio.*; //classe metronomopublic class metronomo{ //atributos que serao enviados pelo formulario ou por outro lugar private int BPM; private int Tempos; private int Nota; //atributos que serao usados apenas nessa classe private double sleep_timer; private int tempoatual; //cria um novo objeto Timer da classe que foi importada importado Timer timer = new Timer(); //Construtor que 'pede' parametros public metronomo(int BPM, int Tempos, int Nota) { setBPM(BPM); setTempos(Tempos); setNota(Nota); } //Metodos GET e SET public int getBPM() { return BPM; } public void setBPM(int BPM) { this.BPM = BPM; } public int getTempos() { return Tempos; } public void setTempos(int Tempos) { this.Tempos =