Gibt es eine Möglichkeit, Android dazu zu bringen, einen Sound mit beliebiger Frequenz zu senden (dh ich möchte keine aufgezeichneten Sounddateien haben)?
Ich habe mich umgesehen und ToneGenerator war das einzige, was ich finden konnte, das sogar nahe war, aber es scheint nur in der Lage zu sein, die Standard-DTMF-Töne auszugeben.
Irgendwelche Ideen?
Antworten:
Ich habe diesen Beispielcode ursprünglich in einem Blog gefunden, aber er enthielt einige Fehler, die einige schreckliche Geräusche erzeugten. Ich habe die Fehler behoben und den resultierenden Code hier gepostet. Scheint gut für mich zu funktionieren!
quelle
0.0
bis erstellt1.0
. Multiplizieren mit32767
würde es in den 16-Bit-Festpunktbereich konvertieren. Der AudioTrack erwartet, dass der Puffer im Little- Endian- Format vorliegt . Daher konvertieren die nächsten beiden Zeilen nur die Bytereihenfolge von Big Endian in Little Endian.Verbesserung des obigen Codes:
Fügen Sie die Amplitudenrampe hoch und runter, um Klicks zu vermeiden.
Fügen Sie Code hinzu, um festzustellen, wann der Tack beendet ist.
quelle
Ich habe die oben genannten wunderbaren Lösungen in ein hübsches kleines Paket verpackt, das sofort als einfacher konfigurierbarer Summer verwendet werden kann. Es wird in einem Hintergrundthread ausgeführt und verfügt über Stop-and-Play-Methoden und eine Handvoll Optionen, die Sie festlegen können.
Es ist in JCenter verfügbar, sodass Sie es wie folgt zu Ihrer Abhängigkeitsliste hinzufügen können
und Sie verwenden es so für einen kontinuierlichen Summer
oder ein Summer wird nur einmal gespielt und Sie können Frequenz und Lautstärke so einstellen
Erweiterter Blog-Beitrag hier darüber hier GitHub hier
quelle
Da es in einigen älteren Android-Versionen einen Fehler gibt, der bei Verwendung von MODE_STATIC einen Speicherverlust verursacht, habe ich die Antwort von Xarph oben geändert, um MODE_STREAM zu verwenden. Hoffentlich hilft es einigen.
quelle
Hier ist ein weiteres Blog, das einen einfachen Synthesizer und eine Benutzeroberfläche vorführt
http://audioprograming.wordpress.com/2012/10/18/a-simple-synth-in-android-step-by-step-guide-using-the-java-sdk/
Sie könnten auch an csound oder pdlib (pure data lib) für Android interessiert sein.
quelle
Geänderter Code Basierend auf Singhaks Antwort
quelle
// Sie können einen beliebigen Wert in synth_frequency hinzufügen, um Änderungssound zu erhalten. Sie können beispielsweise eine Zufallsvariable hinzufügen, um Sound zu erhalten
quelle
Do major (16 Noten)
quelle
siehe diese hilfreiche Bibliothek
https://github.com/karlotoy/perfectTune
es ist einfach zu bedienen
Fügen Sie dies Ihren Abhängigkeiten hinzu
Und du benutzt es so:
um die Melodie zu stoppen:
quelle
Es gibt mehrere Programme dafür, aber sie saugen. Ich habe ein paar gemessen:
http://www.endolith.com/wordpress/2009/11/24/android-audio-applications/
Also tu nicht was sie tun. : D.
quelle