2010-09-24 5 views
0

Je cherche à écrire un script Arduino qui utilise le signal audio envoyé aux haut-parleurs pour créer une visualisation physique. L'Arduino est connecté à la machine Windows seulement via USB, j'ai donc besoin d'utiliser USB pour savoir ce qui est envoyé aux haut-parleurs. Comment accéder à cette information?Accès à la sortie audio sous Windows

+0

Je ne suis pas sûr de comprendre pourquoi cette question est spécifique à Windows ... n'allez-vous pas simplement surveiller le signal électrique sur le fil de l'ordinateur (ou quel autre périphérique pour quoi compte-t-il) aux haut-parleurs? – mac

+0

Je l'ai déjà fait, mais je veux faire une option USB. Donc, j'ai besoin d'accéder au signal qui va à la prise casque en quelque sorte. –

+0

Ok, j'ai compris ... Malheureusement, je n'utilise pas Windows, donc je ne peux pas aider. – mac

Répondre

0

Il n'y a pas de très bon moyen d'interfacer un signal audio avec un Arduino sans matériel externe. Une façon de le faire serait cependant de connecter la ligne audio à une broche polarisée avec un condensateur, alors vous pouvez utiliser directement l'ADC. Il y aura une gamme dynamique assez terrible, mais il ne faut que 3 parties passives. Exécuter cela à travers un amplificateur avant d'aller à la broche ADC pourrait améliorer considérablement la gamme dynamique et fournir une opportunité de filtrage (voir ci-dessous). Vous pouvez également activer une référence de tension sur puce à utiliser (généralement 1 à 1,5 V) au lieu de l'alimentation principale.

Peu importe pour une visualisation directe, mais la fréquence d'échantillonnage ne sera pas suffisante pour capturer le contenu spectral complet de l'audio (en plus de la mauvaise résolution de la plage dynamique). La fréquence d'échantillonnage par défaut de l'Arduino est de 10 kHz (-ish ... éventuellement asynchrone), de sorte que vous n'obtiendrez des données valables que si votre signal est inférieur à 5 kHz, sans quoi le crénelage se déclenchera. (Si vous écrivez votre propre pilote analogique pour l'ATmega32P, vous pouvez obtenir une fréquence d'échantillonnage de 76 kHz avec des échantillons de 8 bits)

Ensuite, pour transmettre ces données à un ordinateur, vous pouvez facilement envoyer toutes ces valeurs ADC sur l'UART pour l'ordinateur à ramasser et à traiter comme bon lui semble. Un ATmega n'aura pas le pouvoir de calculer les FFT à la volée (ce que vous feriez presque toujours pour un viz de toute façon).


Ou sauter tout cela, connecter le signal audio à la carte son de votre ordinateur (ou carte son USB ... ils sont assez agréable) et utiliser un certain pilote audio.

1

En ce moment, l'Arduino ne peut communiquer avec l'ordinateur via série via USB. Les choses ont changé avec le nouvel Arduino Uno, mais les exemples n'ont pas encore été publiés pour montrer comment faire fonctionner le nouvel Arduino comme d'autres périphériques USB.

Vous devrez écrire quelque chose pour la boîte Windows qui surveille l'audio du système et envoie les informations à ce sujet sur série à l'Arduino, aussi longtemps que vous voulez le connecter uniquement via USB.

0

Il existe une bibliothèque Java pour le traitement appelée ESS qui vous permet d'accéder à la sortie audio.

Questions connexes