Dualshock 4 comme générateur d’accords MIDI

Quand on a pas de thunes, on a des idées. Donc plutôt que de claquer encore plusieurs centaines d’euros dans des contrôleurs bas de gamme, j’ai décidé de trouver de nouveaux usages à cette super manette Dualshock 4, qui est en soit un excellent contrôleur.

L’idée : pouvoir à minima lancer des enregistrements dans Ardour et jouer des synthés virtuels polyphoniques quand je suis sur mes synthés hardware.

Tout un projet !

Sortons donc notre compagnon de galère habituel, Pure Data, et son module hid.

Out of the box, on a bien accès à tous les paramètres dont on aurait envie. Mais il nous manque le contrôle sur un aspect essentiel de ce genre de machin : le feedback visuel. Je voulais utiliser la LED disponible sur le haut de la manette, mais le temps de recherche et développement me semblait bien trop important pour un projet de ce type. Mais le monde de l’open source est plein de surprise. Sur Github est disponible un driver pour la manette, ds4drv, depuis le user-space, qui rajoute plein de fonctionnalités qui tombent à pic pour le projet : changement de profil à la volée ( et donc de couleur de la LED ), custom bindings, séparation de la manette et de la surface tactile.

Je vous propose de récupérer plutôt mon fork, qui ne rajoute qu’une ligne de code qui repose sur oscsend : un feedback vers le port 8000 du nom du profil sélectionné lors du changement. Je vous propose un patch si vous préférez vous baser sur les sources officielles – indispensable pour la suite !

Il nous faut également une configuration custom, que je vous propose ici. A placer dans votre répertoire de configuration.

Trois profils avec souris séparées. A ce propos, je trouve inutile d’avoir la souris qui se ballade quand on utilise le tactile de la manette. Je vous donne donc mon fichier de conf Xorg, qui permets de désactiver la prise en compte de la souris :

Section "InputClass"
Identifier "ds4 mouse"
MatchIsPointer "on"
MatchDevicePath "/dev/input/event*"
MatchProduct "DualShock4 Mouse Emulation"
Option "Ignore" "on"
EndSection

C’est selon les gouts.

Maintenant, Pure Data. Vous trouverez ici le patch complet. Pour le moment, Pure Data ne communique pas avec la manette : bien que vous puissiez modifier des paramètres depuis le patch, c’est la manette qui choisit le profil en appuyant sur la touche Home.

Pour les contrôles d’Ardour, il suffit depuis le DAW d’activer le contrôle OSC, et certains messages de feedback.

Donc pour utiliser tout ça :

  • Lancer ds4drv

ds4drv_terminal

  • Lancer Ardour
  • Finalement, lancer Pure Data et le patch.

ds4_patch_puredata

Vous pouvez ensuite appuyer sur Home pour passer au profil de base, puis Share pour passer d’un profil à un autre. Home fait toujours revenir au profil par défaut, foo.

Le mapping est assez simple. Pour le contrôle d’Ardour :

  • Start : Play / Stop
  • R1/L1 : avance ou recul d’une mesure, double clic pour fin ou début
  • R2/L2 : avance ou retour rapide
  • Pad Haut et Bas : piste précédente ou suivante
  • Rond : Arme l’enregistrement de la piste

L’armement global de l’enregistrement se fait en passant sur le profil ardour_rec, en appuyant sur Share depuis n’importe quel profil. L’enregistrement se désactive quand vous repassez sur le profil par défaut, mais pas quand vous passez sur le mode chordz.

En mode chordz, les accords de la gamme choisie sont envoyés en MIDI. La manette présentant 8 boutons principaux, vous n’avez donc accès qu’aux degrés du mode. Restrictif, oui, mais on ne peut pas tout avoir. Le mapping :

  • L1 : Inversion, double clic pour 0
  • R1 : Nombre de note de l’accord, double clic pour 1
  • L2 : Note On / Off + Aftertouch
  • R2 : Modwheel
  • Du Dpad à la touche Rond : Du degre 0 au degre maximum, dans le sens inverse des aiguilles d’une montre. Dans le cas d’une gamme avec moins de 8 degres, le degre final est répété.
  • L3 / R3 : Octave Moins ou Plus. Les deux en même temps remet l’octave à 0
  • Joysticks : CC 36 et 35 sur les deux axes
  • Axe longitudinal : CC 37, centré sur 64 avec manette à plat

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *