Looper MidiREX Upgradé

Ce projet reprend les plans et le code de l'excellent looper midi MidiREX crée par Peter Kvitek, lui même basé sur les travaux de Mutable Instrument dans le but de créer un looper midi à la fois puissant, compact et bon marché.

Le MidiREX permet de jouer plusieurs pistes de longueur différentes simultanément. Chaque piste peut contenir une séquence de notes provenant de différents canaux Midi. On peut aussi assigner un canal midi à chaque piste. Les notes de ses pistes seront alors contraintes au canal définit pour la piste. Ça en fait un super contrôleur multi-timbral, à condition de pouvoir y brancher un synthé multi-timbral (plutôt rare), ou de brancher toute une armée de synthés (mono ou poly) en splittant la sortie midi. Ça rend donc quasiment incontournable l'utilisation d'un équipement supplémentaire (un splitter Midi) pour pouvoir utiliser tout le potentiel de l'engin dans sa configuration actuelle.

La modification principale de ce projet est donc de rajouter 5 sorties Midi au MidiREX.

  • Rajout de 5 sorties Midi dupliquées au format TRS type A (standard pour le Midi 2.0)
  • On enlève l'interrupteur de mise sous tension (on pourra s'en passer sans problème)
  • Remplacement de la puce SRAM de 512 kBits (23LCV512) par une puce de 1024 kBits (23LCV1024) pour bénéficier de deux fois plus d'espace de stockage. A voir si ça fonctionne…
  • Inversion de la polarité de connecteur d'alimentation (centre négatif) pour le rendre compatible avec la plupart des alim de pédales d'effet (BOSS & co).
  • Population du PCB avec des composants cheapos. La facture des composants s'élève à environ 40€ chez mouser.fr.
  • Dimensions : 15cm × 8cm. Le PCB gagne un peu en longueur à cause de l'ajout des 5 sorties Midi. La largeur reste identique.
  • On essaye de conserver au maximum l'emplacement des composants sortants de l'original (connecteurs, écran, boutons, encodeur).


Modifications possibles pour une REV 3

  • Un connecteur jack 6,35mm pour le foot switch (mais empreinte énorme nécessitant de déplacer pas mal de composants…)
  • Modifier empreintes des condo afin de pouvoir utiliser différents modèles
  • Changer le support de pile pour un montage en surface…
  • Mettre le header ISP au dos du PCB pour une meilleure protection ?

[✔️] Possibilité de jouer 8 pistes de loop en simultané (il n'y en avait que 4 à l'origine)
[ ] Rendre compatible avec la puce SRAM de 1024Kbit (En cours)

