Font les lumières à réagir à l’Audio (3 / 5 étapes)

Étape 3: logiciel

Vous pouvez trouver le logiciel en tant que projet de Studio de Atmel sur github

Il y a 2 projets dans cette git. Le projet de base comprend toutes les fonctions de base pour mesurer et calculer les données. Il inclut également une classe pour WS2812 LED. Le Matrixproject inclut toutes les données pour mon projet basé une une matrice 7 x 6 LED avec LED de WS2812. Comme c’est très spécifique, ce code est plus d’une inspiration et un exemple de ce que vous pouvez faire.

Cette partie est la plus complexe de ce projet, que le logiciel a besoin de faire beaucoup de choses.

Les données d’échantillonnage

Tout d’abord, vous devrez entrer les données dans le contrôleur. Cela se fait par échantillonnage du signal audio avec un ADC. La fréquence d’échantillonnage dépend de la bande passante avec que vous voulez travailler. Si vous échantillonnez le signal avec un taux de 32kHz, que vous pouvez recréer les signaux jusqu'à 16kHz avec la Transformation de Fourier (FT). Il s’agit de la gamme de fréquences, avec que nous voulons travailler.

Pour ce faire une minuterie pour déclencher avec une fréquence de 32kHz et lire une valeur à partir de l’ADC chaque fois que cela arrive. Étant donné que le contrôleur d’atxmega dispose d’un contrôleur DMA, cela sert à automatiser le processus. DMA (Direct Memory Access) permet de déplacer des données d’un point dans la mémoire à l’autre complètement dans le matériel. Le DMA est mis en place en quelque sorte, qu’elle bouge le résultat de l’ADC à un endroit précis dans la RAM chaque fois qu’elle est déclenchée par la minuterie. Nous avons déguster 128 valeurs par canal.

Transformation de Fourier rapide (FFT)

Nous utilisons la bibliothèque elmchan FFT pour ce projet.

Habituellement un pi utilise beaucoup de temps de calcul, mais vous permet de recréer chaque fréquence dans le spectre du signal donné. La FFT simplifie ce processus et il accélère. L’inconvénient, c’est qu’il ne vous donne pas des fréquences spécifiques mais les bandes de fréquences. Dans le but de ce projet, ces données sont assez bonnes.

Puisque nous avons déguster 128 valeurs, la FFT va nous donner 64 résultats. En raison de la fréquence d’échantillonnage (32 kHz), nous pouvons recréer des fréquences jusqu'à 16 kHz, qui sera divisé en 64 bandes par la FFT. 16000 / 64 = 250. Cela signifie que chaque bande FFT décrit le niveau de 250 Hz. FFT bande 1 donne une valeur de 1Hz à 250Hz, bande 2 pour 251Hz à 500Hz, bande 3 pour Hz 501 à 750Hz et ainsi de suite. En augmentant le nombre d’échantillons d’entrée, vous pourriez augmenter cette résolution, mais aussi augmenter le temps de calcul nécessaire.

Les 64 bandes sont regroupées en 7 bandes, qui sont utilisés pour la matrice, qui a une largeur de 7 LED. Certains effets sont fondent encore sur les bandes originales de 64.

L’algorithme pour calculer la FFT est codé de manière, qu’il ne fait pas toutes les étapes de calcul à la fois, mais eux divise en petits morceaux. Ceci est fait pour donner le temps de contrôleur pour calculer autre chose entre ces étapes. Si vous ne faites pas cela, les animations seront parfois bégayer, qui ne semble pas bon.

L’oreille humaine réagit différent à certaines fréquences. Il est très sensible aux fréquences autour de 4kHz et pas sensible à très basse et à haute fréquence. Dans un signal audio, que les fréquences basses auront une forte amplitude, ce qui conduit à des résultats élevés de FFT, et faibles amplitudes dans les fréquences moyennes, qui conduit à faibles résultats FFT. Ce qui rend difficile de faire des calculs avec. Pour contrer cela un système très simple d’une pondération inverse est utilisé. Les coefficients sont préalablement calculés pour chaque bande et multipliés avec chacune des 64 bandes FFT.

Battre la détection

