arduino midi in to clock sync pulse

Clonages d'ancètres, conceptions originales, circuit bending, le coin des grenouilles bricoleuses.

Modérateur : darcmorcel

zenaudio
Messages : 28
Inscription : 11 déc. 2020, 15:57

arduino midi in to clock sync pulse

Message par zenaudio »

Bonjour à tous ,

Je découvre l'univers de arduino car je souhaite "juste" fabriquer une interface qui reçoit une horloge midi afin de les convertir en horloge sync pulse pour driver des cd 4017.J ai fait pas mal de recherches sur le net avec des codes pas vraiment aboutis : (
et peut ton diviser cette clock sync en 1/4 1/8 1/16 .... ?

Si vous avez des idées.

Merci à vous.
Avatar de l’utilisateur
pjmnc
Messages : 341
Inscription : 23 avr. 2018, 20:03

Re: arduino midi in to clock sync pulse

Message par pjmnc »

hello, il y a ça (mais pas en arduino) c'est un pic mais c'est pas très loin dans le fonctionnement

https://electricdruid.net/midi-clock-to ... te-pulses/

j'ai fait le pcb mais pas encore testé ce serait l'occas

ici http://pjmnc.free.fr/archives/midi_cloc ... cdruid.zip

sur une base arduino il y a midipal (qui fait beaucoup de choses)

https://github.com/pichenettes/midipal/tree/master

sinon le projet est ici http://pjmnc.free.fr/archives/midipal.zip

voilà je n'en connais pas d'autre
zenaudio
Messages : 28
Inscription : 11 déc. 2020, 15:57

Re: arduino midi in to clock sync pulse

Message par zenaudio »

Merci à toi pjmnc : )
Ton projet est pas mal à base de pic .
C 'est déjà intégré , j'ai choisi arduino car je souhaite ajouter des fonctions plus tard et comprendre.
Le projet midipal est trop évolué et ne se focalise pas sur juste une génération de pulse de synchro...
Au passage le site qui vend les pics est dément ! leur pic à wavetable est de la tuerie : )
Merci encore....
Avatar de l’utilisateur
pjmnc
Messages : 341
Inscription : 23 avr. 2018, 20:03

Re: arduino midi in to clock sync pulse

Message par pjmnc »

oui electricdruid est un chef; ses projets sont toujours fonctionnels et très simples.

chez mutable instrument c'est pareil (jamais trouvé un seul bug ou incohérence dans les circuits) mais un peu plus complexe

ce sont 2 bonnes adresses
Avatar de l’utilisateur
pfeuh
Messages : 817
Inscription : 12 févr. 2019, 07:05
Localisation : Choucroute et bière
Contact :

Re: arduino midi in to clock sync pulse

Message par pfeuh »

pjmnc a écrit : 11 déc. 2020, 16:22hello, il y a ça (mais pas en arduino) c'est un pic mais c'est pas très loin dans le fonctionnement
:sante: Oh pinaize, du PIC en assembleur! Je n'ai plus fait ça depuis mon premier compilo C... Bonne continuation, ça fait plaisir de voir encore des trucs pareils aujourd'hui.
zenaudio a écrit : 11 déc. 2020, 16:02peut ton diviser cette clock sync en 1/4 1/8 1/16 .... ?
Pour ton projet, le moyen le plus simple (à mon avis) est d'utiliser l'Arduino et son compilo C++. Le driver midi existe tout fait (et bien fait), tout le monde l'utilise, c'est celui de François Best, il est accessible par l'IDE Arduino). Il fonctionne à base de callbacks, il faut simplement écrire 4 fonctions du genre:

myClock ce qu'il faut faire quand un clock arrive
myStart ce qu'il faut faire quand un start arrive
myStop ce qu'il faut faire quand un stop arrive
myCont ce qu'il faut faire quand un continue arrive

Pour installer ces 4 fonctions le driver Midi fournit les 4 installeurs:
void setHandleClock(void (*fptr)(void));
void setHandleStart(void (*fptr)(void));
void setHandleContinue(void (*fptr)(void));
void setHandleStop(void (*fptr)(void));

Pour faire marcher le tout, tu initialises ton driver MIDI dans la function setup() et tu installes tes 4 fonctions.

Tu appelles MIDI.read() dans la deuxième fonction fournie par Arduino qui s'appelle loop().

A partir de là, tout est géré par le "système", la boucle infinie qu'est en réalité la fonction Arduino loop() vérifie si des données sont arrivées, fait le tri et si c'est un des 4 octets clock start stop ou continue il passe par une des 4 fonctions que tu auras précédemment écrites. Ce mécanisme est appelé callback et est massivement utilisé en informatique professionnelle.

