Étape 10 : Le Code Source
Le code de Postbox Synth écrit par Sam Stratter (aka humanharddrive) sons impressionnant. Il a 6 formes d’ondes, 2 oscillateurs, un LFO. Le code est disponible sous son Instructable. J’ai utilisé son code presque comme est, sauf que j’ai enlevé la substance de l’arpège et il modifié de sorte que je pouvais utiliser tous les 6 boutons.
Le code de détection capacitif, j’ai utilisé est un petit snip de je ne sais pas où, j’ai copier et coller d’un projet. Il y a une bibliothèque de détection capacitive ensemble sur l' Arduino Playground qui a beaucoup plus d’options. Le code que j’ai est simple, ne nécessite pas une résistance et juste lit une épingle et renvoie un nombre, qui correspond au nombre de cycles qu’il faut pour la broche à s’acquitter. La valeur de retour est généralement de 1 à 20 ou plus.
Remarque à propos de détection tactile capacitif - ça ne marchera droit sauf si vous avez une bonne terre. J’ai découvert la manière forte après avoir travaillé sur ce projet. Lorsqu’il est alimenté par le câble USB, tous les boutons de cap lire très bien. Quand je débrancher et elle à la puissance de ma batterie 9V, les lectures tous obtenu erratiques. J’ai été en mesure de contourner le problème en mettant les 2 que pointes de métal plus sur le bas de la boîte où vos pouces irait naturellement et câblage tous les deux à la terre. C’était en fait une bonne chose car il y a quelque chose pour s’accrocher à vos pouces. Après avoir fait cela, les lectures sont plus normaux, mais il n’y a toujours quelques constante « gigue ».
Le seul code mérite d’être partagée à ce stade est pour le calcul de ce que note à jouer. C’est ici :
int nonote = 1 ;
int curnote = 0 ;
noteMultiplier = 0 ;
pour (int x = 0; x < 4; x ++) {}
Si (readCapacitivePin(multPins[x]) > 1) {noteMultiplier = x + 1;}
Si (readCapacitivePin(notePins[x]) > 1) {curnote ++; nonote = 0;}
}
multPins est un tableau de quelles broches Arduino les boutons « multiplicateur » de gauche sont attachés à.
notePins est un tableau de quelles broches Arduino les boutons de droite « note » sont attachés à.
Si (nonote == 1) {}
notePlaying = false ;
} else {}
noteSelect=43+((noteMultiplier*4)+curnote) ;
notePlaying = true ;
}
La première boucle for lit toutes les 4 broches de chaque côté. Si la valeur de l’axe est supérieure à 1, c’est être touché. Sur le côté gauche comme il leur lit il fait quel que soit le bouton plus haut être touché le multiplicateur. Donc, si vous touchez le bouton #4, il multiplie le nombre de boutons que vous sont maintenant sur la droite par 4. Le côté gauche est séquentiel. Si vous tenez #1 et #4 en même temps, noteMultiplier va finir par être 4, puisqu’elle lit les valeurs de façon séquentielle et définit noteMultiplier.
Les variables nonote/notePlaying déterminent que si aucune touche sur la droite (nonote toujours égal à 1 après l’exécution de la boucle), puis notePlaying = false, ne jouez pas n’importe quoi. notePlaying est une variable utilisée par le code de synthétiseur qui dit pour générer le son ou non.
RemarqueSélectionnez est code du moteur synthétiseur quel numéro de note à jouer. Nous commençons à une note de fond (43 en l’espèce, qui est un C) et ajouter de la valeur du multiplicateur, ainsi que quelle que soit la valeur de curnote est d’arriver à ce que Remarque joue actuellement. Cela permet à l’étape de note #47 (rien pressé sur la gauche, appuie sur le 1 bouton sur la droite) jusqu'à un maximum de note #67. (4 touches enfoncées à gauche et 4 à droite)