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.
[✔️] 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 de la version modifiée au format kicad:
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.
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.