2012-07-04 13 views
5

Dobrze, dobrze. Po raz pierwszy używam Javy, by naprawić problem. Kupiłem nowy zestaw słuchawkowy o nazwie Sennheiser 120 HD; ale jest problem. Jeśli nie ma stałej emisji dźwięku, podstawa słuchawek na chwilę się wyczerpie i wyłączy. Słuchawki są spamowane statycznie, co jest okropne w uszach. Rozwiązaniem tego problemu jest obecnie odgrywanie muzyki 24 godziny na dobę, 7 dni w tygodniu, aby zapobiec statycznym skutkom śmierci. Może jestem dziwny, ale nie chcę słuchać muzyki 24/7.Czy w Javie jest biblioteka do ciągłego emitowania określonej częstotliwości?

Uważam, że rozwiązaniem praktycznym byłoby ciągłe emitowanie dźwięku, który baza może wykryć, ale nie słyszę. Aplikacja musi być wydajna, ponieważ działa 24 godziny na dobę, 7 dni w tygodniu.

Prowadzę badania, ale nie mam takich doświadczeń z Javą. Nie mogę znaleźć żadnej biblioteki do emitowania określonej częstotliwości. Czy ktoś o tym wie?

Najlepiej byłoby uzyskać rozwiązanie problemu w ciągu 4 dni, zanim moja polityka zwrotów w sklepie nie będzie już ważna. Incase, jeśli to nie działa.

Email from Sennheiser

+1

Czy nie byłoby łatwiej zwrócić słuchawki do sklepu, ponieważ wyraźnie nie nadawały się do tego celu? A może nie, wyłączając je, gdy ich nie potrzebujesz? – biziclop

+1

Przy okazji, myślę, że odtwarzanie sygnału o stałym zeru zadziała. Możesz ustawić swój odtwarzacz multimedialny tak, aby był najbardziej znanym utworem Johna Cage'a. – biziclop

+0

Są one ponownie włączane po włączeniu źródła dźwięku. Więc chcesz je nosić bez słuchania muzyki? – opyate

Odpowiedz

1

myślę, przekonasz się, że słuchanie dźwięku o stałej częstotliwości jest bolesne dla uszu. Możesz jednak zrobić coś takiego, używając tylko standardowych bibliotek Java:

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

Myślałem o częstotliwości, która nie jest słyszalna, nieco wyższa niż dźwięk komara, którego używa student, aby uciec z korzystania z telefonu komórkowego w klasie. EDYCJA: Zakończono przeglądanie kodu źródłowego. W oświadczeniu za nic nie ma sensu. Może pewnego dnia dotrę do tego punktu; to jednak wygląda na łatwe do zmodyfikowania. Dziękuję, wkrótce będę próbował. –

+0

W takim przypadku podejrzewam, że rozwiązanie sygnału zerowego firmy Biziclop powinno działać. Jeśli nie, mogę zasugerować częstotliwość subaudible, powiedzmy 4 Hz. Wysoka częstotliwość może powodować problemy z twoimi uszami, nawet jeśli nie możesz ich usłyszeć. –

+0

Hm, 4 Hz jest ledwo słyszalny. Skoro czas między odcięciami jest zgodny, to może będzie grać przez około jedną sekundę co czterdzieści sekund? (1000) dla (40 000) –