Bonjour Ardu-innovationneurs ...neuses, je reviens sur cette question MIDI à moins que cela ne soit pas la bonne piste... Je souhaite créer un nouveau tableau cinétique chorégraphique musical. La difficulté sera de provoquer des mouvements de servomoteurs à des instants précis d'une musique. J'avais fait ça là :
Mais les mouvements étaient simplement initiés en tâtonnant avec un chronomètre pour que cela tombe au bon moment. Pas très orthodoxe et parfois approximatif!
Il y aurait une dizaine de servomoteurs, un hautparleur et une Arduino UNO pour le son et les mouvements. Je possède aussi un shield MIDI adapté pour Arduino, mais peut-être inutile. L'idéal serait d'adresser des signaux particuliers dans le MP3 mais j'imagine que c'est impossible et qu'il vaut mieux passer par du codage midi? toutes suggestions ou idées bienvenues!
détecter les signaux en analysant le MP3 sera plus compliqué que d'écouter la musique en temps réel qui sort des haut-parleurs et de réagir.
On peut en traitement du signal effectuer des calculs sur les fréquences, l'enveloppe (variations d'amplitude dans le temps - attaque, sustain, décroissance) ou le tempo. ce sont des maths un peu avancés cela dit dès que l'on fait autre chose que du dépassement de seuil.
si vous prenez un Teensy, ils ont une bibliothèque très riche dont un détection de pics ou des fréquences (FFT)
il faudrait être capable de connaitre les séquences binaires qui t'intéresse.
Tu ne peux pas te baser sur une timeline, si tu sais quand la musique commence ?
intéressant, le Teensy, mais je ne saisis pas bien toutes les possibilités. Est-ce que ça permettrait de générer des signaux pour l'Arduino durant l'écoute d'une musique, à la manière d'un chorégraphe. Puis les intégrer dans le programme pour qu'ils tombent à des instants précis?
la difficulté est d'intégrer des mouvements de servo pendant 3minutes avec une précision d'horloger, car, quand on demande à 6 servos de faire tel ou tel mouvement, le temps occupé est assez imprévisible. C'est pourquoi je cherche un moyen d'intégrer un signal dans la source musicale vers l'Arduino, pour déclencher, par exemple,
une routine du programme qui pilote les servos.
Cela sera toujours le cas, dans ta routine, même si tu as commencé à un moment précis.
Mais à mon avis, ce n'est pas le cas, le temps mis par ton servos entre deux positions connu, peuvent être déterminé pendant la mise au point.
Cela ne devrait pas changer par la suite.
Si tu as des débuts de séquence très reconnaissable grâce à des fréquences ou combinaison de fréquence précise, tu peux essayer d'utiliser une FFT recalculer en continue.
Tu sera callé sur des lancements précis.
Tu peux aussi faire ce qui est indiqué par le vue mettre de la vidéo, qui doit seulement ce basé sur le niveau détecter et donc avoir repérer les séquences son/bruit pendant la mise au point pour caler tes animations.
Je crois que c'était l'idée général de @J-M-L
oui, la question est de savoir si on peut extraire du signal Sonore les information qui permettent de déclencher le mouvement et quel mouvement de manière déterministe.
On pourrait aussi écrire un programme qui présentent tous ces moments détectés et le timing associé. On stockerait cette information dans un tableau et on pourra avoir ensuite le code réel de l'application (un séquenceur) qui en fonction de ce tableau des temps fait telle ou telle opération.
BRAVO! C'est un des plus beau truc qu'il m'a été donné de voir dans le genre
Pour synchroniser musique et mouvement, une idée est de travailler avec 2 lecteurs MP3 comme le DY-SV5W
dont l'un sert de support musical et l'autre de support de top de commande des servo ou autre, en y associant le principe du post #8, et lus par l'Arduino ou autre.
Il doit être assez simple de synchroniser le départ de la lecture, via les pin de sélection des fichiers.
Dans un éditeur MP3 superposer le fichier de la musique et sur l'autre piste "dessiner" les top.
Une solution pour analyser et transposer les sons du fichier des top que tu peux faire en stéréo, est d'analyser ces sons avec un analyseur de spectre comme le MSGQ7, qui te sort l'amplitude du son sur 7 carneaux, tu aurais, ainsi, 14 carneaux analogiques de commandes.
Une idée comme ça
S'il n'y a qu'un haut-parleur, j'en déduis que le fichier mp3 n'est pas stéréo.
Tu pourrais peut-être utiliser la seconde voie pour placer des marqueurs qui te permettraient de synchroniser tes servos.
salut JPb, merci pour le gros compliment ! Ton idée me parait très intéressante et ouverte à toutes sortes de délires! je possède des modules de lecture mp3 Dy-sv17f et DY-SV8F.
ahhhh pas bête ça, aurais-tu une idée de la façon de programmer des marqueurs pouvant enclencher des servos et de les envoyer sur un des canaux stéréo de la carte DY? j'avoue que mes compétences en la matière sont assez limitées et je me souviens aussi que vous m'aviez bien aidé à concevoir un tableau avec 4 moteurs pap!
Ce modèle est très pratique, il a 8Mb. de flash qui permet de stocker les MP3, via l'USB et peut se commander par des états logiques ou un port série et a déjà une partie audio.
Une façon pourrait être d'utiliser Audacity, de fusionner les deux pistes, pour avoir le tout sur une piste et te libérer la deuxiéme piste peut alors être utiliser pour par exemple insérer une forme d'one carré avec une fréquence de 1Hz et une amplitude suffisante pour être detecté par ton arduino, sur un front montant.
On pourrait, par exemple, enregistrer avec Audacity quelques lettres et chiffres à la sortie de l'UART à 2400 bauds et les coller dans la voie "de commande" aux endroits stratégiques.
Je pense, sans l'avoir jamais essayé, que cela pourrait être décodé après remise en forme si on l'entre dans Serial.
Il faut d'abord connaitre le genre de commandes nécessaires.
pourquoi ce prendre la tête à enregistrer la sortie binaire de l'uart, à moins d'avoir besoin de beaucoup de commande?
Il est peut être plus simple de générer un signal carré, qui reste plus ou moins à létat haut?
C'est aussi une possibilité, bien que de même que enregistrer l'uart est-il vraiment necessaire de rajouter un intermédaire ?