Carte son à échantillons
Précédente Suivante

 

Accueil

 

Cette page décrit la mise en oeuvre d'une carte son de chez Robertsonics portant le nom de "Wav trigger". Une réalisation de e.serinette basée sur cette carte avait été présentée par Yann Baraffe ici.

Pour de plus amples renseignements consulter le site du fabricant.

Avertissement : Il semblerait que cette carte soit désormais remplacée par une nouvelle carte appelée Tsunami et qui serait plus performante. Ceci étant, il est toujours possible de commander la Wav trigger dans plusieurs boutiques internet ou même directement chez Sparkfun qui a été associé à son développement.

Présentation

Cette carte n'est pas un synthétiseur à proprement parler. Elle ne fabrique aucun son et comme son nom l'indique, elle joue et enchaine des fichiers au format .wav qui sont stockés dans une carte mémoire au format Micro SD.
La carte est construite autour d'un microcontrôleur ARM de type STM32 et elle inclut un convertisseur CNA ainsi qu'un petit ampli. Cet ampli de faible puissance peut être désactivé et on dispose également d'une sortie sur un jack pouvant attaquer un ampli BF externe.

Dans notre cas, les fichiers correspondront aux notes que l'on veut faire jouer à notre instrument. On trouvera donc un fichier .wav par note.
L'adressage des fichiers à jouer peut s'effectuer selon 3 modes :
- Une sélection directe au moyen de 16 boutons que l'on peut raccorder sur un des côtés de la carte.
- Un ensemble de commandes envoyées via une liaison série.
- Enfin et c'est là que ça devient intéressant, ces commandes peuvent également prendre la forme de simples messages midi de type note On ou Off.

Câblage et alimentation

Dans le cas d'une carte son pour e.serinette, on ne peut faire plus simple puisqu'il suffit de la raccorder aux 3 fils du connecteur midi d'une carte PPCaP : Le 5 V, la masse et la sortie midi. Dans ce cas, on effectuera le strap 5V sur la carte Wav trigger. Son rôle est de choisir la source du 5 V : soit externe s'il est présent, soit produit par le régulateur local en son absence.

Mais... il s'avère que la Wav trigger tire pas mal sur le 5V (environ 200 mA) et ça fait bien chauffer le régulateur d'une carte arduino de type Nano. Il est donc préférable de l'alimenter par son connecteur d'alimentation et dans ce cas on ne fait pas le pont sur le 5V. On veillera toutefois à ne pas non plus dépasser 12 V car cette-fois-ci, ce sera le régulateur de la Wav trigger qui chauffera !

 

Côté raccordement, rien de difficile

Les échantillons

Ou "samples" ou encore "Soundfonts" qui sont les dénominations sous lesquelles on peut les trouver sur le web.

Là, ça se complique un petit peu.

1. Ces échantillons doivent obligatoirement être au format .wav, non compressés, codés en 16 bits stéréo et échantillonnés à 44100 Hz. Autrement dit, c'est le standard CD. Attention aux échantillons mono que l'on trouve assez souvent sur le web et qui ne conviennent pas. Les fichiers au format SF peuvent être convertis en .wav avec un logiciel comme Audacity (importation en "raw", découpe et exportation...).
2. Tous les fichiers .wav doivent être situés à la racine de la carte SD (pas de répertoires).
3. De manière à différencier les notes midi ainsi que les différents timbres d'instruments, le nommage des fichiers .wav doit suivre des règles très précises et pas forcément simples.

Le principe de base est de faire commencer le nom du fichier par le numéro midi de la note qu'il joue. C'est assez trivial pour le premier jeu de notes (premier instrument), mais comme les développeurs de la Wav trigger ont voulut économiser de la mémoire, la numérotation du deuxième jeu continue après la 128ème note du premier et ça devient vite le bazar. Il existe des formules de calcul sur le site de Robertsonics, mais le plus simple est encore de se référer à ce document.

