- Comment fonctionne l'accordeur de guitare
- Composants requis
- Schémas
- Code Arduino pour accordeur de guitare
Salut les gars, ces dernières semaines, j'ai travaillé à renouer avec mon amour pour la guitare. Jouer de la guitare box était la façon dont je me détendais il y a quelques années avant que le saxophone ne prenne le dessus. Revenant à la guitare, après 3 ans à jouer rarement un accord, j'ai découvert entre autres que je ne savais plus comment chaque corde devait sonner, pour le dire dans les mots de mon ami, «mon ouïe n'était plus accordée» et En conséquence, je n'ai pas pu régler la guitare sans l'aide d'un clavier ou d'une application mobile que j'ai téléchargée plus tard. Les semaines se sont écoulées jusqu'à il y a quelques jours, lorsque le créateur en moi est devenu motivé et j'ai décidé de construire un accordeur de guitare basé sur Arduino. Dans le didacticiel d'aujourd'hui, je partagerai comment créer votre propre accordeur de guitare Arduino DIY.
Comment fonctionne l'accordeur de guitare
Avant de passer à l'électronique, il est important de comprendre le principe derrière la construction. Il y a 7 notes de musique majeures désignées par les alphabets; A, B, C, D, E, F, G et se terminent généralement par un autre A qui est toujours à une octave plus haut que le premier A. En musique, plusieurs versions de ces notes existent comme le premier A et le dernier A. Ces notes se distinguent chacun de leur variation et les uns des autres par l'une des caractéristiques du son dites pitch. La hauteur est définie comme le volume ou la faiblesse du son et est indiquée par la fréquence de ce son. Puisque la fréquence de ces notes est connue, pour que nous puissions déterminer si la guitare est accordée ou non, il suffit de comparer la fréquence de la note d'une corde particulière à la fréquence réelle de la note que la corde représente.
Les fréquences des 7 notes de musique sont:
A = 27,50 Hz
B = 30,87 Hz
C = 16,35 Hz
D = 18,35 Hz
E = 20,60 Hz
F = 21,83 Hz
G = 24,50 Hz
Chaque variation de ces notes est toujours à une hauteur égale à FxM où F est la fréquence et M est un entier non nul. Ainsi, pour le dernier A qui, comme décrit précédemment, est à une octave plus haut que le premier A, la fréquence est;
27,50 x 2 = 55 Hz.
La guitare (guitare Lead / box) a généralement 6 cordes désignées par les notes E, A, D, G, B, E sur corde ouverte. Comme d'habitude, le dernier mi sera à une octave plus haut que le premier E. Nous allons concevoir notre accordeur de guitare pour aider à accorder la guitare en utilisant les fréquences de ces notes.
Selon l'accord de guitare standard, la note et la fréquence correspondante de chaque corde sont indiquées dans le tableau ci-dessous.
Cordes |
La fréquence |
Notation |
1 (E) |
329,63 Hz |
E4 |
2 (B) |
246,94 Hz |
B3 |
3 (G) |
196,00 Hz |
G3 |
4 (D) |
146,83 Hz |
D3 |
5 (A) |
110,00 Hz |
A2 |
6 (E) |
82,41 Hz |
E2 |
Le déroulement du projet est assez simple; nous convertissons le signal sonore généré par la guitare en une fréquence puis comparons avec la valeur de fréquence exacte de la corde à accorder. Le guitariste est averti à l'aide d'une LED lorsque la valeur est corrélée.
La détection / conversion de fréquence comporte 3 étapes principales;
- Amplifier
- Compensation
- Conversion analogique-numérique (échantillonnage)
Le signal sonore produit sera trop faible pour que l'ADC de l'Arduino le reconnaisse, nous devons donc amplifier le signal. Après amplification, pour maintenir le signal dans la plage reconnaissable par l'ADC de l'Arduino afin d'éviter l'écrêtage du signal, nous compensons la tension du signal. Après la compensation, le signal est ensuite transmis à l' ADC Arduino où il est échantillonné et la fréquence de ce son est obtenue.
Composants requis
Les composants suivants sont requis pour construire ce projet;
- Arduino Uno x1
- LM386 x1
- Micro à condensateur x1
- Prise microphone / audio x1
- Potentiomètre 10k x1
- Condensateur O.1uf x2
- Résistance 100ohms x4
- Résistance 10ohms x1
- Condensateur 10 uf x3
- LED jaune 5 mm x2
- LED verte de 5 mm x1
- Boutons poussoirs normalement ouverts x6
- Fils de cavalier
- Planche à pain
Schémas
Connectez les composants comme indiqué dans le schéma de circuit de l'accordeur de guitare ci-dessous.
Les boutons-poussoirs sont connectés sans résistances pull up / down car les résistances pullup intégrées de l'Arduino seront utilisées. Cela permet de garantir que le circuit est aussi simple que possible.
Code Arduino pour accordeur de guitare
L'algorithme derrière le code de ce projet Guitar Tuner est simple. Pour accorder une corde particulière, le guitariste sélectionne la corde en appuyant sur le bouton-poussoir correspondant et gratte le joue une corde ouverte. Le son est collecté par l'étage d'amplification et transmis à l'ADC Arduino. La fréquence est décodée et comparée. Lorsque la fréquence d'entrée de la chaîne est inférieure à la fréquence spécifiée, pour cette chaîne, une des LED jaunes s'allume pour indiquer que la chaîne doit être resserrée. Lorsque la fréquence mesurée est supérieure à la fréquence stipulée pour cette chaîne, une autre LED s'allume. Lorsque la fréquence est dans la plage spécifiée pour cette corde, la LED verte s'allume pour guider le guitariste.
Le code Arduino complet est donné à la fin, ici nous avons brièvement expliqué les parties importantes du code.
Nous commençons par créer un tableau pour contenir les commutateurs.
tableau de boutons int = {13, 12, 11, 10, 9, 8}; //
Ensuite, nous créons un tableau pour contenir la fréquence correspondante pour chacune des chaînes.
float freqarray = {82,41, 110,00, 146,83, 196,00, 246,94, 329,63}; // tout en Hz
Cela fait, nous déclarons ensuite les broches auxquelles les LED sont connectées et d'autres variables qui seront utilisées pour obtenir la fréquence du CAN.
int lowerLed = 7; int supérieurLed = 6; int justRight = 5; #define LENGTH 512 octets rawData; nombre int;
Vient ensuite la fonction void setup () .
Ici, nous commençons par activer le pull interne sur l'Arduino pour chacune des broches auxquelles les commutateurs sont connectés. Après quoi, nous définissons les broches auxquelles les LED sont connectées en tant que sorties et lançons le moniteur série pour afficher les données.
void setup () { for (int i = 0; i <= 5; i ++) { pinMode (buttonarray, INPUT_PULLUP); } pinMode (lowerLed, OUTPUT); pinMode (HigherLed, OUTPUT); pinMode (justRight, OUTPUT); Serial.begin (115200); }
Ensuite, est la fonction de boucle vide , nous implémentons la détection et la comparaison de fréquence.
void loop () { if (count <LENGTH) { count ++; rawData = analogRead (A0) >> 2; } else { somme = 0; pd_state = 0; période int = 0; for (i = 0; i <len; i ++) { // Autocorrélation sum_old = sum; somme = 0; pour (k = 0; k <len-i; k ++) sum + = (rawData-128) * (rawData-128) / 256; // Serial.println (somme); // Peak Detect State Machine if (pd_state == 2 && (sum-sum_old) <= 0) { period = i; pd_state = 3; } if (pd_state == 1 && (somme> seuil) && (somme-somme_old)> 0) pd_state = 2; if (! i) { seuil = somme * 0,5; pd_state = 1; } } // Fréquence identifiée en Hz if (thresh> 100) { freq_per = sample_freq / period; Serial.println (freq_per); for (int s = 0; s <= 5; s ++) { if (digitalRead (buttonarray) == HIGH) { if (freq_per - freqarray <0) { digitalWrite (lowerLed, HIGH); } else if (freq_per - freqarray> 10) { digitalWrite (HigherLed, HIGH); } else { digitalWrite (justRight, HIGH); } } } } count = 0; } }
Le code complet avec une vidéo de démonstration est donné ci-dessous. Téléchargez le code sur votre carte Arduino et jouez.