# Pads Midi Customisable

Guide complet pour fabriquer un instrument midi customisable avec des pads, des boutons, des potentiomètres et un écran.

# Introduction

Dans ce guide je vais vous expliquer en détail comment j'ai fabriqué cette instrument midi et comment je l'utilise **pour faire de la musique**,avec un **ordinateur** , un **Raspberry Pi** et même à l'aide d'un **Arduino**

[![image-1592649510016.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592649510016.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592649510016.png)

Ce guide est en trois parties :

**Dans la première partie**, je vais vous expliquer comment créer ce kit

- Les **composants utilisés** et où les **commander**
- Comment **commander un PCB** à partir d'un gerber
- **Assemblage du PCB**
- Comment **programmer** notre instrument

Dans la **seconde partie**, je vais vous montrer comment on peut utiliser cette instrument

- Utilisation dans [LMMS](https://lmms.io/download#windows) avec un plugin de [guitare](http://www.vst4free.com/free_vst.php?id=2233) / [batterie](http://www.vst4free.com/free_vst.php?plugin=MT_Power_Drum_Kit&id=2783) / [basse](http://www.vst4free.com/free_vst.php?plugin=ABPL_II&id=2505) gratuit
- Utilisation dans [Reason](https://www.reasonstudios.com/) avec un plugin de guitare (métal) / batterie / basse payant
- Utilisation avec [Patchbox OS](https://blokas.io/patchbox-os/)

**Dans une troisème partie**, je vais vous expliquer comment le modifier

- Comment changer la forme et le placement des pads sur kicad
- Explication du code et comment customiser le fonctionnement
- Les améliorations et alternatives possibles

# Fabrication

# Liste des composants

## Sparkfun Pro Micro <span class="emoji">🧠</span>

💲 Officiel : [https://www.sparkfun.com/products/12640](https://www.sparkfun.com/products/12640)  
💲 Clone (Amazon) : [https://www.amazon.fr/KeeYees-ATmega32U4-Développement-Leonardo-Bootloader/dp/B07FQBQ4Z6](https://www.amazon.fr/KeeYees-ATmega32U4-D%C3%A9veloppement-Leonardo-Bootloader/dp/B07FQBQ4Z6)  
💲 Clone (Aliexpress) : [https://fr.aliexpress.com/item/1871481789.html?spm=a2g0s.9042311.0.0.20aa6c37z4qLog](https://fr.aliexpress.com/item/1871481789.html?spm=a2g0s.9042311.0.0.20aa6c37z4qLog)

Voici le **"cerveau"** de notre instrument, pour cette tâche nous allons utiliser un clone de **Sparkfun Micro.** Souvent confondu avec l'[Arduino Micro](https://store.arduino.cc/arduino-micro), le **Sparkfun Pro Micro est plus petit mais n'a pas les broches A4 / A5 / D11 / D12 / D13 / D17 (SS)**

<p class="callout success"><span class="emoji">📗</span> Les [plans](http://cdn.sparkfun.com/datasheets/Dev/Arduino/Boards/SparkFun_Pro_Micro_v13a.zip) sous Eagle (et fusion 360) sont disponibles sous licence open source.</p>

[![image-1592737001274.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592737001274.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592737001274.png)

Cette carte se programme comme un Arduino Uno, mais elle est capable d'émuler le fonctionnement d'un **périphérique USB** (Un **clavier** / Une **souris** / Un **joystick** et un **instrument midi**) car elle utilise un [atmega32u4](https://www.microchip.com/wwwproducts/en/ATmega32U4#datasheet-toggle) (au lieu du [atmega328](https://www.microchip.com/wwwproducts/en/ATmega328) sur l'arduino uno)

<p class="callout warning">⚡ J'ai utilisé la version 5V, les capteurs capacitifs fonctionnant en 3.3V, on pourrait simplifier le circuit en utilisant la version 3.3v.</p>

[![image-1592651307379.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592651307379.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592651307379.png)

## Capteurs Capacitifs MPR121 **🖐️**

💲 Officiel : [https://www.sparkfun.com/products/retired/9695](https://www.sparkfun.com/products/retired/9695)  
💲 Clone (Amazon) : [https://www.amazon.fr/TECNOIOT-Breakout-Capacitive-Controller-Keyboard/dp/B084BVLXCB](https://www.amazon.fr/TECNOIOT-Breakout-Capacitive-Controller-Keyboard/dp/B084BVLXCB)  
💲 Clone (Aliexpress) : [https://fr.aliexpress.com/item/32821362153.html](https://fr.aliexpress.com/item/32821362153.html)

Les capteurs MPR121, réagissent quand on les touchent **avec la main 🖐️**, ou **avec un objet conducteur 🔧.** Il nous suffit donc d'exposer la broche à l'aide de **pastilles de soudures,** ce qui nous permet de créer les formes que nous voulons.

<p class="callout success"><span class="emoji">📗</span> Les [plans](http://cdn.sparkfun.com/datasheets/BreakoutBoards/MPR121-Breakout-v13.zip) sous Eagle (et fusion 360) sont disponibles sous licence open source.</p>

<p class="callout success">Chaque module est capable de gérer **12 pads** et il est possible d'en utiliser **4 à la fois** (**46 Pads**)</p>

[![image-1592738426233.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592738426233.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592738426233.png)

<p class="callout success">Ces modules communiquent en [i²c](https://en.wikipedia.org/wiki/I%C2%B2C), il ne nécessite que 2 broches (SDA / SCL) pour pouvoir l'utiliser, peut importe le nombre de MPR121 utilisés.</p>

[![image-1592821864446.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592821864446.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592821864446.png)

## Boutons 🟩

💲 Sparkfun : [https://www.sparkfun.com/products/15326](https://www.sparkfun.com/products/15326)  
💲 Amazon : [https://www.amazon.fr/POPESQ®-Interrupteur-instantane-Momentary-A2105/dp/B07DRRX4P3](https://www.amazon.fr/POPESQ%C2%AE-Interrupteur-instantane-Momentary-A2105/dp/B07DRRX4P3)  
💲 Aliexpress : [https://fr.aliexpress.com/item/32834276752.html](https://fr.aliexpress.com/item/32834276752.html)

Grâce à l'économie de broches que les capteurs capacitifs nous offrent, il est possible d'ajouter 10 boutons sur les broches restantes sur le Sparkfun micro.

<p class="callout success">Les boutons sont reliés sans résistances à l'Arduino grâce aux [résistances de rappel](https://fr.wikipedia.org/wiki/R%C3%A9sistance_de_rappel) (pull-up resistors) intégrées à celui-ci</p>

4 des boutons sont placés au niveau des potentiomètres et les 6 autres à coté.

[![image-1592651246681.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592651246681.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592651246681.png)

## Potentiomètres ⚫

💲 Amazon : [https://www.amazon.fr/potentiometre-Simple-lineaire-Conique-rotatif/dp/B018S9GUKI](https://www.amazon.fr/potentiometre-Simple-lineaire-Conique-rotatif/dp/B018S9GUKI)  
💲 Aliexpress : [https://fr.aliexpress.com/item/33051479190.html](https://fr.aliexpress.com/item/33051479190.html)

Le Sparkfun micro a 4 sorties analogiques, parfait pour gérer 4 potentiomètres.  
Ceux ci vont nous permettre de régler des effets / synthétiseurs au sein des logiciels de musique assisté par ordinateur.

<p class="callout warning">La résistance mécanique des potentiomètres est uniquement soutenu par les soudures.</p>

[![image-1592651282428.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592651282428.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592651282428.png)

## Afficheur OLED 128x64 🖼️

💲 Aliexpress : [https://fr.aliexpress.com/item/32957159545.html](https://fr.aliexpress.com/item/32957159545.html)

Ces afficheurs de 128x64 utilise la technologie OLED, à la différence des afficheurs LCD, le contraste est plus élevé , l'image très clair (car chaque pixel sont éclairés individuellement).  
Ils fonctionnent en i²c et utilise donc les mêmes broches que pour les capteurs capacitifs.

<p class="callout danger">Certains modules inversent les broches VCC / GND et d'autres ont plus de broches car ils utilisent le protocoles SPI, faites très attention en les commandant.</p>

[![image-1592821990945.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592821990945.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592821990945.png)

## Régulateur de tension 5v vers 3.3v ⚡

💲 Aliexpress : [https://fr.aliexpress.com/item/32718499724.html](https://fr.aliexpress.com/item/32718499724.html)

<p class="callout danger">Tout les modules de régulation de tension n'ont pas les broches aux même endroit.  
Il faut qu'il est Vo / GND / Vi</p>

Le sparkfun Micro 5v n'a pas de broche 3.3V, il va donc nous falloir réduire la tension à 3.3v afin d'alimenter les capteurs capacitifs.[![image-1592822592555.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592822592555.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592822592555.png)

## Convertisseur de niveau logique ⚡

💲 Sparkfun : [https://www.sparkfun.com/products/12009](https://www.sparkfun.com/products/12009)  
💲 Amazon : [https://www.amazon.fr/Hiletgo-modules-convertisseur-bidirectionnel-canaux/dp/B07F7W91LC](https://www.amazon.fr/Hiletgo-modules-convertisseur-bidirectionnel-canaux/dp/B07F7W91LC)  
💲 Aliexpress : [https://fr.aliexpress.com/item/4000587260340.html](https://fr.aliexpress.com/item/4000587260340.html)

Afin que les capteurs capacitif communique avec le Sparkfun micro il nous faut aussi un convertisseur de niveau (Logic Level Converter)

Celui-ci est alimenté d'un coté en 5v (HV) et de l'autre en 3.3v (LV) est converti le signal i²c (SDA/SCL) entre ces deux tensions (HV1 / HV2 &lt;--&gt; LV1 / LV2)

[![image-1592822867471.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592822867471.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592822867471.png)

[![image-1592822832378.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592822832378.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592822832378.png)

# Commande du PCB

## Téléchargement du gerber 📁

Afin de commander les PCB, nous avons besoins du **[gerber](https://fr.wikipedia.org/wiki/Gerber_(format_de_fichier))** de celui-ci

> Le format de fichier **Gerber** est le standard de-facto utilisé pour transmettre des informations concernant la fabrication des [circuits imprimés](https://fr.wikipedia.org/wiki/Circuit_imprim%C3%A9 "Circuit imprimé"). Il contient la description des diverses couches de connexions électriques (les pistes, les pastilles, les plages [CMS](https://fr.wikipedia.org/wiki/Composant_mont%C3%A9_en_surface "Composant monté en surface"), les [vias](https://fr.wikipedia.org/wiki/Via_(%C3%A9lectronique) "Via (électronique)")…).

Vous pouvez les télécharger sur github  
📁 Gerbers: [https://github.com/usini/m1d1\_36/releases](https://github.com/usini/m1d1_36/releases)

[![image-1592654662356.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592654662356.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592654662356.png)

## Commande du PCB 💲

Après avoir essayer plusieurs fournisseurs, le seul a avoir un prix raisonnable pour un PCB de cette taille est JLCPCB.  
5 exemplaires du PCB coûtent 12.16€, et en livraison rapide le tout revient à 28.69€ soit 5,7€ le PCB.

[![image-1592654745709.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592654745709.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592654745709.png)

Toutefois la commande d'un PCB est a peu près identique sur chaque plateforme, voici les étapes pour commander le PCB

Aller sur [https://jlcpcb.com/ ](https://jlcpcb.com/)puis cliquer sur **QUOTE NOW**

[![image-1592654849579.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592654849579.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592654849579.png)

Cliquer sur le bouton **Add your gerbers** et ajouter le fichier **m1d1\_36\_gerbers\_v1.zip 📁**

[![image-1592655142488.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592655142488.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592655142488.png)

[![image-1592655016637.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592655016637.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592655016637.png)

Vous n'avez pas besoin de changer la moindre option, mais si vous voulez la couleur noir (par ex.) vous pouvez la changer ici (**cela augmentera la durée de fabrication**)

[![image-1592655064119.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592655064119.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592655064119.png)

- Cliquer sur **Save to Cart**
- Cliquer sur **Checkout securely**

# Assemblage du PCB

### Modification sur le MPR121 ✂️

<p class="callout danger">Attention si vous ne faites pas cette modification, les MPR121 dont les adresses sont modifiés physiquement bloqueront l'exécution du programme.  
[https://electronics.stackexchange.com/questions/325702/how-to-cut-the-add-to-gnd-trace-on-a-mpr121-capacitive-touch-sensor#325714](https://electronics.stackexchange.com/questions/325702/how-to-cut-the-add-to-gnd-trace-on-a-mpr121-capacitive-touch-sensor#325714)</p>

✖️ Les clones de MPR121 ont un défaut, on ne peut pas changer leur adresse i²c, et donc en utiliser plusieurs.  
Pour [changer l'adresse d'un MPR121](https://learn.adafruit.com/adafruit-mpr121-12-key-capacitive-touch-sensor-breakout-tutorial/wiring), il suffit de relier la broche **ADD** soit au 3V, au SDA ou au SCL

- **ADD non connecté : 0x5A**
- **ADD sur 3V : 0x5B**
- **ADD sur SDA : 0x5C**
- **ADD sur SCL : 0x5D**

Pas de panique, même si cela semble un peu risqué, c'est une modification relativement simple (avec les bons outils)  
Pour que cela marche, **il faut couper une piste** (par ex à l'aide d'un petit tournevis plat)  
 **Grattez la surface** **entre** **les deux pads** de soudures jusqu'à ce que le contact soit rompu (vérifier ceci à l'aide d'**un multimètre**)

[![image-1593679699671.png](https://doc.labsud.org/uploads/images/gallery/2020-07/scaled-1680-/image-1593679699671.png)](https://doc.labsud.org/uploads/images/gallery/2020-07/image-1593679699671.png)

[![image-1592739672087.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592739672087.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592739672087.png)

## <iframe allowfullscreen="allowfullscreen" height="314" src="//www.youtube.com/embed/VhU-bXgKgZ0" width="560"></iframe>



## Soudure des composants

Ici rien de bien compliquer, le sens de chaque module est indiqué sur le PCB.

<p class="callout success">Vous pouvez utiliser des broches 2.54mm femelles si vous voulez pouvoir retirer les modules (mais cela augmentera la hauteur des modules)  
Pour l'afficheur c'est plus embêtant vu qu'il ne sera pas soutenu correctement.</p>

<p class="callout danger">J'attends de recevoir les composants pour souder les PCB restants et documenter la fabrication</p>

# Programmation

La programmation de la carte est relativement simple,

Vous pouvez télécharger la dernier version ici  
Code : [https://github.com/usini/m1d1\_36/releases](https://github.com/usini/m1d1_36/releases)

### Bibliothèques

Toutes les bibliothèques peuvent s'installer à l'aide du gestionnaire de bibliothèques

<div id="bkmrk-acebutton-%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0">- **AceButton** (Brian Park - MIT [https://github.com/bxparks/AceButton](https://github.com/bxparks/AceButton))
- **MIDIUSB** (Arduino, Gary Grewa - GNU v2.1 [https://www.arduino.cc/en/Reference/MIDIUSB](https://www.arduino.cc/en/Reference/MIDIUSB))
- **Adafruit** **SSD1306** (Adafruit Industries - BSD Licence [ https://github.com/adafruit/Adafruit\_SSD1306](https://github.com/adafruit/Adafruit_SSD1306))
- **Adafruit** **MPR121** (Adafruit Industries - BSD Licence [https://github.com/adafruit/Adafruit\_MPR121 ](https://github.com/adafruit/Adafruit_MPR121))

</div>## Téléversement

Choisissez la carte Arduino Micro, **le port correspondant** à votre carte et appuyez sur **téléverser**.

[![image-1592740064079.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592740064079.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592740064079.png)

<p class="callout warning">Les Arduino Micro ont parfois du mal à être programmer car elle change de port série (COM sous Windows) avant que le programme se copie.  
Si c'est le cas appuyez sur le bouton RESET après avoir lancer le téléversement.</p>

Si vous n'arrivez pas à la programmer, vous pouvez vérifier que la programmation se passe bien en changeant ce paramètre dans **les préférences**

[![image-1592740199422.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592740199422.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592740199422.png)

## Configuration

Il est possible de changer les notes des pads (**capNote**) dans l'onglet **settings.h** ainsi que les valeurs CC (Control Change) des boutons et des potentiomètres.

- [https://newt.phys.unsw.edu.au/jw/notes.html](https://newt.phys.unsw.edu.au/jw/notes.html)
- [https://www.midi.org/specifications-old/item/table-3-control-change-messages-data-bytes-2](https://www.midi.org/specifications-old/item/table-3-control-change-messages-data-bytes-2)

[![image-1592740257795.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592740257795.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592740257795.png)[![image-1592824427419.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592824427419.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592824427419.png)

[![image-1593680020114.png](https://doc.labsud.org/uploads/images/gallery/2020-07/scaled-1680-/image-1593680020114.png)](https://doc.labsud.org/uploads/images/gallery/2020-07/image-1593680020114.png)

# Points à améliorer

# Utilisation

# Guitare Acoustique

Dans cette exemple, nous allons voir comment utiliser mon instrument avec des plugins gratuits (mais **pas open source** par contre) afin de créer un ensemble **Guitare Acoustique** / **Basse** et **Batterie**.

<p class="callout warning">Malheureusement, les plugins guitares / basses ne fonctionnent pas sous Linux</p>

## Installation

Pour cela il va nous falloir installer 4 programmes

- [Ample Guitar M II Lite ](https://reverb.com/software/instruments/ample-sound/15-ample-sound-ample-guitar-m-lite-ii): Guitare
- [Ample Bass P Lite II](https://reverb.com/fr/software/instruments/ample-sound/1-ample-sound-ample-bass-p-ii-lite) : Basse
- [MT-PowerDrumKit](https://www.powerdrumkit.com/) : Batterie
- [LMMS](https://www.powerdrumkit.com/) : Logiciel de Musique Assisté par Ordinateur

## Utiliser des VST dans LMMS

Par défaut LMMS s'ouvre avec un modèle, faisons le vide en allant dans **Fichier** --&gt; **Nouveau à partir d'un modèle** --&gt; **Empty**

[![image-1593419575490.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1593419575490.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1593419575490.png)

Cliquer sur Instruments Plugin et choisissez (en bas de la liste), **VeSTige**

[![image-1593419640626.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1593419640626.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1593419640626.png)

<p class="callout info">A la différence des autres logiciels de M.A.O, qui demande à ce que les plugins VST soit installer dans un dossier précis, dans LMMS, nous pouvons ouvrir les plugins directement.</p>

Par défaut, les plugins VST s'installe dans **Program Files\\VstPlugins,** les VST ont comme extension **.DLL  
MT-PowerDrumKit** peut être installer où vous voulez mais je recommande de l'installer au même endroit afin qu'il marche avec les autres logiciels de M.A.O

- **ABPL2.dll** : Basse
- **AGML2.dll** : Guitare
- **MT-PowerDrumKit.dll** : Batterie

[![image-1593421836314.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1593421836314.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1593421836314.png)

Au final, vous devriez avoir 3 **VeSTige** dans votre **éditeur de morceau**

[![image-1593421924899.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1593421924899.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1593421924899.png)

<p class="callout warning">MT-PowerDrumKit est gratuit, mais nécessite (à l'instar d'un WinRaR) de passer un écran de démarrage, il vous suffit de faire une donation pour ne plus avoir cette écran.</p>

## Contrôler un instrument en MIDI

Cliquer sur l'**engrenage** de la piste que vous voulez contrôler et cliquez sur **MIDI** --&gt; **Entrée** --&gt; **Arduino Micro**

[![image-1593422460895.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1593422460895.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1593422460895.png)

<p class="callout warning">La gestion du MIDI dans LMMS impose de le **redémarrer** pour **détecter des nouveaux périphériques MIDI**.  
Si vous n'avez pas brancher votre instrument MIDI avant le démarrage ou qu'il a été débranché, vous devez redémarrer le logiciel.</p>

## Pas de son ?

Vous pouvez changer le réglage du son dans **Éditer --&gt; Configuration --&gt; Configuration Audio**

[![image-1593422691020.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1593422691020.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1593422691020.png)

# Guitare électrique

Voici un exemple d'utilisation avec [Prominy-V Metal](https://prominy.com/products/v-metal/) / [Guitar Rig](https://www.native-instruments.com/fr/products/komplete/guitar/guitar-rig-5-pro/)

<p class="callout success">J'ai utilisé Propellerhead Reason pour cette exemple, mais n'importe quel logiciel capable de faire fonctionner des VST peut faire l'affaire.</p>

<iframe allowfullscreen="allowfullscreen" height="314" src="//www.youtube.com/embed/bJb0MLeT7dg" width="560"></iframe>

[https://www.youtube.com/watch?v=bJb0MLeT7dg](https://www.youtube.com/watch?v=bJb0MLeT7dg)

[Prominy-V Metal](https://prominy.com/products/v-metal/) est un instrument VST dont le but est de simuler une guitare électrique.

[![image-1592987420909.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592987420909.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592987420909.png)  
Pour cela il nous faut simuler différents "effets"

- Les cordes étouffés (PALM MUTE)
- Les harmoniques
- Les différents accords (En mode Lite, les accords sont joués en une seul note)
- Les blocages des cordes

Le fonctionnement de ces effets est très simple, la plupart des changements se font en appuyant **sur une note précise**, ou en **changeant la vélocité**.

Prominy-V est très complet (vu que le plugin coûte 299$ heureusement), et il y a aussi beaucoup de possibilités que je n'ai pas encore exploré.

## Fonctionnement

Nous allons utiliser la partie la plus à gauche de l'instrument pour gérer ces différents effets.  
Le reste de l'instrument simule les trois premiers cordes d'une guitare.

<p class="callout success">**Palm Mute** et **Harmonics** doivent être laisser appuyer pour fonctionner</p>

[![image-1592905657244.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592905657244.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592905657244.png)

## Distortion

Prominy-V Metal n'a pas d'effets ou de simulateur d'ampli, il nous faut donc, en plus, un simulateur d'effets.  
Au point où on en est niveau tarif autant prendre le top pour ça : [Guitar Rig 5](https://www.native-instruments.com/fr/products/komplete/guitar/guitar-rig-5-pro/)

[![image-1592987488520.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592987488520.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592987488520.png)

Comme point de départ, nous allons utiliser le Preset \[94 Rock Solo\], afin d'avoir un son correct, il va nous falloir faire quelques réglages, combiner deux sons de guitares et une bonne stratégie pour avoir un son plus recherchés.

<p class="callout warning">Le secret pour avoir un bon son de guitare métal (si on a pas un [ingénieur du son](https://www.youtube.com/watch?v=U4FNBMZsqrY) particulièrement doué ) et d'ajouter une basse et de régler le son de la guitare de façon que seul elle ne sonne pas si bien que ça mais combiner à la basse, elle donne un son complet.</p>

[![image-1592987830547.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592987830547.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592987830547.png)

## Règlages de Promini-V Metal

Afin de bien utiliser cette instrument VST, il est important de bien comprendre comment il fonctionne, regardons un peu les paramètres de ce plugin.

# Patchbox OS

## Introduction

[![image-1592988286023.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592988286023.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592988286023.png)

La première idée que j’ai eue lorsque j’ai reçu mon Raspberry Pi, ça a été de vouloir faire un synthé avec.  
J’ai un clavier Midi USB, du coup, ça paraissait logique de pouvoir faire de la musique avec.

Mais après avoir testé plein de solutions, c’est assez laborieux, et on finit par revenir assez rapidement à utiliser un PC à la place.

Ça , c’était avant que je découvre Patchbox OS, un OS pour Raspberry Pi pensé pour le transformer en synthétiseur mais aussi comme pédale à effet.

Patchbox OS est vraiment complet, je vais donc principalement parler de Modep que j’ai testé.

À première vue lorsque l’on regarde le site de Blokas.io ont pourrait penser que leur logiciel ne fonctionne qu’avec leur matériel, mais en vrai Patchbox OS marche très bien sans !

Pour autant pour profiter pleinement du logiciel, leur carte son le PiSound permet d’avoir une entrée et une sortie audio de qualité  
[https://blokas.io/pisound/](https://blokas.io/pisound/)

## [![image-1592988303305.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592988303305.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592988303305.png)

## Présentation

Patchbox OS est une distribution Linux pour le Raspberry Pi destiné aux projets audio. Il est pré configuré pour avoir une faible latence et incorpore un paquet de logiciels audio.

Parfait pour fabriquer son propre synthétiseur, une pédale à effet, ou même pour créer des installations artistiques (il fonctionne super bien avec TouchOSC ou tout logiciel utilisant le protocole OSC)

## Concept Modulaire

Patchbox est construit autour de module, le but des modules est de simplifier la configuration de chaque logiciel, ce qui permet de passer d’un projet à un autre sans avoir à modifier fondamentalement votre système.

## Les 3 modules

### Orac

[![image-1592988348927.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592988348927.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592988348927.png)

Orac est système modulaire basé sur PureData crée par Mark Harris. Ce système est utilisé dans l’instrument Organelle.  
[<iframe allowfullscreen="allowfullscreen" height="314" src="//www.youtube.com/embed/-m8p9E-WGWE" width="560"></iframe>](https://www.youtube.com/watch?v=-m8p9E-WGWE)

[https://www.youtube.com/watch?v=-m8p9E-WGWE](https://www.youtube.com/watch?v=-m8p9E-WGWE)

### PureData

Je ne connais pas bien PureData, du coup je n’ai pas vraiment réussi à l’utiliser.

### Modep

[![image-1592988420787.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592988420787.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592988420787.png)

Ce qui a attirait mon attention c’est plus Modep, depuis une interface web on peut configurer ses synthés et effet comme des pédales à effet de guitare.

En gros c’est une interface pour utiliser les effets et synthé [**Calfs**](https://calf-studio-gear.org/), [**Guitarix**](http://guitarix.org/), [**fluidsynth** ](http://www.fluidsynth.org/)et pleins d’autres.

## Matériels nécessaires

- Un Raspberry Pi (Minimum 2B)
- Un instrument Midi (ou TouchOSC sur Android/Iphone)
- Recommandé : Une bonne carte son USB / shield audio

## Installation

Documentation officielle : [https://blokas.io/patchbox-os/docs/](https://blokas.io/patchbox-os/docs/)  
L’installation est vraiment simple, on sent le travail bien fait derrière.

## Flashage de la carte SD

Pisound est une image disque (comme Raspbian), il va donc falloir la télécharger puis la copier sur une carte micro SD.  
[https://blokas.io/patchbox-os/#patchbox-os-download](https://blokas.io/patchbox-os/#patchbox-os-download)

[![image-1592988533846.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592988533846.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592988533846.png)

### Premier démarrage

Il va falloir se connecter en SSH sur le Raspberry Pi, heureusement par défaut PatchBox OS se met en mode point d’accès Wifi (vous pouvez évidemment aussi le brancher en Ethernet)

[![image-1592988548312.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592988548312.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592988548312.png)

- Connectez-vous au point d’accès Wifi, le mot de passe est **blokaslabs**
- <span style="font-weight: normal;">Puis </span><span style="font-weight: normal;">connectez-vous</span><span style="font-weight: normal;"> en SSH, identifiant : </span>**patch**<span style="font-weight: normal;"> mot de passe </span>**blokaslabs**

[![image-1592988565374.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592988565374.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592988565374.png)

### Assistant d’installation

Surprise, vous n’arrivez pas sur un terminal linux, mais sur un assistant.  
Si vous avez fait une erreur pas de panique, il vous suffira de tapez **patchbox** pour le redémarrer.

[![image-1592988582484.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592988582484.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592988582484.png)

- Dites non pour les mises à jour (vous n’êtes pas connecté pour le moment)
- Changer le mot de passe

### Choix de la carte son

[![image-1592988597403.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592988597403.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592988597403.png)

Il est maintenant temps de choisir la carte son, voici un tableau récapitulatif pour le PiSound, la sortie intégrée et une carte son USB générique.  
Si vous avez paramétré une carte son, sous DOS, ça devrait vous rendre un peu nostalgique ;-)

<table cellpadding="2" cellspacing="0" id="bkmrk-%C2%A0-pisound-sortie-int" width="613"><thead><tr><th style="border: none; padding: 0cm;" width="118"> </th><th style="border: none; padding: 0cm;" width="58">Pisound

</th><th style="border: none; padding: 0cm;" width="290">Sortie intégrée (bcm2835\_alsa)

</th><th style="border: none; padding: 0cm;" width="131">Carte son USB

</th></tr></thead><tbody><tr><td style="border: none; padding: 0cm;" width="118">Sampling rate (-r)

</td><td style="border: none; padding: 0cm;" width="58">48000

</td><td style="border: none; padding: 0cm;" width="290">44100

</td><td style="border: none; padding: 0cm;" width="131">44100

</td></tr><tr><td style="border: none; padding: 0cm;" width="118">Buffer size (-p)

</td><td style="border: none; padding: 0cm;" width="58">128

</td><td style="border: none; padding: 0cm;" width="290">512

</td><td style="border: none; padding: 0cm;" width="131">512

</td></tr><tr><td style="border: none; padding: 0cm;" width="118">Period (-n)

</td><td style="border: none; padding: 0cm;" width="58">2

</td><td style="border: none; padding: 0cm;" width="290">3

</td><td style="border: none; padding: 0cm;" width="131">3

</td></tr></tbody></table>

### Choix de l’environnement graphique

Patchbox OS est avant tout basé sur Raspbian, vous pouvez ainsi démarrer sur le bureau, en soit à moins de vouloir utiliser pure-data ce n’est pas utile, en effet nous allons configurer Modep depuis notre ordinateur.

### Connexion au WiFi

Afin de pouvoir finir l’installation, il va nous falloir une connexion internet, vous perdrez la connexion actuelle et la possibilité d’utiliser patchbox OS en point d’accès WiFi (utile si vous voulez le configurer sans être chez vous)

Vous pourrez de toute façon changer ce paramétrage ultérieurement en tapant **patchbox**

[![image-1592988655113.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592988655113.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592988655113.png)

### Reconnexion

[![image-1592988666687.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592988666687.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592988666687.png)

Oh non tout à planter ! Pas de panique c’est normal, votre Raspberry Pi est maintenant connecté sur votre box.  
Reconnectez vous, l’avantage c’est que vous pouvez utiliser **patchbox.local** plutôt que l’IP à partir de maintenant.

(rappel : <span style="font-weight: normal;">identifiant : </span>**patch**<span style="font-weight: normal;"> mot de passe </span>**blokaslabs** <span style="font-weight: normal;">(si vous ne l’avez pas changé)</span>

[![image-1592988678802.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592988678802.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592988678802.png)

[![image-1592988684980.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592988684980.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592988684980.png)

Tapez patchbox pour finir la configuration

- Aller sur update pour mettre à jour Patchbox
- Puis aller dans module –&gt; modep pour l’installer (et l’activer)

[![image-1592988773569.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592988773569.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592988773569.png)

Quand j’ai testé Patchbox OS, leurs serveurs étaient très lents, mais apparemment le problème est résolu, il ne reste plus qu’à attendre la fin de l’installation.

## Let’s rock !

J’ai eu des soucis de CPU à 100 %, je vous conseille de redémarrer avant de lancer modep.  
Depuis votre navigateur web aller sur [http://patchbox.local/](http://patchbox.local/)

[![image-1592988802142.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592988802142.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592988802142.png)

## Montez le son !

Dans la ligne de commande tapez alsamixer, F6 pour choisir la carte son.

# Arduino (AY-3-8910)

# Customisation (Kicad)

# Schéma sur Kicad

[Kicad ](https://kicad-pcb.org/)n'est pas comme on pourrait le penser, une seule application mais un ensemble d'applications, qui communique entre eux.

[![image-1593680879039.png](https://doc.labsud.org/uploads/images/gallery/2020-07/scaled-1680-/image-1593680879039.png)](https://doc.labsud.org/uploads/images/gallery/2020-07/image-1593680879039.png)

[https://kicad-pcb.org/](https://kicad-pcb.org/)

Créer un PCB se fait en 2 étapes, **le schéma** puis le **PCB**.  
Le schéma **n'est pas obligatoire**, mais il nous permet d'être sûr **de notre routage**, et **d'avoir une vision clair des branchements**.

[![image-1593680947016.png](https://doc.labsud.org/uploads/images/gallery/2020-07/scaled-1680-/image-1593680947016.png)](https://doc.labsud.org/uploads/images/gallery/2020-07/image-1593680947016.png)

- Pour le schéma, nous utilisons le programme **EEschema** (le premier icône de la liste)
- Pour le PCB, nous utiliserons **PCBNew** (le troisième icône)

<p class="callout info">EEschema et PCBNew est accompagné de deux autres programmes, l'éditeur de symbole et l'éditeur d'empreintes qui nous permet de créer nos propres composants.</p>

## Téléchargement

Les fichiers Kicad sont disponibles dans les sources dans le dossier Kicad, vous pouvez le télécharger ici : [https://github.com/usini/m1d1\_36](https://github.com/usini/m1d1_36)

[![image-1593680833268.png](https://doc.labsud.org/uploads/images/gallery/2020-07/scaled-1680-/image-1593680833268.png)](https://doc.labsud.org/uploads/images/gallery/2020-07/image-1593680833268.png)

Ouvrez le fichier **m1d1\_36.pro** puis ouvrez **m1d1\_36.sch**

[![image-1593681265587.png](https://doc.labsud.org/uploads/images/gallery/2020-07/scaled-1680-/image-1593681265587.png)](https://doc.labsud.org/uploads/images/gallery/2020-07/image-1593681265587.png)

## Le schéma

Voici le schéma de l'instrument, habituellement il est recommandé de router les entrées / sorties à l'aide de **fils verts**, ici vu que nous utilisons des modules tout fait, j'ai pris la liberté d'utiliser des **labels**

[![image-1593681400107.png](https://doc.labsud.org/uploads/images/gallery/2020-07/scaled-1680-/image-1593681400107.png)](https://doc.labsud.org/uploads/images/gallery/2020-07/image-1593681400107.png)Si un label a le même nom, Kicad considère qu'ils sont reliés entre eux.

[![image-1593680757735.png](https://doc.labsud.org/uploads/images/gallery/2020-07/scaled-1680-/image-1593680757735.png)](https://doc.labsud.org/uploads/images/gallery/2020-07/image-1593680757735.png)

## Changer le schéma

<p class="callout info">A l'exception des boutons et potentiomètres, tout les symboles ont été créent et sont disponible dans **lib/m1d1\_36.lib**</p>

Imaginons que nous ne voulons ajouter un capteur capacitif dans notre schéma, il va falloir :

- Ajouter un MPR121
- Router le MPR121 vers le level shifter

Cliquer sur **Placer Symbole** (ou **SHIFT-A**)

[![image-1593681964608.png](https://doc.labsud.org/uploads/images/gallery/2020-07/scaled-1680-/image-1593681964608.png)](https://doc.labsud.org/uploads/images/gallery/2020-07/image-1593681964608.png)

**Cliquer n'importe où** sur le schéma  
Chercher **MPR121** et placer le sur le schéma

[![image-1593682303132.png](https://doc.labsud.org/uploads/images/gallery/2020-07/scaled-1680-/image-1593682303132.png)](https://doc.labsud.org/uploads/images/gallery/2020-07/image-1593682303132.png)

# Vue PCB sur Kicad



# Modifier un PAD

Les pads que j'ai fait sont basés sur la taille d'une touche de clavier, mais il est possible d'utiliser d'autres formes.

<span style="text-decoration: underline;"><span style="color: #000000; text-decoration: underline;">Voici quelques exemples tirés du [datasheet](https://www.sparkfun.com/datasheets/Components/MPR121.pdf)</span></span><span style="color: #000000; background-color: #ffff00;">  
</span>

[![image-1593083787014.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1593083787014.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1593083787014.png)

## Aller dans l'éditeur d'empreinte

Afin de modifier la forme d'un Pad, il nous suffit de changer l'empreinte (footprint) de celui-ci.

Dans Kicad aller dans **l'éditeur d'empreinte**

[![image-1592906839902.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592906839902.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592906839902.png)

Dans Librairies, cherchez **pad**

[![image-1592906895660.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592906895660.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592906895660.png)

<p class="callout success">Vous pouvez avoir un visuel en 3D du résultat en allant dans **Affichage** --&gt; **3D visualisateur**</p>

## Modifier les propriétés du PAD

Vous pouvez modifier la forme en **double cliquant** simplement dessus, cela vous permet de faire:

- Rectangle
- Rectangle arrondi
- Ovale
- Cercle
- Trapézoïdale (Triangle)

[![image-1592907294967.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592907294967.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592907294967.png)

## Modification Avancés

Si vous cherchez à faire des formes plus complexe, c'est possible à l'aide des outils de dessin.  
Sélectionner **F.PASTE**

[![image-1592907756133.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592907756133.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592907756133.png)

Vous pouvez aussi ajouter du texte avec **F.SilkS** (Sérigraphie)

[![image-1592907818449.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592907818449.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592907818449.png)

<p class="callout warning">N'oublier pas de garder le Pad de référence et qu'il soit en contact avec les zones de soudure ajoutés</p>

[![image-1593083698530.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1593083698530.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1593083698530.png)

## Modification à partir d'une image

Il est aussi possible d'utiliser une image, il est par contre **un peu compliqué de la dimensionner correctement.**

- Il vous faut donc **connaître la taille du pad** que vous voulez créer.
- Ainsi qu'une **image monochrome**, pour notre exemple nous allons utiliser le logo de Fear Factory.
- Cliquer sur le **Convertisseur d'images en symboles schématiques** **ou empreintes de CI** (Bitmap2Component)

[![image-1593086342242.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1593086342242.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1593086342242.png)

- Charger une image Bitmap
- Dans Format cliquez sur Pcbnew

[![image-1593086438509.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1593086438509.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1593086438509.png)

Le seul paramètre pour dimensionner notre image est la résolution, plus **celle-ci est elevé, plus l'image est petite.**

- Modifier la **résolution DPI** jusqu'à obtenir la bonne taille.
- Cliquer sur exporter et sauvegarder le fichier dans **lib/m1d1\_36.pretty/**
- **Dans** l'éditeur d'empreinte ouvrez le fichier que vous avez crée (ici pad\_factory)

[![image-1593086995790.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1593086995790.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1593086995790.png)

- Copier la forme (CTRL-C)
- Sélectionner un **point de référence pour la copie** (par exemple **un point en haut à gauche**)
- Ouvrez **Pad** et coller la forme
- Double-cliquez sur la forme et changer la couche en **F.PASTE**
- N'oubliez pas de garder le pad d'origine et de faire qu'il soit en contact avec la forme

[![image-1593087182108.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1593087182108.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1593087182108.png)

## Ré-association de l'empreinte

Notre empreinte à été modifié, pour information, les empreintes se trouvent dans **/lib/m1d1\_36.pretty** comme vous pouvez le voir dans **Préférences / Configurer les librairies d'empreintes / Librairies Spécifiques au Projet**

Il nous faut maintenant mettre à jour l'empreinte dans notre circuit

- Sortez de **l'éditeur d'empreinte** (après avoir sauvegarder)
- Aller dans **l'éditeur de circuit**

[![image-1593084520122.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1593084520122.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1593084520122.png)

- Aller dans **Outils** / **Mise à jour des empreintes à partir des librairies** et cliquez **Mise à jour toutes les empreintes du PCB**

[![image-1593084707799.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1593084707799.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1593084707799.png)

Et voilà nous avons toutes nos empreintes, ici nous n'avons pas besoin de repenser la carte ou déplacer les pads donc cela reste relativement simple.

[![image-1593084945928.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1593084945928.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1593084945928.png)

Toutefois, il nous faut refaire les pistes, pas de panique nous allons utiliser un outil d'autorouting afin de simplifier cette tâche.

# Autoroutage avec FreeRouting

Bien que router des pistes manuellement sur Kicad soit un plaisir pour moi, ici vu que nous avons 36 pads, cela risque d'être très long. heureusement il est possible de le faire automatiquement avec [freerouting](https://freerouting.org/).

## Installer Java

Freerouting utilise Java, il va donc nous falloir l’installer.  
[https://www.java.com/fr/](https://www.java.com/fr/)

[![image-1592655335784.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592655335784.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592655335784.png)

## Installer Layout Editor

Pour une raison assez bizarre, freerouting n’est pas disponible seul, il faut installer **Layout Editor** pour récupérer freerouting.  
[https://layouteditor.com/](https://layouteditor.com/)

[![image-1592655356078.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592655356078.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592655356078.png)

## Créer un raccourci vers freerouting

Freerouting est disponible dans le dossier bin de LayoutEditor, si vous êtes sous Windows il devrait être dans **"C:\\Program Files (x86)\\LayoutEditor\\bin\\freeRouting.jar"**

Créer un raccourci sur votre bureau vers ce fichier.

[![image-1592655368805.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592655368805.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592655368805.png)

## Créer un fichier Specctra DSN

Dans **Kicad / PCBNew,** exporter votre carte au format DSN

[![image-1592655378665.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592655378665.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592655378665.png)

## Importer le fichier Specctra DSN

Ouvrez Freerouting, puis ouvrer le fichier Specctra DSN

[![image-1592655389653.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592655389653.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592655389653.png)

## Lancer l’autorouting

Vous n’avez plus qu’à lancer l’autorouting, cela va prendre un petit moment, vu que le logiciel va faire plusieurs passes avant de décider du meilleur routage.

[![image-1592655404222.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592655404222.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592655404222.png)

## Exporter le fichier Specctra

Une fois fini, il ne nous reste plus qu’à **exporter le fichier Specctra** puis le **réimporter dans Kicad.**

[![image-1592655432283.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592655432283.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592655432283.png)Et voilà votre routage est fait, c’est un sacré gain de temps ! Toutefois ne faites pas confiance aveuglement au routage ! N’oubliez pas de revérifier les pistes.

[![image-1592655452213.png](https://doc.labsud.org/uploads/images/gallery/2020-06/scaled-1680-/image-1592655452213.png)](https://doc.labsud.org/uploads/images/gallery/2020-06/image-1592655452213.png)

## Bonus

J'avais filmé une partie la fabrication de cette carte, ce n'est pas très passionnant à regarder mais ça peut être utile  
[https://youtu.be/buCY1lT0xS4](https://youtu.be/buCY1lT0xS4)

<iframe allowfullscreen="allowfullscreen" height="314" src="//www.youtube.com/embed/buCY1lT0xS4" width="560"></iframe>

# Customisation (Arduino)

# Code Principale

<p class="callout success">Documentation développeur : [https://usini.github.io/m1d1\_36/docs/index.html](https://usini.github.io/m1d1_36/docs/index.html)</p>

Afin de simplifier la modification du fonctionnement de l'instrument, tout le code est basé sur un [système événementielle](https://doc.labsud.org/Programmation%20%C3%A9v%C3%A9nementielle)  
Chaque fonctionnalité est rangé dans un fichier.h

- OLED.h (Afficheur)
- buttons.h (Boutons)
- midi.h (Midi)
- mpr121.h (Module capacitif)
- pots.h (Potentiomètre)
- settings.h (Paramètres)

Voici les 3 événements disponibles dans ces 3 fonctions

- MPREvent
- potsEvent
- buttonsEvent

## MPREvent (PAD)

[![image-1594105051570.png](https://doc.labsud.org/uploads/images/gallery/2020-07/scaled-1680-/image-1594105051570.png)](https://doc.labsud.org/uploads/images/gallery/2020-07/image-1594105051570.png)

Lorsqu'un pad est appuyé ou relâché, cette fonction devient active.

**<span style="text-decoration: underline;">Voici les paramètres de cette fonction:</span>**

**capPos** : Position du l'ensemble des pads De 0 à 36 (noté sur le PCB comme U16, U17, U18 par ex)  
[![image-1594117745644.png](https://doc.labsud.org/uploads/images/gallery/2020-07/scaled-1680-/image-1594117745644.png)](https://doc.labsud.org/uploads/images/gallery/2020-07/image-1594117745644.png)  
**note** : La note correspondant à la position du pad comme noté dans settings.h (voir capNote\[36\])

```C++
uint8_t capNote[36] = {28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
                       40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
                       52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63
                      }; ///< Note from pad (when transpose = 0)
```

**state** : **true** si appuyé et **false** si relaché  
**mpr\_id** : id du module capacitif, chaque ligne correspond à un module et commence par la ligne du bas

[![image-1594118050992.png](https://doc.labsud.org/uploads/images/gallery/2020-07/scaled-1680-/image-1594118050992.png)](https://doc.labsud.org/uploads/images/gallery/2020-07/image-1594118050992.png)  
**cap\_id** : id du pad par rapport au module (de 0 à 12)

<span style="text-decoration: underline;">**Exemple, jouer une note du tableau capNote\[36\]**  
</span>

```C++
if (state) { //Pad appuyé
 noteOn(note, 120, 1) //Note midion (équivalent à capNote[capPos]), velocité, canal)
} else { // Pad Relaché
 noteOff(note, 0, 1) //Note midioff (équivalent à capNote[capPos]), velocité, canal)
}
```

## potsEvent (Potentiomètre)

[![image-1594118746314.png](https://doc.labsud.org/uploads/images/gallery/2020-07/scaled-1680-/image-1594118746314.png)](https://doc.labsud.org/uploads/images/gallery/2020-07/image-1594118746314.png)  
Lorsqu'un potentiomètre est tourné, cette fonction s'active

<span style="text-decoration: underline;">**Voici les paramètres de cette fonction:**  
</span>**pot\_id :** Le numéro correspondant au potentiomètre **(noté A0 à A3 sur le PCB)  
pots\_cc\[\] :** Le [paramètre](https://www.midi.org/specifications-old/item/table-3-control-change-messages-data-bytes-2) lié au potentiomètre **sous la forme de 0x01 à 0x7F (voir settings.h)  
pots\_val\[\] :** La valeur du potentiomètre de 0 à 127

<p class="callout info">pots\_cc et pots\_val sont des variables globales</p>

**<span style="text-decoration: underline;">Exemple</span>**

```C++
switch (pot_id) {
    case 0:
      controlChange(0x01, pots_val[pot_id], 1);
      break;
    case 1:
      controlChange(0x02, pots_val[pot_id], 1);
      break;
    case 2:
      controlChange(0x03, pots_val[pot_id], 1);
      break;
    case 3:
      controlChange(0x04, pots_val[pot_id], 1);
      break;
}
```

## buttonsEvent (Boutons)

[![image-1594119492003.png](https://doc.labsud.org/uploads/images/gallery/2020-07/scaled-1680-/image-1594119492003.png)](https://doc.labsud.org/uploads/images/gallery/2020-07/image-1594119492003.png)

Lorsqu'un bouton est **appuyé**, **relaché**, **appuyé deux fois**, **laissé appuyer** et **appuyé plusieurs fois**  
Pour gérer les boutons, je suis passé par la bibliothèque [AceButton](https://github.com/bxparks/AceButton) qui permet de facilement pouvoir gérer plusieurs évènements.

<span style="text-decoration: underline;">**Voici les paramètres de cette fonction:**  
</span>**button** : Objet bouton, ici nous ne l'utilisons uniquement pour récupérez son identifiant  
**button-&gt;getid()** : Identifiant du bouton  
**eventType** : L’évènement qui a déclenché cette fonction  
**buttonState** : État numérique du bouton (LOW/HIGH)  
**btn\[\]** : État sauvegardé du bouton  
**btn\_cc\[\]** : Le [paramètre](https://www.midi.org/specifications-old/item/table-3-control-change-messages-data-bytes-2) lié au potentiomètre **sous la forme de 0x01 à 0x7F (voir settings.h)**

<p class="callout info">btn\[\] et btn\_cc sont des variables globales</p>

**<span style="text-decoration: underline;">Exemple</span>**

```C++
uint8_t id = button->getId();
switch (eventType) {
case AceButton::kEventPressed:
  btn[id] = !btn[id]; //Inversement de l'état du bouton
  if(btn_id){
    controlChange(btn_cc[id], 0, 1);
  } else {
    controlChange(btn_cc[id], 127,1);
  }
  break;
}
```

# Afficheur (OLED.h)

Le fichier **OLED.h** gère l'afficheur OLED : [**SSD1306** ](https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf)

Nous allons utiliser pour cela, la bibliothèque d'Adafruit SSD1306.  
Celle-ci utilise une bibliothèque générique pour les afficheurs : [Adafruit GFX](https://learn.adafruit.com/adafruit-gfx-graphics-library)

[![image-1594125319859.png](https://doc.labsud.org/uploads/images/gallery/2020-07/scaled-1680-/image-1594125319859.png)](https://doc.labsud.org/uploads/images/gallery/2020-07/image-1594125319859.png)

## Initialisation de l'afficheur

L'afficheur s'in

# Boutons (buttons.h)



# Midi USB et série (midi.h)



# Pads (mpr121.h)