Comment construire la table de mixage économique de Jenny
MaisonMaison > Nouvelles > Comment construire la table de mixage économique de Jenny

Comment construire la table de mixage économique de Jenny

Oct 29, 2023

Jenny a publié un article sur Ask Hackaday plus tôt ce mois-ci, sur la recherche d'un mélangeur audio bon marché sur ordinateur. La première tentative ne s'est pas très bien déroulée, avec un problème que beaucoup d'entre nous connaissent : les applications Linux n'aiment vraiment pas utiliser plusieurs périphériques audio en même temps. Jenny a rencontré ce problème et n'a pas trouvé de moyen de fusionner les cartes son dans une seule application.

J'ai combattu ce problème pendant un certain temps, probablement 10 ans maintenant. Ma première collision avec cela a été une tentative d'enregistrement d'un piano avec trois micros, en utilisant quelques préamplis USB différents. Et bien sûr, tout comme Jenny, j'ai été rapidement frustré par le problème que mon logiciel d'enregistrement ne voyait qu'une seule interface à la fois. La solution simple est d'acheter une interface avec plus de canaux. Le Tascam US-4x4HR est une excellente interface audio d'entrée/sortie à quatre canaux, et la ligne Behringer U-PHORIA va jusqu'à huit préamplis micro, extensibles à 16 avec un deuxième DAC qui peut envoyer de l'audio via ADAT. Mais ce sont des interfaces semi-professionnelles, avec des étiquettes de prix à assortir.

Mais qu'en est-il de l'idée de Jenny, de bricoler plusieurs interfaces super bon marché ? Eh bien oui, c'est possible aussi. Je vais vous montrer comment, mais d'abord, parlons de la façon dont nous allons contrôler ce monstre de mixage logiciel. Oui, vous pouvez simplement utiliser une souris ou un clavier, mais le défi était de construire une table de mixage, et pour moi, cela signifie des faders physiques et des boutons de sourdine. Maintenant, il existe des solutions pré-construites, le Behringer X-touch étant une solution populaire. Mais encore une fois, nous sommes bien au-dessus du prix fixé par Jenny pour ce problème. Alors, faisons ce que nous faisons de mieux ici à Hackaday, et construisons le nôtre.

Ce dont nous avons besoin, c'est d'un microcontrôleur qui prend en charge le client USB natif, plusieurs broches d'E/S numériques et quelques entrées analogiques. J'ai opté pour l'Arduino MKRZero pour sa petite taille, son prix décent et le fait qu'il est en fait en stock chez Mouser. Les autres éléments dont nous aurons besoin sont des faders et des boutons. J'ai opté pour les faders pleine grandeur de 100 mm et certains boutons à bascule à LED fabriqués par Adafruit. Les accessoires, comme les fils et les résistances, provenaient du bac de pièces local dans le coin.

Ma première pensée a été de concevoir et d'imprimer en 3D le panneau, mais après avoir fait la mise en page sur un morceau de contreplaqué, la taille résultante s'est avérée un peu trop grande pour mon imprimante. Alors on passe au rétro, et on fabrique une table de mixage "grain de bois". Ce serait un excellent projet pour un routeur CNC, mais comme je ne fais pas encore partie de ce club cool particulier, c'était une perceuse, une scie à table et un outil oscillant à la rescousse. Les résultats ne sont pas aussi beaux que je le voulais, mais peut-être aurons-nous un jour un Mark II de ce projet.

Le câblage est relativement simple, avec une résistance de limitation de courant pour protéger les LED à l'intérieur des boutons et une résistance de rappel pour empêcher la broche numérique de flotter lorsque le bouton n'est pas enfoncé. Maintenant, ce pullup n'est peut-être pas nécessaire, car j'ai appris plus tard que l'Arduino avait un pullup intégré sur ses broches numériques. Et à noter également, une résistance de 10 Ω n'est *pas* un bon choix pour un pullup. Comme Al l'a dit avec éloquence, c'est une "résistance de traction vers le haut". 10 kΩ est le meilleur choix.

Et pour terminer la construction, nous aurons besoin d'un croquis à exécuter sur l'Arduino. Heureusement, il existe déjà une excellente bibliothèque pour exactement ce que nous voulons faire : Control Surface. Il y a un tas de façons de configurer cela, mais mon croquis est assez trivial:

Et maintenant, passons à la viande et aux pommes de terre de ce projet. Comment convaincre une application de voir les entrées de plusieurs appareils et de faire un mixage ? Le problème ici est la désynchronisation. Chaque appareil fonctionne sur une source d'horloge différente, et ainsi le flux binaire de chacun peut errer et se désynchroniser. C'est un problème suffisamment sérieux pour que les anciennes solutions sonores n'implémentent pas grand-chose en termes de combinaison de cartes. Il n'y a pas si longtemps, le processus de rééchantillonnage de ces flux audio pour les synchroniser correctement aurait été une procédure très gourmande en CPU. Mais de nos jours, nous avons tous des mastodontes multicœurs, des super-ordinateurs pratiques par rapport à il y a 20 ans.

Ainsi, lorsque Wim Taymans a écrit Pipewire, il a adopté une approche différente. Nous avons suffisamment de cycles à rééchantillonner, donc Pipewire le fera de manière transparente en cas de besoin. Pipewire voit toutes vos interfaces audio en même temps et implémente les API Jack et Pulseaudio. Différentes distributions gèrent cela un peu différemment, mais en général, vous avez besoin des packages Pipewire, ainsi que des packages pipewire-jack et pipewire-pulseaudio pour que cela fonctionne.

