Pour des besoins musicaux, j'aurais aimé me fabriquer une sorte de... hum, je n'ai pas les mots exacts, mais une sorte de séquenceur de mouvements.
Par exemple, sur chaque entrée analogique il y a un potar, donc 6 potar.
Dans un laps de temps X, par exemple sur 8 pas, le "jeu" des potentiomètres sera enregistré à la volée et retranscrits à la séquence suivante comme si je les modulais encore sauf que c'est la séquence enregistrée qui joue... hum, est-ce clair ? :~
Un peu à la manière de l'Electribe MX (ou peut-être les autres, mais je n'avais que celle-là).
Bref, le fait est que je ne sais pas trop par où commencer et je ne vois pas trop comment faire pour enregistrer une séquence de mouvement et je doute que l'Atmega328 ai assez de mémoire pour enregistrer les 6 valeurs...
Et bien pour ce qui est de la longueur de l'enregistrement, je pensais à intégrer une sélection du nombre de pas qui seront calés sur un tempo externe.
Le nombre de pas irait de 1 à 8 et le tempo se ferait via une entrée clock.
Je pense que pour simplifier la chose, l'enregistrement ne serait pas permanent. Pour enregistrer il faudra presser un bouton qui s'éteindra automatiquement à la fin de la séquence (de 1 à 8 pas donc) ou sur 2ème pression sur le bouton.
Pour ce qui est de la résolution, c'est bien le nombre de fois ou la variable "positionEnregistree" (par exemple) sera lue entre chaque pas ? Pour une résolution de 8 par exemple, la variable de position ne sera lue que sur chaque pas, tandis qu'une résolution de 16 fera appel à la fonction sur chaque pas + entre chaque pas, c'est bien ça ? J'ai bien compris ?
Alors non, ce n'est pas exactement un step sequencer, pour ça pas de problème et même pas besoin d'Arduino
De plus, ce ne sont pas des servos que je souhaite commander mais des tensions de contrôle (sur 5, 8 ou 10V, je ne me suis pas encore décidé) pour pouvoir contrôler mon synthé modulaire.
Ce que je voudrais rendre, c'est pouvoir enregistrer une modulation de tension (valeurs donc) et faire en sorte qu'elle tourne toute seule ensuite.
Par exemple, lorsque j'appuie sur le bouton "rec" en début de séquence de 4 pas par exemple, l'enregistrement va se faire sur ces 4 pas et va s'éteindre à la fin de la séquence.
Lors de la lecture/enregistrement de cette séquence, je module le potentiomètre, modulations qui seront enregistrées en mémoire pour être retranscrites sur les séquences suivantes.
C'est un peu plus clair maintenant ? :~
Donc déjà si j'ai bien pigé, pour ce qui est de l'enregistrement des modulations, il faut une variable de chaque modulation, celle-ci serait un tableau de taille en rapport avec la résolution voulue, on va dire 256, c'est bien ça ?
Lors de l'enregistrement, les valeurs lues sur l'entrée analogique seront envoyées à ce tableau et la position de chaque valeur dépendra de l'avancement de lecture/enregistrement.
Je ne me trompe pas pour le moment ?
Après pour ce qui est de la lecture, il ne me reste plus qu'à envoyer les valeurs contenues dans les tableaux vers une sortie PWM.
Ok je vois oui, dans ce cas au lieu de déclencher l'enregistrement par un bouton, je pourrais très bien le faire dès qu'un évènement, en l'occurrence une modulation de bouton, intervient ?
Genre :
if (analogRead(0) != variableEnMémoire)
{
/// boucle d'enregistrement de modulation
}
Attention, l'Arduino n'a pas de sortie analogique!
Ca va te poser problème si c'est pour piloter des VCA.VCO ou filtres d'un synthé.
Il y a bien une astuce qui permet en gros d'avoir une sortie analogique à partie d'une sortie PWM à condition que l'entrée soit à haute impédance mais je doute que ça puisse être applicable à ton besoin.
Si tu veux commander ça vaudrait mieux des convertisseurs numérique->analogique sur I2C en sortie par exemple.
Ah je n'avais pas pensé à ça... C'est vrai que le PWM sont des impulsions plus ou moins rapides... J'avais essayé d'amplifier un signal PWM avec un transistor un jour pensant faire une sorte de VCO sin ou tri mais ça n'avais pas fonctionné, c'est peut-être à cause de ça ?
Bref, donc oui du coup... je n'ai jamais utilisé de convertisseur numérique > analogique et je n'ai donc aucune idée de comment ça fonctionne
Outch, ça sort de mes connaissances actuelles... c'est comme ça qu'on apprends, seulement je dois avouer que je n'ai jamais rien compris à l'impédance. Plusieurs mois que j'essaye de piger et rien à faire :~
RoKN:
Ah je n'avais pas pensé à ça... C'est vrai que le PWM sont des impulsions plus ou moins rapides... J'avais essayé d'amplifier un signal PWM avec un transistor un jour pensant faire une sorte de VCO sin ou tri mais ça n'avais pas fonctionné, c'est peut-être à cause de ça ?
Bref, donc oui du coup... je n'ai jamais utilisé de convertisseur numérique > analogique et je n'ai donc aucune idée de comment ça fonctionne
Oui d'accord, j'aurais souhaité ne pas passer par des cartes préfaites, j'aime bien tout faire par moi-même (je préfère dans la mesure du possible me servir d'un AtMega328 standalone plutôt qu'une carte Uno), mais soit... je rajoute ça sur la liste du matériel , merci beaucoup
Par contre pour ce qui est du câblage, si je veux faire 6 sorties (pour 6 entrées), il me faut donc 6 MCP4725 Breakout Board, ok.
Le SDL et SDL seront branchés en série ?
RoKN:
Oui d'accord, j'aurais souhaité ne pas passer par des cartes préfaites, j'aime bien tout faire par moi-même (je préfère dans la mesure du possible me servir d'un AtMega328 standalone plutôt qu'une carte Uno), mais soit... je rajoute ça sur la liste du matériel , merci beaucoup
Par contre pour ce qui est du câblage, si je veux faire 6 sorties (pour 6 entrées), il me faut donc 6 MCP4725 Breakout Board, ok.
Le SDL et SDL seront branchés en série ?
Qu'en est-il au niveau code ?
Tu ne peux chaîner que 2 de ces cartes mais il doit en exister d'autres avec plus de lignes d'adresse accessibles.
Je te laisse regarder les exemples de codes fournis sur la page indiquée....
Les sda et scl sont branchées en parallèle. La broche a0 détermine l'adresse i2c