Je ne pourrais peut-être pas t'aider beaucoup en ce moment mais je veux bien essayer.
Les gros m'aiment bien car je suis gros, les cons m'aiment bien car je suis con, mais les gros cons ne m'aiment pas car ce sont des gros cons.
Avatar de l’utilisateur
pjmnc
Messages : 341
Inscription : 23 avr. 2018, 20:03

Re: arduino midi in to clock sync pulse

Message par pjmnc »

si tu le veux spécifiquement le faire avec l' arduino
cette page peut peut être t'aider à comprendre comment créer une midi clock déjà , mais pas testé alors ?
https://ejlabs.net/arduino-midi-master-clock/
Avatar de l’utilisateur
pjmnc
Messages : 341
Inscription : 23 avr. 2018, 20:03

Re: arduino midi in to clock sync pulse

Message par pjmnc »

zenaudio
Messages : 28
Inscription : 11 déc. 2020, 15:57

Re: arduino midi in to clock sync pulse

Message par zenaudio »

Merci à toutes ces réponses, c est sympa : )
Oui je connais la librairie midi et ses mots clés...
Le plus dure est de comprendre et écrire un code cohérent pour que le signal carré soit ultra synchro avec la midi clock .

https://forum.arduino.cc/index.php?topic=319815.0

le code de ce gars est pas mal mais ne fonctionne pas ... et il a posté qu une fois :cry:

En tout cas, une fois que ça fonctionnera, je le posterai ...
Avatar de l’utilisateur
pfeuh
Messages : 817
Inscription : 12 févr. 2019, 07:05
Localisation : Choucroute et bière
Contact :

Re: arduino midi in to clock sync pulse

Message par pfeuh »

En tout cas il est simple à lire et à a comprendre, ce code, donc pas très dur à débogguer. Le gars n'a pas utilisé la possibilité de callback, il se contente de poller MIDI.read() et donc... De faire entièrement à la main tout ce que le système aurait pu faire à sa place. Utiliser la fonction delayMicroseconds() de cette façon est navrant car elle est bloquante. Au fait je n'ai aucune idée du temps que doit avoir l'impulsion de synchro sur la sortie, tu as un ordre de grandeur?
Les gros m'aiment bien car je suis gros, les cons m'aiment bien car je suis con, mais les gros cons ne m'aiment pas car ce sont des gros cons.
zenaudio
Messages : 28
Inscription : 11 déc. 2020, 15:57

Re: arduino midi in to clock sync pulse

Message par zenaudio »

Non aucune idée, il faut surement analyser le datasheet des cd4017.Il faut que la largeur d impulsion soit l image exact des bpm et un reset a cchaque fois que le curseur du daw software (genre studio one ou cubase...etc )repart à son début pour etre sur d être dans un timing précis.
Peut etre que je prendrai un arduino mega pour supprimer les 4017 pour par exemple pouvoir avoir un défilé des step aléatoire .Mon but étant de fabriquer un seq 16 step avec un autre de 8 step qui tourne en meme temps . avec allez retour sync interne ou externe etc ...
Avatar de l’utilisateur
LeGrosChat
Messages : 4289
Inscription : 12 avr. 2011, 01:26
Localisation : Le berceau du cinéma
Contact :

Re: arduino midi in to clock sync pulse

Message par LeGrosChat »

zenaudio a écrit : 11 déc. 2020, 19:29 Il faut que la largeur d impulsion soit l image exact des bpm
:hum: Je ne comprends pas ce que tu veux dire... Je ne suis d'ailleurs pas sûr que tu maîtrises bien le mode de fonctionnement du 4017 (et de son homologue à 8 étages, le 4022). :nesaispo:
:vieux: Le CD4017 est un compteur de Johnson CMOS à 10 sorties, c'est à dire qu'il dispose de dix pins (de Q0 à Q9) qui passent successivement à l'état haut à chaque front montant de la tension sur l'entrée horloge (CLK) et qui reviennent ensuite à l'état bas. On peut donc l'utiliser comme diviseur d'horloge programmable avec un facteur de division situé entre 1 à 10, en exploitant son entrée de commande RESET qui force le compteur à venir de nouveau se positionner sur la sortie Q0 en mode asynchrone (indépendamment de l'état du signal d'horloge).
Dans le cas où le facteur de division doit être supérieur à 10, il est préférable d'utiliser des bascules supplémentaires montées en cascade (flip-flop/diviseurs par 2) comme par exemple les 4013 (type D) ou 4027 (type J/K), voire selon le cas des compteurs/diviseurs binaires intégrés CMOS à plusieurs étages successifs, comme les 4020 et 4040 qui permettront d'obtenir des facteurs de division extrêmement élevés. :geek:

