Un « pilote » pour un caisson de basse sous macOS

En triant chez moi, j’ai « retrouvé » deux produits, l’iSub et le BassJump. Et je me suis souvenu qu’il y a longtemps, j’avais vu un exemple de code Apple qui perlettait de gérer un caisson de basse sous Mac OS X. L’occasion de jouer un peu.

Au départ, je voualis juste voir s’il était possible de faire fonctionner un iSub avec un macOS récent, vu qu’Apple a supprimé les pilotes il y a longtemps. Mais ce n’est pas possible : l’iSub n’est pas reconnu par défaut comme une interface audio en USB, et les pilotes Apple devaient sûrement l’activer manuellement, comme pour les enceintes du Power Mac G4 Cube. Du coup, j’ai tenté avec le BassJump.

L’iSub


Le BassJump

Le BassJump, c’est un caisson de basse USB qui fonctionne comme une interface audio basique. Sans pilotes, on peut rediriger le son vers lui, mais le résultat est évidemment assez mauvais : il est prévu pour reproduire les basses et lui envoyer de l’audio « complet » donne un résultat affreux. C’est là qu’intervient le vieux code d’Apple.

C’est un pilote qui propose un filtrage passe-bas sur un périphérique audio. C’est assez basique, c’est vraiment un exemple de ce qu’il est possible de faire avec Core Audio, mais c’est assez efficace. Une fois le programme téléchargé, il faut modifier le projet pour le compiler en 64 bits uniquement sous macOS Catalina (ça marche aussi avec d’anciens OS en 32 bits, d’ailleurs).

Dans le code, il faut modifier deux choses. Dans Info.plist, il faut indiquer le vendor ID et le product ID de l’appareil, en codage décimal. Ce sont les identifiants USB de l’appareil, qu’on peut récupérer dans les Informations Système. Pour le BassJump, c’est 0x08DC pour le vendor ID, 0x013a pour le product. Avec la calculatrice de macOS, on peut convertir en décimal rapidement : on se met en présentation programmeur, on choisit la base (16), on tape la valeur, on choisit la base 10. Pour le BassJump, ça donne 3468 et 314.


Dans SampleUSBAudioPlugin.cpp, il faut mettre les valeurs en hexadécimales.

Une fois le pilote compilé, je l’ai installé sur mon vieux MacBook Air, avec le BassJump connecté… sans résultats (un coup de KextUtility ou équivalent peut aider pour charger le pilote). Après avoir cherché un peu, j’ai trouvé : le code d’Apple ne fonctionne qu’en 44 kHz. C’est flagrant après avoir changé la valeur dans Configuration audio et MIDI : en 48 kHz (par défaut), le son est complet, en 44 kHz, le filtre passe-bas fonctionne.

Il faur forcer le 44 kHz (ou modifier le pilote)

Petite astuce, si vous voulez utiliser le caisson (et son filtre passe-bas) en même temps que les enceintes du Mac (ou d’autres enceintes) : il faut créer un périphérique à sortie multiple dans Configuration audio et MIDI. On peut sélectionner les sorties disponibles, et la lecture sur cette interface audio virtuelle sort sur les deux appareils. Cette solution a le défaut d’empêcher le réglage du volume dans les options de macOS, mais ça fonctionne.


Tout ça pour dire qu’en moins d’une heure, j’ai fait un truc basique mais fonctionnel pour profiter du BassJump… alors que la société nous a baladé avec des pilotes moisis pendant des années. Ca nécessite évidemment quelques ajustement pour la fréquence d’échantillonage et je suppose qu’il y a des modifications pour permettre de contrôler le volume, mais c’est fonctionnel de cette façon, au moins de manière basique.