4. Il faut aussi savoir qu'on ne peut pas faire boucler les échantillons pour produire des notes très longues. Donc la durée maximale des notes que l'on peut sortir ne dépend que de la durée des échantillons. Pas question donc de jouer un bourdon continu sur Amazing grace avec des échantillons de 3 secondes ;o)
5. Enfin, toujours à la racine de la carte SD on doit trouver un fichier nommé wavtrigr.ini qui au plus simple ne comporte que la ligne : #MIDI 3.
La présence de ce fichier est actée par 3 clignotements de la led rouge de la Wav trigger lors de sa mise sous tension. Il peut être construit au moyen de cet utilitaire.

A titre d'exemple, voici le contenu de ma carte SD (140 Mo) qui contient 6 timbres différents. Le wavtrigr.ini est également présent. Donc il suffit de coller le contenu du répertoire Carte_2_PP sur une carte SD et ça devrait fonctionner à condition que la fonction de changement d'instruments de PPCaP envoie les bon messages Program change.
Il faut donc également charger ce fichier personnalisé d'instruments dans PPCaP. La première position du sélecteur d'instruments délivre le n° 79 de manière non modifiable. Ce numéro d'instrument étant impossible pour la Wav trigger, elle ne donnera aucun son dans cette position. Ensuite à partir de la position 2 on aura successivement les numéros suivants qui seront envoyés et les timbres correspondants seront joués par la Wav trigger.
- n° 1 : L'orgue à flûtes d'un célèbre outil de composition musicale.
- n° 0 : L'un de mes orgues à flûtes
- n° 2 : L'orgue de foire de Yann Baraffe
- n° 3 : Le même orgue de foire sans les percussions
- n° 4 : Un accordéon diatonique à 2 registres
- n° 5 : Un autre accordéon diatonique à 3 registres

A noter : L'ordre "bizarre" 1, 0, 2, 3... est requis par les versions de PPCaP jusqu'à la 6.1. A partir de la 6.2 on peut mettre l'ordre naturel 0, 1, 2, 3...

La carte SD

Et ça se complique encore ;o)

J'ai essayé 4 type de cartes SD avant d'en trouver une qui convient. Robertsonics donne des recommandations et je ne saurais que trop conseiller d'en tenir compte, ce sera du temps de gagné ! Ce qu'il faut retenir, c'est que ce n'est pas parce qu'une carte est performante pour de la vidéo ou du son en streaming (cartes pour appareil photos, téléphones ou caméras "de sportifs" par exemple) qu'elle sera également performante sur de multiples accès aléatoires avec une latence de l'ordre de la milliseconde qui sont les conditions requises pour le fonctionnement de la Wav trigger.
Il existe un test pour savoir si une carte est éligible ou non. On y reviendra plus loin. En tous cas, la carte ci-dessous convient parfaitement (bien vu René ;o)) et n'est pas très onéreuse.


Une carte non adaptée se manifeste par la présence de sortes des craquements (des "glitches") dans le son, voir même d'un plantage de la Wav trigger rendant sa sortie muette à tout moment pendant l'exécution d'un morceau.

En résumé :
- Se procurer une Wav trigger.
- Câbler 5Vin, Rx et GND de la Wav trigger sur un connecteur 3 points vers le connecteur midi de PPCaP.
- Alimenter la Wav trigger en 12 V maximum par son connecteur d'alimentation (+ au centre).
- Se procurer une carte SD comme ci-dessus et y déposer le contenu de Carte_2_PP. On doit avoir tous les fichiers "à plat" à la racine.
- Par le menu Paramètres de ProCaP, charger le fichier table_instrus_Wav_trigger.txt dans l'arduino de la e.serinette.
- Positionner le commutateur d'instruments à partir de la position 2.
- Et jouer !

 

Exemple d'intégration

Associée à un petit ampli en classe D, cette carte donne des résultats assez bluffants. La tentation était donc grande de l'intégrer dans un nouveau petit instrument.

Batterie Li-Ion de 16.8 V. D'où les résistances sur l'alim de la Wav trigger pour descendre à environ 10 V.