Et voici le secret : les outils de routage Jack fonctionnent avec Pipewire. Les trois grandes options sont qjackctl, carla et qpwgraph, mais notez que qpwgraph est en fait natif de Pipewire. Ainsi, même si une application ne peut sélectionner qu'un seul appareil à la fois, si cette application utilise l'API Jack, Pulseaudio ou Pipewire, vous pouvez utiliser l'un de ces programmes de contrôle de routage pour connecter arbitrairement les entrées et les sorties.

Commençons donc par la solution la plus simple : jack_mixer. Lancez l'application, puis à l'aide de vos contrôleurs de routage préférés, prenez la sortie MIDI de notre surface de contrôle Arduino et connectez-la à l'entrée MIDI de jack_mixer. Dans jack_mixer, ajoutez un nouveau canal d'entrée et donnez-lui un nom approprié. Appelons-le "plate-forme de bande", puisque j'ai une platine de bande USB avec laquelle je teste cela. Maintenant, la magie du contrôleur entre en jeu : appuyez sur le bouton "apprendre" pour le contrôle du volume et remuez le premier fader de ce contrôleur. Suivez ensuite avec le bouton de sourdine et enregistrez la nouvelle chaîne. Nous voudrons également ajouter un canal de sortie. N'hésitez pas à assigner l'un de vos faders à celui-ci également.

Et enfin, revenez au programme de routage et connectez la sortie de votre magnétophone à l'entrée jack_mixer et acheminez la sortie de jack_mixer vers vos haut-parleurs. Jouez une cassette et profitez du contrôle total que vous avez sur le volume et la mise en sourdine ! Vous voulez ajouter une vidéo Youtube au mix ? Démarrez la lecture de la vidéo et utilisez simplement le contrôleur de routage pour la déconnecter de vos haut-parleurs et alimentez-la dans un deuxième canal sur jack_mixer. Répétez l'opération avec chacune de ces cinq cartes son bon marché et désagréables. Profit!

Il y a une autre application à mentionner ici. Au lieu d'utiliser jack_mixer, nous pouvons utiliser Ardor pour faire le gros du travail. Pour le configurer de cette façon, il y a deux paramètres principaux d'Ardour, trouvés sous les préférences : sous l'onglet de surveillance, assurez-vous que "la surveillance de l'enregistrement est gérée par" est définie sur Ardour et que l'option "l'entrée automatique fait le talkback" est cochée. Ajoutez ensuite vos pistes, réglez l'entrée de la piste sur le matériel d'entrée approprié et la sortie de la piste sur le bus maître. Assurez-vous que le bus principal est acheminé là où vous le souhaitez, et vous devriez également pouvoir mixer en direct avec Ardour.

Cela vous donne toutes sortes de goodies avec lesquels jouer, sous la forme de plugins. Envie d'un compresseur ou d'un EQ sur une source sonore ? Aucun problème. Vous voulez régler automatiquement une source ? X42 a un plugin qui fait ça. Et bien sûr, Ardour apporte l'enregistrement, la mise en boucle et toutes sortes d'autres options à la fête.

Ardour prend également en charge notre interface de mixage personnalisée. Toujours sous les préférences, recherchez l'onglet Control Surfaces et assurez-vous que General MIDI est coché. Ensuite, mettez-le en surbrillance et cliquez sur le bouton "Afficher les paramètres de protocole". Le MIDI entrant doit être réglé sur notre appareil Arduino. Vous pouvez ensuite utiliser le raccourci Ctrl + Clic central sur les faders de canal et les boutons de sourdine, pour les mettre en mode d'apprentissage. Agitez un contrôle pour l'affecter à cette tâche. Ou bien vous pouvez ajouter un fichier .map au répertoire midi_maps d'Ardour. Le mien ressemble à ça :

Maintenant, avant de devenir trop excité et d'investir beaucoup d'argent et/ou de temps dans une configuration audio Linux, il y a certaines choses que vous devez savoir. Le premier est la latence. Il est vraiment difficile de configurer un système Pipewire pour obtenir une latence très faible, en particulier lorsque vous utilisez du matériel basé sur USB. C'est possible, et des travaux sont en cours sur le sujet. Mais jusqu'à présent, le meilleur que j'ai réussi à faire fonctionner de manière stable est une mesure aller-retour de 22 millisecondes - et cela a pris beaucoup de manipulations avec les fichiers de configuration de Pipewire pour éviter l'audio brouillé. C'est à peu près utilisable pour l'autosurveillance et la musique live, et pour jouer tout ce qui est préenregistré, c'est parfaitement bien.

La deuxième chose à savoir est que c'était génial. C'est un peu inquiétant de savoir à quel point il est amusant de combiner du matériel audio décent avec les incroyables outils gratuits disponibles. Vous souhaitez régler automatiquement votre voix pour votre prochaine réunion Zoom ? Facile. Construire un petit clavier MIDI dans votre bureau ? Juste un microcontrôleur et quelques soudures. Le ciel est la limite. Et l'avenir est radieux aussi. Des outils comme Pipewire et Ardor sont en cours de développement très actif, et les correctifs du noyau en temps réel sont sur le point de franchir la ligne d'arrivée. Devenez fou, créez des trucs sympas, et n'oubliez pas de nous en parler !