D'autre part, il faut déjà être au courant que la vitesse de fonctionnement des circuits logiques CMOS varie avec leur tension d'alimentation : sous +5Vcc, ils réagissent moins vite que lorsqu'ils sont alimentés sous +12 ou +15Vcc, par conséquent. Et savoir aussi que la tension sur une entrée CMOS doit être nettement supérieure à la moitié de la tension d'alimentation, pour que le circuit d'entrée détecte qu'il reçoit effectivement un "état haut" sur la pin concernée. Ça, ce sont les tout premiers éléments fondamentaux de connaissance des circuits logiques CMOS. :talk:
Dans ces conditions, avec un 4017 standard (CD, HEF, etc... quelle que soit la marque ou la référence) alimenté sous +5Vcc, on pourra considérer qu'avec une impulsion de clock d'une durée supérieure à 250nS (valeur minimale sous +5Vcc, selon mes datasheets des années 90), un front montant d'au moins +3Vcc déclenchera l'entrée CLK à tous les coups.
Reste à voir avec les specs du micro-contrôleur comment respecter scrupuleusement ces caractéristiques-là.

:cool: ...Pour en revenir plus précisément au 4017 (idem pour le 4022), chaque sortie Q0 à Q9 reste à l'état haut jusqu'à l’activation de la sortie suivante par un autre front montant sur l'entrée CLK. Si l'horloge s'arrête, la sortie active à ce moment-là demeure indéfiniment à l'état haut en attendant un nouveau déclenchement sur CLK, ou bien selon le cas, une remise à zéro par l'entrée RESET (sauf le cas particulier de la sortie Q0 qui est justement la seule à devenir active par défaut et à le rester aussi longtemps que le 4017 est en mode reset sans que son compteur n'avance au rythme de la CLK).
Ce qui veut donc dire qu'en termes de largeur d'impulsion, le taux de PW dépend du nombre de sorties que tu utilises avant RESET, ou si tu préfères, cela dépend du taux de division de ton horloge. Mais il est complètement indépendant de la vitesse de l'horloge... :roll: ...Je parle ici exclusivement du taux de PW : pour la durée d'impulsion elle-même, il faudra la recalculer à partir de la fréquence d'horloge et du taux de PW applicable à chaque valeur de division avec le 4017 (par 2, par 3, 4, 5, etc...).
En diviseur par 2, le taux du PW est à 50% (100%/2). En diviseur par 3, il est à 33.33% (100%/3). Par 4, il est à 25%. Par 5, c'est à 20%, etc... Pour finir évidemment au minimum à 10% ! :talk:

:nesaispo: Est-ce que c'est assez clair, pour ce qui concerne le calcul de la largeur d'impulsion de ton signal de sortie ?
Ʌ___Ʌ
\ʘᴥʘ/
Avatar de l’utilisateur
LeGrosChat
Messages : 4289
Inscription : 12 avr. 2011, 01:26
Localisation : Le berceau du cinéma
Contact :

Re: arduino midi in to clock sync pulse

Message par LeGrosChat »

:vieux: ...Bon, je ne sais pas quels sont tes propres critères musicaux et personnels (le côté "No computer" par exemple), mais en ce qui concerne le coup d'avoir plusieurs bécanes qui tournent en même temps sur des séquences aléatoires de longueurs différentes, avec synchro MIDI ou non, arpégiateurs, harmoniseurs, etc... J'ai déjà cherché à faire ça depuis bien longtemps et j'ai finalement trouvé un mode de fonctionnement qui me donne entière satisfaction ! :satisfait:
Bon, faut quand même dire que j'ai installé quelques vieux ordis sous W98SE, XP et Linux dans ma caverne à synthés, et qu'ils sont (presque) exclusivement là pour m'aider à faire de la musique en MIDI (sauf un pour enregistrer, quand même, mais j'enregistre pas souvent :palm: ). Parfois j'ai pu choper en occase à prix dérisoire des configs d'ordis totalement obsolètes mais en excellent état, et qui sont justement parfaites pour mes freewares MIDI et les éditeurs logiciels de mes vieux synthés numériques des années 90. Mais sinon, pour une grande majorité d'entre eux, c'est carrément de la récup... :razz:
:bang: :fou: ...Évidemment, comme je suis forcément tenté d'aller encore plus loin en mode délire expérimental avec plusieurs synthés/expanders/samplers qui tournent en même temps sur des séquences et arpèges bien barrées comme je les aime, ça passe ensuite par un patchbay MIDI (MOTU MTP II) qui me permet essentiellement d'organiser les signaux MIDI vers mes instruments avec une très grande liberté de choix... :bave: :cool:
:smoke: Donc en freeware sous XP (et WINE/Linux) pour les séquences/arpèges/drumbox en MIDI, j'utilise souvent ça : https://www.matrixsynth.com/2007/01/tec ... -free.html
On peut bien sûr faire tourner plusieurs instances de SEQ-303 en même temps sur des séquences de longueurs différentes en lecture aléatoire, et tout peut se synchroniser automatiquement en MIDI, selon le paramétrage qu'on a fait... :geek:

