Generatore suoni.
[ Nouvelle discussion
| Répondre au groupe
|
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.

|
 cette fonctionnalité est reservée aux membres ayant une session active !
|