<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
    <title>K0d – Terminal Numérique</title>
    <link>http://blog.kodcast.com</link>
    <description>Développements open-source, mixs audio, streams et contenus techniques</description>
    <language>fr</language>
    <lastBuildDate>Sat, 05 Sep 2026 09:56:56 +0000</lastBuildDate>
    <atom:link href="http://blog.kodcast.com/rss.php" rel="self" type="application/rss+xml" />
    <generator>K0d RSS Generator</generator>
    <image>
        <url>http://blog.kodcast.com/kod.jpg</url>
        <title>K0d – Terminal Numérique</title>
        <link>http://blog.kodcast.com</link>
    </image>
    
        <item>
        <title>Installer Windows 11 avec un compte local</title>
        <link>http://blog.kodcast.com/index.php#projets</link>
        <guid isPermaLink="true">http://blog.kodcast.com/index.php#projets-938b8ce90b6b872617c7e8a568119b6b</guid>
        <pubDate>Thu, 03 Sep 2026 06:56:15 +0000</pubDate>
                <atom:updated>Thu, 03 Sep 2026 06:56:15 +0000</atom:updated>
                <description><![CDATA[
            <p><strong>Section:</strong> projets</p>
            <p><strong>Date:</strong> 03-09-2026 06:56:15</p>
            <p><strong>Description:</strong> Je n’aime pas Windows, ce n’est pas un scoop. 😏
Mais parfois, la vie nous joue de drôles de tours. Me voici donc à installer Windows 11 sur l’ordinateur fourni par la Région à ma fille, p...</p>
            <hr>
            <p>Je n’aime pas Windows, ce n’est pas un scoop. 😏</p>
<p>Mais parfois, la vie nous joue de drôles de tours. Me voici donc à installer Windows 11 sur l’ordinateur fourni par la Région à ma fille, parce que son école de commerce ne supporte pas autre chose.</p>
<p>La souveraineté numérique attendra… je ne vais pas lui demander de se battre avec ses profs pour ça. 😉</p>
Le problème
<p>Lors de l'installation, Windows 11 demande un <strong>compte Microsoft</strong> et une connexion Internet.</p>
<p>Sauf que sur certains PC, le pilote Wi-Fi n'est pas encore installé :</p>
<p><strong>Pas de pilote Wi-Fi → pas de réseau → pas de compte Microsoft.</strong></p>
<p>Heureusement, il reste une porte de sortie pour créer un <strong>compte local</strong>.</p>
Créer le compte local
<p>À l'écran de connexion ou de sélection du réseau :</p>
<p><strong>1.</strong> Appuyez sur <strong>Maj (Shift) + F10</strong>.</p>
<p>Sur certains ordinateurs portables, il faut utiliser :</p>
<p><strong>Fn + Maj + F10</strong></p>
<p><strong>2.</strong> Une invite de commandes s'ouvre.</p>
<p><strong>3.</strong> Tapez :</p>
<pre><code class="language-text">start ms-cxh:localonly</code></pre>
<p><strong>4.</strong> Validez avec <strong>Entrée</strong>.</p>
<p>Windows affiche alors la fenêtre permettant de créer un <strong>compte local</strong>.</p>
<p>Et voilà. Pas de compte Microsoft obligatoire, pas besoin de connexion Internet. 👍</p>
La petite ironie
<p>Pendant des années, on nous a expliqué que Linux était compliqué parce qu'il fallait utiliser le terminal.</p>
<p>Aujourd'hui, on peut installer Linux sans toucher à une ligne de commande… tandis qu'il faut parfois ouvrir un terminal pour installer Windows 11 avec un compte local. 😂</p>
<p>Comme quoi, les temps changent.</p>        ]]></description>
        <category>projets</category>
    </item>
        <item>
        <title>🎮 Cracker une PS3 : installer HEN et conserver ses jeux sur le disque dur</title>
        <link>http://blog.kodcast.com/index.php#projets</link>
        <guid isPermaLink="true">http://blog.kodcast.com/index.php#projets-c1926077a199986c3edb2223b6726748</guid>
        <pubDate>Tue, 01 Sep 2026 13:39:52 +0000</pubDate>
                <atom:updated>Tue, 01 Sep 2026 13:39:52 +0000</atom:updated>
                <description><![CDATA[
            <p><strong>Section:</strong> projets</p>
            <p><strong>Date:</strong> 01-09-2026 13:39:52</p>
            <p><strong>Description:</strong> Si vous souhaitez conserver vos jeux directement sur le disque dur de votre PS3 et utiliser des homebrews, il est possible de modifier la console en installant HEN (Homebrew ENabler).

⚠️ Attentio...</p>
            <hr>
            <p>Si vous souhaitez <strong>conserver vos jeux directement sur le disque dur de votre PS3</strong> et utiliser des homebrews, il est possible de modifier la console en installant <strong>HEN (Homebrew ENabler)</strong>.</p>

<p>⚠️ <strong>Attention :</strong> cette procédure modifie le logiciel de votre console. Elle est à réaliser à vos propres risques. Utilisez uniquement des jeux et logiciels que vous possédez légalement.</p>

🛠️ Comment faire ?
1. Préparer la clé USB
<p>Formatez une clé USB en <strong>FAT32</strong> puis créez l'arborescence suivante :</p>
<pre><code class="language-text">/PS3/UPDATE/</code></pre>
<p>Téléchargez le firmware <strong>HFW 4.93.1</strong> et placez le fichier :</p>
<pre><code class="language-text">HFW_4.93.1_PS3UPDAT.PUP</code></pre>
<p>dans le dossier <code>/PS3/UPDATE/</code>.</p>
<p>Renommez ensuite le fichier en :</p>
<pre><code class="language-text">PS3UPDAT.PUP</code></pre>
<p>Vous devez donc obtenir :</p>
<pre><code class="language-text">/PS3/UPDATE/PS3UPDAT.PUP</code></pre>
2. Mettre à jour la PS3
<p>Branchez la clé USB sur la PS3 puis rendez-vous dans :</p>
<p><strong>Paramètres → Mise à jour système → Mise à jour par support de stockage</strong></p>
<p>Suivez les instructions affichées à l'écran afin d'installer le <strong>Hybrid Firmware (HFW)</strong>.</p>
3. Installer HEN
<p>Une fois la mise à jour terminée, ouvrez le <strong>navigateur Internet de la PS3</strong>.</p>
<p>Appuyez sur le bouton "start" de votre manette et rendez-vous sur :</p>
<p><code>videogamesscz.github.io/videohost</code></p>
<p>puis choisissez :</p>
<p><strong>HEN Auto Installer</strong> (en haut à gauche).</p>
<p>Laissez la procédure se dérouler jusqu'à son terme.</p>
4. Activer HEN
<p>Une fois HEN installé, une nouvelle option apparaît dans le menu <strong>Jeu</strong> de la PS3.</p>
<p>Sélectionnez :</p>
<p><strong>★ Enable HEN</strong></p>
<p>La console est maintenant prête à utiliser les applications homebrew compatibles.</p>
5. Installer les homebrews
<p>Placez les fichiers <code>.pkg</code> des applications souhaitées dans le dossier :</p>
<pre><code class="language-text">/packages/</code></pre>
<p>à la racine de votre clé USB.</p>
<p>Pour une installation de base, vous pouvez notamment utiliser :</p>
<ul>
<li><strong>multiMAN</strong> : gestionnaire de fichiers et de jeux ;</li>
<li><strong>webMAN MOD</strong> : gestion des jeux et fonctionnalités supplémentaires ;</li>
<li><strong>prepISO</strong> : permet notamment de préparer l'utilisation de supports <strong>NTFS/exFAT</strong>.</li>
</ul>
<p>Branchez ensuite la clé USB à la PS3 et utilisez l'option <strong>★ Package Manager</strong> pour installer les fichiers <code>.pkg</code>.</p>
<p>Une fois les applications installées, elles seront accessibles depuis le menu <strong>Jeu</strong> de la console.</p>
🎮 Et ensuite ?
<p>Votre PS3 dispose maintenant de <strong>HEN</strong> et des outils nécessaires pour gérer vos jeux et vos fichiers depuis le disque interne ou des supports USB compatibles.</p>
<p>Pour éviter toute perte de données, pensez à <strong>faire régulièrement une sauvegarde de votre disque dur</strong>.</p>

<p>💡 <strong>Important :</strong> HEN doit généralement être réactivé après chaque redémarrage complet de la PS3. L'installation de HEN ne remplace pas le firmware officiel : elle ajoute les fonctionnalités nécessaires à l'exécution des homebrews.</p>
        ]]></description>
        <category>projets</category>
    </item>
        <item>
        <title>La Grosse Tambouille migre</title>
        <link>http://blog.kodcast.com/index.php#projets</link>
        <guid isPermaLink="true">http://blog.kodcast.com/index.php#projets-979cb55e95e4c4b46aae75836b843741</guid>
        <pubDate>Mon, 13 Apr 2026 13:41:20 +0000</pubDate>
                <atom:updated>Mon, 13 Apr 2026 14:13:35 +0000</atom:updated>
                <description><![CDATA[
            <p><strong>Section:</strong> projets</p>
            <p><strong>Date:</strong> 13-04-2026 13:41:20</p>
            <p><strong>Description:</strong>   
Voilà un moment que je dois écrire cet article.
Depuis le début de l’année 2026, nous avons migré La Grosse Tambouille… et, comme souvent, ça n’a pas été aussi simple qu’espéré.
P...</p>
            <hr>
            <p>  </p>
<p>Voilà un moment que je dois écrire cet article.<br />
Depuis le début de l’année 2026, nous avons migré La Grosse Tambouille… et, comme souvent, ça n’a pas été aussi simple qu’espéré.</p>
Pourquoi ce changement ?
<p>Vous le savez sûrement : ce n’est pas la fête aux budgets dans le secteur culturel, et toutes les régions sont impactées.</p>
<p><a href="https://lagrossetambouille.fr/">La Grosse Tambouille</a> était soutenue par l’association Tambouille Prod depuis 2021. Mais à partir de septembre 2025, face à une baisse des subventions, le financement du serveur n’a plus été assuré.</p>
<p>Laurent et moi avons pris le relais pendant 6 mois, en finançant le serveur de notre poche. Mais en décembre, il a fallu se rendre à l’évidence : il fallait repenser toute l’infrastructure.</p>
<p>De mon côté, j’ai la chance d’avoir un homelab capable d’héberger LGT. Nous avons donc décidé de franchir une étape supplémentaire en créant une association, afin de structurer le projet et permettre son financement via des dons.</p>
Comment s’est passée la migration ?
Côté technique
<p>Nous sommes passés d’un serveur dédié OVH, qui faisait tourner tous les services (Libretime, Apache2, etc.), à une architecture basée sur deux conteneurs LXC sous <a href="https://www.proxmox.com">Proxmox</a> :  </p>
<ul>
<li>un conteneur pour <a href="https://libretime.org/">Libretime</a> (gestion des morceaux, playlists, programmation…)</li>
<li>un conteneur pour le site web </li>
</ul>
<p>Un gros travail d’optimisation du site avait déjà été effectué auparavant, notamment avec la mise en place d’une API maison.</p>
<p>L’API de <a href="https://libretime.org/">Libretime</a> étant assez gourmande, j’en ai développé une version plus légère côté site, dédiée à la gestion des artistes, titres et votes.</p>
Migration des données
<p>Bonne surprise : le transfert depuis OVH vers le homelab s’est déroulé sans encombre :</p>
<ul>
<li>import des morceaux avec <code>rsync</code></li>
<li>dump + restauration de la base PostgreSQL</li>
</ul>
<p>Et… ça tournait.</p>
Optimisations côté front
<p>Comme il restait un peu de temps sur l’ancien serveur, j’en ai profité pour faire un gros ménage côté JavaScript :</p>
<ul>
<li>suppression de fonctions obsolètes  </li>
<li>optimisation globale des performances  </li>
<li>refonte du système de gestion des pochettes  </li>
</ul>
<p>Le nouveau système de pochettes fonctionne en cascade :</p>
<p><strong>MusicBrainz → Apple Music → serveur Tambouille → Wikimedia</strong></p>
<p><br />
<em>exemple de pochette Apple Music</em>  </p>
<p>Si une source ne répond pas, la suivante prend le relais.<br />
Le tout est géré côté client, ce qui allège considérablement la charge serveur (sauf cas particulier).</p>
Le moment critique : la bascule
<p>Puis vient le grand moment : je bascule le domaine vers sa nouvelle maison.<br />
Et là… les vrais problèmes commencent.</p>
Les galères (et leurs solutions)
Limite Icecast
<p>Premier souci, rapidement identifié : Icecast était limité à 100 auditeurs.</p>
<p>Peu documenté dans notre version Docker, mais la solution était simple : modifier le <code>docker-compose.yml</code> :</p>
<pre><code>    icecast:
      environment:
        ICECAST_MAX_CLIENTS: "300"</code></pre>
Les bots et attaques
<p>Ensuite, les choses se corsent.<br />
Avec un site bien référencé et relativement populaire, les bots n’ont pas tardé à débarquer… suivis de tentatives de DDoS.<br />
J’ai passé plusieurs jours à durcir la sécurité avec Fail2ban.</p>
Étape 1 : nettoyage des logs
<p>Certains bots polluaient les logs, rendant invisibles les vraies menaces.</p>
Étape 2 : blocage des accès suspects
<p>J’ai bloqué les accès directs par IP (aucun utilisateur légitime ne fait ça).</p>
<p>Exemple typique :</p>
<pre><code>    "\x16\x03\x01..." 400</code></pre>
Étape 3 : protection des accès privés
<ul>
<li>3 tentatives de connexion échouées = bannissement</li>
</ul>
Étape 4 : protection contre le DoS
<p>Le plus complexe : protéger le flux.</p>
<p>J’ai mis en place des règles spécifiques Fail2ban capables de distinguer :</p>
<ul>
<li>connexions légitimes  </li>
<li>comportements suspects  </li>
</ul>
<p>Pendant plus de 2 mois, tous les vendredis à 19h, on a subi des tentatives d’attaque.<br />
Résultat : un excellent terrain de test.</p>
<p>Et bonne nouvelle : <strong>le serveur n’a jamais été mis en danger</strong>.</p>
Point encore en cours
<p>Un souci reste à résoudre : l’accès DJ.</p>
<ul>
<li>ouvert → attaqué en moins de 24h  </li>
<li>impossible à mettre derrière un proxy  </li>
</ul>
<p>Solution actuelle : ouverture à la demande via le pare-feu.</p>
<p>Ce n’est pas idéal, mais c’est sécurisé.</p>
Le changement de domaine
<p>Vous l’avez peut-être remarqué : nous avons perdu le <code>.com</code> au profit de <strong>lagrossetambouille.fr</strong>.</p>
<p>Ce changement était prévu (les .com deviennent coûteux), mais pas de manière aussi brutale.</p>
<p>Le domaine appartenait à Chriss, un des fondateurs, que nous n’avons pas réussi à recontacter.</p>
<p>Nous avions envisagé une récupération simple… mais le fonctionnement des noms de domaine est plus complexe :</p>
<ul>
<li>expiration  </li>
<li>période de rétention  </li>
<li>protection temporaire  </li>
</ul>
<p>Résultat : impossible de le récupérer.</p>
Et maintenant ?
<p>Malgré tout, <strong>lagrossetambouille.fr est en ligne, plus rapide et plus solide que jamais.</strong></p>
<p>Et surtout : l’aventure continue.</p>
La suite du projet
<p>Nous allons continuer à renforcer la résilience de LGT via :</p>
<p><strong>l’Association LA GROSSE TAMBOUILLE &amp; COMPAGNIE</strong></p>
Bureau
<ul>
<li>Président : Laurent (Micmac)  </li>
<li>Trésorier : Manu (Casper)  </li>
<li>Secrétaire : moi-même (K0d)  </li>
</ul>
Contributeurs actifs
<ul>
<li>Kevin (Sean de M.A.R.C.E.L)  </li>
<li>Nico  </li>
<li>Flo (Flobuch)  </li>
</ul>
Et bientôt…
<p>Dans les semaines à venir, nous lancerons une campagne de dons pour financer :</p>
<ul>
<li>le serveur  </li>
<li>le domaine  </li>
<li>le temps de développement</li>
</ul>
<p>@bientôt sur LGT !</p>
<p>K0d.</p>        ]]></description>
        <category>projets</category>
    </item>
        <item>
        <title>30 ans de mix : bidouille, liberté et boutons</title>
        <link>http://blog.kodcast.com/index.php#projets</link>
        <guid isPermaLink="true">http://blog.kodcast.com/index.php#projets-3f3cdf1a7f82045b2967c31b4d3f3ef8</guid>
        <pubDate>Thu, 15 Jan 2026 10:28:25 +0000</pubDate>
                <atom:updated>Sat, 17 Jan 2026 15:45:59 +0000</atom:updated>
                <description><![CDATA[
            <p><strong>Section:</strong> projets</p>
            <p><strong>Date:</strong> 15-01-2026 10:28:25</p>
            <p><strong>Description:</strong> cet article n’est pas un tuto, mais un retour d’expérience et une prise de position.
Voilà maintenant trente ans que je mixe.
J’ai débuté sur des platines CD pitchées, puis sur des platines...</p>
            <hr>
            <p><em>cet article n’est pas un tuto, mais un retour d’expérience et une prise de position.</em></p>
Voilà maintenant trente ans que je mixe.
<p>J’ai débuté sur des platines CD pitchées, puis sur des platines vinyles, avant de passer au contrôleur. J’ai vu le domaine évoluer, parfois dans un sens qui le rend de moins en moins accessible. À tel point qu’aujourd’hui, il paraîtrait difficile pour le gamin peu fortuné que j’étais il y a trente ans de prendre le contrôle de soirées.<br />
Avec une moyenne de 1500 € pour un contrôleur « clé en main », la facture est en effet corsée. Pourtant, le DJing a toujours été un terrain d’expérimentation. Et même aujourd’hui, il est tout à fait possible de mixer avec du matériel très peu cher, parce que déclassé, obsolète ou simplement hors hype.<br />
<br>
Récemment, je discutais avec une vieille connaissance qui mixait aussi il y a trente ans. Il m’expliquait qu’il avait arrêté le jour où « tout le monde est devenu DJ », et que ces derniers se contentaient d’appuyer sur des boutons.<br />
Personnellement, j’apprécie au contraire le fait que le DJing se soit autant démocratisé. Que les gens deviennent de plus en plus mélomanes et pointus, ça me plaît. Je pense aussi, finalement, que mon interlocuteur était surtout un vieux grincheux qui a lâché la rampe.<br />
<br>
Quand nous étions jeunes, nous n’avions pas les moyens de nous payer de superbes Technics MK2, bien trop chères pour nos bourses de lycéens. Alors on bidouillait. On achetait — ou on récupérait — des platines vinyles correctes dans des débarras, à une époque où le vinyle était en désuétude et où un 33 tours coûtait 1 €.<br />
Aujourd’hui, je reste dans cet état d’esprit. Pour moi, l’essence du DJing se trouve dans la bidouille, le bricolage inventif. Les pionniers du scratch n’étaient pas des gens riches, mais des gamins de quartier ingénieux.<br />
De ce point de vue, quelqu’un qui achète un contrôleur, le branche sur son PC et mixe avec un logiciel aux fonctionnalités figées est peut-être un DJ… mais il est compréhensible qu’un vieux grincheux le traite de « pousse-bouton ».<br />
<br>
J’ai donc envie de partager avec vous le setup que j’utilise aujourd’hui pour mixer. Il est peu cher, inventif, mais probablement pas à la portée de ceux qui aiment sortir un appareil de sa boîte et jouer immédiatement.<br />
Je vais d’abord vous parler de la partie matérielle, essentiellement composée d’occasion, puis de la partie logicielle, forcément libre et modifiable.  </p>
Le matériel
<p>Côté matériel, j’utilise une console Hercules RMX. Sans être une machine légendaire, elle présente de nombreux avantages.<br />
La mienne a tous ses faders (potentiomètres linéaires) HS, mais ce n’est pas un problème pour moi — vous comprendrez pourquoi en poursuivant votre lecture.  </p>
<p>
<em>Contrôleur acheté en 2008 chez Michenau.</em><br />
<br>
Cette console a surtout un énorme avantage : elle embarque une carte son avec deux sorties et deux entrées. Peu de matériel récent propose cela, et c’est bien dommage, car cela permet de faire des choses vraiment intéressantes.<br />
<br>
Je couple cette console avec une table de mixage Numark X9, une ancienne table numérique 24-bit, 3 voies + effets. Je l’apprécie énormément pour la souplesse de ses faders, son crossfader optique, ses potentiomètres idéalement espacés, ses effets Alesis très agréables et ses nombreuses entrées/sorties.<br />

<em>Table de mixage acheté d'occaz' à Top Sonor en 2018.</em><br />
<br> 
J’utilise également un casque Sennheiser HD25, confortable et parfaitement adapté au mix grâce à ses basses bien présentes. C’est la seule chose — avec les câbles — qui soit neuve dans mon setup.  </p>
Le logiciel
<p>Côté logiciel, je m’appuie sur <a href="https://manjaro.org/">Linux Manjaro</a>. Après avoir passé pas mal de temps sous Ubuntu et testé différentes distributions, Manjaro représente pour moi un excellent compromis entre stabilité du système et fraîcheur logicielle.<br />
J’ai ainsi toujours les dernières versions de mes logiciels de référence, préalablement testées. La bascule vers un noyau RT (temps réel) en un clic est également très appréciable lorsque l’on fait autre chose que du DJing, afin de réduire la latence au minimum.<br />
<br>
Comme serveur audio, après avoir laborieusement utilisé <a href="https://jackaudio.org/">JACK</a> pendant des années, je suis ravi d’utiliser <a href="https://pipewire.org/">PipeWire</a> et son extension pipewire-jack, qui me permet les mêmes folies créatives… avec beaucoup moins d’inconvénients.<br />
<br>
Pour le mix à proprement parler, j’utilise le formidable <a href="https://mixxx.org/">Mixxx</a>, qui possède un excellent moteur de détection du BPM (coucou les pousse-boutons !).<br />

<em>Mixxx en action.</em><br />
<br></p>
<p>Je le configure avec deux platines, chacune reliée à une sortie différente de la carte son.

<em>Mes paramètres de Mixxx.</em><br />
<br>
Mixxx est extrêmement modifiable : j’ai ainsi modifié le fichier de mapping de mon contrôleur Hercules afin de désactiver les faders HS et de réassigner les boutons pour qu’ils correspondent mieux à ma pratique. Tout cela se fait en JavaScript.<br />
<br>
Grâce à <a href="https://github.com/rncbc/qpwgraph">Qpwgraph</a>, je peux câbler l’ensemble de manière logicielle, récupérer les entrées de la table et les envoyer vers des logiciels de capture audio pour l’enregistrement ou le livestream (webradio, webTV, etc.).<br />

<em>Qpwgraph avec câblage pour diffusion live via Livekit et Butt.</em><br />
<br></p>
Et après le DJing…
<p>Si j’utilise ce setup principalement pour le DJing, je peux aussi faire beaucoup d’autres choses avec.
Par exemple, je compose avec <a href="https://lmms.io/">LMMS</a>, je masterise avec <a href="https://ardour.org/">Ardour</a>, et j’aime beaucoup, lors du mastering, envoyer une piste Ardour vers une entrée de la table afin d’utiliser ses effets, faire des cuts, puis récupérer le résultat sur une nouvelle piste Ardour pour obtenir un rendu plus « live ».<br />
<br>
Bien sûr, mon setup n’est ni le meilleur du marché, ni le plus optimisé. Je fais avec ce que j’ai, comme quand j’étais ado. Cela me force à être créatif — et c’est précisément pour ça que je m’embête autant.<br />
<br>
Pousser des boutons, c’est bien.<br />
Pousser ses boutons, c’est mieux. 
<br>
Pour le résultat, je vous laisse juger par vous-mêmes dans la section <a href="https://blog.kodcast.com/#mixs">Mixs</a> de ce site.<br />
<br>
K0d.</p>        ]]></description>
        <category>projets</category>
    </item>
        <item>
        <title>🎉 La Vélorution fête sa première année</title>
        <link>http://blog.kodcast.com/index.php#projets</link>
        <guid isPermaLink="true">http://blog.kodcast.com/index.php#projets-d8e9299138165a3792fa9da1dab42bd7</guid>
        <pubDate>Mon, 29 Dec 2025 10:33:04 +0000</pubDate>
                <atom:updated>Sun, 04 Jan 2026 20:47:07 +0000</atom:updated>
                <description><![CDATA[
            <p><strong>Section:</strong> projets</p>
            <p><strong>Date:</strong> 29-12-2025 10:33:04</p>
            <p><strong>Description:</strong> rendez-vous le 30 janvier chez la Bretonne !
Il y a un an naissait la Vélorution à Saint-Nazaire. Un an de coups de pédales engagés, de vélos revendicatifs, de convivialité et d’envie de repre...</p>
            <hr>
            rendez-vous le 30 janvier chez la Bretonne !
<p>Il y a un an naissait la Vélorution à Saint-Nazaire. Un an de coups de pédales engagés, de vélos revendicatifs, de convivialité et d’envie de reprendre l’espace urbain autrement.<br />
Pour marquer cette première bougie comme il se doit, les vélorutionnaires ont décidé d’organiser un final festif le 30 janvier au bar Chez la Bretonne, aux Halles de Saint-Nazaire.<br />
Et autant dire que la soirée s’annonce mémorable 🔥  </p>

<p><br />
<em>L'affiche ci-dessus n'engage que moi. Merci de ne pas vous en prendre au groupe Vélorution SN sur les réseaux sociaux pour l'utilisation de l'IA.</em></p>

🎧 Un final en musique
<p>J’aurai l’honneur d’assurer un set DJ pour cette soirée anniversaire, en excellente compagnie puisque je partagerai les platines avec Dr Jean Burger.
Et parce qu’une Vélorution n’est jamais tout à fait prévisible… un DJ surprise pourrait bien venir compléter l’affiche 👀</p>
<p>Au programme :</p>
<ul>
<li>
<p>du son,</p>
</li>
<li>
<p>de l’énergie,</p>
</li>
<li>
<p>une ambiance festive et militante,</p>
</li>
<li>
<p>et surtout l’esprit Vélorution, celui qui rassemble, qui fait vibrer et qui donne envie d’avancer ensemble.  </p>

</li>
<li>
<p>📍 Infos pratiques :</p>
</li>
<li>
<p>📅 Date : Vendredi 30 janvier</p>
</li>
<li>
<p>📍 Lieu : Bar Chez la Bretonne</p>
</li>
<li>
<p>🗺️ Où : Halles de Saint-Nazaire</p>
</li>
<li>
<p>🎶 DJs : Kod, Dr Jean Burger… et peut-être une surprise !  </p>

<p>Que tu sois vélorutionnaire de la première heure, curieux, amateur de bon son ou simplement en quête d’une soirée conviviale, viens fêter cette première année avec nous.
Un an, ça se fête. Et en musique, c’est encore mieux 🚲💿</p>
</li>
</ul>
<p>À très vite derrière les platines… ou sur la piste !</p>        ]]></description>
        <category>projets</category>
    </item>
        <item>
        <title>La Vélorution avec WebRTC et LiveKit !</title>
        <link>http://blog.kodcast.com/index.php#projets</link>
        <guid isPermaLink="true">http://blog.kodcast.com/index.php#projets-760f4932232663306c65d80e66b6ffae</guid>
        <pubDate>Wed, 10 Dec 2025 14:33:34 +0000</pubDate>
                <atom:updated>Mon, 05 Jan 2026 12:56:50 +0000</atom:updated>
                <description><![CDATA[
            <p><strong>Section:</strong> projets</p>
            <p><strong>Date:</strong> 10-12-2025 14:33:34</p>
            <p><strong>Description:</strong> Retour d&#039;expérience et guide technique
Lors de nos dernières vélorutions, un besoin revenait systématiquement : diffuser de la musique depuis le char tout en permettant aux participant·es d&#039;utili...</p>
            <hr>
            Retour d'expérience et guide technique
<p>Lors de nos dernières vélorutions, un besoin revenait systématiquement : diffuser de la musique depuis le char tout en permettant aux participant·es d'utiliser leurs propres enceintes Bluetooth. L'objectif était simple : obtenir une ambiance sonore homogène, sans échos, sans décalages, et surtout sans avoir à trimballer une sono trop lourde.</p>
<p>Après avoir testé plusieurs pistes, comme le Bluetooth ou la diffusion FM, j'ai finalement opté pour une solution WebRTC basée sur LiveKit, qui semble étonnamment efficace.</p>
<p>Ce qui suit est le récit technique du montage, accompagné de notes, pièges évités et résultats concrets après plusieurs jours de tests, avant de passer aux tests sur le terrain.</p>
1. Principe général
<p><strong>L'idée :</strong></p>
<ul>
<li>Diffuser l'audio dans une Room LiveKit</li>
<li>Laisser les participant·es se connecter via une simple page web</li>
<li>Synchroniser la lecture sur tous les appareils via une mécanique maison utilisant <code>playbackRate</code></li>
</ul>
<p>Contrairement à un live classique (HLS, Icecast ou autre), l'objectif n'est pas seulement de réduire la latence, mais de <strong>garantir la même latence pour tout le monde</strong>.</p>
<p>WebRTC, aidé d'un SFU comme LiveKit, est parfait pour ça.</p>
2. Architecture technique
<p>L'architecture se découpe en trois blocs :</p>
<strong>LiveKit Server</strong>
<p>Service principal qui gère :</p>
<ul>
<li>les Rooms</li>
<li>les pistes audio</li>
<li>la transmission en temps réel</li>
<li>le modèle SFU (Selective Forwarding Unit), qui évite la surcharge du serveur</li>
</ul>
<p>LiveKit tourne chez moi sous Linux, avec un accès WebSocket exposé via proxy Apache.</p>
<strong>Serveur de tokens</strong>
<p>Micro-service simple (en Node.js) chargé de créer :</p>
<ul>
<li>des "join tokens" pour les clients</li>
<li>des autorisations limitées dans le temps</li>
</ul>
<p>Il est volontairement séparé de LiveKit pour une meilleure sécurité et un déploiement plus flexible.</p>
<strong>Page web "listener"</strong>
<p>Une page très légère contenant :</p>
<ul>
<li>le client LiveKit</li>
<li>un player audio HTML5</li>
<li>une boucle de synchronisation basée sur un signal partagé (via DataChannel ou via un timestamp commun)</li>
</ul>
<p>Chaque téléphone se contente :</p>
<ul>
<li>de récupérer le flux audio WebRTC</li>
<li>de l'envoyer vers son enceinte Bluetooth</li>
<li>de s'auto-corriger en permanence pour rester parfaitement calé sur le tempo</li>
</ul>
3. Ce qui surprend quand on monte ce système
<strong>WebRTC n'aime pas l'audio pur</strong>
<p>La plupart des tutos LiveKit concernent la vidéo. Pour l'audio pur, il faut désactiver plusieurs optimisations inutiles (AEC, AGC, etc.) pour éviter que le son soit transformé.</p>
<strong>Bluetooth ajoute un décalage… mais stable</strong>
<p>Les enceintes Bluetooth ont en général une latence fixe 200ms (mais legerement différente d'un modèle à l'autre).<br />
C'est justement cette constance qui permet de compenser de manière fiable via <code>playbackRate</code>.</p>
<strong>La synchro demande de la finesse</strong>
<p>J'ai testé plusieurs stratégies :</p>
<ul>
<li>lecture par timestamp WebRTC → trop imprécis</li>
<li>ajustement continu du <code>currentTime</code> → provoque des sauts audibles</li>
<li>micro-ajustement du <code>playbackRate</code> → la solution la plus propre</li>
</ul>
<p>Avec un ajustement de ±2 %, tout reste audible et la synchronisation est parfaite.</p>
4. Déploiement : rôle crucial du proxy
<p>Le proxy Apache assure :</p>
<ul>
<li>la redirection WebSocket (<code>/livekit</code>)</li>
<li>l'accès HTTPS</li>
<li>l'isolation des ports internes</li>
</ul>
5. Prêt à mettre les mains dans le cambouis ?
<strong>Mes prérequis</strong>
<ul>
<li>Un site qui tourne (perso sous Apache2, mais ça fonctionne aussi avec Nginx)</li>
<li>NodeJS pour le serveur de tokens</li>
</ul>
<strong>Installation de LiveKit</strong>
<p>Côté serveur, j'ai installé LiveKit assez simplement grâce à la documentation officielle :<br />
<a href="https://github.com/livekit/livekit">https://github.com/livekit/livekit</a>
J'ai utilisé la commande :</p>
<pre><code class="language-bash">curl -sSL https://get.livekit.io | bash</code></pre>
<p>J'ai ensuite créé un dossier livekit dans mon <code>/home</code> Dans ce dossier, j'ai d'abord créé le fichier de configuration <code>livekit.yaml</code> :  </p>
<pre><code class="language-yaml">bind_addresses:
  - "0.0.0.0"

rtc:
  tcp_port: 8443
  udp_port: 7880

keys:
  clé-api: "ma-clé-super-secrete"

log_level: info  </code></pre>
<p><br>
je crée ensuite le fichier <code>package.json</code> pour l'installation des dépendances Nodejs via NPM.  </p>
<pre><code>{
  "name": "livekit",
  "version": "1.0.0",
  "type": "module",
  "dependencies": {
    "express": "^4.18.2",
    "cors": "^2.8.5",
    "livekit-server-sdk": "^2.13.3"
  }
}</code></pre>
<p>Puis j'installe les dépendances :  </p>
<pre><code class="language-bash">npm install</code></pre>
<strong>Service Systemd pour LiveKit</strong>
<p>Puis j'ai créé un fichier de service dans <code>/etc/systemd/system/livekit.service</code> :  </p>
<pre><code>[Unit]
Description=LiveKit Server
After=network.target

[Service]
ExecStart=/usr/local/bin/livekit-server --config /home/K0d/livekit/livekit.yaml
Restart=on-failure
User=k0d
WorkingDirectory=/home/k0d/livekit/

[Install]
WantedBy=multi-user.target</code></pre>
<p><br>
Je rafraîchis systemd pour prendre en compte ce service :  </p>
<pre><code class="language-bash">sudo systemctl daemon-reload</code></pre>
<p>Puis je démarre le service :  </p>
<pre><code class="language-bash">sudo systemctl start livekit</code></pre>
<p><br></p>
<strong>Serveur de tokens</strong>
<p>Pour les connexions, j'ai aussi besoin d'un serveur de tokens, indispensable pour accéder à ma room LiveKit.<br />
J'ai donc créé un mini-serveur Node.js pour générer dynamiquement les tokens sans exposer ma clé.<br />
Dans mon dossier <code>/home/k0d/livekit</code>, j'ai créé un fichier <code>server.mjs</code> :</p>
<pre><code class="language-//">import express from 'express';
import cors from 'cors';
import { AccessToken } from 'livekit-server-sdk';

const app = express();
app.use(cors());

const API_KEY = 'clé-api';
const API_SECRET = 'ma-clé-super-secrete';

app.get('/token', async (req, res) =&gt; {
  const roomName = req.query.room ?? 'room1';
  const identity = req.query.identity ?? 'user';

  const at = new AccessToken(API_KEY, API_SECRET, { identity });
  at.addGrant({
    roomJoin: true,
    room: roomName,
    canPublish: true,
    canSubscribe: true,
    audio: true,
    video: false
  });

  const jwt = await at.toJwt();
  res.json({ token: jwt });
});

const PORT = 3000;
app.listen(PORT, () =&gt; {
  console.log(`Token server listening on http://localhost:${PORT}`);
});</code></pre>
<p><br>
Je crée ensuite un service systemd  </p>
<pre><code class="language-bash">sudo nano /etc/systemd/system/livekit-token.service</code></pre>
<p>et j'y entre :</p>
<pre><code>[Unit]
Description=LiveKit Token Server
After=network.target

[Service]
Type=simple
User=k0d
WorkingDirectory=/home/k0d/livekit
ExecStart=/usr/bin/node /home/k0d/livekit/server.mjs
Restart=on-failure
Environment=NODE_ENV=production

[Install]
WantedBy=multi-user.target</code></pre>
<p>je recharche systemd:  </p>
<pre><code class="language-bash">sudo systemctl daemon-reload</code></pre>
<p>puis lance mon service:</p>
<pre><code class="language-bash">sudo systemctl start livekit-token</code></pre>
<p>Pour le moment, je préfère séparer mes services pour faciliter le debug, mais je pourrai les réunir plus tard dans un seul service.</p>
<p>Je ne les active pas non plus par défaut (systemctl enable), car je veux pouvoir les lancer uniquement lors des vélorutions. 
<br> </p>
<strong>Exposition au Web via Apache2</strong>
<p>Pour rendre mes services accessibles sur Internet, j'ai édité la config de mon site Apache2 dans <code>/etc/apache2/sites-available</code>.</p>
<p>J'y ai ajouté, avant <code>&lt;/VirtualHost&gt;</code> :  </p>
<pre><code class="language-#">RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule ^/livekit/(.*) ws://127.0.0.1:7880/$1 [P,L]

ProxyPass /livekit/ http://127.0.0.1:7880/
ProxyPassReverse /livekit/ http://127.0.0.1:7880/

# Proxy vers Node.js token server
ProxyPass /token http://127.0.0.1:3000/token
ProxyPassReverse /token http://127.0.0.1:3000/token</code></pre>
<p><br>
et rechargé Apache2:</p>
<pre><code class="language-bash">sudo systemctl reload apache2</code></pre>
<p>Ainsi :  </p>
<ul>
<li>
<p>LiveKit est disponible à : <a href="https://velorutionsaintnazaire.fr/livekit">https://velorutionsaintnazaire.fr/livekit</a></p>
</li>
<li>
<p>Les tokens à : <a href="https://velorutionsaintnazaire.fr/token">https://velorutionsaintnazaire.fr/token</a>  </p>
</li>
</ul>
<strong>Page d'émission : emit.html</strong>
<p>La page emit.html, qui servira, comme son nom l’indique, à émettre le son, permet, en deux ou trois clics, de lancer l’émission et de choisir la source sonore.</p>
<p>la page est sur mon <a href="https://github.com/kodcast/webRTCLiveKitradiosimple/blob/main/emit.html">github ici</a>.  </p>
<p>Avec cette page, j’utilise un CDN pour inclure le client. Cependant, vous pouvez — et devriez — le mettre en local.  </p>
<p>Vous remarquerez qu’il y a énormément de lignes commentées : je les laisse volontairement, car elles sont utiles pour le traitement du son (« source → EQ → gain → destination »).<br />
Ici, je contourne l’EQ pour faire simplement « source → gain → destination ». Mon gain étant à 1, son utilité reste limitée, mais je pense augmenter un peu le volume de la source, car le son est assez faible en l’état.<br />
Bien sûr, je vous recommande de personnaliser votre page à l’aide de CSS.
<br></p>
<strong>Page d'écoute : listen.html</strong>
<p>La page listen.html est ici sur mon <a href="https://github.com/kodcast/webRTCLiveKitradiosimple/blob/main/listen.html">github</a>.<br />
Là encore j'utilise LiveKit côté client, via CDN.  </p>
<p>La partie la plus importante est la synchronisation du flux audio :</p>
<pre><code class="language-javascript">const maxDrift = 0.01; // 10ms de drift max (ne pas descendre plus bas 30 voir plus est bien plus raisonnable)
const smoothFactor = 0.05; // correction progressive via playbackRate</code></pre>
<p>Ce système ajuste la vitesse du son pour rattraper un retard ou un décalage réseau.
L'effet est surprenant : le flux accélère ou ralentit légèrement, exactement comme un DJ qui rattrape un tempo.  </p>
Conclusion
<p>Ce système fonctionne très bien en situation réelle :
latence faible, synchronisation correcte, compatibilité totale avec des enceintes Bluetooth, simples smartphones, etc.</p>
<p>J'espère que ça pourra vous être utile.
À bientôt sur les vélorutions,</p>
<p>Kod.</p>        ]]></description>
        <category>projets</category>
    </item>
        <item>
        <title>PasseMonTruc Connector : le lien entre ta playlist et tes fichiers audio</title>
        <link>http://blog.kodcast.com/index.php#projets</link>
        <guid isPermaLink="true">http://blog.kodcast.com/index.php#projets-24eb13dce5c0e9cdb90e3edd8624490a</guid>
        <pubDate>Mon, 08 Dec 2025 17:52:13 +0000</pubDate>
                <atom:updated>Tue, 09 Dec 2025 18:08:04 +0000</atom:updated>
                <description><![CDATA[
            <p><strong>Section:</strong> projets</p>
            <p><strong>Date:</strong> 08-12-2025 17:52:13</p>
            <p><strong>Description:</strong> Après avoir présenté Passe Mon Truc — la playlist collaborative simple et efficace — dans l’article dédié
👉 Projet Passe Mon Truc : la playlist collaborative simple, rapide et fun
voici ...</p>
            <hr>
            <p>Après avoir présenté <em>Passe Mon Truc</em> — la playlist collaborative simple et efficace — dans l’article dédié<br />
👉 <a href="https://blog.kodcast.com#projets--passe-mon-truc-la-playlist-collaborative-simple-rapide-et-fun">Projet Passe Mon Truc : la playlist collaborative simple, rapide et fun</a><br />
voici un autre élément clé de l’écosystème : <strong>PasseMonTruc_Connector</strong>, un plugin open source conçu pour automatiser la récupération des morceaux validés sur ta playlist.</p>
<p>Ce connecteur, utilisé avec <strong>Nicotine+</strong>, permet de <strong>chercher et télécharger automatiquement</strong> les titres ajoutés et approuvés depuis ton espace Passe Mon Truc. Une fois l’URL de la playlist renseignée, il récupère chaque morceau en tenant compte des critères de qualité et de format que tu définis. Il évite également les fichiers marqués comme privés, afin d’assurer un téléchargement propre et sécurisé.</p>
<p>L’objectif est simple : transformer rapidement une playlist validée en un <strong>lot de fichiers audio prêts à l’emploi</strong>, que ce soit pour un DJ set, une soirée, un événement ou un besoin plus technique. Le tout en conservant la philosophie du projet : simplicité, fun, collaboration… mais aussi contrôle total sur le contenu.</p>
<p>Parce qu’il est open source, <strong>tout le monde peut l’améliorer</strong>, l’adapter ou l’intégrer dans un workflow plus large. Il complète parfaitement <em>Passe Mon Truc</em>, en rendant l’étape “après validation” aussi fluide que la collecte des suggestions — comme expliqué dans l’article principal<br />
👉 <a href="https://blog.kodcast.com#projets--passe-mon-truc-la-playlist-collaborative-simple-rapide-et-fun">Projet Passe Mon Truc : la playlist collaborative simple, rapide et fun</a>.</p>
<p>Tu peux découvrir le code et les détails techniques directement sur GitHub :<br />
👉 <a href="https://github.com/kodcast/PasseMonTruc_Connector">https://github.com/kodcast/PasseMonTruc_Connector</a>  </p>

<p><em>K0d</em></p>        ]]></description>
        <category>projets</category>
    </item>
        <item>
        <title>🚴‍♂️ velorution Connector : automatiser la recherche audio et synchroniser VelorutionWeb</title>
        <link>http://blog.kodcast.com/index.php#projets</link>
        <guid isPermaLink="true">http://blog.kodcast.com/index.php#projets-afe14d268c7bc403902cb3ce6d19aa60</guid>
        <pubDate>Mon, 08 Dec 2025 09:23:15 +0000</pubDate>
                <atom:updated>Mon, 08 Dec 2025 20:01:43 +0000</atom:updated>
                <description><![CDATA[
            <p><strong>Section:</strong> projets</p>
            <p><strong>Date:</strong> 08-12-2025 09:23:15</p>
            <p><strong>Description:</strong> J’ai développé velorution_connector, un plugin pour Nicotine+ qui automatise la recherche et le téléchargement de fichiers audio depuis une instance VelorutionWeb.
Il a été conçu pour fluidif...</p>
            <hr>
            <p>J’ai développé <strong>velorution_connector</strong>, un plugin pour <strong>Nicotine+</strong> qui automatise la recherche et le téléchargement de fichiers audio depuis une instance <a href="https://blog.kodcast.com#projet-velorutioweb-l-outil-web-libre-pour-les-velorutions"><strong>VelorutionWeb</strong></a>.<br />
Il a été conçu pour fluidifier totalement le flux : récupérer les morceaux, valider ceux en attente et notifier le serveur lorsqu’un titre rejoint la playlist.  </p>
🎯 Ce que fait réellement le connector
<p>Le plugin ne se contente pas d’automatiser la recherche :<br />
il <strong>récupère les titres acceptés et en attente</strong>, les télécharge, puis <strong>informe VelorutionWeb</strong> lorsque les morceaux ont été ajoutés à la playlist locale.</p>
<p>En clair :  </p>
<ul>
<li>VelorutionWeb liste les titres à récupérer.  </li>
<li>velorution_connector télécharge ceux qui correspondent aux critères.  </li>
<li>Une fois ajoutés à la bibliothèque/playlist locale, le plugin <strong>signale à VelorutionWeb que le morceau est bien récupéré</strong>.</li>
</ul>
<p>Résultat : les deux systèmes restent synchronisés sans intervention manuelle.</p>
🔍 Fonctionnalités principales
<ul>
<li>Recherche automatique de morceaux selon plusieurs critères.  </li>
<li>Support MP3, FLAC, OGG, OPUS, WAV.  </li>
<li>Filtrage par qualité audio.  </li>
<li>Exclusion automatique des fichiers privés (<code>[prive]</code>).  </li>
<li>Gestion des <strong>titres en attente</strong> et synchronisation de leur état.  </li>
<li>Notification à VelorutionWeb dès qu’un morceau est ajouté à la playlist.</li>
</ul>
💡 Pourquoi l’utiliser ?
<p>Pour gagner du temps et éviter les manipulations répétitives.<br />
Tu configures tes critères, et le connector :</p>
<ol>
<li>cherche,  </li>
<li>filtre,  </li>
<li>télécharge,  </li>
<li>met à jour l’état des fichiers sur VelorutionWeb.</li>
</ol>
<p>Tout se fait automatiquement.</p>
🔗 Code source
<p>Projet open source (GPL-3.0) :<br />
👉 <strong><a href="https://github.com/kodcast/velorution_connector">https://github.com/kodcast/velorution_connector</a></strong>  </p>

<p><em>K0d</em></p>        ]]></description>
        <category>projets</category>
    </item>
        <item>
        <title>🎧 Passe Mon Truc : la playlist collaborative simple, rapide et fun</title>
        <link>http://blog.kodcast.com/index.php#projets</link>
        <guid isPermaLink="true">http://blog.kodcast.com/index.php#projets-8b39114f145290d3ddfd94cb19c2c084</guid>
        <pubDate>Sun, 07 Dec 2025 11:55:44 +0000</pubDate>
                <atom:updated>Tue, 09 Dec 2025 18:02:38 +0000</atom:updated>
                <description><![CDATA[
            <p><strong>Section:</strong> projets</p>
            <p><strong>Date:</strong> 07-12-2025 11:55:44</p>
            <p><strong>Description:</strong> Vous préparez une soirée, un apéro entre amis ou même un petit événement, et vous voulez une playlist qui mette tout le monde d’accord ?
Passe Mon Truc est un outil ultra-simple qui permet de ...</p>
            <hr>
            <p>Vous préparez une soirée, un apéro entre amis ou même un petit événement, et vous voulez une playlist qui mette tout le monde d’accord ?<br />
<strong>Passe Mon Truc</strong> est un outil ultra-simple qui permet de créer une playlist collaborative… sans prise de tête.</p>
🎵 Le principe
<p>Vous créez une playlist en quelques secondes, vous partagez un lien ou un QR code à vos amis, et chacun peut ajouter ses morceaux préférés.<br />
Pas besoin de compte, pas besoin de s’inscrire : juste un lien, et c’est parti.</p>
🔑 Gardez le contrôle
<p>En tant que “maestro” — la personne qui crée la playlist — vous décidez des morceaux qui entrent ou non dans la sélection.<br />
Vos invités proposent, <em>vous validez</em>.<br />
Idéal pour garder une ambiance cohérente, éviter les trolls ou simplement filtrer les titres qui ne conviennent pas.</p>
📤 Exportez votre playlist où vous voulez
<p>Une fois la playlist finalisée, vous pouvez :  </p>
<ul>
<li>l’exporter directement vers <strong>YouTube</strong>,  </li>
<li>la récupérer au format <strong>texte</strong>, pour l’importer dans un logiciel DJ ou un service comme TuneMyMusic, </li>
<li>la télécharger avec <a href="https://blog.kodcast.com#projets-passemontruc-connector-le-lien-entre-ta-playlist-et-tes-fichiers-audio">Passe mon truc Connector</a>   </li>
<li>ou tout simplement la garder en souvenir pour une prochaine occasion.</li>
</ul>
🕒 Et après ?
<p>Les playlists inactives depuis plus de trois mois sont automatiquement supprimées.<br />
Pas de surcharge, pas de données oubliées : le service reste simple et propre.</p>
🎯 Pour quoi faire ?
<ul>
<li>Préparer une soirée avec tout le monde  </li>
<li>Donner la parole à vos invités  </li>
<li>Cocréer une ambiance musicale  </li>
<li>Faire participer vos amis, même à distance  </li>
<li>Tester des idées de playlists pour un mix ou un set DJ</li>
</ul>
<p><strong>Passe Mon Truc</strong>, c’est la manière la plus fluide de créer <em>ensemble</em> la bande-son de vos moments.</p>
<p>👉 Essayez-le ici : <a href="https://passemontruc.kodcast.com/">https://passemontruc.kodcast.com/</a></p>

<p><em>K0d</em></p>        ]]></description>
        <category>projets</category>
    </item>
        <item>
        <title>velorutioweb : l’outil web libre pour les Vélorutions 🚲🌍</title>
        <link>http://blog.kodcast.com/index.php#projets</link>
        <guid isPermaLink="true">http://blog.kodcast.com/index.php#projets-493be519d8d4954b0b1c717ca37b38ab</guid>
        <pubDate>Sat, 06 Dec 2025 18:21:34 +0000</pubDate>
                <atom:updated>Mon, 08 Dec 2025 17:57:26 +0000</atom:updated>
                <description><![CDATA[
            <p><strong>Section:</strong> projets</p>
            <p><strong>Date:</strong> 06-12-2025 18:21:34</p>
            <p><strong>Description:</strong> Dans ma vie, deux passions se rencontrent souvent : le code open source et la mobilité douce. velorutioweb est le projet qui les combine parfaitement.
Qu’est-ce que velorutioweb ?
velorutioweb est ...</p>
            <hr>
            <p>Dans ma vie, deux passions se rencontrent souvent : <strong>le code open source</strong> et <strong>la mobilité douce</strong>. <code>velorutioweb</code> est le projet qui les combine parfaitement.</p>
Qu’est-ce que velorutioweb ?
<p><code>velorutioweb</code> est un <strong>outil web conçu pour tous les groupes de Vélorution</strong>, pas seulement pour Saint-Nazaire. Son objectif est simple : offrir aux collectifs un site web <strong>léger, libre et prêt à l’emploi</strong> pour organiser et communiquer autour de leurs événements cyclistes.</p>
<p>Avec <code>velorutioweb</code>, chaque groupe peut :</p>
<ul>
<li>Publier le calendrier de ses Vélorutions  </li>
<li>Partager les parcours et points de départ  </li>
<li>Informer les participants sur les détails logistiques  </li>
<li>Faciliter la participation, même pour les nouveaux venus  </li>
<li>Créer et partager une <strong>playlist collaborative</strong> pour les balades et événements 🎶  </li>
</ul>
<p>La playlist collaborative permet à tous les participants d’<strong>ajouter leurs morceaux préférés</strong>, pour que la musique accompagne les Vélorutions et renforce l’ambiance conviviale et festive.  </p>
<ul>
<li>vous pouvez récupérer l'ensemble des morceaux validés avec Nicotine+ via le plugin <a href="https://blog.kodcast.com#projet-velorution-connector-automatiser-la-recherche-audio-et-synchroniser-velorutionweb">Velorution_Connector</a>  </li>
</ul>
Libre et open source
<p><code>velorutioweb</code> est <strong>distribué sous licence GNU GPL v3.0</strong>. Cela signifie que :</p>
<ul>
<li>Tout le monde peut <strong>cloner, installer et personnaliser</strong> le projet  </li>
<li>Les groupes de Vélorution peuvent <strong>l’adapter à leurs besoins locaux</strong>  </li>
<li>Les contributions sont <strong>les bienvenues</strong>, pour que tout le mouvement en bénéficie  </li>
</ul>
<p>C’est un outil pensé pour être <strong>accessible, collaboratif et respectueux des valeurs du mouvement</strong> : partage, inclusion et engagement citoyen.</p>
Pourquoi ce projet me tient à cœur
<p>En tant que développeur et défenseur du logiciel libre, j’avais envie de créer un outil qui :</p>
<ul>
<li>Donne aux collectifs un moyen simple et efficace de communiquer  </li>
<li>Favorise la diffusion du mouvement à l’échelle nationale et internationale  </li>
<li>Offre un espace communautaire avec la <strong>playlist collaborative</strong>, pour renforcer le lien entre participants  </li>
<li>Reste <strong>fidèle aux principes open source</strong>, pour que chacun puisse l’utiliser librement  </li>
</ul>
Participer et utiliser velorutioweb
<p>Le projet est disponible sur <strong><a href="https://framagit.org/velorutionsaintnazaire/velorutioweb">Framagit</a></strong>, prêt à être utilisé et adapté par <strong>tous les groupes Vélorution dans le monde</strong>.  </p>
<p>Mon objectif : que chaque collectif puisse disposer d’un site web fiable, libre et convivial, sans avoir besoin de compétences techniques avancées.  </p>
<p><code>velorutioweb</code> n’est donc pas seulement un site web pour Saint-Nazaire : c’est un <strong>outil communautaire au service d’un mouvement mondial</strong>, et j’en suis fier.  </p>

<p><em>K0d</em></p>        ]]></description>
        <category>projets</category>
    </item>
        <item>
        <title>djheros Connector : connecter DjHeros + Nicotine+ pour automatiser vos flux musicaux</title>
        <link>http://blog.kodcast.com/index.php#projets</link>
        <guid isPermaLink="true">http://blog.kodcast.com/index.php#projets-60db1d20f9724a21e7f45d24c2d99911</guid>
        <pubDate>Sat, 06 Dec 2025 17:20:49 +0000</pubDate>
                <atom:updated>Mon, 08 Dec 2025 20:01:25 +0000</atom:updated>
                <description><![CDATA[
            <p><strong>Section:</strong> projets</p>
            <p><strong>Date:</strong> 06-12-2025 17:20:49</p>
            <p><strong>Description:</strong> Quand le DJ libriste va plus loin — djheros_connector, mon outil open‑source pour faire le lien entre mon gestionnaire de demandes musicales et un client audio.  
Contexte : pourquoi djheros_conne...</p>
            <hr>
            <p><strong>Quand le DJ libriste va plus loin</strong> — djheros_connector, mon outil open‑source pour faire le lien entre mon gestionnaire de demandes musicales et un client audio.  </p>
Contexte : pourquoi djheros_connector existe
<p>Avec mon usage de Nicotine+ pour la gestion audio — gestion des formats, filtres, téléchargement, etc. — et mon projet <a href="https://blog.kodcast.com#projet-djheros">DjHeros</a> pour gérer les demandes musicales, j’ai vu un besoin : <strong>automatiser le lien entre les requêtes de morceaux et la récupération des fichiers audio</strong>.<br />
Ainsi, plutôt que de copier‑coller manuellement un morceau demandé dans Nicotine+, djheros_connector tente de simplifier ce flux, gagner du temps, éviter les erreurs, et rendre l’ensemble plus fluide — particulièrement utile pour le live, le streaming ou les soirées.  </p>
Présentation de djheros_connector
<p>djheros_connector agit comme un “pont” entre <a href="https://blog.kodcast.com#projet-djheros">DjHeros</a> (gestion des demandes) et Nicotine+ (gestion des fichiers audio).  </p>
Fonctionnalités principales
<ul>
<li>Lecture des demandes validées dans <a href="https://blog.kodcast.com#projet-djheros">DjHeros</a> (fichiers JSON ou autre mécanisme de stockage).  </li>
<li>Automatisation de la recherche et téléchargement du morceau demandé via Nicotine+ selon des critères définis (qualité audio, format, filtre, etc.).  </li>
<li>Gestion des erreurs : morceau indisponible, filtre non satisfait, etc.  </li>
<li>Option de logging / retour pour le DJ : ce qui a été récupéré, ce qui a échoué.  </li>
<li>Possibilité de configurer le comportement (par exemple : ignorer les requêtes “privées”, filtrer qualité, etc.).  </li>
</ul>
Tech stack &amp; philosophie
<ul>
<li>Écrit en Python — Plugin de Nicotine+.  </li>
<li>Usage minimal de dépendances externes — dans l’esprit “léger et open-source”.  </li>
<li>Conçu pour rester simple, flexible, facilement modifiable, déployable sur ton serveur personnel ou un VPS (comme tu en utilises chez OVH / SoYouStart).  </li>
<li>Licence libre / open-source — chacun peut contribuer, adapter, améliorer.  </li>
</ul>
Installation &amp; utilisation (pour les curieux / contributeurs)
<ol>
<li><strong>Pré-requis</strong>  <ul>
<li>Avoir une instance de <a href="https://blog.kodcast.com#projet-djheros">DjHeros</a> opérationnelle.  </li>
<li>Avoir Nicotine+ configuré selon tes critères habituels (formats, filtres, etc.).  </li>
<li>Un serveur ou poste capable d’exécuter le script / service djheros_connector (PHP / Python / autre selon ce que tu as choisi).  </li>
</ul>
</li>
<li><strong>Installation</strong>  <ul>
<li>Cloner le dépôt github :<br />
<code>git clone https://github.com/kodcast/djheros_connector</code>  </li>
<li>Configurer les paramètres : chemin vers la base de données ou fichier JSON de DjHeros, options pour la recherche / téléchargement sous Nicotine+, filtres, qualité, etc.  </li>
<li>Lancer le service / script — idéalement en tâche cron, ou déclenché après validation d’une demande, ou via webhook si tu implémentes cela.  </li>
</ul>
</li>
<li><strong>Workflow classique</strong>  <ul>
<li>Un utilisateur soumet une demande via DjHeros.  </li>
<li>Tu la valides (acceptation).  </li>
<li>djheros_connector interroge Nicotine+ avec les critères définis. S’il trouve un fichier correspondant, il le télécharge automatiquement. Sinon, il logue l’échec ou envoie une alerte.  </li>
<li>Tu récupères le fichier, prêt à être joué dans ton set / stream.  </li>
</ul>
</li>
</ol>

<p>Exemple concret : lors d’un live, plutôt que de devoir naviguer manuellement entre demandes et téléchargement, le tout se fait “en arrière-plan” — tu te concentres sur le mix.  </p>

Pourquoi j’ai développé djheros_connector
<ul>
<li>Pour gagner en <strong>efficacité et rapidité</strong> — moins d’interruptions, plus de fluidité.  </li>
<li>Pour automatiser ce que je fais manuellement depuis longtemps — éviter les erreurs, oublier de télécharger, ou oublier le format qualité à respecter.  </li>
<li>Parce que je crois dans le <strong>libre, l’adaptabilité, la simplicité</strong> : un outil léger, transparent, modifiable, utilisable par d’autres DJs ou passionnés.  </li>
<li>Pour enrichir mon “écosystème” libre pour le DJing / streaming — connecter différents outils libres pour un workflow fluide.  </li>
</ul>
Perspectives &amp; évolutions possibles
<p>Quelques idées pour améliorer / étendre djheros_connector :</p>
<ul>
<li>Interface web ou CLI plus conviviale pour configurer les préférences (qualité, filtres, etc.).  </li>
<li>Automatisation des métadonnées : si le morceau téléchargé a des métadonnées (titre, artiste, album), les extraire et les stocker.  </li>
<li>Intégration directe avec une interface de gestion de set / playlist.  </li>
<li>Notifications (mail, Discord, Slack…) pour signaler morceaux téléchargés ou erreurs.  </li>
<li>Support de plusieurs back‑ends, au-delà de Nicotine+ — pour d’autres clients audio, des services de streaming, etc.  </li>
</ul>
Conclusion
<p>djheros_connector est le prolongement naturel de DjHeros — un pont entre demandes musicales et gestion audio, conçu pour fluidifier le workflow d’un DJ libriste. Si vous êtes DJ, streamer, organisateur ou simplement curieux, n’hésitez pas à tester, à donner un retour, ou à contribuer. Ensemble, on peut améliorer l’outil et le rendre utile à toute la communauté open‑source musicale.  </p>

<p>Pour découvrir djheros_connector et tester : <a href="https://github.com/kodcast/djheros_connector">djheros_connector sur GitHub</a>  </p>


<p><em>K0d</em></p>        ]]></description>
        <category>projets</category>
    </item>
        <item>
        <title>Mixtape for Lilie</title>
        <link>http://blog.kodcast.com/index.php#streams</link>
        <guid isPermaLink="true">http://blog.kodcast.com/index.php#streams-71003e54fd983b7ce871ec62d7d131db</guid>
        <pubDate>Sat, 06 Dec 2025 16:59:37 +0000</pubDate>
                <atom:updated>Tue, 09 Dec 2025 12:54:56 +0000</atom:updated>
                <description><![CDATA[
            <p><strong>Section:</strong> streams</p>
            <p><strong>Date:</strong> 06-12-2025 16:59:37</p>
            <p><strong>Description:</strong> 20 ans de mariage, 25 ans de vie commune, presque 30 ans à avancer côte à côte… et pourtant, je n’avais jamais pris le temps de créer une mixtape pour celle qui fait battre mon cœur depuis t...</p>
            <hr>
            <p>20 ans de mariage, 25 ans de vie commune, presque 30 ans à avancer côte à côte… et pourtant, je n’avais jamais pris le temps de créer une mixtape pour celle qui fait battre mon cœur depuis toutes ces années.</p>
<p>Aujourd’hui, je répare cet oubli avec Mixtape for Lilie : une parenthèse musicale, un retour doux et vibrant vers nos premières nuits de clubbeurs, quand tout était nouveau, léger, évident… et quand on ne m’appelait pas encore K0d, mais Mycki.</p>
<p>1h de House pur jus, pensée comme une lettre d’amour en rythme et en basses.
Pour elle.
Pour nous.
Pour tout ce chemin parcouru.</p>
<p>Bonne écoute ❤️🎶</p>

<p>Playlist :<br />
Michael Gray – The Weekend (Original 12" Mix)<br />
Armand Van Helden feat. Tara McDonald – My My My (Original Club Mix)<br />
Alan Braxe &amp; Fred Falke – Intro (Original Club Mix)<br />
Junior Jack – Thrill Me (Original Version)<br />
Soul Grabber – Motocross Madness<br />
Fake Blood – I Think I Like It<br />
Mochakk – Jealous (Extended Mix)<br />
Chloé Caillet – NYWTF ft. Mikhail Beltran (Extended)<br />
Junior Jack – My Feeling (Kick ’N’ Deep Mix)<br />
Stardust – Music Sounds Better With You (12" Club Mix)<br />
Skream &amp; FLETCH – Lost Without You (Extended Mix)
Demon – You Are My High  </p>
<p>Logiciels utilisés :<br />
Linux<br />
Mixxx<br />
Audacity<br />
ProjectM<br />
OBS</p>        ]]></description>
        <category>streams</category>
    </item>
        <item>
        <title>REPLAY MIX ELECTRO</title>
        <link>http://blog.kodcast.com/index.php#streams</link>
        <guid isPermaLink="true">http://blog.kodcast.com/index.php#streams-f1387bb54520c41b9e171ba2ebf7c3cd</guid>
        <pubDate>Sat, 06 Dec 2025 16:53:41 +0000</pubDate>
                <atom:updated>Tue, 09 Dec 2025 12:54:39 +0000</atom:updated>
                <description><![CDATA[
            <p><strong>Section:</strong> streams</p>
            <p><strong>Date:</strong> 06-12-2025 16:53:41</p>
            <p><strong>Description:</strong> 🌌 Au programme :
Une sélection pointue, entre classiques intemporels et pépites underground.
Une performance live, immersive et 100% open source.
🔧 Les logiciels open source qui rendent ce liv...</p>
            <hr>
            <p>🌌 Au programme :</p>
<p>Une sélection pointue, entre classiques intemporels et pépites underground.
Une performance live, immersive et 100% open source.</p>
<p>🔧 Les logiciels open source qui rendent ce live possible :</p>
<p>🎚️ Mixxx pour un DJing de haute qualité.<br />
🎛️ Jack Audio pour une gestion optimale du son.<br />
🌌 ProjectM pour des visualisations hypnotiques en direct.<br />
🔊 VLC pour diffuser le flux audio.<br />
🎥 OBS Studio pour le mixage vidéo et l’envoi du flux en direct.  </p>
        ]]></description>
        <category>streams</category>
    </item>
        <item>
        <title>Kod - set Drum&#039;n Bass de la fête de la musique live sur LGT</title>
        <link>http://blog.kodcast.com/index.php#streams</link>
        <guid isPermaLink="true">http://blog.kodcast.com/index.php#streams-bda938c52a9873d185d2dee06eccec0e</guid>
        <pubDate>Sat, 06 Dec 2025 16:50:51 +0000</pubDate>
                <atom:updated>Tue, 09 Dec 2025 12:54:07 +0000</atom:updated>
                <description><![CDATA[
            <p><strong>Section:</strong> streams</p>
            <p><strong>Date:</strong> 06-12-2025 16:50:51</p>
            <p><strong>Description:</strong> Ma prestation Drm&#039;n Bass réalisée à l’occasion de la fête de la musique 2024 sur https://lagrossetambouille.com.
Enjoy.
pour le son :
Jack et Jack Audio Connection Kit
Mixxx
Vlc  
pour l&#039;image e...</p>
            <hr>
            <p>Ma prestation Drm'n Bass réalisée à l’occasion de la fête de la musique 2024 sur <a href="https://lagrossetambouille.com">https://lagrossetambouille.com</a>.
Enjoy.</p>
<p>pour le son :<br />
Jack et Jack Audio Connection Kit<br />
Mixxx<br />
Vlc  </p>
<p>pour l'image et le stream :<br />
Obs<br />
projectM<br />
Butt  </p>
        ]]></description>
        <category>streams</category>
    </item>
        <item>
        <title>Frag Party sur OpenArena</title>
        <link>http://blog.kodcast.com/index.php#streams</link>
        <guid isPermaLink="true">http://blog.kodcast.com/index.php#streams-f4fbabf8be3b09abe649a3763f432718</guid>
        <pubDate>Sat, 06 Dec 2025 16:46:37 +0000</pubDate>
                <atom:updated>Tue, 09 Dec 2025 12:54:23 +0000</atom:updated>
                <description><![CDATA[
            <p><strong>Section:</strong> streams</p>
            <p><strong>Date:</strong> 06-12-2025 16:46:37</p>
            <p><strong>Description:</strong> Bienvenue dans une après midi de frags endiablés sur OpenArena, le FPS libre inspiré de Quake 3 Arena ! 🕹️ Plongez avec moi, K0d, dans cet univers rétro pour des combats frénétiques, des du...</p>
            <hr>
            <p>Bienvenue dans une après midi de frags endiablés sur OpenArena, le FPS libre inspiré de Quake 3 Arena ! 🕹️ Plongez avec moi, K0d, dans cet univers rétro pour des combats frénétiques, des duels épiques et des moments fun en live. 🔥</p>
        ]]></description>
        <category>streams</category>
    </item>
        <item>
        <title>Le Mix Electro dont vous êtes le héros</title>
        <link>http://blog.kodcast.com/index.php#streams</link>
        <guid isPermaLink="true">http://blog.kodcast.com/index.php#streams-3f96c29c00e05df58cc548ed5c277e6b</guid>
        <pubDate>Sat, 06 Dec 2025 16:42:32 +0000</pubDate>
                <atom:updated>Tue, 09 Dec 2025 12:53:50 +0000</atom:updated>
                <description><![CDATA[
            <p><strong>Section:</strong> streams</p>
            <p><strong>Date:</strong> 06-12-2025 16:42:32</p>
            <p><strong>Description:</strong> Le mix Electro dont vous etes le héros du 03/11/2023.
Après une tempête et une coupure d&#039;électricité m&#039;ayant obligé a reporter, un bug de réseau ayant coupé le flux, le voici.
Le Mix live elec...</p>
            <hr>
            <p>Le mix Electro dont vous etes le héros du 03/11/2023.
Après une tempête et une coupure d'électricité m'ayant obligé a reporter, un bug de réseau ayant coupé le flux, le voici.<br />
Le Mix live electro dont vous avez choisit chaque morceau .
Mixer par K0d live de kodstud.
Enjoy!  </p>
<p>logiciels utilisés (tous open source) :  </p>
<p>pour la playlist:<br />
<a href="https://blog.kodcast.com#projet-djheros">Djheros</a><br />
<a href="https://blog.kodcast.com#projet-djheros-connector-connecter-djheros-nicotine-pour-automatiser-vos-flux-musicaux">Djheros_connector</a>  </p>
<p>pour le son :
Jack et Jack Audio Connection Kit<br />
Mixxx<br />
Vlc  </p>
<p>pour l'image et le stream :<br />
Obs<br />
projectM  </p>
        ]]></description>
        <category>streams</category>
    </item>
        <item>
        <title>Dépasse les bornes vol 1</title>
        <link>http://blog.kodcast.com/index.php#streams</link>
        <guid isPermaLink="true">http://blog.kodcast.com/index.php#streams-74636d5ce426196456ccdd00e5a66a20</guid>
        <pubDate>Sat, 06 Dec 2025 16:35:41 +0000</pubDate>
                <atom:updated>Tue, 09 Dec 2025 12:53:29 +0000</atom:updated>
                <description><![CDATA[
            <p><strong>Section:</strong> streams</p>
            <p><strong>Date:</strong> 06-12-2025 16:35:41</p>
            <p><strong>Description:</strong> Dépasse les bornes vol 1 :
Dans ce premier tuto, je vous explique comment installer Lakka sur un ordi de récup&#039; .
Liens utiles :
http://lakka.tv/
https://www.balena.io/etcher/
...</p>
            <hr>
            <p>Dépasse les bornes vol 1 :</p>
<p>Dans ce premier tuto, je vous explique comment installer Lakka sur un ordi de récup' .</p>
<p>Liens utiles :</p>
<p><a href="http://lakka.tv/">http://lakka.tv/</a></p>
<p><a href="https://www.balena.io/etcher/">https://www.balena.io/etcher/</a></p>
        ]]></description>
        <category>streams</category>
    </item>
        <item>
        <title>DjHeros</title>
        <link>http://blog.kodcast.com/index.php#projets</link>
        <guid isPermaLink="true">http://blog.kodcast.com/index.php#projets-b9ae98a37efb14df22db204cef9cd818</guid>
        <pubDate>Fri, 05 Dec 2025 15:32:39 +0000</pubDate>
                <atom:updated>Mon, 08 Dec 2025 17:58:43 +0000</atom:updated>
                <description><![CDATA[
            <p><strong>Section:</strong> projets</p>
            <p><strong>Date:</strong> 05-12-2025 15:32:39</p>
            <p><strong>Description:</strong> Quand un DJ libriste met la main à la pâte : retour d’expérience sur la création de DjHeros, un petit projet open-source pensé pour les DJs, les organisateurs et tous ceux qui veulent gérer le...</p>
            <hr>
            <p><strong>Quand un DJ libriste met la main à la pâte</strong> : retour d’expérience sur la création de DjHeros, un petit projet open-source pensé pour les DJs, les organisateurs et tous ceux qui veulent gérer les demandes musicales facilement.</p>
Contexte : pourquoi DjHeros existe
<p>En tant que DJ depuis plus de vingt ans, je me suis souvent retrouvé confronté à ce problème : comment gérer les demandes de morceaux de manière simple et efficace, surtout quand on est en plein set ? Entre les notes manuscrites, les messages sur le téléphone ou les emails, tout devient vite chaotique.  </p>
<p>Je suis aussi un passionné de logiciels libres et open-source, et j’aime garder mes outils simples, légers et adaptables. C’est ainsi qu’est né <strong>DjHeros</strong> : un petit système pour centraliser les demandes musicales, facilement configurable et accessible depuis n’importe quel navigateur.</p>
Présentation de DjHeros
<p>DjHeros est un outil minimaliste mais puissant. Son objectif ? Permettre au DJ de recevoir et gérer les propositions musicales en temps réel, avec une interface claire et simple.  </p>
Fonctionnalités principales
<ul>
<li>Soumission de morceaux via une interface web par le public ou les organisateurs.  </li>
<li>Acceptation, refus ou suppression des morceaux par le DJ.  </li>
<li>Stockage des demandes dans un fichier JSON pour une gestion simple et transparente.  </li>
<li>récupération des morceaux validés aux formats désiré avec <a href="https://blog.kodcast.com#projet-djheros-connector-connecter-djheros-nicotine-pour-automatiser-vos-flux-musicaux">Djheros_connector</a> </li>
<li>Intégration facile dans n’importe quel workflow de soirée ou de streaming.</li>
</ul>
Tech stack
<ul>
<li><strong>Langage :</strong> PHP (fonctionne sur tout serveur web moderne).  </li>
<li><strong>Données :</strong> JSON pour la simplicité et la portabilité.  </li>
<li><strong>Licence :</strong> Open-source (chaque DJ peut adapter l’outil à ses besoins).</li>
</ul>
<p>L’idée est de garder le projet léger et rapide à déployer, sans dépendances complexes.</p>
Installation et utilisation
<p>Pour utiliser DjHeros, rien de compliqué :  </p>
<p>. <strong>Pré-requis :</strong> serveur web avec PHP ≥ 7.4 et droits d’écriture sur le fichier JSON.<br />
. <strong>Installation :</strong>  </p>
<ul>
<li>Cloner le dépôt GitHub ou télécharger l’archive.  </li>
<li>Mettre les fichiers sur votre serveur web.  </li>
<li>Vérifier les droits d’écriture sur <code>requests.json</code>.<br />
. <strong>Utilisation :</strong>  </li>
<li>Les participants soumettent leurs demandes via l’interface.  </li>
<li>Le DJ consulte la liste, accepte ou refuse les morceaux, et met à jour le fichier JSON.  </li>
</ul>

<p>Exemple concret : pendant un stream ou une soirée, le public peut proposer ses morceaux sans interrompre le set, et tout reste organisé et consultable en temps réel.</p>

Pourquoi j’ai développé DjHeros
<p>Créer DjHeros m’a permis de <strong>répondre à un besoin pratique</strong> tout en respectant mes principes :  </p>
<ul>
<li><strong>Open-source et libre :</strong> chacun peut contribuer ou adapter l’outil.  </li>
<li><strong>Simplicité :</strong> pas de dépendances lourdes, facile à déployer sur n’importe quel serveur.  </li>
<li><strong>Pratique pour les DJs :</strong> un flux simple pour gérer les demandes, sans distraction.  </li>
</ul>
<p>C’est un projet qui incarne ma philosophie : des outils utiles, accessibles et partageables.</p>
Perspectives et évolutions
<p>DjHeros est déjà fonctionnel, mais plusieurs améliorations sont possibles :  </p>
<ul>
<li>Interface graphique améliorée pour le DJ.  </li>
<li>Notifications en temps réel pour chaque nouvelle demande.  </li>
<li>Compatibilité avec d’autres outils ou logiciels de streaming.  </li>
</ul>
<p>Je reste ouvert aux idées, retours et contributions. L’objectif est de faire évoluer l’outil pour qu’il serve à toute la communauté.</p>
Conclusion
<p>DjHeros est un exemple concret de ce que peut produire la passion pour la musique et le logiciel libre. Il simplifie la vie des DJs, rend les soirées plus fluides et favorise la participation du public.  </p>
<p>Si vous êtes DJ, organisateur ou simplement curieux, testez DjHeros, partagez vos retours, proposez vos améliorations, et contribuez à ce petit projet open-source.  </p>

<p>Pour découvrir DjHeros et le tester : <a href="https://github.com/kodcast/DjHeros">DjHeros sur GitHub</a>  </p>


<p><em>K0d</em></p>        ]]></description>
        <category>projets</category>
    </item>
        
</channel>
</rss>