Voilà ! :wink:
Ʌ___Ʌ
\ʘᴥʘ/
zenaudio
Messages : 28
Inscription : 11 déc. 2020, 15:57

Re: arduino midi in to clock sync pulse

Message par zenaudio »

Hello
Merci à tous pour ces précisions...
Je me suis rabattu sur le projet a base de pic du site electricdruid, j aurai au moins une synchro pulse à l image du midi.
D autant plus que je vais fabriquer leur fameux vco à wavetable.
Je verrai par la suite comment piloter des steps grace à la sortie de ce pic :bang:
Avatar de l’utilisateur
lulrik
Messages : 157
Inscription : 29 mai 2018, 18:59
Localisation : Ain - Ardèche

Re: arduino midi in to clock sync pulse

Message par lulrik »

Merci LeGrosChat pour ces explications que j'ai lue avec intérêt.

A+ :smile:
lulrik - Polivoks - Mix modulaire eurorack Yusynth en construction
Avatar de l’utilisateur
LeGrosChat
Messages : 4289
Inscription : 12 avr. 2011, 01:26
Localisation : Le berceau du cinéma
Contact :

Re: arduino midi in to clock sync pulse

Message par LeGrosChat »

:coucou: ...C'était un plaisir, messieurs ! :sante: ...Et n'oubliez pas de nous faire partager vos réalisations sur ce forum ! :bravo:
Ʌ___Ʌ
\ʘᴥʘ/
Avatar de l’utilisateur
pjmnc
Messages : 341
Inscription : 23 avr. 2018, 20:03

Re: arduino midi in to clock sync pulse

Message par pjmnc »

bonjour, j'ai fabriqué la version pic programmé de electricdruid et c'est ok ça fonctionne bien.

il y a juste la fonction "continue", j'ai pas compris, elle semblait avoir la fonction start plutôt, et le start ne faisait rien.
donc je ne me suis pas acharné je l'ai enlevée.

le reste est ok,

2x horloges divisibles de la manière autonome (main/aux)
un start (pulse), un stop (pulse), un running qui envoie en lecture, du 5V sinon 0.
j'ai également enlevé le potard de longueur de pulse (j'ai mis des 5K à la place) 50/50

il y a donc 2 versions maintenant dans l'archive ci dessous (la version2 est approuvée)

http://pjmnc.free.fr/archives/midi_cloc ... cdruid.zip

Image
Avatar de l’utilisateur
pfeuh
Messages : 817
Inscription : 12 févr. 2019, 07:05
Localisation : Choucroute et bière
Contact :

Re: arduino midi in to clock sync pulse

Message par pfeuh »

La différence entre le start et le continue, c'est que le start fait repartir à zéro alors que le continue reprend là où ça c'est arrêté. Si tu divises par exemple par 8, ça peut d'arrêter (et repartir) entre le pas 0 et 7... Si tu implémentes un start, l'utiliser te fera toujours repartir à 0 contrairement au continue , à toi de voir.
Les gros m'aiment bien car je suis gros, les cons m'aiment bien car je suis con, mais les gros cons ne m'aiment pas car ce sont des gros cons.
Avatar de l’utilisateur
pjmnc
Messages : 341
Inscription : 23 avr. 2018, 20:03

Re: arduino midi in to clock sync pulse

Message par pjmnc »

ça correspond à la pause dans le sequenceur ?
j'ai essayé avec cubase qui n'a pas de pause donc c'est peut être ça en effet.
zenaudio
Messages : 28
Inscription : 11 déc. 2020, 15:57

Re: arduino midi in to clock sync pulse

Message par zenaudio »

Suis tombé entre temps et je ne suis pas au courant de toutes les nouveautés sur le beatstep pro d arturia à 150 balles d occaze :urgh:
humm c est toujours bien de fabriquer un truc mais là ! :smoke:
Avatar de l’utilisateur
FABRE
Messages : 1119
Inscription : 10 mai 2012, 04:05
Localisation : Ile de la Reunion

Re: arduino midi in to clock sync pulse

Message par FABRE »

Bonjour à tous
Pour convertir des messages midiclock vers des sync out
J’utilise des volca de Korg en occase on en trouve pour moins de 60 roros en midi In
Ensuite selon la quantization de ces volca , le message sync out est soit augmenté (plus rapide)soit réduit (plus lent)
Autres astuce, les sorties gâtes de certaines machines (beat step, key step, rythmwolf, circuit......)
Dans un monde no computer , tout ce petit monde évolue synchro selon leur cadences respectives ....
Bonne année twenty twenty one :bravo:
Le plaisir avant tout
Répondre
cron