Table des matières

, , , , , , , ,

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.

Différence avec le MidiREX original

Hardware


Modifications possibles pour une REV 3

Software

[✔️] 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

Licences

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

Liste des composants (BOM)

Processeur

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.

LEDs

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).

Liste des composants (par ordre de soudure)

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

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.

Assemblage

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.

Flashage du firmware

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

Flasher le bootloader

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

Uploader le firmware avec Avrdude

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

Flashage par SysEx

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.

Alimentation

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

Troubleshooting

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.