accès aux groupes de discussion, consultation et publication d'articles, recherche de "newsgroups"...
membres, identifiez-vous
é-mail Mot de passe
nouveau ? mot de passe oublié ?
Chargement... Chargement en cours...

Groupes français belges canadiens suisses internationaux Nétiquette
Échangez opinions et commentaires dans les forums de discussion.

Generatore suoni.

 [  Nouvelle Discussion Nouvelle discussion  |  Répondre au groupe Répondre au groupe  |  it.comp.java ] 

Retour : Accueil du site it comp java  


  Sujet:   Generatore suoni.  
 De: x-tr...@despammed.com (x-treme)
 Groupes: it.comp.java
 Organisation: Eutelia SpA
 Date: 15. Jul 2008, 15:46:55
Salve a tutti. Da qualche parte su internet ho estrapolato questo codice 
che ho in parte riadattato:

import javax.sound.sampled.*;

public class Tone {
     //campionamenti al secondo
     public static final float SAMPLE_RATE = 8000f;

     /**
      * @param hz frequenza
      * @param msec durata in millisecondi
      * @throws javax.sound.sampled.LineUnavailableException eccezione
      */
     public static void sound(int hz, int msec) throws 
LineUnavailableException {
         //creo un array di tipo byte da un solo elemento
         byte[] buf = new byte[1];

         AudioFormat af = new AudioFormat(SAMPLE_RATE, 8, 1, true, false);
         SourceDataLine sdl = AudioSystem.getSourceDataLine(af);
         sdl.open(af);
         sdl.start();

         for (int i=0; i < msec * 8; i++) {
             double angle = i / (SAMPLE_RATE / hz) * 2.0 * Math.PI;
             buf[0] = (byte)(Math.sin(angle) * 110.0);
             sdl.write(buf,0,1);
         }

         sdl.drain();
         sdl.stop();
         sdl.close();
     }
}

E questo è il main:

public class Main {

     public static void main(String[] args) {
         try {
             Tone.sound(1000, 1000);
             Tone.sound(700, 1000);
             Tone.sound(1200, 1000);
         }
         catch (LineUnavailableException e) {
              System.out.println(e);
         }
     }//fine main
}

Nella chiamata Tone.sound(1000, 1000); il primo argomento è la frequenza 
in Hz, il secondo parametro la durata in millisecondi.
Tutto funziona, ma se riduco i tempi (ad esempio creo una piccola 
applicazione che genera i codici morse) tra una chiamata e l'altra della 
classe statica Tone si sentono dei "clic" molto fastidiosi ed inoltre il 
suono risulta "impastato".
Non si riesce a creare una classe un po' più "furba" e che risenta meno 
(o per nulla) delle variazioni veloci?

Spero di essermi spiegato al meglio...

Saluti.


DateSujet  Auteur
01.01.
o 
Groups Explorer contact votre avis comment ça marche? rechercher un groupe suggérer un groupe abuse accueil du site   Imprimer cette page   Envoyer cette page à un(e) ami(e)
Free counter and web stats