Actuellement l'adressage de la mémoire SRAM se fait sur 16 bits, ce qui permet d'adresser jusqu'à 64Ko (soit la totalité de la puce de 512Kb, et pas un octet de plus). Pour pouvoir adresser plus de 64Ko il faut passer à un adressage sur 32 bits (qui permet en théorie d’accéder jusqu'à 4 Go de mémoire). Si on utilise 2 puces de 1024Kb (maximum matériel théorique), seul 18 des 32 bits seraient effectivement utilisés. Doubler la taille des adresses mémoires gonfle aussi la taille de beaucoup structure de données en mémoire (toutes celles qui contiennent des adresses vers d'autres blocs mémoires). En conclusion, même si on doublait ou quadruplait la taille de la mémoire SRAM, passer à un système d'adressage sur 32 bits réduirait significativement le gain de place (et de performances) qu'on pourrait espérer…

[ ] Variations mélodiques aléatoires
[ ] Variations rythmiques aléatoires

Le code contenu dans le MidiREX provient de plusieurs source et est sous licence GPL3.

Le processeur est un Atmega644PA-PU. Processeur 8 bits cadencé à 20Mhz intégrant 64K de flash et 4K de SRAM (d'où la référence 644).
L'Atmega644PA est le successeur de l'Atmega644P. Aucune différence de fonctionnalité mais une meilleur optimisation de la consommation d'énergie.

La valeur des résistances marquées d'un point vert sont à ajuster en fonction des caractéristiques des LEDs choisies.
Pour le choix des LEDs, privilégier une couleur diffuse pour améliorer la visibilité sur les côtés et une intensité lumineuse élevée (l'UI utilise 2 niveaux d'intensité pour indiquer la valeur de certains paramètres).

On peut utiliser des LEDs de 3mm ou bien de 5mm.

Pour le calcul des résistances associées, utiliser la loi d'Ohm : R = (Valim - Vled) / Iled
Par exemple, pour une LED rouge de tension 2v et de courant 20mA, on aura R = (5v-2v) / 0,02 –> R = 150 Ohm. Ceci est la valeur de résistance minimale, on pourra très bien utiliser du 220 Ohm en fonction de ce qu'on a sous la main.

Pour ma part j'ai mis 2 LEDs rouge de 3mm au dessus des ports midi (résistances de 220 Ohm), 4 LEDs vertes de 5mm pour les SW1-4 (résistances de 220 Ohm) et 1 LED jaune de 5mm pour le bouton SEL (résistance de 180 Ohm).

Composant Quantité Commentaire
CD4050B 1 Non-inverting hex buffer
Résistance 220 Ohm 22
Résistance 10K Ohm 6
Résistance 68 Ohm 1
Diode 1N4148 1
Diode 1N4004 2
Diode BAT42 4
Condensateur céramique 100nF (0.1uF) 6 Marqué 104
Condensateur céramique 18pF 2 Marqué 180
Condensateur céramique 10nF 2 Marqué 103
LM7805 1
Quartz 20 Mhz 1
Support de puce 8 pins 3
Support de puce 40 pins 1
Connecteur d'alim Jack 2.0mm 1
Support de batterie CR2032 1
Condensateur électrolytique 100 uF 2
Connecteur MIDI DIN 2
Bouton Switch 12×12mm 7
Encodeur 12mm 1
Commutateur SPDT 1 Interrupteur ON/OFF
Potentiomètre 5K Ohm 1 Permet de régler le contraste de l'écran
Connecteur Jack 3.5mm TRS 6
Leds rouge 3mm 2 Indicateurs communication MIDI
Leds vertes 5mm 4 Selection cannal 1-4
Led jaune 5mm 1 Bouton SEL
Écran LCD 1
6N137 1 Opto-coupleur (IC couleur blanche)
23LCV512 1 Module mémoire SRAM 512 Kbit
ATMEGA644PA-PU 1 Le cerveau de l'instrument

PCB de la version originale au format kicad:

pcb_midirex_orig.zip

PCB de la version modifiée au format kicad:

pcb_midirex_mod.zip

Des rendus 3D du PCB avec raytracing.

Commencer par la puce SMD CD4050BM dans un des angles du PCB.

Le CD4050B est un “non-inverting hex buffer”.
“Non inverting” car il préserve la logique du signal (états haut ou bas) sans l'inverser.
“Hex” car la puce contient 6 entrées/sorties logiques.
“Buffer” car il permet d'isoler chacune des 6 sorties MIDI (DIN + 5 TRS) l'une de l'autre, ce qui permet d'éviter les “ground loops” lorsque plusieurs instruments, chacun sur sa propre alimentation, sont connectés au MidiRex.

Pour le reste, suivez le guide officiel.

Les 5 connecteurs jack stereo et les 12 résistances de 220 Ohms qui constituent la partie splitter Midi out peuvent être soudés au début ou en fin, peu importe.

Firmware officiel

Le MidiRex se programme par le port ISP qui se situe en haut de la face avant du PCB (à droite de l'indication “Foot switch”).

On peut utiliser un arduino flashé avec le sketch ArduinoISP pour transférer le firmware par le port ISP du MidiREX. doc en anglais

Décompresser le dossier midirex_097.zip (lien plus haut), il contient le fichier permettant de charger le bootloader : muboot.hex

Cette ligne de commande fonctionne pour l'utilisation d'un arduino comme programmeur ISP.

avrdude -pm644p -P/dev/ttyUSB0 -c avrisp -b 19200 -U flash:w:muboot.hex
avrdude -Cavrdude.conf -v -pm644p -carduino -P/dev/ttyUSB0 -b19200 -Uflash:w:midirex.hex:a -Ulfuse:w:0xFF:m -Uhfuse:w:0xD6:m -Uefuse:w:0xFD:m -Ulock:w:0x2F:m

Si problème avec avrdude.conf :

avrdude -v -pm644p -carduino -P/dev/ttyUSB0 -b19200 -Uflash:w:midirex.hex:a -Ulfuse:w:0xFF:m -Uhfuse:w:0xD6:m -Uefuse:w:0xFD:m -Ulock:w:0x2F:m

Pour plus d'informations sur le flashage de fichiers .hex, voir la page dédiée sur le wiki : Arduino : utiliser les fichiers .hex

Si le MidiREX a été flashé une première fois avec le firmware (ou bien avec le bootloader muboot), il est possible de mettre à jour le firmware par SysEx. On utilisera dans ce cas une interface USB-MIDI branchée sur le port MIDI In du MidiREX.

Attention à la polarité de l'alimentation : Négatif intérieur et positif extérieur. La même que pour les pédales d'effets Boss, Ibanez & co.

La tension de fonctionnement du MidiRex (5v) est régulée par un LM7805. Il faut donc le connecter à une alimentation qui délivre 5v au minimum. Bien qu'il soit indiqué une tension conseillée de 9v sur le PCB, le LM7805 accepte une tension qui peut aller jusqu'à 35v. On peut donc très bien connecter une alimentation de 12v ou 18v au MidiRex.

Dans le doute, une alim comme celle-là fera parfaitement l'affaire : https://www.thomann.de/fr/thomann_nt_0910.htm

Si les leds s'allument mais l'écran reste noir, réglez le contraste en tournant jusqu'au bout (mais sans forcer) le potentiomètre qui se trouve directement derrière le connecteur d'alimentation.

  • openatelier/projet/midi_looper.txt
  • Dernière modification: 2022/01/23 10:31
  • par gweltaz