Note de ce sujet :
  • Moyenne : 5 (2 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
DirettaRendererUPnP
Je voudrais partager avec vous l'histoire et l'évolution du projet DirettaRendererUPnP, un logiciel de restitution musicale qui utilise le protocole UPnP et le protocole Diretta.

Les origines

Le projet est né du travail de Dominique, qui a publié une première version début décembre. Cette version s'appuyait sur le SDK fourni par Diretta, en utilisant des classes de haut niveau appelées SyncBuffer. Ces classes ont l'avantage d'être simples à utiliser, mais elles ne permettent pas de gérer soi-même les buffers audio.

De mon côté, je travaillais en parallèle sur une approche différente, en utilisant des classes de plus bas niveau du même SDK. Mon projet initial n'a pas abouti pour des raisons de licence, mais j'ai fini par intégrer mon architecture sous le moteur UPnP proposé par Dominique. L'idée était de conserver la partie haute (la gestion des connexions réseau) tout en reprenant la main sur la gestion des buffers.

L'arrivée de leeeanh

Un professeur de l'Université de Tokyo, connu sous le pseudo leeeanh sur GitHub, s'est intéressé au projet précisément parce qu'il utilisait ces classes de bas niveau. Sa double compétence en electrical engineering et en software engineering a été déterminante, et ces deux disciplines ont contribué de façon complémentaire et équitable aux optimisations que nous avons réalisées.

Il a apporté des contributions très significatives avec une méthode rigoureuse : analyse théorique d'abord, puis implémentation.

Le travail d'optimisation

Notre objectif commun était de réduire le bruit électrique généré par le logiciel lui-même. Pour y parvenir, nous avons travaillé sur deux axes complémentaires :

Du côté software engineering, nous avons réduit drastiquement le nombre de cycles CPU et éliminé presque toutes les allocations mémoire dynamiques. Après le départ de leeeanh du projet, j'ai poursuivi ce travail en utilisant Claude Code pour faire une revue systématique du code sous l'angle de l'efficacité informatique. Cette approche a produit des améliorations remarquables.

Du côté electrical engineering, moins de cycles CPU signifie moins de transitions électriques, donc moins de bruit injecté dans l'alimentation et les circuits environnants. C'est cette compréhension fine des phénomènes électriques qui a guidé nos choix d'optimisation logicielle.

Le résultat : la version 2.0

La différence à l'écoute est frappante. C'est comme si un voile s'était levé sur la musique. On gagne en dynamique, les hautes fréquences et les basses fréquences sont restituées avec plus de précision, et l'ensemble possède une transparence qu'on n'avait pas avec la première version.

Cette version 2.0 est le fruit d'un travail collaboratif entre Dominique pour la base initiale et l'intégration du SDK148, leeeanh pour l'approche scientifique de l'optimisation, et moi-même pour l'architecture bas niveau et la poursuite du travail d'optimisation, sans oublier Pierre-Marin que je salue pour sa capacité à créer des ponts entre les sensibilités.

État actuel du projet

La situation est stable à ce stade. Je constate que Dominique est prudent sur la diffusion du logiciel, notamment parce qu'il se sent sollicité par de nombreuses demandes d'adaptation à des environnements divers. Cependant, le produit fonctionne parfaitement avec ses fonctionnalités de base sur des environnements linux. J'ai moi-même installé Debian hier soir sur deux serveurs sans aucune difficulté, et ça marche très bien.

Un conseil pour les débutants

Si vous n'êtes pas familier avec Linux et que vous souhaitez installer DirettaRendererUPnP, je vous suggère de demander de l'aide à une IA (Claude, ChatGPT ou autre) avec un prompt de ce type :

Code :
Je suis débutant en informatique. J'ai besoin d'être guidé étape par étape dans l'installation d'une distribution Linux en vue d'installer un logiciel audio appelé DirettaRendererUPnP. Peux-tu me guider de façon progressive, sans passer à l'étape suivante avant d'avoir recueilli ma confirmation que l'étape en cours est terminée et validée ?

Cette approche vous permettra d'avancer à votre rythme et de comprendre ce que vous faites.

Ressource technique : méthodologie d'optimisation

Pour ceux qui souhaitent comprendre comment l'IA peut contribuer à l'optimisation de code audio, je mets à disposition publique le prompt que j'ai conçu en m'appuyant sur les contributions de leeeanh. Ce document décrit une méthodologie d'analyse du code selon deux perspectives complémentaires — electrical engineering et software engineering — et les dix patterns d'optimisation que nous avons identifiés. Voir ici : https://github.com/SwissMontainsBear/Dir...odology.md

Ce prompt est partagé dans l'esprit du logiciel libre, pour permettre à chacun de mieux comprendre le fonctionnement et la puissance de l'IA appliquée à l'optimisation de code.
Merci Bear pour ce beau résumé qui rend plus claire ce protocole et le reste.

Question aux Roonistes
Aviez vous encore des crash au changement d’échantillonnage avec Roon, ou plus jamais?
Playlist, album, local et streaming.
Moi sur Audirvāna j’ai le souci pour le 24/48, obligé de redémarrer Direttarenderer dans GP.
Les crashs font vraiment mal aux oreilles….
Bonjour,

@Davide,

Aucun problème avec roon chez moi.
Qobuz sublime -> wifi -> Mercusys wifi7 mesh tri-bande -> ifi LAN iPurifier -> rj45 Yauhody CAT8 -> mini PC AMD Ryzen7 7730U + SSD 4To/boitier inateck - Roon + HQPembedded (PCM>>DSD256)/Gentooplayer -> rj45 Bivani CAT8.1 -> DST-00/Diretta -> USB Pangea premier XL (5V/alim reddo) -> Teac UD-701N / BNC ultraflex 7 -> Horloge MillionV2/alim LeafAudio -> XLR Grimm SQM -> Benchmark AHB2 -> câbles HP Wireworld Eclipse 7 -> Mulidine Cadence (tout est branché sur conditionneur secteur Niagara 1200)
Un petit exercice didactique de résumé et de présentation que j'espère clair.

https://github.com/herisson-88/diretta-d.../README.md
Qobuz HD MConnect -> NUC Fanless alim Ifi Power Elite sous Audiolinux DirettaRendererUPnP -Diretta--> Holo Red Diretta Target sur Audiolinux -> Holo Spring 2 KTE -> BC 162 D -> Quellis 1 Optima
Bravo à tous pour ce fantastique travail!

Pensée spéciale pour Dominique, mon défricheur préféré  Idea
Serveur Streamer CARUSO en 2 châssis (réalisation perso) 
Target Rosanna By FLR, SFP AfterDark & Muon Pro
DAC RUGGERO (Lampizator Big 7 II modifs perso & constructeur) 
Ampli DORIAN 300B PSE  en 2 châssis (réalisation perso)
Enceintes à pavillon STRAD Alma (modifs perso) 
Câbles & barrette AC Tim Signature, USB Entreq Triton , Franc Audio,  6 groundbox Entreq 
HNE MagicNet D1 S, Filtre RJ45, RJ45 Entreq Konstantin Revelation 
LPSU PARTOUT (perso), meuble sur mesure, ligne électrique dédiée.
Idem Svp…
Merci beaucoup à tous pour ce travail et cette expertise….
set-up v2. :[Image: PLAN-RSX-3.jpg]
@Janacek:
Audirvana est à part et n'est pas et ne sera pas compatible avec DirettaRendererUPnP si les choses en restent là.
Il y a eu à un moment donné, en avril 2024 au moment du salon de Munich, une rencontre entre Yu et des membres de la team Audirvana et donc une lueur d'espoir d'une collaboration entre eux mais elle semble avoir été abandonné en cours de route.

@Mellowman:

Merci François.  Shy

@KIKIWILLYBEE:

Merci Willy, également.
DirettaRendererUPnP
Soutenez ce projet
Si vous trouvez ce moteur de rendu utile, vous pouvez soutenir le développement :
Buy Me a Coffee at ko-fi.com
Votre soutien m’aidera à continuer ce projet, qui représente pour moi un certain coût en temps et en argent. Merci pour votre compréhension.
Hello Dominique
Oui je sais bien.
Mais Roon non plus est compatible avec Diretta SDK et donc DirettaRenderUPnp, mais il n’y a plus de crash, après ma question plus haut.

Ps Audirvāna pour la compatibilité avec Diretta, m’a répondu avec toujours le même refrain, « Pour le moment ce n'est pas prévu, car nous avons d'autres projets en tête.« ….bref…


Atteindre :


Utilisateur(s) parcourant ce sujet : 5 visiteur(s)