Commandes "tout aligné" façon PP ;o)

Dimensions : 150 x 150 x 300 mm. Coffret en merisier massif et poids total de 3.3 kg.

Musique !

 

Attention : Ce qui suit n'est absolument pas nécessaire à la mise en œuvre de la carte et s'adresse en premier lieu aux curieux ayant un minimum d'expérience en électronique !

Test d'une carte SD/Modification de firmware

Ce test nécessite le chargement d'un firmware spécifique dans la Wav trigger. Voir ici.
On téléchargera également l'outil de mise à jour.

Pour effectuer ce chargement ou dérouler le test, il faut passer par une interface USB/serial et un émulateur de terminal série. La carte d'interface habituellement dédiée à cet usage est la "FTDI basics" et elle n'est pas forcément bon marché. Qu'à cela ne tienne... Pour un usage occasionnel on peut se débrouiller avec une bonne vieille carte arduino.
L'idée est d'utiliser le composant USB de l'arduino tout en empêchant l'Atmega de démarrer.
1. La première étape consiste à récupérer les signaux CTS (Clear To Send) et DTR (DaTa Ready). C'est un peu sportif mais ça se fait. Voir ci-dessous sur une carte Nano.


 

2. Ensuite on procède au raccordement des 6 fils du connecteur série de la Wav trigger comme suit :
. GND arduino sur le GND de la WT
. CTS de l'arduino (le fil jaune ici) sur la borne suivante de la WT
. 5V de l'arduino sur le 5 V WT
. RX arduino sur RX de la WT
. TX arduino sur TX de la WT
. Et enfin le DTR de l'arduino (fil violet) sur la dernière broche

3. Puis on fait le pont 5 V sur la Wav trigger pour signifier qu'on va l'alimenter par l'arduino et on bascule le commutateur qui est à côté du connecteur d'alimentation, de la position Run à la position Load


 

4. Dernière chose : On empêche l'Atmega de la carte arduino de démarrer en mettant sa broche Reset à la masse (reset permanent).

5. Il ne reste  plus qu'à :
- Raccorder l'USB
- Lancer l'outil de mise à jour précédemment téléchargé.
- Sélectionner le fichier hexa du nouveau firmware et cliquer Program quand la touche passe en vert.

On peut alors utiliser le programme de test des cartes SD :
- Rebasculer le commutateur de la carte Wav trigger en position RUN.
- Débrancher puis rebrancher l'USB de manière à provoquer un cycle power off/on qui va redémarrer le processeur de la Wav trigger.
- Lancer l'IDE arduino puis son terminal série en spécifiant une vitesse de 57600 bauds.

On a le choix entre 4 commandes mono-caractère que l'on peut envoyer par le terminal :
- La lettre i (I) affiche les informations concernant la carte.
- La lettre t (T) lance le test.
- La lettre s (S) stoppe le test.
- La lettre r (R) donne les résultats du test en cours à tout moment pendant son déroulement.

Le programme de test écrit des fichiers de données sur la carte et les relit ensuite de manière aléatoire en chronométrant les temps d'accès. Le test complet porte sur 1 million de lectures et dure environ une vingtaine de minutes.
- Une carte peut être considérée comme "jouable" si on ne comptabilise aucune opération qui dure plus de 20 ms. Mais il ne faudra pas compter sur des enchainement rapides de fichiers. Donc pas bon pour nous.
- Il en faut le moins possible entre 2 ms et 20 ms.
- Une carte sera considérée excellente, en particulier pour le contrôle en midi si aucun cycle ne dépasse 2 ms.


  

Séquence d'initialisation et résultats de tests sur une carte médiocre (2716 lectures entre 2 et 5 ms)


Pour terminer, on revient au firmware initial de la carte par la même procédure : Commutateur sur Load, sélection du fichier hexa etc...
Et puis ça peut être l'occasion de passer à la dernière version en sachant que toutes les versions sont ici.
 

horizontal rule