News - Logiciels Libres

Linux, DJing, Streaming Twitch, essayons d'installer tout ça !

| | Logiciels Libres | 4 Commentaires | 3090
Linux, DJing, Streaming Twitch, essayons d'installer tout ça !
Bonjour à tous,

Dans le CKOIKIDI numéro 61 (Mon émission en direct sur Youtube, tous les premiers mercredis du mois à 20h), on a tenté de répondre à la question ensemble :

Peut-on Mixer sous Linux, et diffuser sur Twitch comme je le fais sous Windows 10 ?



Quand j'ai eu mon premier contrôleur (Hercules Universal DJ) j'ai fais des petits mix pour le fun sous Linux avec Mixxx, mais c'était pas fameux.

Depuis, je mix 3 jours par semaine sur Twitch.
Ma configuration est portative pour les raisons suivantes :
- Facile à déplacer dans la maison pour faire de la place quand je reçois des invités (je mix dans le salon avec un fond vert principalement)
- Facile à déplacer à l'extérieur quand j'ai besoin de mon matériel pour une prestation externe.

Voici ma configuration actuelle de production :
- Reconditionnement de mon ancien Asus N76VZ : Windows 10 - Intel Core i7-3610QM - 8Go RAM - NVidia GT 650M
- Un écran externe connecté en HDMI
- Contrôleur Pioneer DDJ-400 https://www.pioneerdj.com/fr-fr/product/controller/ddj-400/black/overview
- Logiciel Rekordbox pour le piloter https://rekordbox.com/fr/
- Un casque Jack 3.5 <-> 6.35
- Micro Bird UM1 en USB
- Camera USB 1080p dont je ne sais plus le modèle
- Navigateur Vivaldi
- OBS Studio
- Streamdeck MK.2 https://www.elgato.com/en/stream-deck-mk2


Pour diffuser, c'est paramétré très simplement (config dans ce cas de figure uniquement) .
Le fonctionnement global c'est :
- Sur le PC portable est connecté le DDJ-400 en USB
- Le PC exécute l'application RekordBox, piloté par le DDJ-400
- Le logiciel RekordBox est en plein écran sur le PC Portable
- Le son mixé est paramétré pour sortir sur le son du PC
- Le Micro Bird UM1 est connecté sur le PC en USB
- La caméra USB est connectée sur le PC
- OBS et Vivaldi sont lancés en mosaïque sur le deuxième écran.
- OBS capture l'audio PC (le Mix) et le micro Bird UM1 (quand je parle).
- OBS possède de multitude de sources : Caméra avec Chromakey pour le fond vert, Source Web pour l'overlay Twitch, les emotes animés, les gadgets (images et sons) activables via les points de chaine.
- Vivaldi affiche le tableau de bord Twitch (Chat, Modération, événements, ...)
- Streamdeck est connecté en USB sur le PC et pilote OBS Studio (Affichage/masquage de scènes, de sources) ou interagit avec le chat (Envoie des messages préenregistrés)
- L'encodage de la vidéo pour diffusion sur Twitch se fait grâce à OBS via NVenc pour soulager le CPU ancien, le GPU n'étant pas sollicité pour autre chose, ça fait très bien le taf.

Voilà comment ça fonctionne sous Windows.

Nous avons donc essayé de faire fonctionner tout cela sous Linux. Et surtout, essayer de répondre à la question initiale.

Pour cela, j'ai pu emprunter un PC Portable de modèle Dell Latitude pour effectuer mes tests. Je n'avais pas envie de mettre "juste" un autre disque sur le PC de base, histoire de l'avoir à côté et de comparer ou copier coller des paramétrages.

Sur le PC de test, j'y ai installé Ubuntu 22.04 LTS.
Bien que je n'utilise pas Ubuntu, tant sur fixe, ou portable ou encore serveur, je considère ce système comme stable et suffisamment multiusages pour le besoin. L'idée n'était pas de passer 2h sur le choix d'une distribution. Avec Ubuntu, on a un socle de logiciels et d'évolutions figées (tant qu'on reste sur la 22.04LTS). On n'est pas embêté non plus avec du matériel non libre ou autres codecs posant parfois les querelles à cause des licences.