L’idée derrière cela est simple : la puissance du niveau sonore moyenne. Si le niveau actuel est moyen supérieur à cette moyenne, vous avez un battement. Pour ce faire correctement, vous auriez besoin échantillonner le signal audio en continu, ce qui nous ne faisons pas. Mais nous utiliserons encore cette idée.

Les résultats de la FFT sont divisées en 3 catégories : faible, moyen et élevé. Ces valeurs sont en moyenne au fil du temps comme une moyenne mobile. Si le niveau actuel est plus élevé que 50 % à 100 % (selon la tranche) de cette moyenne, il est évalué comme battement. Cela fonctionne très bien avec un métronome, qui produit un son simple, mais ne fonctionne pas trop bien avec des signaux complexes comme des chansons. La détection des temps dans la bande du bas fonctionne le mieux et le pire au milieu de la bande lorsqu’il existe des voix dans la chanson.

Que faire avec ces données ?
A titre d’exemple, je vais vous expliquer comment fonctionne l’affichage du spectre mono. Vous pouvez trouver le code du projet complet dans animations.cpp dans le anim_monospektrum_step() de fonction Sub. Cette animation est utilisée dans la vidéo d’intro.

Les valeurs des 7 groupes consolidés sont définies comme des valeurs cibles pour la hauteur des colonnes. Il est gradué en une certaine manière, que cette valeur est comprise entre 0 et 9000. Le décalage de couleur cible est défini par l’amplitude. Les valeurs réelles, qui servira à calculer à la sortie, changent lentement leur valeur pour correspondre à la valeur cible. Cela rend l’animation très fluide et prévient des sauts soudains.

La matrice a une hauteur de 6 LED. Cela signifie que chaque LED couvre 9000 / 6 = 1500 chiffres de la valeur réelle. Si la valeur réelle d’une bande est 1500, seule la LED dans le fond s’illuminait. Si la valeur était de 3000 les deux inférieurs plus LED s’illuminait. Comme depuis longtemps la valeur réelle est supérieure à 1500 nous allume plus dirigé et soustraire les 1500 de la valeur. Si, après ce processus, la valeur n’est pas 0, la LED au-dessus de la dernière pleine-éclairé LED s’allume aussi bien, mais la luminosité est proportionnelle à la valeur. Plus les autres valeur, plus la luminosité.

Comme un détail supplémentaire les bandes seront met à clignoter lorsqu’un battement au sein de cette bande est détecté.

Articles Liés

Synchronisées musicalement les lumières de Noël

Synchronisées musicalement les lumières de Noël

Au cours de la période de Noël, vous êtes tenu de voir les maisons qui sont décorées avec des lumières de Noël qui sont synchronisés à la musique. Vous pensez peut-être que votre maison ne sera jamais en mesure d'avoir des lumières de Noël musicales
Les lumières sous-marines - isolés dans les vieux pots de confiture

Les lumières sous-marines - isolés dans les vieux pots de confiture

Sur le navire de l'art Illutron , nous utilisons souvent des lumières sous l'eau. Pour l'éclairage et la décoration. C'est un bel effet, et il donne une touche de magie aux interprétations ou exécutions sur l'eau.Laisser les lumières pendant quelques
Christine de bâtiment (avec les lumières et le son!)

Christine de bâtiment (avec les lumières et le son!)

L'Halloween sur le thème nous notre parti autour des histoires de Stephen King et nous avons décidé que pleine grandeur Plymouth Fury de « Christine » ferait un excellent point focal. La route facile peut-être impliquer communiquant avec un club de v
Contrôler les lumières fluorescentes avec un pointeur Laser et d’un Arduino

Contrôler les lumières fluorescentes avec un pointeur Laser et d’un Arduino

quelques membres de l' Alpha One Labs Hackerspace n'aime pas la lumière crue, distribuée par les luminaires fluorescents.  Ils voulaient un moyen d'être en mesure de contrôler facilement les différents luminaires, peut-être avec un pointeur laser ?J'
Vélo les lumières directionnelles - Simple, faible coût et Solar Powered

Vélo les lumières directionnelles - Simple, faible coût et Solar Powered

J'utilise mon vélo pour se rendre au travail, et que la saison progresse de chute je me trouve CIRC. maison dans l'obscurité. Tandis que ma moto est équipée de feux (et moi avec une veste réfléchissante) je ne suis pas particulièrement inquiet d'être
Contrôler les lumières dans votre maison avec votre ordinateur

Contrôler les lumières dans votre maison avec votre ordinateur

vous avez jamais voulu régler l'éclairage de votre maison depuis votre ordinateur ? C'est en fait assez abordable pour le faire. Vous pouvez même contrôler les systèmes de gicleurs, stores automatiques, écrans de projection motorisés, etc.. Vous avez
Contrôler les lumières RVB de Android avec Arduino & Bluetooth LE (BLE)

Contrôler les lumières RVB de Android avec Arduino & Bluetooth LE (BLE)

j'ai vu beaucoup de projets de Kickstarter mettant en vedette la nouvelle norme Bluetooth 4.0 Low Energy et clones Arduino à venir sur le marché, a permis un certain nombre de Bluetooth LE (BLE) mais nombre de ces projets semblent encore être quelque
Teinter les lumières de queue Ford Falcon Xr6

Teinter les lumières de queue Ford Falcon Xr6

Voici un guide rapide pour teinter la lumière avec un spray pouvez taper teinte. Il coûte environ 30 $ NZD pour une canette, mais qui ferait au moins 4 jeux de lumières. Aussi, il est illégal d'avoir des modifications comme ça on s'allume dans mon pa
C’est révolutionnaire : Imaginez le déplacement (photovoltaïque) pour absorber les lumières du soleil toute la journée sur chaque bâtiment

C’est révolutionnaire : Imaginez le déplacement (photovoltaïque) pour absorber les lumières du soleil toute la journée sur chaque bâtiment

cette idée est vraiment révolutionnaire en comparant à ce que j'ai publié avant ; il est respectueux de la nature... et économise de l'énergie de soleil tellement... ne savez-vous pas que nous n'utilisons que moins de 10 % de l'énergie de soleils...
Élevez les lumières de tiges de bambou et petites lumières fluorescentes

Élevez les lumières de tiges de bambou et petites lumières fluorescentes

ma daughter(11) et fils (7) et moi avons construit deux 48 pouces par 48 pouces soulevées lits. Nous avons rempli les cases avec la saleté, rempotage sol, vieux légumes pourris, Marc de café (bonne Source d'azote et les limaces n'aiment eux - Merci S
Perruches, contrôler les lumières !

Perruches, contrôler les lumières !

Quand mes perruches debout sur un perchoir, les phares s'allument ! Mais quand ils arrivent au large, les lumières s'éteindre !Vous avez besoin de quelques outils et pièces incluant un contrôleur sans fil et un bouton poussoir SPDT. (Vous avez besoin
Hotte à flux laminaire eau Jet partie 2 - les lumières

Hotte à flux laminaire eau Jet partie 2 - les lumières

Comme je le disais dans mon premier instructable je comptais sur l'ajout de lumières, mais je n'étais pas en mesure d'obtenir les résultats recherchés parce que je n'avais pas accès au plus grand, plus lumineux LED donc j'ai juste utilisé ce que j'av
C’est révolutionnaire : Imaginez passer (photovoltaïque) pour absorber les lumières du soleil toute la journée sur chaque bâtiment

C’est révolutionnaire : Imaginez passer (photovoltaïque) pour absorber les lumières du soleil toute la journée sur chaque bâtiment

c'est révolutionnaire : Imaginez le déplacement (photovoltaïque) pour absorber les lumières du soleil toute la journée sur chaque bâtimentIntro, c'est révolutionnaire : Imaginez le déplacement (photovoltaïque) pour absorber les lumières du soleil tou
Gardez les lumières de Noël

Gardez les lumières de Noël

Ma femme et moi avons un patio extérieur avec un interrupteur manuel pour allumer la lampe, sur et en dehors. Nous avons décidé de joindre les lumières de Noël à lui via une ampoule à l'adaptateur mural et minuterie, ce qui signifie que nous devons g