• [^] # Re: Même projet

    Posté par . En réponse au message Faisabilité d'un système de diffusion audio multizones et multisources. Évalué à 1. Dernière modification le 27 juillet 2012 à 12:26.

    Salut,

    C'est en effet deux projets pas très éloignés :)

    Tu parles de sources numériques et analogiques, et justement en discutant avec un revendeur spécialiste de la Hi-Fi, il m'a proposé de partir sur une source numérique pour la pièce principale avec un DAC et du bon matériel de diffusion, et des sorties analogiques pour le reste des zones qui seront bien moins armées.
    Mais il faut avant que je test la faisabilité, car ça implique du matériel hétérogène qui peut impacter une de mes contraintes qui est la synchronisation des différentes zones (autant mettre la barre haute dès le début :). Si ce n'est pas le cas, il faudra faire un choix entre la synchro et la qualité. Je m'interroge d’ailleurs sur la latence engendrée par des éléments sans fils.

    Du coté software, nous avons des différences au niveau des sources, et ça entraine une différence d'approche dans la gestion du son. Comme toi je compte mettre différent type de sources :
    - Un MPD, pour la radio et une bibliothèque locale. D'ailleurs tu m'apprends qu'il peut gérer plusieurs output, ça sera un gros avantage.
    - Un client Spotify grâce à leur libsoptify.
    - Un serveur airplay pour les iBidules.
    - Un serveur Bluetooth pour les autres
    - Etc

    Mais avec autant de sources différentes je pense qu'il sera plus facile et plus maintenable d'unifier le routage du son dans une couche qui sera entre les logiciels de lecture et la carte son.

    Voici donc un premier retour de mes tests, cela te donnera peut être des idées :)

    Pour le moment je suis partit sur Jack, qui justement est spécialisé dans la connexion entre input et output de flux audio, et qui pour un début fait vraiment bien son travail. Après avoir fouiller les docs et les howto voici le principe:

    • J'ai choisis d'unifier les output des applis en utilisant le module snd_aloop d'alsa. Celui ci permet de créer des cartes son virtuelles, avec chacune 8 sorties. Ce module redirige simplement son input dans un output associé.

    • Dans asound.conf il faut créer pour chaque logiciel un PCM qui lui sera destiné et qui sera lié à une entrée de la carte virtuelle.

    • Chaque logiciel est donc configuré avec comme output le PCM qui lui est attribué. A partir de ce moment la, on a donc un moyen de lancer tout les logiciel pour lire de l'audio et de le sortir en utilisant uniquement alsa. On a un style d'output unifié :) Bien sur pour le moment les flux sont joués dans le vide.

    • Et la intervient Jack, qui va nous permettre de router à la volée les PCM virtuels vers les bonnes sorties de la carte son. Il permet de router le son d'un point A à un point B, et ceci dans n'importe quel sens et dans n'importe qu'elle combinaison, en faisant le mixing au passage si besoin. Pour que jack reconnaisse les canaux de la carte virtuelle il faut utiliser les outils alsa_input et alsa_output. L'interface qjackctl permet d'avoir une bonne vision du résultat de la chose.

    • Une fois que jack a en entrée les flux sortant des applis, il suffit de les mapper vers les bonnes sorties de la carte son, qu'il reconnait directement dans mon cas. Pour le moment je le fait manuellement, mais il il y à plusieur moyen de le piloter logiciellement :)

    Voici mon premier POC et ça me donne pour le moment satisfaction.

    Je suis ouvert à toutes idées, et niveau matos je n'ai pas encore bien regardé :-\