Existe-t-il un moyen de faire en sorte qu'Android émette un son de fréquence arbitraire (ce qui signifie que je ne veux pas de fichiers audio préenregistrés)?
J'ai regardé autour de moi et ToneGenerator était la seule chose que j'ai pu trouver qui était encore proche, mais il ne semble être capable de produire que les tonalités DTMF standard.
Des idées?
Réponses:
J'ai initialement trouvé cet exemple de code sur un blog, mais il contenait des bugs qui généraient des sons horribles. J'ai corrigé les bogues et publié le code résultant ici. Semble bien fonctionner pour moi!
la source
0.0
à1.0
. Multiplier par32767
le convertirait en plage de virgule fixe de 16 bits. L' AudioTrack s'attend à ce que le tampon soit au format little endian . Par conséquent, la ligne suivante convertit simplement l'ordre des octets du big endian en little endian.Amélioration du code ci-dessus:
Ajoutez une augmentation et une diminution de l'amplitude pour éviter les clics.
Ajoutez du code pour déterminer quand le virement a fini de jouer.
la source
J'ai emballé les merveilleuses solutions ci-dessus dans un petit emballage soigné qui est plus utilisable dès la sortie de la boîte comme un simple buzzer configurable. Il l'exécute dans un thread d'arrière-plan et dispose de méthodes d'arrêt et de lecture et d'une poignée d'options que vous pouvez définir.
Il est sur JCenter afin que vous puissiez l'ajouter à votre liste de dépendances comme ceci
et vous l'utilisez comme ça pour un buzzer continu
ou un buzzer joué une seule fois et vous pouvez régler la fréquence et le volume comme ceci
Article de blog étendu ici à ce sujet ici GitHub ici
la source
Puisqu'il y a un bogue dans certaines anciennes versions d'Android qui provoque une fuite de mémoire lors de l'utilisation de MODE_STATIC, j'ai modifié la réponse de Xarph ci-dessus pour utiliser MODE_STREAM. Espérons que cela en aidera certains.
la source
Voici un autre blog présentant un synthé simple et une interface utilisateur
http://audioprograming.wordpress.com/2012/10/18/a-simple-synth-in-android-step-by-step-guide-using-the-java-sdk/
Vous pourriez également être intéressé par csound ou pdlib (pure data lib) pour Android.
la source
Code modifié basé sur la réponse de Singhaks
la source
// Vous pouvez ajouter une valeur arbitraire dans synth_frequency pour obtenir le changement de son par exemple, vous pouvez ajouter une variable aléatoire pour obtenir le son
la source
Do majeur (16 notes)
la source
voir cette bibliothèque utile
https://github.com/karlotoy/perfectTune
c'est facile à utiliser
ajoutez ceci à vos dépendances
Et vous l'utilisez comme ceci:
pour arrêter la mélodie:
la source
Il existe plusieurs programmes pour cela, mais ils sont nulles. J'en ai mesuré quelques-uns:
http://www.endolith.com/wordpress/2009/11/24/android-audio-applications/
Alors ne faites pas ce qu'ils font. :RÉ
la source