2012-07-04 7 views
5

Bene, bene. La prima volta sto usando Java per risolvere un problema. Ho comprato un nuovo set di cuffie chiamato Sennheiser 120 HD; ma c'è un problema. Se non c'è un'emissione costante di audio, alla fine la base per le cuffie si interrompe e si spegne. Le cuffie sono spammate di elettricità statica, che è orribile per le orecchie. La soluzione a questo per me al momento è la riproduzione di musica 24 ore su 24, 7 giorni su 7, per prevenire la morte statica. Forse sono strano, ma non voglio ascoltare musica 24/7.Esiste una libreria in Java per emettere costantemente una certa frequenza?

Credo che una soluzione praticabile per questo sarebbe emettere costantemente un suono che la base può rilevare ma non riesco a sentire. L'applicazione dovrebbe essere efficiente dal momento che è in esecuzione 24/7.

Ho fatto qualche ricerca, ma non sono così esperto con Java. Non riesco a trovare alcuna libreria per l'emissione di una determinata frequenza. Qualcuno ne sa qualcosa?

Sarebbe meglio ottenere la soluzione per questo entro 4 giorni, prima che la mia politica di reso presso il negozio non sia più valida. Incase se questo non funziona.

Email from Sennheiser

+1

Non sarebbe più semplice restituire le cuffie per il credito in negozio in quanto chiaramente non idonee allo scopo? O in mancanza, spegnendoli quando non ne hai bisogno? – biziclop

+1

A proposito, penso che suonare un segnale a zero costante funzionerebbe. È possibile impostare il lettore multimediale per riprodurre il brano più noto di John Cage. – biziclop

+0

Si attivano di nuovo quando si accende la sorgente audio. Quindi, vuoi solo indossarli senza ascoltare musica? – opyate

risposta

1

penso che troverete che l'ascolto di un suono costante frequenza è doloroso per le orecchie. Tuttavia, si potrebbe fare qualcosa di simile, semplicemente usando le librerie Java standard:

AudioFormat format = new AudioFormat(44000f, 16, 1, true, false); 
SourceDataLine line = (SourceDataLine)AudioSystem.getLine(new DataLine.Info(SourceDataLine.class, format)); 

line.open(format); 
line.start(); 

double f = 440; // Hz 
double t = 3; // seconds 

byte[] buffer = new byte[(int)(format.getSampleRate() * t * 2 + .5)]; 

f *= Math.PI/format.getSampleRate(); 

for(int i = 0; i < buffer.length; i += 2) { 
    int value = (int)(32767 * Math.sin(i * f)); 
    buffer[i + 1] = (byte)((value >> 8) & 0xFF); 
    buffer[i] = (byte)(value & 0xFF); 
} 

line.write(buffer, 0, buffer.length); 

line.drain(); 
+0

Stavo pensando ad una frequenza che non è udibile, un po 'più acuta rispetto al tono di zanzara usato dallo studente per farla franca con il cellulare in classe. EDIT: finito guardando attraverso il codice sorgente. Quasi nulla ha senso nella dichiarazione for. Forse un giorno sarò a quel punto; tuttavia sembra facile da modificare. Grazie, ci proverò tra poco. –

+0

In tal caso, sospetto che la soluzione del segnale zero di biziclop debba funzionare. In caso contrario, potrei suggerire una frequenza subaudible, ad esempio 4 Hz. L'alta frequenza potrebbe fare cose alle tue orecchie anche se non riesci a sentirlo. –

+0

Hm, 4Hz è appena udibile. Dal momento che il tempo che intercorre tra gli spegnimenti è coerente, potrebbe funzionare per circa un secondo ogni quaranta secondi? (1000) per (40.000) –

Problemi correlati