Etape 1 : Reconnaissance du matos.

Je branche le contrôleur Pioneer DDJ-400 et le Streamdeck.
J'exécute la commande suivante pour vérifier la reconnaissance :

Code BASH :
lsusb


La réponse est indiquée comme suit :

Code TEXT :
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 1bcf:2b98 Sunplus Innovation Technology Inc. Integrated_Webcam_HD
Bus 001 Device 005: ID 0fd9:006d Elgato Systems GmbH Stream Deck original V2
Bus 001 Device 004: ID 2b73:0026 Pioneer DJ Corporation DDJ-400
Bus 001 Device 003: ID 8087:0026 Intel Corp. AX201 Bluetooth
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub


On constatera que les 2 matériels sont parfaitement reconnus par le système.
C'est donc un 5/5 pour Linux. Et là on peut bien parler de Linux car c'est le noyau qui a reconnu notre matériel via les modules.

A noter que le contrôleur DDJ-400 incorpore une carte son.
En effet, il est capable de sortir le mix sur la sortie Master (Rouge/Blanc) et il possède une entrée Jack 6.35 Micro que je n'utilise pas dans mon cas.
Par conséquent, il est bien reconnu comme sortie son, et si le système bascule sur la carte DDJ-400, il faut bien penser à remettre la sortie principale sur les haut parleurs du PC :

linux-dj-sonsysteme




Etape 2 : Logiciel pour le mix contrôlé par le contrôleur DDJ-400

Sous Windows, je l'ai dit, j'utilise RekordBox : Le logiciel est développé uniquement pour Windows et MAC. Il n'existe pas pour Linux quelque soit la distribution.
J'ai quand même essayé de l'installer via :
- Wine : C'est un échec. L'installation se déroule avec succès, le lancement est un échec.
- Bottles (Bouteilles) : Même constat que Wine, mais c'est pas étonnant.

Voici le message d'erreur lors du lancement. Obligé de killer le logiciel.

linux-dj-rekordbox



Il n'existe qu'une seule alternative disponible sous Linux, et c'est Mixxx.

Il est disponible en Flatpak, ou nativement dans les dépôts d'Ubuntu, et probablement sous forme de SNAP.
Je choisis de l'installer en provenance des dépôts officiels. Ainsi, je m'assure que la version restera stable et n'évoluera pas grandement à travers les mises à jour :

Code BASH :
apt install mixxx


La version installée est : mixxx-2.3.2

Au lancement de Mixxx, je règle les options d'affichage pour avoir comme sous Rekordbox :
- Un thème sombre
- Les mêmes couleurs RGB des ondes

Je constate que dans les options, le contrôleur est détecté et remonte dans le logiciel.
Je prends soin de sélectionner un mappage qui, ouf, existe pour le DDJ-400 :
linux-dj-mixxx-options-ddj

Pour que le son soit remonté dans le casque, je configure comme ceci les cartes son (et j'ai descendu l'échantillonnage sinon, Mixxx indique des messages d'erreur). Je vérifie de bien utiliser pulse pour le Principal, sinon, Mixxx verrouille la carte son et il ne sera pas possible de capturer le son avec OBS plus tard :
linux-dj-mixxx-options-son

Globalement, j'ai testé de mixer (en live sur Youtube donc avec de la musique libre...) et ce que j'ai pu constater c'est que :
- Les boutons de volumes sont OK
- Les potentiomètres pour les BASS-MID-HIGH TRIM FILTER sont OK
- Le sélecteur pour le pitch OK
- Les CUE OK
- Le volume du casque OK
- Le potentiomètre Cue-Master OK
- Le sélecteur de chansons dans la bibliothèque + le chargement de la track : OK
- Les pads sont fonctionnels pour les boucles, les samplers
- Les pads ne fonctionnent pas pour les effets, le verrouillage de la key
- Le "Sync" fonctionne mais une fois (pas en permanent sur la track, ni en tempo sync)
- La sortie de boucle fonctionne mais les boutons de boucles ne sont pas bien reconnus
- Les effets FX ne sont pas fonctionnels
linux-dj-mixxx-interface

Au niveau du calage avec les jogs, le logiciel continue à ralentir ou accélérer le morceau concerné quelques millisecondes après l'arrêt de la manipulation de celui-ci. C'est assez problématique car le logiciel ne réagit pas comme on manipule le matériel.

J'ai donc tenté d'installer le Kernel RT (Real Time) qui semble être connu sous le nom de "Low Latency" sur Ubuntu :

Code BASH :
apt install linux-image-lowlatency


Après reboot, un petit uname -a renvoie :
Code TEXT :
5.15.0-52-lowlatency


Je ne sais pas trop quel effet cela a fait, j'ai l'impression que c'est un petit peu mieux (pas sûr) mais pas parfait comme sous Windows où le logiciel Rekordbox répond au toucher exact sur le contrôleur DDJ-400.

On peut donc conclure, sur la partie "Logiciel de mixage" que Mixxx est globalement fonctionnel, je dirais 3/5, mais il reste beaucoup d'efforts sur ce point.


Etape 3 : Diffusion avec OBS

Là on a de la chance, OBS est disponible sous Linux.

Cependant, si on prend la version dans les dépôts d'Ubuntu directement (via le paquet obs-studio), on a un petit manque.
On a la version 27 (ça c'est pas grave, même si la version 28 est sortie), mais surtout, nous n'avons pas la possibilité d'ajouter des source "Web". C'est grâce à ces sources Web qu'on va mettre sur l'écran les différents overlays que j'utilise pour garnir la vidéo de gadgets et rendre la diffusion plus sympathique :

linux-dj-obs-web

Ces sources Web sont disponibles directement dans le package OBS Studio de Windows (J'utilise aussi la version 27 sous Windows).
Je dois donc passer par la version Flatpak qui inclus cette source Web (et qui me propose au passage la version 28 d'OBS Studio).
Cependant, comparé à Windows, nous ne pouvons pas dans les options, utiliser l'accélération matérielle pour les sources Web (et donc soulager le CPU pour afficher les animations).

Malgré ce petit détail de "performance" tout est fonctionnel sous OBS (version Flatpak) à savoir :
- Enregistrement en local
- Diffusion sur Twitch
- Capture du son du bureau (qui est joué par mixxx)
- Capture du micro USB
- Capture de la caméra avec Chromakey (pour le fond vert)
- Sources Web diverses

linux-dj-obs

On peut donc constater qu'avec OBS Studio, malgré un petit peu de "bidouillage" pour utiliser la version flatpak, on est globalement fonctionnel.


Etape 4 : Le Streamdeck

Là malheureusement, le constructeur Elgato n'a développé le logiciel que pour Windows et MAC. Il n'existe pas pour Linux quelque soit la distribution.
J'ai quand même essayé de l'installer via :
- Wine : C'est un échec. L'installation s'interrompt directement
- Bottles (Bouteilles) : Même constat que Wine, mais c'est pas étonnant.

Il existe cependant 2 outils, mais d'abord, on a besoin de faire une petite manip dans les règles udev :

On créé un fichier de règles spécifique au streamdeck pour qu'il soit reconnu par les logiciels ensuite :
Code BASH :
vi /etc/udev/rules.d/70-streamdeck.rules


On y ajoute ceci :

Code TEXT :
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0060", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0063", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006c", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006d", TAG+="uaccess"


Et on recharge les règles udev :

Code TEXT :
udevadm control --reload-rules


J'ai dans un premier temps testé le logiciel StreamdeckUI.

J'installe les dépendances nécessaires
Code BASH :
apt install python3-pip libhidapi-libusb0 libxcb-xinerama0


Puis installé via pip3 StreamDeckUI :

Code BASH :
pip3 install --user streamdeck_ui
PATH=$PATH:$HOME/.local/bin
streamdeck


Le logiciel est très simple et ne permet QUE de lancer des commandes sur le système.
Alors c'est éventuellement bien pour un usage bureautique, mais impossible de contrôler OBS Studio (scènes, sources, ...) ni d'interagir avec Twitch (Envoi de messages sur le chat)


Il existe un deuxième logiciel que j'ai voulu tester Boatswain disponible en flatpak :

Code BASH :
flatpak install com.feaneron.Boatswain


Le logiciel est simple dans son interface, permet d'exécuter des commandes système et d'interagir avec OBS (via le serveur Web Socket). Pas d'interraction avec Twitch pour l'envoi de messages dans le chat.

linux-dj-streamdeck-boatswain

Avec mes essais, la connexion Boatswain<->OBS n'a jamais fonctionné, bien que j'ai activé toutes les permissions des 2 flatpaks que sont OBS et Boatswain.

Pour le Streamdeck, il n'est pas fonctionnel pour contrôler OBS, ni pour interagir sur Twitch. C'est donc un 1/5, il y a au moins un point car on a des logiciels qui permettent de l'utiliser mais de manière ultra limitée.


Quelle conclusion de tout ça ?

J'ai trouvé cette thématique de CKOIKIDI intéressante car il y a eu de nombreux échanges, et j'ai pu avoir des propositions de logiciels pour le streamdeck notamment.

On peut affirmer que :
- Linux est au point sur la reconnaissance du matériel. En effet, je n'ai installé aucun pilote, tout a été détecté et reconnu du premier coup.
- Le Streaming est possible avec OBS qui est un logiciel de qualité tant sous Windows que sous Linux. Je ne regrette que le fait la gestion des sources web ne fasse pas partie intégrante du produit. Par conséquent, on n'a pas la possibilité de paramétrer sous Linux aussi finement que sous Windows cette fonctionnalité pour profiter de l'accélération matérielle.
- Le mixage n'est pas possible dans de bonnes conditions, à cause de l'éditeur du logiciel RekordBox qui ne propose pas de version sous Linux (Il en est de même avec le logiciel Serato utilisable par certains contrôleurs de Pioneer, ou DJUCED de chez Hercules).
- L'utilisation du Streamdeck n'est pas possible pour piloter OBS, et interagir rapidement avec le chat Twitch pour donner de l'ambiance lors de la diffusion.

Le gros problème au final, n'est donc pas le système "Linux" à proprement parler, puisqu'il reconnait le matériel. C'est surtout l'offre logiciel qui n'est pas au rendez-vous.
Pour le mixage, nous n'avons qu'un seul logiciel libre. Cela est un bon point car cela permet aux développeurs intéressés de contribuer à un seul outil et de ne pas éparpiller les ressources entre plusieurs produits.
Nous sommes face à un usage très particulier et spécifique, qui fait que les ressources humaines, et peut être financières sont rares dans l'open source.

Donc, si je souhaite continuer mon activité de DJ (pour le plaisir sur Twitch) et en prestation, je sais que je dois continuer à utiliser Windows (ou me tourner du côté de Mac OS).

Evidemment, on pourrait streamer sur Twitch sous Linux en :
- Se passant d'un streamdeck
- En utilisant un système DJ tout en un comme ceux ci ( https://www.pioneerdj.com/fr-fr/product/all-in-one-system/ )
- En utilisant un combo Table de mixage + Lecteur DJ en séparé

En effet, dans les deux derniers cas, le "logiciel" est intégré dans le système matériel DJ et seule une carte son avec entrées XLR et sortie USB suffirait. Et les cartes son USB sont parfaitement reconnues sous Linux !

En espérant que ce long billet comme j'en fais peu souvent vous aura plu !