Cet article est aussi publié dans le forum, où vous pouvez en discuter. Voir la discussion

Vos platines Denon DJ savent isoler une voix ou couper une batterie en plein mix. Encore faut-il des stems propres. StemsPrime est un logiciel Windows gratuit qui sépare n’importe quel morceau en quatre parties (voix, basse, batterie, mélodie) avec des modèles de séparation récents, calculés sur votre ordinateur, puis fabrique le fichier .stems et l’installe dans votre bibliothèque Engine DJ. Il importe aussi les stems venus d’ailleurs (Suno, export de DAW, Native Instruments) et vous aide à vérifier, comparer et ranger le tout.











Séparer vos morceaux en quatre parties, sur votre ordinateur
Le cœur de StemsPrime, c’est l’outil « Créer vos stems à partir d’une simple musique ». Vous lui donnez un morceau (WAV, AIFF, FLAC, MP3 ou M4A), il en tire quatre fichiers : la voix, la basse, la batterie et la mélodie. Le calcul se fait entièrement chez vous. Aucune musique n’est envoyée sur Internet : seuls les modèles de séparation sont téléchargés, une seule fois, depuis leurs éditeurs d’origine.
Plusieurs modèles sont proposés :
- Demucs, le moteur de base, indispensable (environ 316 Mo). Un seul réseau rend les quatre parties en une passe. Comptez environ 10 secondes pour un morceau de 5 minutes sur une carte NVIDIA récente, une minute sur processeur.
- Demucs FT, quatre réseaux spécialisés, un par partie. La voix et la basse sont nettement plus propres, au prix d’un calcul quatre fois plus long (environ 30 secondes pour 5 minutes sur carte NVIDIA, 4 à 5 minutes sur processeur).
- Mel-Band Roformer, le plus fin sur la voix : il reconnaît des syllabes discrètes que les autres modèles rangent dans l’accompagnement. Une carte NVIDIA est conseillée.
- MDX Voc_FT et MDX Inst HQ 3, deux modèles légers (environ 66 Mo chacun) spécialisés dans la voix et dans l’instrumental, plus une combinaison « Demucs + Voc_FT » qui fusionne deux estimations de la voix.
L’astuce de StemsPrime tient dans ses deux sous-onglets « Modèle de la voix » et « Modèle de la mélodie ». Vous confiez la voix au modèle le plus fin, Roformer par exemple, et Demucs tire la batterie, la basse et la mélodie de ce qui reste. Chacun fait ce qu’il fait le mieux.
Une carte graphique NVIDIA récente accélère fortement le calcul : l’accélération s’installe depuis les paramètres en un clic (environ 1,2 Go de bibliothèques NVIDIA). Sans elle, tout fonctionne sur le processeur, simplement plus lentement. Un bouton « Benchmark… » mesure la vitesse de votre machine pour que les durées annoncées soient réalistes.

Choisir le bon modèle à l’oreille, sur votre morceau
Aucun modèle ne gagne sur tous les morceaux. Chaque modèle porte un badge de qualité attendue (des étoiles pour la voix et pour l’instrumental), tiré des mesures publiées par MVSEP. Ce sont des moyennes. Pour savoir ce que donne un modèle sur votre morceau, StemsPrime propose un mode test.
Vous posez un extrait de 3 à 90 secondes sur la forme d’onde, en choisissant un passage où la voix et les instruments se mêlent. Vous cochez les modèles et les variantes à essayer (nombre de passes, attaque, fusion). StemsPrime lance les essais, puis affiche chacun avec ses quatre pistes colorées, une note (« Excellent », « Bon », « Moyen », « Faible ») et un lecteur commun. Vous écoutez, vous gardez la voix d’un essai et les instruments d’un autre, puis un bouton sépare toute la musique sur ce principe.
Après une séparation, « Analyser le résultat contre le master » additionne les quatre parties et les compare au morceau d’origine : fidélité, niveau, spectre par bande, aigus, stéréo, bruit, décalage, avec un score sur 100. Les analyses sont enregistrées pour comparer deux moteurs sur le même titre.

Fabriquer et installer le .stems sans bricoler la bibliothèque
Un fichier .stems d’Engine DJ est un MP4 qui contient quatre paires stéréo dans un flux AAC de huit canaux. Il ne porte aucun nom de partie ni aucune étiquette : ce sont la place des paires et la base de données d’Engine qui font tout. StemsPrime reproduit ce format fidèlement (même disposition de canaux, même débit de 640 kbit/s, même version d’encodeur AAC qu’Engine DJ) et relit chaque fichier produit, trame par trame, avant de l’annoncer comme bon.

Installer un .stems demande d’écrire dans la base d’Engine (titre, artiste, album, genre, année, tempo, tonalité, pochette, playlist) et de nommer le fichier exactement comme Engine l’attend. StemsPrime s’en charge :
- la piste est inscrite dans la base du disque où vit la musique, et la playlist est copiée dans toutes les bases branchées, comme le fait Engine,
- la pochette est recadrée au carré et mise au format d’Engine,
- le .stems est posé dans le dossier « Stems » de la bibliothèque sous le nom attendu,
- une durée qui ne colle pas à celle de la piste (plus de 2 secondes d’écart) est signalée avant l’installation, pour éviter des stems désynchronisés.
Côté sécurité, StemsPrime refuse d’écrire tant qu’Engine DJ est ouvert, propose une copie datée de la base avant la première écriture de chaque session, et garde à côté tout fichier qu’il remplace. Un outil « Sauvegardes de la base » permet de restaurer une copie à tout moment.
Un mode guidé qui ne montre que l’utile
L’onglet « Bibliothèque Engine » pose deux questions. D’abord, quelle bibliothèque ? Le bouton « Détecter » trouve celle de l’ordinateur et celles des disques et clés branchés. Ensuite, que voulez-vous faire ? Neuf tuiles répondent :
- ajouter une musique avec ses stems (export de DAW ou zip Suno),
- poser des stems sur une musique déjà présente,
- créer vos stems à partir d’une simple musique,
- corriger les étiquettes d’une musique,
- importer un fichier Native Instruments,
- convertir entre Engine et Native Instruments,
- comparer deux ou trois stems à l’oreille,
- ouvrir un .stems existant,
- redémixer un master Engine en stems, avec un autre modèle.
Selon votre choix, seules les étapes utiles apparaissent : la piste à choisir, le fichier à poser, les étiquettes à remplir. Un volet « Autres outils » réunit le reste : remplacer le master d’une piste sans stems, contrôler la cohérence de la bibliothèque, fabriquer un master à partir des stems, gérer les sauvegardes, traduire Engine DJ.

Vos stems venus d’ailleurs : Suno, DAW et Native Instruments
Vous produisez dans Ableton, Logic, FL Studio ou Reaper, ou vous générez des morceaux avec Suno ? Leurs exports donnent souvent bien plus de quatre pistes. Déposez le zip de Suno ou le dossier de votre DAW sur la fenêtre : StemsPrime range chaque fichier dans l’une des quatre parties, d’abord par son nom (« Lead Vocals », « Kick », « Bass »…), puis par une mesure d’énergie pour les noms muets. La fenêtre « Ranger les parties » vous laisse tout vérifier à l’oreille, régler un gain par partie et viser un niveau de loudness (de -8 à -16 LUFS) avant de fabriquer. Si le mixage complet manque, StemsPrime le fabrique en additionnant vos pistes.
Les fichiers .stem.mp4 de Native Instruments (Traktor, Mixxx, banques de stems) portent déjà la musique, ses quatre parties, sa pochette et ses étiquettes. StemsPrime les convertit au format Engine et les installe, un par un ou par dossiers entiers. Dans l’autre sens, un .stems de votre bibliothèque devient un .stem.mp4 lisible par Traktor, Ableton, Serato ou djay.
Des lots pour toute une collection
Séparer un morceau, c’est bien. Toute une playlist ou toute la collection, c’est mieux. Le cadre « En lot » prend un dossier (sous-dossiers compris), une playlist ou toute la collection, compte ce qu’il y a à faire, puis enchaîne pour chaque musique la séparation, la fabrication du .stems, l’ajout à la bibliothèque si besoin et l’installation.

Ce qui a déjà ses stems est sauté, sauf si vous demandez de refaire. Une erreur sur un morceau n’arrête pas les autres. Si vous annulez, le lot reprend au lancement suivant. Les imports en série fonctionnent sur le même principe pour les dossiers de .stem.mp4 et de zips Suno, avec un rapport HTML et CSV pour Native Instruments. Un dossier surveillé peut même importer automatiquement tout .stem.mp4 qui y arrive. Et un album rippé en un seul fichier avec sa feuille .cue se découpe en morceaux prêts pour le lot.
Écouter, comparer, vérifier
StemsPrime ne vous demande pas de le croire sur parole :
- le lecteur de stems joue les parties que vous cochez, avec leurs formes d’onde en couleur et un volume par partie,
- la comparaison A, B et C fait avancer deux ou trois versions du même morceau ensemble, un interrupteur choisit celle que vous entendez, et « Aligner B sur A » compense un décalage,
- « Vérifier la synchro » soustrait le mixage d’un .stems au morceau d’origine et dit, en décibels, si les deux sont alignés,
- « Comparer un master et ses stems » retrouve l’instrument oublié à l’export d’un DAW et peut en faire une piste de plus,
- « Cohérence de la bibliothèque » liste les fichiers manquants, les pistes hors playlist (qui ne suivraient pas une exportation) et les .stems orphelins.
Une aide pour la platine elle-même
L’onglet « Aide » va au-delà du logiciel. Une carte interactive du PRIME 4 G2 décrit chaque commande de la façade et de l’arrière, en français ou en anglais. Les guides officiels de Denon DJ et d’Engine DJ, en français et en anglais, se téléchargent en un clic et se lisent comme un livre, avec recherche dans le texte. Un tutoriel complet explique comment piloter un éclairage DMX depuis le PRIME 4 G2 avec SoundSwitch et Engine Lighting : branchement, adressage, projecteurs, lyres. Six vignettes expliquent enfin comment Engine range vos musiques d’un disque à l’autre.

Bonus pour les francophones : l’outil « Traduire Engine DJ » installe une traduction française de l’interface d’Engine DJ Desktop, et permet de créer toute autre langue de la même façon.
En pratique
- Configuration : Windows 10 ou 11, 64 bits. Une carte NVIDIA récente est facultative mais accélère fortement la séparation.
- Deux éditions : l’une avec .NET 10 embarqué, qui se suffit à elle-même, l’autre plus légère, qui demande .NET 10 Desktop installé.
- Installation : un seul fichier, StemsPrime.exe, qui est son propre installateur. Vous pouvez aussi l’utiliser sans l’installer.
- Modèles : Demucs (environ 316 Mo) est le seul indispensable. Les autres s’installent à la demande depuis la fenêtre « Modèles ».
- Clé Engine DJ : lire et fabriquer des .stems demande une clé. Au premier lancement, StemsPrime propose de la récupérer en un clic.
- Mises à jour : au démarrage, un bandeau signale une nouvelle version. Rien n’est installé sans votre accord, et le fichier téléchargé est vérifié avant d’être lancé.
- Langues : interface en français et en anglais.
- Prix : gratuit pour un usage personnel, sans limite de durée. Usage professionnel sur devis.
Documentation en français
Les guides utilisateurs officiels, traduits en français :
Comment StemsPrime fonctionne Éclairage DMX du PRIME 4 G2Carte interactive du PRIME 4 G2Télécharger StemsPrime
StemsPrime se télécharge gratuitement sur stemsprime.com. La documentation complète, écran par écran, avec une foire aux questions et un glossaire, se trouve dans le wiki de StemsPrime. Une question, une suggestion, un bug ? Le forum du logiciel est accessible depuis la page « À propos » des paramètres.
- À propos : « Signaler un bug » et « Suggestions » emportent aussi le code avis du moment.
- À propos : les liens vers le site deviennent des boutons, avec un bouton « Forum » en plus. L'avis et le forum emportent le code avis du moment.
- Aide : la carte interactive du PRIME 4 G2, « Comment ça marche » et le tutoriel éclairage s'ouvrent en ligne, toujours à jour. Sans connexion, un message l'indique.
- À propos : « Signaler un bug » et « Suggestions » emportent aussi le code avis du moment.
- À propos : les liens vers le site deviennent des boutons, avec un bouton « Forum » en plus. L'avis et le forum emportent le code avis du moment.
- Aide : la carte interactive du PRIME 4 G2, « Comment ça marche » et le tutoriel éclairage s'ouvrent en ligne, toujours à jour. Sans connexion, un message l'indique.
- Aide : les guides en français se téléchargent depuis leur nouvelle adresse.
- Boutons principaux : le texte reste lisible au survol.
- À propos : le code avis s'affiche en grand, sur un bouton qui le copie. Il change toutes les cinq minutes, et un cercle à côté montre le temps qu'il lui reste.
- À propos : des liens pour laisser un avis, signaler un bug, proposer une suggestion et consulter la FAQ.
- À propos : un code avis, à copier d'un clic, pour déposer un avis sur le site.
- Outils, Séparer : un bouton « Modèles… » ouvre l'écran des modèles de séparation (ce qui est installé, ce qui manque, ce que chacun pèse).
- Miroir des paquets : les poids à part d'un modèle (« .onnx.data », ceux du Roformer MIT) partent aussi sur le serveur. Ils restaient sur le poste, et le contrôle final disait que le serveur ignorait encore ce fichier.
- Comparaison des modèles : un essai ou l'extrait qui joue s'arrête quand on change d'étape, d'onglet, ou qu'on replie l'accordéon de la comparaison. La lecture continuait derrière, sans bouton visible pour l'arrêter.
- Comparaison des modèles : les boutons « Garder cette voix » et « Garder cette mélodie » passent au vert quand leur piste est gardée.
- Comparaison des modèles : la note de chaque essai compare maintenant ses deux mesures à celles du meilleur essai du même extrait. Les seuils fixes de la 3.419.0, réglés sur un mélange de test, classaient tous les essais « Faible » sur de vrais morceaux, où les chœurs, la réverbération et la basse font monter les mesures pour tous les modèles. Le meilleur essai est « Excellent », puis « Bon » jusqu'à 1,5 fois ses mesures, « Moyen » jusqu'à 2,5 fois, « Faible » au-delà ; la bulle du badge donne les deux rapports.
- Comparaison des modèles : une corbeille au bout de chaque ligne (voix, mélodie, et basse et batterie en quatre pistes) rejette cette piste seule : sa ligne et son fichier partent, le reste de l'essai demeure. Une voix ou une mélodie gardée cesse de l'être. Quand toutes les pistes d'un essai sont rejetées, l'essai part comme par « Rejeter », qui reste en haut de chaque essai. Les pistes rejetées le restent à la réouverture.
- Comparaison des modèles : les bulles d'aide de Demucs FT, MDX Voc_FT et MDX Inst HQ 3 suivent maintenant les mesures publiées. Voc_FT n'est pas « la voix la plus propre » ni Inst HQ 3 « l'accompagnement le plus propre » : Mel-Band Roformer est devant sur les deux, et Voc_FT rend même une mélodie un peu meilleure qu'Inst HQ 3. Demucs FT est un peu meilleur que Demucs sur toutes les parties, surtout la basse et la batterie, et pas seulement sur la voix.
- Comparaison des modèles : chaque essai porte une note mesurée sur votre morceau, « Excellent », « Bon », « Moyen » ou « Faible », en couleur, à la place du pourcentage. Elle tient compte de la voix restée dans la mélodie (ou les instruments) et des graves restés dans la voix (la basse et la grosse caisse). Le détail des deux mesures et les seuils sont dans la bulle du badge. Les essais se classent par note, puis par voix restée dans la mélodie.
- Séparation : chaque modèle porte un badge de qualité attendue, « Voix ★★★★☆ · Instru ★★★★☆ · rapide », dans le mode test, dans les onglets du modèle de la voix et de la mélodie, et à côté du choix Standard ou FT de l'outil Séparer. Les étoiles viennent des mesures publiées par MVSEP sur son jeu de test « Multisong », détaillées dans la bulle du badge (pour Demucs : aussi la basse, la batterie et la mélodie). Demucs + Voc_FT n'a pas de mesure publiée : son badge le dit.
- Créer vos stems à partir d'une simple musique : un mode test compare les modèles sur un extrait, en quatre pistes. Chaque essai rend la voix, la basse, la batterie et la mélodie, qui s'écoutent ensemble ou séparément, calées, en boucle. On garde la voix d'un essai et les instruments d'un autre, puis « Séparer toute la musique avec ces choix » les pose dans les onglets de l'outil et lance la séparation. Un même essai Demucs gardé pour les deux va dans l'onglet « Réglages ».
- Créer vos stems à partir d'une simple musique : le badge de puissance de la machine et le bouton « Benchmark… » y sont aussi, dans l'onglet « Réglages ». Lancé de là, le benchmark mesure sur la musique désignée dans l'outil.
- Créer vos stems à partir d'une simple musique (outil Séparer et lot) : les modèles de séparation servent aussi pour Engine, dans trois onglets aux réglages propres. « Réglages » garde Demucs (Standard ou FT, carte ou processeur) et ajoute ses passes. « Modèle de la voix » fait la partie voix avec le modèle choisi (Mel-Band Roformer, MDX Voc_FT, Demucs + Voc_FT, MDX Inst HQ 3…). Demucs tire alors la batterie, la basse et la mélodie du morceau moins cette voix : elles sont débarrassées des restes de voix, et les quatre parties additionnées redonnent le morceau. « Modèle de la mélodie » fournit, s'il est coché, l'instrumental dont Demucs tire ces trois parties. Passes, fusion, passe inversée et attaque se règlent dans chaque onglet. Une coche verte dit quels onglets servent.
- Comparaison des modèles : un clic sur une onde active sa ligne et la lit depuis l'endroit cliqué. Cliquer une voix remplace la voix qui jouait, cliquer une mélodie remplace la mélodie, comme avec les boutons. Le clic ne faisait que déplacer la tête de lecture.
- Comparaison des modèles et banc d'essai : Demucs, Demucs FT et Demucs + Voc_FT indiquent aussi « 1 passe ». Le nombre de passes n'était écrit qu'à partir de deux, ce qui rendait les essais moins faciles à comparer.
- Comparaison des modèles : les fichiers d'essai portent le nom du projet, le passage et les réglages qui les ont produits, par exemple « Mon projet - extrait 0m52.3s à 1m12.3s - roformer - voix.wav ». Un essai déjà calculé sur le même passage avec les mêmes réglages est repris au lieu d'être refait. L'extrait d'origine se nomme « … - (extrait d'origine).wav ».
- Chaque projet a son propre dossier d'essais. « Effacer les essais » supprime tous les fichiers d'essai du projet, et seulement les siens. Changer de passage ne supprime plus les essais du passage précédent.
- Comparaison des modèles : la lecture des essais repart de nouveau au début quand elle arrive au bout. Depuis la 3.405.1, elle continuait dans le silence.
- Comparaison des modèles : à chaque lancement des essais, l'extrait d'origine est exporté dans le même dossier que les voix et les mélodies, sous le nom « comparaison-0-extrait-d-origine.wav », en tête de la liste. L'icône dossier y mène.
- Comparaison des modèles : à la première ouverture, seul le modèle le plus fin parmi ceux installés est coché (Mel-Band Roformer s'il est là). Avant, tous les modèles installés l'étaient.
- Comparaison des modèles : une icône dossier au bout de chaque ligne de voix et de mélodie ouvre l'Explorateur sur le fichier de l'essai, sélectionné. L'extrait d'origine se trouve dans le même dossier.
- Comparaison des modèles : la voix et la mélodie écoutées ensemble sortent maintenant d'un seul lecteur, calées à l'échantillon près. Chaque piste avait son propre lecteur, et deux lecteurs ne démarrent jamais au même instant : la voix d'un essai et la mélodie d'un autre, qui contiennent chacune un peu de l'autre, s'additionnaient avec quelques millisecondes d'écart. Cela donnait un son métallique, nasillard, de type « flanger », le même sur tous les essais et aux mêmes endroits, qui masquait les différences entre les modèles.
- Comparaison des modèles : l'attaque se compare aussi à 70 % et à 150 %, pour des écarts plus marqués.
- Séparation : l'agressivité (l'attaque) agit maintenant fréquence par fréquence. Elle ne faisait que rendre la part extraite plus ou moins forte : la voix restait la même à l'oreille, plus ou moins fort, et seule la mélodie changeait, par une soustraction trop forte ou trop faible. Au-dessus de 100 %, la mélodie perd davantage de voix ; en dessous, la voix reste plus pure. La somme des deux redonne toujours le morceau, et à 100 % rien ne change.
- Avec MDX Inst HQ 3, qui extrait la mélodie et non la voix, l'attaque allait à l'envers : plus d'attaque mettait plus de voix dans la mélodie. Elle va maintenant dans le même sens que pour les autres modèles.
- Comparaison des modèles et banc d'essai : la mélodie de Demucs + Voc_FT est le morceau moins la voix renforcée. Elle restait celle de Demucs seul : toutes les variations du renfort avaient la même mélodie.
- Comparaison des modèles : une variation qui ne concerne aucun modèle coché est grisée, et le compte des essais le dit. Cocher deux attaques avec Roformer seul ne faisait qu'un essai, sans explication. La variante « par soustraction » n'est plus proposée pour Demucs + Voc_FT, dont la mélodie l'est déjà.
- Comparaison des modèles : les fusions sont rangées dans l'ordre, du plus faible au plus fort (le plus faible, la moyenne, le plus fort), dans les cases comme dans leur aide.
- Comparaison des modèles : une seule tête de lecture pour tous les essais. Passer d'un essai à l'autre reprend au même instant, et la tête se voit sur chaque onde (pleine sur la piste qui joue, estompée sur les autres).
- Un clic sur une onde y place la tête de lecture, pour tous les essais : ce qui joue y saute, et la prochaine piste lancée part de là.
- Comparaison des modèles : la pastille de chaque essai montre maintenant son rang dans la liste (1 : la mélodie la plus propre), et non plus son numéro de calcul. Chaque essai prend sa place dans le classement dès qu'il est prêt, au lieu de s'ajouter au bout jusqu'à la fin des calculs.
- Comparaison des modèles : chaque modèle et chaque variation a maintenant sa propre aide, à côté de son nom. Elle dit en deux phrases à quoi il sert et quand le choisir plutôt qu'un autre (Demucs pour une référence rapide, Voc_FT pour la voix la plus propre, Inst HQ 3 pour la mélodie la plus propre, Roformer pour le plus fin…). L'aide générale est raccourcie.
- Comparaison des modèles : les essais sont retenus. En rouvrant StemsPrime sur le même morceau, ils reviennent tels qu'on les avait laissés, avec leur extrait, les essais rejetés et la voix et la mélodie gardées. « Effacer les essais » repart de zéro.
- Comparaison des modèles : un bouton « Rejeter » sur chaque essai le retire de la liste, avec sa voix, sa mélodie et leurs fichiers. Relancer les essais sur le même extrait ne le refait pas. Si sa voix ou sa mélodie était gardée, elle ne l'est plus.
- Comparaison des modèles : une voix ou une mélodie lancée joue en boucle jusqu'à ce qu'on la mette en pause. Lancer une voix n'arrête que les autres voix, et lancer une mélodie que les autres mélodies : une voix et une mélodie de deux essais différents peuvent jouer ensemble.
- Un bouton « Effacer les essais » supprime tous les essais passés. Les choix gardés pour la voix et la mélodie restent.
- Installation : seuls les fichiers du programme sont copiés dans Program Files, et seulement s'ils sont identiques à ceux de la compilation. Lancé depuis un dossier qui contient d'autres fichiers (les Téléchargements, par exemple), StemsPrime n'emporte plus rien d'autre, et un fichier modifié depuis la compilation est refusé.
Audit des fonctions principales et de la sécurité.
**Sécurité**
- Les archives zip (import, modèles, moteur, bibliothèques NVIDIA) ne peuvent plus écrire hors de leur dossier.
- La mise à jour revérifie l'empreinte de l'installeur juste avant de le lancer. Les téléchargements de secours passent uniquement en HTTPS. Le rapport de débogage n'emporte que les journaux de StemsPrime, sans chemins personnels. **Séparation**
- Le renfort de la voix, la fusion des deux modèles et la passe inversée ne s'appliquaient jamais : leurs réglages étaient lus au mauvais moment et l'erreur passait inaperçue. Ils s'appliquent maintenant (la correction de la 3.392.1 n'avait donc aucun effet jusqu'ici).
- Le tempo détecté avec quelques dixièmes de BPM d'écart ne décale plus le premier temps. **Bibliothèque Engine et stems**
- L'import d'un morceau n'écrase plus un fichier existant. Le remplacement d'un master et l'installation des stems se font sans risque de perte, avec une copie numérotée de l'ancien fichier.
- Relancer « Traiter le lot » ne réimporte plus en double les fichiers déjà insérés.
- La suppression d'une piste oublie la bonne entrée du registre des conversions.
- L'ordre des parties choisi pour les stems est respecté partout. **Fenêtre principale**
- Les réglages et la session sont écrits de façon sûre, avec une copie de secours.
- Fermer la fenêtre annule proprement les travaux en cours. Refuser l'élévation de droits ne ferme plus StemsPrime.
- La langue est chargée dès le démarrage. Plusieurs textes restaient en français dans l'interface anglaise. **Comparaison des modèles**
- Les boutons de lecture sont alignés à gauche, celui qui joue est coloré, et la lecture s'arrête à la fin de l'extrait au lieu de reboucler.
- Lire un essai après un autre ne provoque plus d'erreur.
- Séparation : « Comparer tous les modèles sur un extrait ». Un encart sur l'onde du morceau choisit l'extrait (on le glisse, on tire ses bords, sa durée se règle aussi au curseur). On coche les modèles (Demucs, Demucs FT, MDX Voc_FT, MDX Inst HQ 3, Demucs + Voc_FT, Mel-Band Roformer) et les variations (passes, attaque de 85 à 130 %, fusion, passe inversée, mélodie par soustraction) : toutes les combinaisons utiles sont essayées, puis classées.
- Chaque essai se compare à l'écoute comme au banc d'essai, voix et mélodie en onde colorée. Sur chaque ligne, « Garder cette voix » et « Garder cette mélodie » se choisissent indépendamment, et « Séparer tout le morceau avec ces choix » sépare la voix selon un essai et la mélodie selon un autre.
- Séparation : le second modèle de voix (renfort, passe inversée, banc d'essai) rendait l'accompagnement à la place de la voix, et c'est lui qui était fusionné avec la voix du premier modèle. Selon la fusion choisie, la voix perdait des consonnes (« le plus faible », « la moyenne ») ou se chargeait d'instruments (« le plus fort »). Le second modèle apporte maintenant sa voix.
- Correction : quand la fenêtre est étroite, les boutons d'une étape passent sous son titre, au lieu de ne laisser au titre et au résumé que quelques lettres par ligne.
- Publication : ffmpeg est cherché sous son vrai nom. Dans un dossier de sources tout neuf, la vérification ne le trouvait jamais et lançait le script de téléchargement, avec sa question « Le remplacer ? » et sa pause. Il est désormais repris des ressources, ou téléchargé sans question dans la même fenêtre.
- Un bouton « recycler », à côté des boutons du projet, vide d'un clic le formulaire d'assemblage des quatre parties : fichiers, musique, étiquettes, pochette et sortie. Les réglages (ordre des canaux, disposition, débit, dossiers) sont conservés.
- Les quatre parties écrites par « Créer vos stems » sont numérotées dans l'ordre de la liste de l'étape suivante : 1 voix, 2 basse, 3 batterie, 4 autre.
- Le benchmark affiche son résultat quand il se termine : matériel, classe de la machine, vitesse mesurée et temps de séparation d'une minute de musique.
- Quand la fenêtre est étroite, les réglages et leurs libellés passent à la ligne au lieu d'être coupés au bord de l'écran.
- L'annonce de fin de séparation propose « Ouvrir le dossier », qui mène directement aux quatre parties.
- L'écran d'ouverture affiche le nouveau logo, avec le nom complet « StemsPrime ».
- Un bouton « Benchmark… » sépare quinze secondes de musique et mesure la vitesse de la machine. Les délais annoncés en sont désormais déduits au lieu d'être estimés sur des valeurs moyennes, et le mode guidé propose quatre passes à une machine rapide, deux à une moyenne, une à une lente ou non testée, le choix restant modifiable.
- Dans l'écran des modèles, le bouton « Installer » devient une barre de progression sur sa ligne pendant le téléchargement. Plusieurs modèles peuvent se télécharger en même temps, chacun avec sa propre barre, et l'état de chaque ligne indique ensuite le résultat.
- Mel-Band Roformer existe désormais aussi dans son export en licence libre. C'est le même modèle, mais la transformée du signal est faite par StemsPrime au lieu d'être intégrée au fichier : deux fichiers à télécharger, environ 710 Mo, qui restent côte à côte. Quand les deux exports sont installés, c'est celui-ci qui sert. Il figure dans l'écran des modèles et sur le serveur de secours.
- Un écran « Modèles… » liste tout ce qui est installé et tout ce qui manque, avec le rôle et le poids de chacun, et permet d'installer depuis un seul endroit. Les boutons d'installation étaient dispersés et n'apparaissaient qu'une fois la case correspondante cochée.
- Le modèle de renfort de la voix et Mel-Band Roformer sont désormais recopiés sur le serveur de secours, comme les autres modèles. Ils proviennent de publications GitHub de projets tiers, qui sont renommées ou retirées sans préavis : si la source d'origine disparaît, le téléchargement bascule tout seul sur le serveur.
- Mel-Band Roformer rejoint les moteurs de séparation. Il découpe le spectre selon l'échelle de l'oreille et fait dialoguer les bandes entre elles, là où les modèles précédents traitent chaque bande à part : c'est ce qui lui permet de reconnaître une syllabe discrète que les autres rangent dans l'accompagnement. Il rend la voix et l'accompagnement d'un seul passage, se coche à l'étape de séparation, et se télécharge une fois, environ 450 Mo. Sa licence est non commerciale. Compter un temps de calcul sensiblement plus long.
- Les deux modèles de voix se combinent désormais fréquence par fréquence, et non plus échantillon par échantillon : deux modèles ne se trompent pas aux mêmes fréquences, et comparer des échantillons revenait à choisir sur toutes les fréquences à la fois. Trois façons de les départager sont proposées — le plus fort, le plus faible, la moyenne — chacune expliquée dans sa bulle.
- Une passe inversée peut être ajoutée : le morceau repasse dans le modèle avec sa phase retournée et les deux sorties sont moyennées, ce qui atténue le bruit propre au réseau. Compter le double du temps sur cette étape.
- La voix peut être renforcée par un second modèle. Le premier range parfois un mot discret dans l'accompagnement ; un modèle entraîné autrement ne se trompe pas aux mêmes endroits. Les deux estimations sont comparées instant par instant et la plus forte est retenue, si bien qu'un mot vu par un seul des deux revient entier. L'accompagnement est ensuite refait par soustraction : la somme des deux pistes redonne exactement le morceau.
- Le modèle de renfort se télécharge une seule fois, environ 66 Mo, et le choix est retenu d'une séance à l'autre. Compter une minute de calcul de plus par morceau.
- Le journal de la séparation n'écrit plus chaque ligne en double, et les quatre spécialistes du modèle FT ne s'appellent plus « passes » comme les passes décalées : on lisait « passe 1/4 » à deux niveaux imbriqués, de quoi croire que tout le travail était fait seize fois.
- Le dépôt d'une mise à jour ne signale plus un échec alors que tout s'est bien passé : la vérification regardait le mauvais fichier quand un nouveau composant était déposé pour la première fois.
- Quand la séparation se fait en plusieurs passes, la barre d'avancement et le journal indiquent laquelle est en cours (« passe 2 sur 4 ») : quatre passes prennent quatre fois plus de temps, autant savoir où l'on en est.
- Le tempo est désormais calculé par la méthode de référence du domaine (l'algorithme d'Ellis, celui de la bibliothèque librosa) au lieu d'un calcul maison qui se trompait. Une mesure plus fine du sommet a été ajoutée : un métronome à 120 est lu 120, là où la méthode d'origine annonce 117.
- À savoir : aucun compteur de tempo, celui-ci comme les autres, ne sait choisir entre 76 et 152 pour un morceau dont l'accompagnement bat les croches — les deux sont justes, seule votre intention tranche. Quand vous connaissez la valeur, saisissez-la dans « Tempo (BPM) » : elle prime sur l'estimation.
- La recherche d'une mise à jour réagit tout de suite une fois le pare-feu autorisé, au lieu d'attendre plus d'une seconde entre deux tentatives.
- Le tempo détecté ne s'emballe plus : une grille deux fois trop rapide semblait toujours meilleure parce qu'elle a deux fois plus de chances de tomber sur un coup, ce qui donnait des valeurs comme 198 pour un morceau à 76. Le calcul tient compte de cet effet, et la valeur est ramenée dans la plage des chansons (55 à 190). Le détail du calcul est écrit au journal, pour comprendre d'où vient une valeur qui semble fausse.
- Fenêtre agrandie : la bande autour de la fenêtre est opaque au lieu de laisser voir le bureau.
- La barre du bas dit l'essentiel : clé, ffmpeg, et le nombre de moteurs et de modèles actifs.
- Au démarrage, la recherche des bibliothèques Engine sur les disques ne bloque plus la fenêtre pendant que les disques se réveillent, et n'interroge plus les lecteurs réseau ni optiques. Elle n'est refaite qu'une fois par minute.
- Le bouton « Arrêter » du bandeau de progression est enfin bien visible.
- Le bouton qui arrête un traitement est désormais bien visible.
- La fabrication d'un .stems affiche un vrai pourcentage pendant l'encodage et le mixage, lu sur l'avancement de l'encodeur, au lieu de sauter d'une phase à l'autre.
- Une page « Comment StemsPrime fonctionne » dans l'onglet Aide : le format .stems et son chiffrement, la base de données d'Engine, la séparation par réseau de neurones et la carte graphique, et ce qui part sur Internet.
- L'À propos dit qui écrit StemsPrime.
- Le pourcentage et le temps écoulé s'affichent maintenant aussi pendant le lot de séparation, le traitement d'un lot de fichiers, l'import d'une archive, la fabrication d'un .stems et la conversion automatique — plus seulement pendant la séparation.
- Avant de découper un album, on choisit les morceaux à garder : chaque piste de la feuille .cue se coche ou se décoche, avec sa durée.
- Un album livré en un seul fichier audio avec sa feuille .cue se découpe en morceaux : déposez le fichier (ou la feuille) sur la fenêtre, StemsPrime montre la liste des morceaux et propose de les découper avant d'importer. Chaque morceau reçoit son titre, son artiste, l'album, le genre et l'année de la feuille. Un fichier sans perte est réencodé en FLAC, exact à l'échantillon près ; un fichier compressé est copié tel quel, sans réencodage.
- Les morceaux découpés sont posés dans le lot de séparation, prêts à devenir des stems.
- « Remplacer le master d'une piste » devient « Remplacer le master d'une piste sans stems » : il ne propose plus que les pistes qui n'ont pas de stems, puisqu'un master changé sous des stems les rendrait faux. Pour une piste qui en a, refaites les stems.
- Le bandeau de progression n'affiche plus d'estimation de temps restant.
- Le rouet d'attente du démarrage est centré sous le logo, au lieu de tourner décalé.
- Correctif interne, sans effet visible.
- Correction : « Comparer un master et ses stems » égalise le gain avant de soustraire. Un master normalisé à part laissait un résidu de tout — voix comprise — pris pour l'instrument manquant, et remis dans l'accompagnement.
- Correctif interne, sans effet visible.
- Correctif interne, sans effet visible.
- Dans « Comparer un master et ses stems », les stems se désignent par un dossier ou par une archive, chacun avec son bouton. Les sélecteurs de fichiers filtrent sur les bons formats.
- Nouvel outil « Comparer un master et ses stems », côté Fichiers audio : la somme des stems doit redonner le morceau. Une coche verte si tout y est ; sinon ce qui manque — un instrument oublié à l'export — peut être écrit comme une piste de plus, pour Engine.
- La barre du bas ne répète plus le détail de l'étape en cours, déjà affiché sous le bloc : elle indique seulement qu'un traitement est en cours.
- Le temps écoulé avance en continu pendant un travail, même quand l'étape en cours ne rapporte rien.
- Correctif interne, sans effet visible.
- Correctif interne, sans effet visible.
- Correctif interne, sans effet visible.
- Correctif interne, sans effet visible.
- Correctif interne, sans effet visible.
- Correctif interne, sans effet visible.
- Les traitements longs indiquent où ils en sont : pourcentage, temps écoulé et estimation du temps restant. L'estimation ne s'affiche qu'une fois fiable, et reste stable même quand le rythme varie.
- Correction : un fichier que ffmpeg ne sait pas lire provoquait un message parlant d'un fichier introuvable, sans rapport avec la vraie cause.
- Correctif interne, sans effet visible.
- Correctif interne, sans effet visible.
- Correctif interne, sans effet visible.
- StemsPrime sait lire les feuilles .cue qui accompagnent les albums livrés en un seul fichier, et repérer où commence chaque morceau. Le découpage lui-même arrive dans une prochaine version.
- Correction : une playlist pouvait annoncer un nombre de pistes différent selon l'endroit où on le lisait. Les entrées qui pointent vers une piste absente — disque débranché, piste supprimée — étaient comptées à un endroit et pas à l'autre. C'est désormais partout le nombre de pistes réellement présentes.
- Correctif interne, sans effet visible.
- Une pochette StemsPrime est posée sur les morceaux qui n'en ont aucune, plutôt que de les laisser en gris dans Engine. Elle se remplace comme n'importe quelle autre.
- Quand le serveur est occupé, StemsPrime prend un rang dans la file et attend son tour tout seul : le téléchargement part dès qu'une place se libère, en indiquant la position pendant l'attente. Il fallait auparavant réessayer à l'aveugle.
- Correction : les copies de stems mises de côté par StemsPrime n'étaient pas reconnues comme des .stems. L'écoute comparée après un redémixage échouait, et il était impossible de remettre les stems d'avant.
- Après un remplacement de stems, StemsPrime propose d'écouter l'ancien et le nouveau côte à côte : c'est la seule façon de juger si le changement de moteur valait la peine.
- Le redémixage va maintenant jusqu'au bout : une fois le .stems fabriqué, StemsPrime propose de le poser sur la piste d'où l'on est parti, sans avoir à la redésigner ni à retrouver le fichier.
- Le réglage « Ancien .stems » est maintenant appliqué : quand vous refaites les stems d'une piste, l'ancien fichier est gardé à côté, archivé avec sa date, ou effacé, selon votre choix.
- Le redémixage garde en mémoire la piste dont il est parti : une fois la séparation finie, StemsPrime rappelle ce qu'il reste à faire et la piste est déjà choisie dans l'outil.
- « Remplacer les stems d'une piste » devient « Redémixer un master Engine en stems », ce qui dit enfin ce que fait l'outil : reprendre le master de la piste et le redécouper avec un autre moteur.
- Le bouton conduit maintenant au démixage, en reprenant le master de la piste choisie. Il renvoyait vers l'assemblage de fichiers individuels, qui n'a rien à voir.
- Correction : conduire vers un outil rangé dans l'autre famille ne faisait rien du tout.
- L'outil de traduction d'Engine DJ montre trois langues au lieu d'une : il laissait croire qu'il ne traduisait qu'en français, alors qu'il permet de créer n'importe quelle langue.
- L'onglet « Outils » est séparé en deux : les outils qui travaillent sur la bibliothèque Engine, et ceux qui ne touchent qu'à des fichiers de votre disque. On sait désormais ce qu'on risque avant de cliquer.
- Les textes des outils sont réécrits pour être compris du premier coup : ce que vous donnez, ce que vous obtenez, à quoi ça sert. Le vocabulaire est fixé — on parle de master et de .stems, « sous Engine » ou « local », et plus de quatre mots pour la même chose.
- « Remplacer les stems » annonce, dès qu'une piste est choisie, avec quel modèle ses stems ont été fabriqués et si la musique a changé depuis — auquel cas les stems ne lui correspondent plus.
- Le bouton « Celui de l'étape 2 » ne se contente plus de constater qu'aucun .stems n'a été fabriqué : il propose d'aller en fabriquer, en reprenant la musique de la piste choisie.
- StemsPrime retient maintenant, pour chaque .stems installé, avec quel moteur il a été fabriqué et à partir de quel master.
- Correction : les outils qui travaillent sur une piste d'Engine s'ouvraient depuis l'accueil même quand la bibliothèque n'en proposait aucune, sur un formulaire que rien ne pouvait remplir.
- StemsPrime retient désormais avec quel moteur les stems de chaque piste ont été fabriqués, et à partir de quel master. Cet historique prépare la refonte de « Remplacer les stems ».
- Nouveau réglage : ce qu'il advient de l'ancien .stems quand on le refait — le garder à côté, l'archiver ailleurs, ou ne rien garder.
- Correctif interne : le déplacement des fenêtres par leur barre de titre et l'arrondi de leurs cadres n'ont plus qu'une seule implémentation. Deux fenêtres pouvaient rester accrochées au pointeur après un clic très bref ; elles bénéficient maintenant de la vérification qui n'existait que dans la fenêtre principale.
- Les deux outils qui fabriquent un master disent clairement ce qui les distingue : l'un part d'une piste de la bibliothèque Engine, l'autre ne touche pas à Engine du tout et ne fait que rassembler des fichiers posés sur le disque.
- Les tuiles se lisent toutes dans le même sens : le résultat à gauche, ce dont il part à droite. Deux d'entre elles allaient dans l'autre sens.
- « Fabriquer le master d'un stems » a sa propre icône : elle portait la même que « Fabriquer un master à partir de sources », et les deux outils semblaient faire la même chose.
- Les stems de la première tuile portent leur onde, comme partout ailleurs.
- Les icônes « Corriger les étiquettes » et « Cohérence de la bibliothèque » sont plus grandes, et la seconde a été redessinée : elle montre maintenant une vérification de liste.
- Nouveau réglage « Onglets des disques » : les onglets de la bibliothèque peuvent afficher la lettre de lecteur, le nom du volume, ou les deux.
- L'état de la bibliothèque tient en une ligne : le nombre de pistes et de disques. Tout le détail est dans les onglets, un par disque, avec son nombre de pistes propre.
- L'onglet de la bibliothèque installée par Engine DJ porte une étoile, et l'onglet ouvert est celui de la bibliothèque en cours.
- La bibliothèque Engine est désormais protégée à la source : plus aucune modification n'est possible tant qu'Engine DJ est ouvert, quel que soit l'outil utilisé.
- Les pochettes acceptent tous les formats d'image courants : StemsPrime les convertit en JPEG et les redimensionne. Une image démesurée est refusée avec une explication au lieu de faire ramer le logiciel.
- Un fichier illisible ou d'un format inattendu indique lequel et pourquoi, au lieu d'un message technique.
- Les durées s'écrivent partout de la même façon.
- Quatre messages de la fenêtre de traduction restaient en français quelle que soit la langue choisie.
- Le bouton de suppression de la bibliothèque, et la confirmation qui suit, ne mentionnent les stems que si la sélection en contient. Le morceau y est appelé « master », comme ailleurs.
- Dans la bibliothèque, « Ouvrir le dossier des stems » n'apparaît plus sur les pistes qui n'en ont pas : l'entrée menait droit à un « fichier introuvable ».
- Les titres des tuiles sont centrés, même sur deux lignes.
- Les icônes des tuiles sont toutes à la même taille : le master, les piles de stems et les autres objets allaient de 28 à 44 pixels selon la tuile.
- L'icône des sauvegardes est redessinée : l'ancienne montrait un trait vert qu'on ne reconnaissait pas.
- Le détail de la bibliothèque adopte les onglets du reste du logiciel, ouvre d'emblée celui du disque choisi, et ne répète plus au-dessus ce que cet onglet dit déjà.
- « (défaut) » apparaît à côté du dossier quand c'est la bibliothèque qu'Engine DJ ouvre seul.
- Correction : dans le détail de la bibliothèque, le disque ouvert était décrit deux fois, les rôles apparaissaient sur deux lignes identiques, et les onglets des disques se superposaient au contenu.
- Le détail de la bibliothèque présente un onglet par disque, avec son dossier et son identifiant, au lieu d'une longue énumération de noms illisible dès quatre disques.
- Correction : ce détail restait affiché dans les couleurs du thème sombre après un passage en thème clair, donc illisible.
- L'assistant ne numérote plus les étapes : leur nombre dépend de ce que vous venez faire, et « 2 sur 4 » annonçait un parcours que personne ne suivait.
- Le diagnostic complet produit aussi une page lisible, en couleurs, avec le verdict et la prévision de durée en tête et le détail en dessous. Elle s'ouvre d'un clic à la fin.
- Les moteurs de calcul sont listés un par un : celui qui est intégré à StemsPrime, ceux qui sont installés à part, et une coche pour ceux qui sont réellement chargés.
- Le bouton du diagnostic affiche un rouet pendant la mesure.
- Le diagnostic complet traduit ses mesures en temps d'attente réel : pour chaque moteur, la durée qu'il faudrait pour séparer un morceau de cinq minutes, ouverture du modèle comprise.
- Quand la clé récupérée est exactement celle déjà utilisée, StemsPrime le dit et ne touche à rien, au lieu d'annoncer un enregistrement qui ne change rien.
- L'état de la bibliothèque tient sur une ligne — combien de pistes, sur quel disque — et son détail se déplie à la demande, une ligne par renseignement, au lieu d'une longue phrase.
- La bibliothèque installée par Engine DJ est signalée comme telle : « (par défaut) ».
- Correction : en fenêtre classique, le logo se décalait vers la droite.
- Les bords de la fenêtre s'attrapent enfin là où on les voit : la zone de redimensionnement couvrait l'espace transparent autour de la fenêtre au lieu de son bord visible.
- Correction : en fenêtre classique, un trait clair apparaissait sous la barre de titre.
- L'écran d'ouverture reste affiché trois secondes, et les trois pastilles s'y allument en boucle pendant tout ce temps.
- Correction : dans les paramètres, l'onglet ouvert avait perdu son trait supérieur et descendait d'un pixel de trop.
- La rubrique « Outillage » des paramètres s'appelle maintenant « Stems ».
- Correction : l'assombrissement des fenêtres commençait quelques pixels trop haut, laissant la barre de titre dépasser par-dessus.
- Correction : l'assombrissement des fenêtres ne couvrait pas exactement la barre de titre.
- Correction : un trait restait visible sous l'onglet ouvert, dans les paramètres.
- Le réglage des bords propose maintenant une vraie fenêtre classique : barre de titre sur toute la largeur, coins arrondis et ombre portée, sans aucune zone transparente derrière les trois boutons. L'ancienne option « pleins sans marge » laissait les boutons flotter sur le bureau.
- Correction : dans les paramètres, les zones de saisie et les boutons se confondaient avec le fond de la page, faute de contraste.
- Les rubriques des paramètres se présentent enfin comme des onglets : la rubrique ouverte est rattachée à sa page, au lieu d'une rangée de boutons colorés où l'on ne voyait pas où l'on se trouvait.
- Nouveau réglage « Bords de la fenêtre » : arrondis avec ombre portée comme aujourd'hui, pleins sans marge autour, ou automatique — arrondis quand la fenêtre est posée au milieu de l'écran, pleins dès qu'elle est agrandie. Un liseré gris remplace alors l'ombre.
- Les nouveautés ne s'affichent plus à l'ouverture : elles sont présentées au moment de la mise à jour, dans un cadre à elles, là où elles servent vraiment à décider.
- Les fenêtres qui s'ouvrent par-dessus assombrissent celle du dessous, pour qu'on sache où répondre. Les paramètres s'ouvrent désormais à la taille de la fenêtre.
- L'écran d'ouverture couvre aussi l'onglet du titre.
- Les trois pastilles de la fenêtre s'allument l'une après l'autre au démarrage.
- Un bouton « Obtenir la clé… » permet de récupérer la clé Engine DJ à tout moment, depuis les paramètres ou depuis le bandeau de l'onglet de création. Jusqu'ici, répondre « plus tard » à la question du premier lancement fermait la porte définitivement.
- Une mise à jour prévient maintenant avant de fermer StemsPrime : le téléchargement terminé, un message annonce l'installation et le redémarrage, et laisse le temps de finir ce qui est en cours. Auparavant la fenêtre se fermait sans un mot.
- Correction : une fine bande claire apparaissait par moments sous l'onglet du titre, selon la position et la taille de la fenêtre.
- StemsPrime sait maintenant lire les informations d'un morceau là où elles se trouvent : les étiquettes du fichier d'abord, puis un .cue, un .log ou un .nfo posé à côté, et enfin le nom du fichier. Il repère aussi les pochettes du dossier et retient d'où vient chaque information.
- Dans un .cue, le titre propre à chaque morceau est retrouvé même quand le fichier ne décrit pas le disque, et la signature du logiciel de gravure n'est plus prise pour un commentaire.
- Les listes .m3u sont lues elles aussi : sur une compilation, chaque morceau retrouve son interprète au lieu d'hériter d'un « Various Artists » commun.
- Les pochettes rangées dans un sous-dossier (« Artwork », « Scans », « Covers »…) sont trouvées elles aussi, sans passer devant une image posée à côté des morceaux.
- Vocabulaire et icônes unifiés : le fichier audio complet s'appelle « master » partout, et porte partout le même dessin. Il était tantôt appelé « musique » avec une icône de note, tantôt « master » avec une autre, ce qui donnait l'impression de deux fichiers différents.
- Correction : la molette ne faisait plus défiler la page dès que le pointeur passait sur une liste (choix de la piste, sauvegardes, sources du master). Les listes ne gardent maintenant la molette que lorsqu'elles ont vraiment de quoi défiler.
- L'onglet « Créer le .stems » affiche un bandeau quand la clé Engine DJ manque, avec un bouton pour aller la charger : plus besoin de découvrir le problème au moment de fabriquer. Les explications au survol apparaissent maintenant aussi sur les boutons grisés.
- L'écran d'ouverture épouse exactement la fenêtre, sans déborder sur ses bords transparents.
- Sans la clé Engine DJ, les outils qui lisent ou fabriquent des .stems sont maintenant grisés, avec une explication au survol, au lieu de mener à un message d'erreur une fois lancés. Les outils qui n'en ont pas besoin (étiquettes, cohérence, traduction, sauvegardes, séparation) restent utilisables.
- La mise à jour se conduit entièrement depuis les paramètres : chercher une version, lire ce qui change, installer. Le bandeau en bas de la fenêtre ne fait plus que prévenir et y renvoie, au lieu de proposer un second bouton d'installation ailleurs.
- Correction : le téléchargement d'une nouvelle version échouait avec une erreur 500.
- Dans « Créer vos stems à partir d'une simple musique », deux voyants disent d'un coup d'oeil si tout est prêt : le modèle choisi est-il téléchargé, et la carte graphique sera-t-elle vraiment utilisée. Un moteur installé mais pas encore chargé est signalé comme tel, avec l'invitation à redémarrer.
- La case du calcul sur processeur précise qu'elle concerne la séparation des stems.
- L'accélération NVIDIA s'installe en une seule fois : le moteur et les bibliothèques de calcul s'enchaînent, avec un seul redémarrage à la fin. Avant, il fallait deux clics et on pouvait rester avec un moteur installé mais inutilisable.
- Le journal indique désormais d'où vient chaque fichier installé : source officielle (avec le nom du site) ou serveur de secours de StemsPrime. Utile pour comprendre, après coup, si une installation a dû être dépannée.
- « Effacer le moteur NVIDIA » fonctionne enfin quand le moteur est en cours d'utilisation : la suppression est programmée pour le prochain démarrage au lieu de vous demander de fermer StemsPrime pour cliquer sur un bouton qui s'y trouve. Le bouton propose alors de redémarrer tout de suite, et devient « Annuler la suppression » tant que rien n'est fait.
- Les mises à jour et les téléchargements de dépannage passent tous par une seule adresse sécurisée. Rien ne change pour vous : la vérification de version et l'installation d'une nouvelle version fonctionnent comme avant.
- Les gros fichiers dont StemsPrime a besoin (modèles de séparation, moteur NVIDIA, bibliothèques CUDA) sont toujours téléchargés chez leurs éditeurs d'origine. Le serveur de StemsPrime ne sert que si l'une de ces sources est en panne, et dans une limite quotidienne : ces fichiers ne nous appartiennent pas.
- Paramètres, diagnostic complet : après le profil, TOUS les moteurs en place sont essayés (Standard et FT, carte NVIDIA et processeur), deux segments chacun avec chaque passe chronométrée ; un moteur qui se fige est nommé.
- Séparation : le bandeau annonce la passe en cours (« segment 2/59, passe 3/4, écoulé 0:12 ») et le journal note la durée de chaque passe des premiers segments.
- Le tri des tuiles : « CRÉER VOS STEMS » en troisième position, dans une seule grille de neuf tuiles.
- Ranger les parties : les fichiers issus de la séparation (« 1 batterie », « 2 basse », « 3 autre », « 4 voix ») sont reconnus par tous les préréglages, et changer de préréglage ne déplace plus que les fichiers reconnus par leur nom (la piste Mélodie disparaissait en passant sur Suno).
- Éditeur de bibliothèque : un clic droit sur une piste ouvre son dossier de musique ou son dossier de stems dans l'Explorateur, ou la supprime ; la corbeille de fin de ligne s'affichait comme un carré vide, c'est corrigé.
- Les modèles, le moteur NVIDIA et les bibliothèques NVIDIA viennent toujours de leur source officielle. Si elle est en panne, StemsPrime interroge son propre serveur, qui prévient l'auteur et fournit des adresses officielles à jour puis, en dernier recours, une copie de secours. Une adresse qui change se corrige sur le serveur, sans nouvelle version du logiciel.
- « CRÉER VOS STEMS à partir d'une simple musique » : la tuile phare porte enfin son nom, et l'outil explique la différence entre les moteurs Standard et FT au moment du choix.
- ANALYSER LE RÉSULTAT : après une séparation, un bouton additionne les quatre parties et les compare au master d'origine, en chiffres — fidélité (SNR du résidu), corrélation, écart de niveau et de crête, écart spectral par bande d'octave, aigus conservés, largeur stéréo, bruit ajouté dans les silences, décalage temporel — et donne une note sur 100. Chaque analyse est ENREGISTRÉE avec la date, le moteur, le modèle et le calcul ; la fenêtre « Analyses enregistrées » permet d'en cocher deux et de les mettre face à face, mesure par mesure : le bon moyen de juger un moteur contre un autre, ou une version contre la précédente, sur le même morceau.
- Les tuiles d'outils ont la même largeur que les tuiles d'intention.
- Séparation : le MODÈLE FT est disponible, quatre spécialistes (batterie, basse, autre, voix) issus du même export, pour une séparation plus propre, surtout la voix et la basse, au prix de quatre passes. Le choix se fait dans l'outil « Séparer » au moment de lancer, à côté du choix carte NVIDIA / processeur ; les quatre fichiers (≈ 1,26 Go) sont téléchargés une seule fois, à la demande, ou depuis les paramètres.
- Paramètres : un bouton installe les bibliothèques d'exécution NVIDIA (CUDA 13, environ 1 Go, une seule fois) dont le moteur a besoin ; le diagnostic dit lesquelles manquent.
- Le moteur NVIDIA est maintenant réellement utilisé quand il est installé : l'exécutable en un seul fichier chargeait sa propre bibliothèque de calcul à la place du moteur installé.
- Les fenêtres de message ont un bouton « Copier » (rapports, diagnostics).
- Le diagnostic dit quelles bibliothèques de calcul sont réellement chargées et ce que contient le dossier du moteur NVIDIA : de quoi comprendre pourquoi la carte n'est pas utilisée.
- Les paramètres disent maintenant si le moteur NVIDIA est seulement installé ou vraiment CHARGÉ, et pourquoi il ne l'est pas encore. Le diagnostic le dit aussi.
- Après l'installation du moteur NVIDIA, StemsPrime explique qu'un redémarrage est nécessaire pour que la carte serve, et propose de relancer tout de suite.
- Le rapport de débogage inclut désormais l'état de la séparation : modèle, moteur utilisé, carte détectée, et le dernier diagnostic complet s'il a été fait.
- Le moteur NVIDIA (CUDA) n'est plus embarqué : il s'installe à la demande depuis les paramètres, dans vos données. L'application et ses mises à jour restent légères, et ceux qui n'ont pas de carte NVIDIA ne téléchargent rien d'inutile.
- Paramètres : un DIAGNOSTIC COMPLET de la séparation dit où passe le temps — moteurs disponibles, carte détectée, quelles couches tournent sur la carte et lesquelles retombent sur le processeur, et les opérations les plus coûteuses. Le rapport est copié dans le presse-papiers et enregistré à côté du modèle.
- Les travaux en cours s'affichent en vert, pour se distinguer du reste de l'interface.
- La préparation du fichier avant séparation est confiée à ffmpeg : quelques secondes au lieu de plusieurs minutes sur un gros fichier.
- La séparation ne touche jamais votre morceau : elle travaille sur une copie, et les parties produites sont en 44,1 kHz, la seule fréquence que le modèle connaisse. Votre master garde son fichier et sa fréquence.
- « Arrêter » interrompt maintenant la séparation immédiatement, sans attendre la fin du segment en cours.
- Séparation nettement plus rapide sur processeur (tous les cœurs sont employés, la lecture des résultats ne passe plus par un chemin coûteux).
- Paramètres : un bloc « Modèle de séparation » pour le télécharger, le retélécharger, l'effacer, ouvrir son dossier, et pour choisir de calculer sur le processeur plutôt que sur la carte graphique.
- Nouvel outil : FABRIQUER UN MASTER À PARTIR DE SOURCES — plusieurs fichiers (les quatre parties, des pistes d'un DAW, le résultat d'une séparation) additionnés en un seul stéréo, écrit dans le dossier des sources et nulle part ailleurs.
- Nouvel outil : FABRIQUER LE MASTER d'un stems (ses quatre parties resommées) dans le dossier « Stems », pour une piste ou pour toute la collection.
- « Créer des stems à partir de mes parties » et « Comparer des stems » : titres plus justes, et la vignette de comparaison marque A, B et C en gras.
- Correctif : « Séparer une musique » et « Sauvegardes de la base » se trouvaient dans l'onglet « Avancé » (donc invisibles sans licence) ; ils sont maintenant dans Outils, où leurs tuiles conduisent.
- Comparer les stems : un TROISIÈME stems (C) peut être ajouté, facultatif. Trois colonnes côte à côte, un interrupteur A / B / C / Tout, et l'alignement recale B et C sur A.
- Séparation EN LOT : un dossier entier (sous-dossiers compris), une playlist ou toute la collection. Chaque musique est séparée, son .stems fabriqué et installé, et la piste ajoutée à la bibliothèque si elle n'y est pas encore. Ce qui a déjà ses stems est sauté, sauf demande contraire ; « Compter » annonce le travail avant de lancer ; une musique en échec n'arrête pas les autres, et l'arrêt garde ce qui est fait.
- SÉPARER UNE MUSIQUE EN QUATRE PARTIES, sans Suno, sans DAW et sans Engine : voix, basse, batterie et mélodie sont calculées sur votre ordinateur (carte graphique si elle le permet, sinon processeur), et rien n'est envoyé sur Internet. Le modèle (environ 316 Mo) est téléchargé une seule fois, à votre demande. Les quatre fichiers sont écrits à côté de la musique et peuvent remplir directement les parties de l'étape 2 : il ne reste qu'à fabriquer le .stems.
- Sauvegardes de la base Engine : un outil les liste (date, taille), permet d'en RESTAURER une (l'état actuel est copié avant, rien n'est perdu) ou d'effacer les anciennes. Fermez Engine DJ avant de restaurer.
- Les nouveautés de la version s'affichent une fois, au premier lancement après une mise à jour.
- La TONALITÉ du fichier est désormais écrite dans la base : « Am », « F#m », « Gb », « 8A » (Camelot) ou « 1m » (Open Key) deviennent la tonalité qu'Engine affiche. Une valeur incomprise est ignorée, Engine la trouvera à l'analyse.
- Éditeur de bibliothèque : deux colonnes d'icônes en plus, « Musique » et « Stems », qui ouvrent l'Explorateur sur le fichier concerné (le dossier de stems est vert quand le .stems existe, grisé sinon).
- Lecture d'un guide en livre : le zoom fonctionne (le livre est refait à la taille demandée, la page en cours est gardée).
- Lecture d'un guide en livre : RECHERCHE dans tout le texte du PDF (champ en bas, Ctrl+F, Entrée pour l'occurrence suivante, Maj+Entrée pour la précédente, accents ignorés) qui saute de page en page et SURLIGNE les mots trouvés sur la page (orange sur la page courante, jaune sur les autres), et la dernière page se tourne comme les autres.
- Une tuile qui conduit à un outil le laisse SURLIGNÉ (fond teinté, bord d'accent) jusqu'à ce que vous changiez d'onglet : on voit d'un coup d'œil de quel bloc il s'agit, au lieu d'un éclair qui s'efface avant qu'on ait lu.
- « Récupérer la clé des .stems » n'apparaît plus qu'en mode avancé avec licence, comme l'onglet « Avancé » : ni le bloc de l'onglet Outils, ni sa tuile dans « + Autres outils ».
- Lecture d'un guide en livre : la page n'est plus rognée en haut (elle tient entière dans la fenêtre), une barre d'outils complète apparaît en bas (première page, précédente, numéro de page à saisir, suivante, dernière, zoom −/+ et « Ajuster »), Ctrl + molette zoome, Origine et Fin vont au début ou à la fin, et la première page se tourne comme les autres au lieu de rester figée.
- Pare-feu : au premier accès à Internet, Windows demande « Autoriser StemsPrime ? » et refuse la connexion tant que vous n'avez pas répondu. StemsPrime concluait aussitôt « guide injoignable » ou « pas de mise à jour ». Il patiente maintenant jusqu'à 45 secondes, avec une roue qui tourne et un message qui invite à autoriser, aussi bien pour les guides que pour la recherche de mise à jour.
- Guides officiels : les guides français sont servis en HTTPS, et un guide n'est plus déclaré injoignable quand le serveur refuse la requête de vérification (le fichier était pourtant bien en ligne).
- Onglet Journal : bouton « Envoyer un rapport de débogage ». Vous décrivez ce qui s'est passé, vous cochez ce que vous acceptez d'envoyer (journaux zippés, version de StemsPrime, Windows, .NET, machine, disques, Engine DJ, ffmpeg ; la bibliothèque et les réglages seulement si vous le voulez, jamais la clé ni la licence), et l'aperçu montre exactement ce qui partira avant l'envoi. Le rapport arrive par courriel à l'auteur de StemsPrime ; vous pouvez aussi l'enregistrer en zip pour l'envoyer vous-même.
- Onglet Créer : le glisser d'une partie par sa poignée ≡ pour changer l'ordre marchait mal (curseur barré, dépôt refusé) ; corrigé, et toute la rangée d'une partie accepte maintenant le dépôt, pas seulement sa poignée.
- « Ouvrir un .stems existant » (écouter le master, vérifier la synchro, en sortir les quatre parties, lire la structure) quitte son onglet « Demux » pour rejoindre l'onglet Outils, et apparaît dans « + Autres outils » du bloc 2 avec son icône. Déposer un .stems sur la fenêtre y conduit toujours.
- Mise à jour automatique : au démarrage, StemsPrime vérifie s'il existe une version plus récente et la propose dans un bandeau en bas de la fenêtre (« Installer » ou « Plus tard »). Le fichier téléchargé est contrôlé avant d'être lancé ; l'installation remplace la version en place. Réglable dans Paramètres › Général ; « À propos » permet aussi de chercher à la demande. Sans réseau, rien ne se passe.
- Deux éditions de l'exécutable : avec .NET 10 embarqué (il se suffit à lui-même) ou sans (plus léger, mais .NET 10 Desktop doit être installé sur l'ordinateur). « À propos » indique laquelle tourne, et chaque édition ne se met à jour qu'avec la sienne.
- Bloc 2 « Que voulez-vous faire ? » : sous les six tuiles, un « + Autres outils » replié qui, déplié, montre les autres outils en tuiles avec leur icône (remplacer le master, remplacer les stems, cohérence de la bibliothèque, traduire Engine DJ, clé des .stems) ; un clic y conduit.
- Aide : « Comment Engine range vos musiques » devient une infographie de six vignettes (un pictogramme, quelques mots, le détail dans une bulle). Les guides portent un vrai drapeau dessiné (Windows n'affichait que « FR » / « GB »).
- Aide : un seul bloc « Guides officiels ». Une fois un guide téléchargé, « Lire » le feuillette comme un livre et « PDF » l'ouvre dans le lecteur du système. Tout PDF posé dans le dossier « pdf » du logiciel apparaît de la même manière.
- Onglet Outils, deux nouveaux outils : · « Remplacer le master d'une piste » : les étiquettes, la pochette et les playlists restent, seul le fichier audio change. Un fichier est pris tel quel ; plusieurs sont mixés en un master WAV. L'ancien fichier est gardé à côté (« .avant-stemsprime ») et Engine réanalyse la piste au prochain chargement. Si la piste a des stems, StemsPrime vérifie qu'ils ont toujours la bonne durée et invite à les remplacer sinon. · « Remplacer les stems d'une piste » : un nouveau .stems (celui de l'étape 2 en un clic, ou n'importe quel fichier) installé à la place de l'ancien, gardé à côté.
- Fabrication corrigée pour les sources en 48 kHz (Suno, certains DAW) : le .stems garde la fréquence du master, comme le fait Engine DJ ; auparavant il pouvait être décalé de quelques centièmes à une seconde. Les parties de longueurs inégales ne raccourcissent plus le .stems (il prenait la longueur de la plus courte). Les stems fabriqués depuis du 48 kHz avec une version antérieure sont à refaire.
- Comparaison de deux stems : bouton « ⇆ Aligner B sur A » qui mesure le décalage entre les deux (au millième de seconde) et lit B recalé sur A, en le disant : « B était en retard de 1,020 s sur A (corrélation 87 %) : compensé ». Les fichiers ne sont pas modifiés.
- Plus de clics dans le lecteur : passer d'une écoute à l'autre, couper ou rétablir une piste, mettre en pause se font en fondu.
- Ranger les parties : un seul moteur audio, tout est chargé une fois ; un interrupteur coupe ou rétablit sa piste à l'instant sans interrompre la lecture. Deux modes de lecture : « Synchronisée » (par défaut : tout avance ensemble, les interrupteurs choisissent ce que l'on entend, le master isolé) et « Par source » (le ▶ d'un groupe allume ses fichiers et éteint les autres ; « Écouter le master » allume tout). Lancer une partie déplie son accordéon.
- Formes d'onde en couleur (graves rouges, médiums verts, aigus bleus) sur chaque fichier et sur le master. Ctrl + molette zoome, Maj + molette fait défiler ; zoomé, la tête de lecture reste au milieu et l'onde défile derrière, avec un détail qui augmente.
- « De quoi disposez-vous ? » : deux tuiles à pictogrammes (pistes individuelles + master, ou pistes individuelles seules), le texte en infobulle.
- Sélecteurs de playlist : même libellé dans la case et dans la liste.
- Ajustements de l'outil de publication (sans effet pour l'utilisateur).
- Seules les bases LIÉES à celle de l'ordinateur entrent dans la collection : lien lu dans les bases elles-mêmes (uuid cités par les entrées de playlist ou les copies d'export, playlists répliquées à l'identique). Un disque qui porte une bibliothèque Engine d'une autre collection est ignoré et dit au journal.
- Éditeur de bibliothèque multi-disques : panneau « Disques » sous les playlists (une entrée par base, comme « Drives » dans Engine ; cliquer un disque ne montre que ses pistes), colonne « Disque » dans la grille, réunion de toutes les bases dans la Collection et les playlists. Édition en place, étiquettes, écoute, voir les pistes vont dans la base de la ligne ; retirer d'une playlist et supprimer une piste sont RÉPLIQUÉS dans toutes les bases (par origine), comme le fait Engine.
- Doublons d'export : un disque synchronisé pour la platine (le SSD du PRIME 4) porte des COPIES de pistes d'autres disques, avec leur origine. Comme Engine, la Collection et les playlists ne montrent chaque piste qu'une fois : l'originale si son disque est branché, sinon la copie. La vue par disque (panneau « Disques ») montre tout, copies comprises. Les disques sans aucune piste ne sont plus listés (ni dans le bandeau du bloc 1, ni dans le panneau « Disques »), mais restent des cibles de réplication.
- Les fenêtres secondaires (rangement, lecteur de stems, éditeur de bibliothèque) s'ouvrent par-dessus la fenêtre principale, à sa taille et à sa place.
- Rangement : ZOOM des ondes à la molette (autour du point sous la souris, jusqu'à ×32, Maj + molette pour défiler), commun à toutes les ondes ; la tête de lecture reste visible, la fenêtre défile avec elle. L'onde du master est plus haute et son mix est calculé en puissance (elle saturait, tout à plat). En synchro, un ▶ devant l'interrupteur de chaque groupe (lecture / pause commune). CORRECTIF : lancer un groupe par source allume les interrupteurs de ses fichiers (ils restaient éteints).
- Onglet Créer : « Ranger et écouter… » passe à droite des autres boutons avec l'icône quatre bandes du lecteur. La bulle de l'ordre des canaux précise qu'il doit coller au réglage par défaut de la platine (pads de stems du PRIME 4 G2).
- Rangement : en synchro, la ligne de temps du groupe est SOUS ses fichiers (comme par source). Onglet Créer : « Ranger et écouter… » n'apparaît que quand une partie contient au moins un fichier.
- Rangement, 3e passe : des INTERRUPTEURS devant chaque fichier dans les deux modes (par source : sélecteur exclusif, l'allumer joue ce fichier seul, l'éteindre arrête ; synchro : entendu ou non) ; en synchro chaque groupe a sa LIGNE DE TEMPS sous son titre, précédée de l'interrupteur du groupe, qui reflète la position commune (la glisser déplace tout) ; le ▶ du lecteur qui joue prend le fond d'accent ; le libellé « ♪ voix · 1536 kbit/s (source la plus lourde) » est dans l'en-tête du bloc, plus sur la ligne de temps qui ne garde que position / durée / reste.
- Onglet Créer : la phrase « Glissez une partie par sa poignée… » disparaît (la bulle des poignées ≡ le dit déjà), ce qui laisse la place aux boutons, qui portent une icône (ranger, importer, dossier) et un libellé plus court.
- Bloc 3 : les en-têtes de playlist portent un chevron vers le BAS (▾), puisque leurs pistes sont dépliées dessous ; ▸ voulait dire fermé.
- Rangement, suite (retours du premier essai) : la fenêtre s'agrandit à la souris ; poignée avec le curseur ↕ et sans bulle, nom de fichier sans bulle (rien ne masque l'onde) ; plus de bouton « Cette partie » (le ▶ de la ligne de temps du bloc lance la partie) ; TÊTES DE LECTURE sur les ondes : en synchro elles avancent toutes ensemble, par source seules celles du groupe qui joue (un fichier, une partie, le master) ; un clic ou un glisser sur n'importe quelle onde déplace la lecture ; l'ONDE DU MASTER (mix approché de tous les fichiers avec leurs gains, exacte dès qu'il est rendu) sous son titre, toutes les ondes alignées sur la même colonne. Le CLIC de coupure venait de la pause : pause, reprise et arrêt se font maintenant en fondu de 40 à 50 ms dans les deux moteurs (NAudio et MediaPlayer), en plus des fondus d'entrée et de sortie.
- Rangement, refonte de la fenêtre : · chaque partie est un ACCORDÉON (replié par défaut, compte de fichiers dans le titre) ; · plus de liste déroulante par fichier : une POIGNÉE (flèches haut/bas) à glisser, dans la partie ou vers une autre, avec une barre bleue qui montre l'atterrissage ; · la forme d'onde RGB de chaque fichier est dessinée DERRIÈRE son nom, sur sa ligne ; · le master est EN BAS, comme dans le lecteur ; · deux modes de lecture : « Par source » (chaque ▶ lance un fichier, une partie ou le master, un à la fois, avec sa ligne de temps) et « Synchronisée » (tout avance ensemble sur une ligne de temps commune en bas ; des INTERRUPTEURS par fichier et par partie choisissent ce que l'on entend, le master ayant le sien, isolé des parties) ; les icônes changent avec le mode ; · plus de clic en fin de morceau : fondus d'entrée (8 ms) et de sortie (60 ms) et limiteur doux sur la sortie, aussi bien pour le rendu ffmpeg (afade, alimiter) que pour le lecteur NAudio (lecteur de stems compris). Recette ffmpeg : filtres afade et alimiter ajoutés (à recompiler ; le ffmpeg gyan.dev les a déjà).
- Onglet Créer : la rangée de boutons sous les parties passe à la ligne au besoin (le dernier bouton était tronqué).
- Rangement : « Le morceau entier » devient « Le master (toutes les parties additionnées) ».
- FORMES D'ONDE EN COULEUR (RGB comme sur la platine) dans le lecteur de stems et la fenêtre de rangement : une barre par colonne, sa hauteur = le niveau, sa couleur = où est l'énergie (graves rouges sous 250 Hz, médiums verts, aigus bleus au-dessus de 4 kHz ; une basse est rouge, une voix verte, une charley bleue, un mixage plein tire au blanc). Analyse par filtres à un pôle dans le Coeur (`FormeDOnde.AnalyseurRgb`, `LireLOndeRgb`), dessin partagé (`Services/DessinDOnde`). Réglage Affichage « Formes d'onde en couleur », coché par défaut ; décoché, les ondes restent unies.
- Fenêtre « Ranger les parties » : le gain de chaque partie est un CURSEUR (−12 à +12 dB, pas de 1 dB, valeur lue à côté, double-clic = 0 dB) à la place de la liste déroulante ; blocs condensés (marges réduites, onde plus basse, libellé sur la ligne du temps) ; couleurs du lecteur sur chaque partie (bande gauche, titre, onde, curseurs). Le préréglage affiche son nom (le nom de type s'affichait).
- Vocabulaire du bloc 3 : les PISTES INDIVIDUELLES et le MASTER (le mixage global) ; question, réponses, bulle, bouton et pas-à-pas réécrits, le texte d'à-côté du bouton passe dans une bulle « i ».
- Outils : les blocs « Comparer deux stems » (A vs B) et « Convertir vers NI » (Engine ⇄ NI) reprennent les pictogrammes de leurs tuiles devant le titre.
- SUNO + DAW partout où il n'y avait que Suno : un DOSSIER de pistes séparées (export multipiste d'Ableton, Logic, FL, Reaper…) vaut un zip de Suno. Onglet Importer : source « SUNO + DAW », champ « Zip ou dossier » avec boutons Zip… et Dossier…, dépôt d'un dossier sur la fenêtre ; le lot balaie les zips ET les sous-dossiers d'au moins quatre fichiers audio. Mêmes contrôles (au moins quatre audio, taille minimale), copie au lieu de décompression. Onglet Créer : « Importer un export Suno ou DAW ».
- Bloc 2 : la première tuile (« Ajouter une musique avec ses stems ») montre d'où viennent les pistes séparées, DAW ou SUNO, et qu'elles deviennent quatre parties ; la tuile d'import ne parle plus que du fichier Native Instruments (.stem.mp4), qui porte déjà musique et quatre parties et n'a qu'à être converti. Titres et bulles réécrits dans ce sens.
- Onglet Créer : les quatre parties portent les COULEURS DU LECTEUR, qui suivent le nom (pas le rang) quand on change l'ordre : bande gauche du champ, étiquette et poignée en violet (voix), cyan (basse), rouge (batterie), jaune (mélodie).
- Bulles : l'infobulle de survol est décollée de 8 px sous la pastille.
- La Collection, comme Engine la voit. À l'ouverture d'une bibliothèque, StemsPrime ouvre aussi toutes les autres bases Engine branchées (Musique\Engine Library de l'ordinateur, « Engine Library » à la racine de chaque disque) et montre la RÉUNION de leurs pistes, chaque piste sachant son disque (suffixe « · E: 6to_ressour » dans la liste, comme la colonne Disque d'Engine). Les playlists sont lues dans la base de l'ordinateur (elles sont identiques partout) et leurs comptes additionnent tous les disques ; le contenu de chaque playlist réunit les pistes de toutes les bases, par origine. Bandeau du bloc 1 : « Ouverte : 6 pistes sur 3 disques : C: (ordinateur), D: 8to_GOLD, E: 6to_ressour. Base désignée … ».
- Chaque action sur une piste va dans SA base : ● de stems, nom attendu du fichier, écoute, voir les pistes du stems, étiquettes (lecture et mise à jour), suppression, installation, outils de comparaison et de conversion, audit de cohérence.
- Ce qui reste sur la base désignée (bloc 1) : l'ajout de pistes, la playlist cible et sa création, l'éditeur de bibliothèque, les orphelines. Prochaine livraison : les écritures routées d'elles-mêmes, puis le bloc 1 réduit à un état + Rafraîchir.
- Coeur : `CollectionEngine` (Ouvrir / Seule, Bases, Principale, ListerLesPistes, ListerLesListes, PistesParListe en pistes, PistesHorsPlaylist, Resume) ; `PisteEngine.Base`, `.Cle` (uuid/id : deux disques peuvent porter le même id), `.Disque` ; `BibliothequeEngine.EstLaPrincipale`, `.NomDuDisque`. Banc : trois contrôles fonctionnels sur la collection réduite à une base.
- Bloc 3 : la question sur la musique d'origine est reformulée avec le bon vocabulaire. « De quoi disposez-vous ? » : « des pistes séparées ET le mixage complet » ou « uniquement des pistes séparées » (elles peuvent être plus de quatre, StemsPrime les regroupe). Le MIXAGE est la musique telle qu'elle s'écoute, le fichier de STEMS ses quatre parties. Bulle, bouton et pas-à-pas réécrits en conséquence.
- Lecteur de stems : l'original et les quatre parties s'excluent (cocher « Original » décoche les parties, cocher une partie décoche l'original). Soit les quatre, soit le mix, jamais les cinq.
- Bulles « ? » et « i » : au SURVOL, une infobulle (ToolTip) ; au CLIC, la bulle épinglée comme avant. La lettre reste lisible (blanche) sur la pastille cochée.
- Tuiles du bloc 2 : les accordéons « En savoir plus » sont remplacés par une bulle « i » à droite du titre ; rangée de pictogrammes centrée dans chaque tuile ; « VS » et « ? » recentrés ; « Poser des stems » montre une flèche vers la gauche (on ajoute des stems à une musique déjà là) au lieu du « + » ; import NI / SUNO : une accolade « { » rassemble les dix traits, avec plus d'air ; légendes « Engine » et « NI · SUNO » ne sont plus tronquées.
- Playlist cible (Bibliothèque et Importer) : le champ du nom de la nouvelle liste n'apparaît plus en permanence, il se déplie au clic sur « + créer ». Entrée crée la liste, Échap (ou « + créer » sur un champ vide) le referme.
- Bloc 1 : bouton « Détecter » qui cherche les bibliothèques Engine là où Engine DJ les met sans jamais l'afficher : « Musique\Engine Library » de l'utilisateur (bibliothèque de l'ordinateur) et « Engine Library » à la racine de chaque disque ou clé branchés. Une seule trouvée : ouverte aussitôt ; plusieurs : menu sous le bouton.
- CORRECTIF playlists incohérentes (« joss (3) » vide, mauvaise musique dans « StemsPrime »). Relevé sur trois bases réelles (ordinateur, disque D, disque exporté) : chaque volume a sa base Engine, les playlists y sont RÉPLIQUÉES, et une entrée de playlist désigne une piste par son ORIGINE (originDatabaseUuid, originTrackId), jamais par l'id local ; sur un disque exporté la copie garde l'origine de la piste source. StemsPrime lisait trackId comme un id local. Comptage, contenu, ajout et retrait passent désormais par cette origine (`OrigineDe`), et le fichier de stems est nommé « {originTrackId} {originDatabaseUuid}.stems », ce qui retrouve aussi les stems d'un disque exporté. Les entrées qui désignent des pistes d'autres disques sont laissées à Engine et comptées au journal à l'ouverture.
- Aide : bloc « Comment Engine range vos musiques (à lire une fois) », cinq règles en langage simple (un disque = une base, la Collection les réunit, playlists répliquées, les stems suivent leur musique, la synchronisation copie tout dans Music) plus la note NTFS / exFAT.
- Message « Les dossiers sont déduits de la bibliothèque » (à l'ouverture) réécrit : ce que StemsPrime fabrique naît sur le disque de la bibliothèque ; les musiques, elles, ne sont pas copiées, elles sont inscrites dans la bibliothèque de leur propre disque.
- ÉCRIRE COMME ENGINE (multi-disques). (1) Playlists RÉPLIQUÉES : créer une liste ou y rattacher une piste depuis StemsPrime le fait aussi, avec le même identifiant et par origine de piste, dans toutes les autres bibliothèques Engine branchées (celle de l'ordinateur et celles des disques, trouvées par « Détecter »). Une base qui refuse (identifiant pris par un autre nom, disque en lecture seule) est signalée au journal, sans bloquer. (2) Une piste vit dans la base de SON disque, sans copie, comme le fait Engine : si la musique ajoutée est sur un autre disque qui a sa bibliothèque Engine, StemsPrime bascule dessus tout seul (la playlist cible est reprise par son nom) et y inscrit la piste. Si ce disque n'a pas encore de bibliothèque, il le dit (glisser une musique de ce disque dans Engine DJ la crée) et recopie la musique à côté de la bibliothèque ouverte, faute de mieux. Non fait : créer une base Engine sur un disque qui n'en a pas (Engine la crée au premier glisser-déposer d'une piste de ce disque), et répliquer les retraits faits dans l'éditeur de bibliothèque.
- CORRECTIF fichiers audio « introuvables » sur une base de disque exporté par Engine : Track.path est relatif, mais pas toujours au dossier « Engine Library ». La résolution essaie maintenant le dossier Engine Library, son parent, la racine du volume et Database2, puis cherche le nom de fichier sous « Engine Library\Music ». Un bilan est écrit au journal à l'ouverture (combien retrouvés, par quelle base, un exemple de chemin brut) pour comprendre toute base récalcitrante.
- Paramètres › nouvelle page « À propos » (calquée sur EMDB) : logo, site web (www.1et2.com), licence, version, date de publication (celle de l'exécutable), langue, dossier des données (cliquable, ouvre l'Explorateur), puis l'appel au don et le bouton « Faire un don avec PayPal » qui ouvre le lien PayPal.Me dans le navigateur. Liens en dur dans Services/Editeur, jamais lus d'un fichier à côté de l'exe (un fichier remplaçable pourrait détourner le don).
- Bloc 2 « Que voulez-vous faire ? » : SIX tuiles sur trois colonnes. Deux nouvelles, « Convertir des stems entre Engine et Native Instruments » et « Comparer deux stems à l'oreille », qui conduisent à l'onglet Outils et allument leur bloc.
- Chaque tuile porte des PICTOGRAMMES VECTORIELS à la place des emoji : la musique (deux croches liées), le « + », les quatre BANDES COLORÉES des parties avec leur onde (couleurs du lecteur : voix, basse, batterie, mélodie), les bandes en pointillé avec « ? » pour des stems venus d'ailleurs, dix traits fins qui deviennent quatre bandes pour l'import NI / SUNO (lu de droite à gauche, la source à droite), une fiche pochette + lignes + crayon pour les étiquettes, la double flèche Engine ⇄ NI · SUNO pour la conversion (à droite, les bandes dans l'ordre de Native Instruments : batterie, basse, mélodie, voix), « VS » entre A et B pour la comparaison. Une variante à glyphes d'instruments (fournis par Josselin) reste en réserve dans Styles.xaml (PictoStems4Instru).
- Le texte d'explication de chaque tuile est REPLIÉ derrière « En savoir plus » (accordéon, fermé par défaut) ; l'ouvrir ne choisit pas la tuile. Le résumé du bloc replié reprend désormais le vrai titre de la tuile (il restait vide).
- Tuile « Poser des stems » reformulée : des stems produits avec un autre logiciel, à importer dans Engine.
- Lecteur PDF livre : dans l'onglet Aide, chaque PDF a un bouton « Feuilleter » qui l'ouvre page à page, page qui se tourne. Pages rendues en images par PDFium (PDFiumCore 152.0.7947 + binaires natifs), mises en cache par PDF sous les données de l'application, puis assemblées dans une page HTML de feuilletage (StPageFlip, MIT, embarquée) ouverte dans le navigateur. Flèches clavier, barre précédent / suivant. Bouton « Ouvrir dans le lecteur PDF » du système conservé à côté. Services/RenduPdf et Services/LecteurLivre. Licence StPageFlip-MIT ajoutée au dossier Licences.
- Guides : icône d'état distincte du drapeau — flèche descendante quand le PDF est à télécharger, livre ouvert quand il est déjà dans le dossier « pdf », panneau d'interdiction quand le lien ne répond pas. Même icône livre devant chaque PDF de la documentation locale, et sur les libellés de bouton.
- Aide : bloc « Guides officiels » avec vignettes et drapeau de la langue. Guides Engine DJ v5.1.0 (FR/EN), PRIME 4 G2 v5.1.0 (FR/EN) et PRIME 4/4+/2/GO/SC LIVE v4.2.0 (EN). Chaque adresse est VERIFIEE (requête HEAD) avant d'être proposée et avant tout téléchargement : un guide déplacé se voit au lieu d'écrire un fichier vide. Bouton « Vérifier les liens ». Les PDF vont dans le dossier « pdf » du logiciel et rejoignent la documentation. Services/DocumentationEnLigne.
- ffmpeg en trois temps, dans cet ordre : repris de %RESSOURCES%\ffmpeg\ffmpeg.exe s'il y est, sinon telecharge, et en dernier recours la compilation depuis les sources est PROPOSEE (jamais imposee, meme en mode auto).
- publish.bat l'appelle AUTOMATIQUEMENT au demarrage : ffmpeg absent est TELECHARGE tout seul (outils\obtenir_ffmpeg.bat), pour que la version a distribuer le transporte toujours. Plus de double manipulation, un seul script a lancer.
- DEUX sorties clairement separees, l'exe est publie deux fois : « StemsPrime_v<version> » pour travailler (ffmpeg, licences, cle et traductions VISIBLES a cote) et « StemsPrime_v<version>_distribution » qui ne contient QU'UN SEUL StemsPrime.exe.
- La version a distribuer embarque ffmpeg.exe et les textes de licence DANS l'exe (propriete Distribution=true) ; Services/Embarquees les repose sur le disque au premier lancement, ou dans Program Files pendant l'installation tant qu'on a les droits. ffmpeg est un programme separe : il lui faut un vrai fichier, d'ou l'extraction (meme motif que l'extension de shell d'ArboCopy).
- CORRECTIF demarrage : les questions d'installation s'affichaient APRES que WPF ait deja ouvert la fenetre principale (StartupUri), d'ou une question posee par-dessus une fenetre ouverte, et un Shutdown() qui devait la refermer. StartupUri retire : App decide desormais, dans l'ordre, --installer / --desinstaller / proposition d'installation, PUIS ouvre la fenetre lui-meme. ShutdownMode explicite tant que la fenetre n'est pas ouverte (fermer une boite de dialogue ne tue plus le programme), puis OnMainWindowClose comme avant. « Utiliser sans installer » lance donc bien le programme.
- CORRECTIF obfusquer.bat : la fenetre se fermait sans un mot. Un « ) » NON ECHAPPE dans « impossible d'effacer !CIBLE! (fichier verrouille) » refermait le bloc « if » en avance : erreur de syntaxe fatale de cmd, donc fermeture immediate, avant meme la compilation. Corrige en ^( ^). Corrige aussi « if %%~zF EQU 0 » qui devenait « if EQU 0 » (meme fermeture brutale) si la DLL manquait : teste desormais "%%~zF"=="0". Le script trace son etape dans obfusquer_derniere_etape.txt.
- StemsPrime.exe est SON PROPRE INSTALLATEUR (même mécanique qu'ArboCopy, sans extension de shell) : `Installation.cs` copie le dossier publié dans Program Files (sous-dossiers Lang, outils\ffmpeg, Licences compris), ajoute un raccourci au menu Démarrer, un raccourci vers le dossier des données, et une fiche dans « Applications installées » (désinstallation par `--desinstaller`, suppression différée par cmd quand l'exe tourne depuis Program Files). Arguments `--installer`, `--desinstaller`, `--silencieux` ; élévation demandée au besoin.
- Lancé hors du dossier d'installation : si la MÊME version est installée, c'est elle qui est lancée ; sinon l'installation est proposée, refusable une fois pour toutes (réglage `NePlusProposerLInstallation`). publish.bat et obfusquer.bat proposent l'installation à la fin. Inno Setup abandonné (creer_installeur.iss supprimé).
- publish.bat et obfusquer.bat refusent de partir si StemsPrime.exe tourne encore : le dossier cible ne pouvait pas etre efface et la publication echouait sur un « GenerateBundle : Access to the path ... is denied » qui accusait le code a tort.
- Bloc 2 « Que voulez-vous faire ? » : les quatre réponses sont des TUILES côte à côte (pictogramme, titre, explication dans la carte, plus de bulles « i »), bord accent quand cochée, grisée quand impossible avec la raison dans la tuile. Style « Tuile » (RadioButton).
- Licence : LICENCE.txt (FR) et LICENSE.txt (EN), freeware à usage personnel, licence payante pour les professionnels ; dossier Licences/ avec les textes des composants tiers (FFmpeg LGPL 2.1, NAudio MIT, .NET et Microsoft.Data.Sqlite MIT, SQLitePCLRaw Apache 2.0, SQLite domaine public, MinHook BSD-2). publish.bat les copie dans la publication.
- ffmpeg : la recette n'active plus « --enable-gpl » (aucun composant GPL n'était utilisé) : le binaire est LGPL, comme la licence l'annonce. À recompiler.
- La Collection n'est pas une playlist : dans l'éditeur de bibliothèque elle devient l'en-tête cliquable de la colonne (toute la base), et les playlists sont listées dessous. Dans le sélecteur « Playlist » du bloc 1 (et son miroir de l'onglet Importer), « Collection (xN) » vient en tête : la piste entre alors dans la base sans être rattachée à une playlist (rappel : elle ne suivra pas un export vers un autre disque). « Rattacher à la playlist cible » refuse la Collection.
- Genres : un genre tapé qui n'est pas dans la liste Discogs peut être ajouté à la liste (ligne « + Ajouter « … » à la liste » dans les suggestions, ou Entrée). Il va dans %AppData%\StemsPrime\genres-perso.txt (« Genre > Style » accepté), jamais dans le fichier livré, et est proposé ensuite comme les autres.
- Lecteur de comparaison : la pochette de la piste (bibliothèque, ou pochette du fichier NI) s'affiche dans l'en-tête de chaque côté ; l'interrupteur gagne un troisième état « A+B » qui fait entendre les deux côtés ensemble.
- Outils : le bloc « Traduire Engine DJ » passe en dernier, après la comparaison et la conversion vers NI.
- Lecteur de comparaison : chaque côté porte un en-tête (lettre A / B, nom, et provenance : dossier de la bibliothèque et playlists, ou chemin du fichier) ; l'interrupteur « J'écoute » A / B est au milieu, entre les deux colonnes, avec Lire et Stop dessous (le transport du bas ne garde que le temps et le volume).
- Lecteur (toutes les ouvertures, éditeur de bibliothèque compris) : les bandes se réordonnent au glisser-déposer par leur nom, avec une barre bleue d'atterrissage ; l'original reste en bas. Un changement d'ordre fait apparaître « Enregistrer le .stems dans ce nouvel ordre » : le fichier est refabriqué (la bande du haut sur la première paire) puis remplacé dans la bibliothèque Engine (ancien gardé en .avant-stemsprime, commentaire de la piste signé « Modifié ») ou sur le disque. Refusé tant qu'Engine DJ est ouvert ou que la base n'est pas écrivable ; un .stem.mp4 NI ne se réenregistre pas. Record `SourceDeStems`, `CoteDuLecteur`.
- Voile de démarrage : le logo ne bouge plus quand le rouet apparaît (il garde sa place, Hidden au lieu de Collapsed) et l'ensemble est remonté de 100 px.
- LISEZMOI : plus aucune mention de la clé de chiffrement ni du mode avancé.
- Importer des stems (NI) : le bouton « Tout faire automatiquement » devient « Importation automatique », son explication passe dans une bulle « i » ; le bouton du bloc 3 devient « Importation manuelle » ; un séparateur ——OU—— les distingue. Texte du rangement réécrit (dossier, sous-dossiers Composition et Stems). La coche « Stems NI lisible » est verte, la croix rouge.
- Correctif : les blocs de la conversion NI gardaient un fond résiduel sans bord après le fondu de mise en avant (un fond « Transparent » posé dans le XAML était pris pour un vrai fond).
- Outils › « Comparer deux stems » : deux stems du même morceau (piste de la bibliothèque, fichier .stems ou .stem.mp4) ouverts face à face dans le lecteur, A à gauche, B à droite, dans un seul moteur audio : une seule lecture, les deux curseurs avancent ensemble, l'interrupteur « J'écoute » A / B choisit le côté entendu, les cases « Dans le mix » choisissent les parties.
- Outils › « Convertir un stems Engine vers Native Instruments (.stem.mp4) » : conversion inverse. Cinq flux AAC stéréo 256 kbit/s (mixage, puis batterie, basse, mélodie, voix selon l'usage NI), pochette jointe, étiquettes de la piste, manifeste des parties greffé dans « moov/udta/stem ». Option « Inclure le morceau original comme mixage » ; sinon le mixage est la somme des parties. Nouvelle classe Coeur : ConvertisseurEngineVersNi.
- Styles : « BoutonSegment » (interrupteur sur RadioButton).
- Bande de titre : logo descendu de 7 px, titre descendu de 2 px.
- Éditeur de bibliothèque : une colonne « corbeille » sur chaque ligne supprime la piste (original + stems) après confirmation ; le bouton du bas devient « Supprimer la sélection » pour la suppression multiple.
- Bande de titre : le logo est agrandi de 15 % (130 → 150 px) et le titre est décalé vers la droite d'autant (l'onglet supérieur s'élargit), pour caler le titre sur le bord gauche du conteneur.
- Mode avancé sous licence : le réglage « Mode avancé » et l'onglet « Avancé » ne sont proposés que si un fichier « advanced.lic » au contenu exact est posé à la racine du logiciel. Sans lui, rien n'apparaît.
- Carte interactive : le mode de calage (bouton « Caler », grille, export) est mis en commentaire — les positions sont figées. Réactivable en décommentant.
- Carte interactive : positions du panneau arrière recalées sur la grille et figées (19 pastilles).
- Carte interactive : positions de la façade recalées sur la grille et figées (127 pastilles).
- Carte interactive : grille de calage de 5 px. Toutes les pastilles sont accrochées à la grille (façade et arrière). En mode « Caler », la grille s'affiche en surimpression, les pastilles s'y accrochent pendant le glisser (désactivable), et un bouton « Aligner tout sur la grille » recale l'ensemble.
- Carte interactive du PRIME 4 G2 : les pastilles d'une même rangée sont alignées à la même hauteur (23-24-25, 32-33-34, la barre 2-3-7-8-4-5, les quatre voies du mixeur, les paires gauche/droite des platines, les boutons de pads, les commandes FX…), pour un survol net.
- Langues : audit des traductions — 171 textes ajoutés depuis 2.21.0 (Aide, mode avancé, traduction Engine, lot Suno, playlist cible, éditeur de bibliothèque, lecteur de stems, genres…) manquaient en anglais et s'affichaient en français. Tous traduits dans EN_EN.lang ; FR_FR.lang régénéré.
- Engine DJ ouvert : la bibliothèque n'est plus ouverte du tout — ni au démarrage, ni sur « Ouvrir » — tant qu'Engine DJ tourne. L'état l'indique en rouge, les onglets restent masqués, un message invite à fermer Engine puis à cliquer « Ouvrir ». On ne manipule pas la base pendant qu'Engine la tient.
- Lecteur de stems : un SEUL lecteur en bas, alimenté par les pistes COCHÉES au-dessus. Chaque bande (voix, basse, batterie, mélodie, et l'original en dessous) a sa case « Dans le mix » : on écoute une piste seule, deux, trois ou toutes, dans la combinaison qu'on veut. Le transport annonce ce qu'il joue (« Lecture : Voix + Batterie »). Plus de muet/solo : la case dit tout. Volume par piste, forme d'onde et curseur à la souris conservés.
- Renommage COMPLET en StemsPrime : projets, espaces de noms, solution, dossiers de données et de langues (Lang/StemsPrime), dossier « StemsPrime » dans la bibliothèque Engine, icône. Les bibliothèques préparées avec l'ancien nom ne sont pas reprises (morceaux de test).
- Lecteur de stems : présentation façon Stem Creator de Native Instruments — chaque partie sur une bande pleine largeur de la couleur de son type (voix violet, basse cyan, batterie rouge, mélodie jaune), nom et pastille à gauche, nom du fichier et forme d'onde au centre, volume à droite ; le morceau original (« Original », le Masterfile) en dessous en gris, muet par défaut, avec le même lecteur. Chaque bande garde muet, solo, volume et curseur à la souris.
- Le logiciel s'appelle désormais StemsPrime (avec un s) : titre de fenêtre, bandeau, messages, commentaires signés dans la base, documentation. Les identifiants techniques (dossiers de données, dossier « StemsPrime » dans la bibliothèque Engine, noms de projets) ne changent pas, pour rester compatibles avec ce qui est déjà installé.
- LECTEUR DE STEMS (NAudio, nouvelle dépendance NuGet, pur .NET). « Voir les pistes du stems » — dans l'éditeur de bibliothèque et après chaque installation (onglet Créer, import Native Instruments) — déchiffre et éclate le .stems en quatre parties (voix, basse, batterie, mélodie) affichées l'une sous l'autre, chacune avec sa forme d'onde, son curseur de volume, muet et solo. Lecture des quatre en synchro, mixée ; curseur de lecture commun qu'on pose ou glisse à la souris sur n'importe quelle forme d'onde ; volume général. Les WAV temporaires sont effacés à la fermeture.
- « Écouter » (éditeur de bibliothèque) : lit le morceau original dans le même lecteur, avec forme d'onde et curseur de volume.
- Genres : le champ Genre (onglet Bibliothèque Engine et éditeur d'étiquettes) devient un sélecteur par TAGS alimenté par la classification Discogs (15 genres, 391 styles, fichier Ressources/Donnees/genres-discogs.txt). On tape pour chercher dans la liste, Entrée ou clic pour ajouter ; chaque genre est une pastille avec sa croix ; un genre libre reste possible. La valeur écrite est la liste séparée par des virgules, comme Engine DJ l'affiche.
- CORRECTIF : toute écriture dans la bibliothèque est refusée tant qu'Engine DJ est ouvert (il tient m.db verrouillée : l'écriture finissait en « SQLite Error 10: disk I/O error »). La garde vérifie le PROCESSUS Engine DJ, dans la fenêtre principale (tous les flux) comme dans l'éditeur de bibliothèque.
- Bibliothèque Engine : le bloc « 2. Que voulez-vous faire ? » se replie en accordéon dès qu'un choix est fait (titre + résumé du choix) ; un clic sur le titre le rouvre.
- Bibliothèque Engine : le bloc « Une liste de lecture ? (facultatif) » de l'assistant est retiré, redondant depuis que la playlist cible se choisit dans le bloc 1 et s'applique automatiquement ; les étiquettes passent en bloc 4.
- Bibliothèque Engine : nouvel éditeur de bibliothèque (bouton « Éditer la bibliothèque… »), façon Engine DJ — les playlists à gauche (Collection puis chaque liste, avec le nombre de pistes), les pistes en tableau à droite (pochette, titre, artiste, album, durée, BPM, tonalité Camelot, notation, genre, année, stems). Double-clic sur une cellule texte pour la modifier en place, double-clic ailleurs sur la piste pour ouvrir toutes ses étiquettes ; recherche instantanée ; sélection multiple pour « Retirer de la playlist » (les morceaux restent dans la collection) ou « Supprimer (original + stems) ».
- Doublons : avant d'importer, NI comme SUNO comparent avec la BIBLIOTHÈQUE (même titre, quelle que soit la playlist) et indiquent dans quelle playlist se trouve déjà la piste. Lot SUNO : les doublons apparaissent en orange dans le récapitulatif (« déjà dans la bibliothèque : titre (piste N, playlist X) »), sont exclus par défaut, et une case « Forcer les doublons » permet de les importer quand même. SUNO unique : un message prévient et laisse forcer. Lot NI : le message des doublons cite désormais la playlist.
- Lot Suno : correction de compilation (durée de la piste convertie en secondes entières).
- Importer des stems › SUNO : nouveau mode « Un dossier (lot) ». Tous les zips de stems Suno (5.5) d'un dossier, sous-dossiers inclus ou non, sont balayés et contrôlés un par un (au moins quatre parties audio lisibles). Un récapitulatif liste chaque zip avec une coche verte ou une marque d'erreur (motif du refus), les dossiers sans zip sont signalés, et le résumé annonce le nombre de fichiers audio qui seront attachés aux stems. « Tout traiter automatiquement » enchaîne alors : décompression, rangement automatique des quatre parties par préréglage, .stems + mixage, piste en base, installation, rattachement à la playlist cible — avec arrêt possible après le zip en cours et bilan final.
- Menu de gauche : 10 px de plus à gauche du texte des onglets (il était étriqué), et 10 px de moins entre le chiffre et l'intitulé sur les onglets numérotés.
- Interface : le texte des boutons et des champs est centré verticalement dans leur hauteur fixe de 30 px (padding vertical supprimé, le centrage fait le travail) — il était poussé vers le haut.
- Interface : champs texte, boutons et listes déroulantes ont désormais une hauteur FIXE de 30 px (au lieu d'un minimum), pour qu'ils s'alignent exactement sur une même ligne — le ComboBox de playlist était plus bas que le champ et le bouton voisins.
- CORRECTIF : la fenêtre se chargeait à moitié (bande de titre désolidarisée de la coque, gap visible) depuis 2.22.10 — les sélecteurs de playlist portaient à la fois un DisplayMemberPath et un ItemTemplate, ce que WPF refuse au chargement du XAML, ce qui interrompait la mise en page. L'ItemTemplate est retiré.
- Sélecteurs de playlist (Bibliothèque Engine et Importer) : affichent « nom (xN) », N = nombre de pistes, de façon identique dans les deux onglets.
- Importer des stems : le bloc « Bibliothèque et playlist » porte le VRAI sélecteur de playlist (liste déroulante + « + créer »), synchronisé dans les deux sens avec celui de l'onglet Bibliothèque Engine : un changement ici se répercute là-bas, et inversement. Plus de rappel en lecture seule ni de bouton « Changer… ».
- Outils › Cohérence : le rapport s'affiche en checklist — coche verte quand rien n'est à signaler, triangle orange sinon, point neutre pour une simple information.
- Menu de gauche : padding et marges des onglets réduits pour que les intitulés (« Créer le .stems ») tiennent sur une seule ligne, actif comme inactif.
- Importer des stems : le sous-conteneur (et son sous-onglet actif) prend le fond leurs quatre coins, et la barre de sous-onglets garde le même retrait à gauche que la barre parente ; le rappel « 1. La bibliothèque Engine » en trop dans le mode dossier est retiré (la bibliothèque est commune au-dessus des onglets).
- Bibliothèque Engine : le sélecteur de playlist cible n'affiche plus que le nom de la liste (plus le nombre de pistes entre parenthèses), cohérent avec le rappel de l'onglet Importer.
- Importer des stems : l'onglet de source actif (Native Instruments / SUNO) prend la couleur du haut de son conteneur (#1B1F3B) ; le conteneur principal est aligné à gauche avec le bloc « Bibliothèque et playlist » ; les blocs internes (fichier, fabrication, étiquettes, terminé, SUNO) perdent leur bordure et leur padding, le sous-conteneur faisant déjà le cadre.
- Importer des stems : les onglets sont maintenant accrochés à de VRAIS conteneurs emboîtés — un conteneur principal (dégradé, bordé) attaché à l'onglet de source actif, qui porte les sous-onglets et un sous-conteneur (fond #171A34, bordé) attaché au sous-onglet actif, lequel porte le contenu du mode.
- Thèmes : le dégradé du conteneur de source (FondConteneurSource) est défini dans les deux thèmes (une couleur invalide traînait dans le sombre).
- Banc : le contrôle de la cascade NI reflète la bibliothèque commune au-dessus des onglets (quatre blocs de mode).
- Importer des stems : onglets de source (Native Instruments / SUNO) et sous-onglets (Un fichier / Un dossier) refaits en vrais onglets « accrochés » (RadioButton), style repris du menu vertical de gauche ; le mot « Source » disparaît. L'onglet actif prend le fond du contenu (#171A34). Le lot SUNO n'existe pas encore : le sous-onglet « Un dossier » est masqué sur SUNO en attendant.
- Importer des stems : bloc « Bibliothèque et playlist » commun, AU-DESSUS des onglets (état de la bibliothèque, « Choisir… », rappel de la playlist cible avec « Changer… »). Les deux rappels bibliothèque redondants des modes fichier/lot sont retirés. Le sélecteur de playlist principal reste dans l'onglet Bibliothèque Engine (bloc 1), seule source de vérité.
- Interface : hauteur harmonisée à 30 px pour les champs texte, listes déroulantes et boutons.
- Outils › Cohérence : détection des pistes hors de toute playlist (qui ne suivraient pas à l'export) et bouton « Rattacher à la playlist cible ».
- Onglet Créer : sélecteur de « Playlist » cible sous le choix de la bibliothèque. À chaque import ou création, le morceau original ET son .stems sont ajoutés à cette liste — sans quoi la piste ne suivait pas lors d'une exportation vers un autre disque (CORRECTION du bug de migration). Choix retenu en session, mais révoqué automatiquement si l'on change de bibliothèque (une playlist appartient à sa bibliothèque). Sans choix, une liste « StemsPrime » est créée par défaut.
- Onglet Outils : « Traduire Engine DJ ». Éditeur des langues d'Engine DJ Desktop (5.1.0) — grille anglais (référence) / traduction, ajout manuel de libellés, motifs à variables, création d'une nouvelle langue, installation de la DLL de traduction dans le dossier d'Engine et test en le lançant. Aucune dépendance à Frida ni à un compilateur : la DLL est fournie prête, rangée par version d'Engine (Ressources/EngineDJ/<version>/). StemsPrime pose la DLL de la version détectée, ou la plus proche fournie en attendant une mise à jour, et le signale.
- Les fichiers de langue sont rangés séparément : Lang/StemsPrime/*.lang pour StemsPrime, Lang/EngineDJ/*.json pour Engine DJ.
- Traduction Engine : la DLL de traduction est rangée dans Lang/dll/<version>/version.lang (extension .lang pour garantir sa copie ; installée sous le nom version.dll dans Engine).
- Onglet Aide : tutoriel « Éclairage DMX (SoundSwitch) » — branchement, adressage, patch, couleurs, orientation et mouvement des lyres, limitation de zone, avec schémas de montage et sources. S'ouvre en plein écran.
- Onglet Aide : carte interactive de la façade du PRIME 4 G2 (survol de chaque commande → description FR/EN tirée du guide v5.1.0), ouverte en plein écran. Bloc « Documentation » qui liste les PDF déposés dans le dossier « pdf » à la racine du logiciel (rien si le dossier est vide).
- Traduire Engine DJ : colonne « OK » (case verte) par ligne. Cochée = traduction validée, même volontairement identique à l'anglais (Album, Tempo…) ; décochée = à traduire. Par défaut tout l'existant est validé ; un libellé ajouté depuis une autre langue arrive décoché. « Manquants seulement » ne montre que les décochés. L'état est mémorisé dans le JSON (clé @aTraduire).
- Traduire Engine DJ : ajouter un libellé le répercute dans TOUS les fichiers de langue (identité dans EN_EN, vide « à traduire » ailleurs), pour qu'ils restent alignés sur les mêmes clés.
- Mode avancé (Paramètres › Affichage) : ajoute un onglet « Avancé » qui pilote les scripts fournis avec StemsPrime — recompiler la DLL de traduction après une mise à jour d'Engine (MinGW ou Visual Studio, installé au besoin) et récupérer la clé AES des .stems (Frida). La sortie des scripts s'affiche dans l'onglet.
- Logo : nouveau lettrage « STEMSPRIME » dessiné (SVG fourni), converti en dix-huit tracés absolus comme l'ancien, encre du thème, même place qu'avant dans la fenêtre. Le voile d'ouverture reste au moins une seconde à l'écran.
- Le logiciel s'appelle STEMSPRIME. Renommage complet : projets, espaces de noms, exécutable, titres, journal (StemsPrime.log), banc, fichiers de langue, préréglages, signatures des commentaires, suffixes (.avant-stemsprime, .stemsprime-lot.json), variable STEMSPRIME_CLE. Reprise automatique de l'existant : %AppData%\StemForge est déplacé en %AppData%\StemsPrime au premier lancement (réglages, session, registre des conversions), l'ancienne variable STEMFORGE_CLE est encore lue, l'état d'un lot .stemforge-lot.json est repris, les sauvegardes .avant-stemforge restent vues par l'outil de cohérence. Les projets .stems.json et « My Stems Config » ne bougent pas.
- Paramètres › Lot et surveillance : « Sans aucune pochette, poser le logo StemsPrime » (coché d'office). Le logo sur le fond du thème est rendu une fois en 512×512 PNG dans le dossier des réglages, puis mis au format d'Engine comme toute image. Vaut pour l'ajout, la correction, la conversion et le lot.
- Le verrou de grille rythmique disparaît (case, cadenas, mode NI, fenêtre des étiquettes). Il ne verrouillait rien : « isBeatGridLocked » protège une grille que StemsPrime n'écrit pas, et Engine remesure le tempo à la première analyse quoi qu'il arrive (un 96 BPM importé ressortait en 120). Le champ Tempo reste, annoncé pour ce qu'il est : affiché jusqu'à l'analyse d'Engine, puis remplacé par sa mesure. Imposer un tempo demanderait d'écrire la grille (PerformanceData), non pris en charge.
- Import zip : le commentaire est prérempli « Importé de Suno avec StemsPrime le jj/mm/aaaa » (ou de l'éditeur reconnu, ou « d'un export de stems »).
- Rangement : la forme d'onde du rendu s'affiche au-dessus de chaque ligne de temps (600 crêtes lues directement dans le WAV rendu, sans ffmpeg), avec un repère qui suit la lecture ; un clic sur l'onde y va. Sur un stem, les silences sont des creux : on voit où le son commence.
- Audit du code : deux méthodes mortes retirées (`FabriquerLaMusique_Clic`, `ReprendreUneEtiquette`) ; les six dernières boîtes de dialogue Windows (`MessageBox`) passent par la fenêtre du thème avec « Voir le journal » ; les listes de formats (images, audio), leurs filtres de sélection et le chargement d'aperçu, en cinq exemplaires dans trois fenêtres, sont réunis dans `Services/Formats` ; le cache des rendus d'écoute est vidé à la fermeture. Aucun changement de comportement.
- Rangement : plus d'extraits. Chaque bloc (les quatre parties et le morceau entier) a sa propre ligne de temps en bas : ▶/❚❚, curseur que l'on déplace à la souris, position / durée, temps restant et débit de la source. Le rendu est celui du morceau complet, avec les gains ; un seul lecteur, lancer un bloc arrête l'autre. Le ▶ d'un fichier joue dans la ligne de son bloc.
- Créer : deux cartes de plus. « 2. Les étiquettes et la pochette de la piste » (résumé, aperçu, bouton « Modifier… » qui ouvre une fenêtre avec les mêmes champs que la bibliothèque, pochette comprise) — c'est l'étape qui manquait avant de fabriquer. « 3. Fabriquer le .stems » encadre la sortie et les boutons : le bandeau de progression a maintenant un bloc sous lequel se poser, on ne pouvait pas savoir que la fabrication tournait.
- Import zip : le programme ne se fige plus. La décompression tourne sur un fil de fond, entrée par entrée, sous l'enveloppe habituelle avec le bandeau « Décompression : x/n fichiers, y Mo sur z — nom », puis « Contrôle de lecture : x/n — nom ». Un refus après décompression passe par la fenêtre d'échec. Les sous-dossiers du zip sont mis à plat.
- Rangement : la mesure d'énergie (noms muets) se fait en un seul passage de ffmpeg sur 60 s au cœur du morceau, au lieu de trois passages sur le fichier entier, avec un compteur « Mesure d'énergie : x/n ». Filtre asplit ajouté à la recette minimale.
- Import zip : le zip est contrôlé AVANT d'être décompressé (zip lisible, au moins quatre fichiers audio, pas un zip d'autre chose, pas de fichier audio de moins de 100 Ko) et APRÈS (chaque fichier audio doit se lire avec une durée). Sinon, refus dans une fenêtre d'erreur qui nomme les fichiers en cause, et rien n'est rangé.
- L'onglet devient « Importer des stems » : un choix de source par deux boutons, « Native Instruments » (un fichier ou un dossier, comme avant) et « SUNO » (le zip de la séparation automatique : champ, Parcourir, « Importer et ranger les parties » ; la suite se passe dans « Créer le .stems »). Pas de logos, des sigles. Titres et libellé de l'assistant renommés.
- Préréglage Suno calé sur un zip réel (« 0 Lead Vocals », « 1 Backing Vocals », « 2 Drums », « 3 Bass », « 4 Guitar », « 5 Keyboard », « 6 Percussion », « 7 Synth », « 8 Woodwinds » ; ni mixage, ni pochette, ni étiquettes) : titre = nom du zip sans « Stems », pochette cherchée à côté du zip (même nom, cover/folder/front), mixage généré par la somme.
- IMPORT D'UN EXPORT SUNO (ou de tout éditeur) : « Importer un export Suno (.zip)… » dans Créer, ou zip déposé sur la fenêtre. Décompressé dans `<disque>\StemsPrime\<nom>\Source`, mixage complet et pochette repris, titre prérempli, parties rangées par le PRÉRÉGLAGE reconnu aux noms de fichiers (Suno : Vocals + Backing Vocals → voix, Drums + Percussion → batterie, Bass → basse, le reste → mélodie ; Ableton : Kick, Snare, Hat, Pad… ; Générique). Un JSON éditable par préréglage dans « Prereglages/ » à côté de StemsPrime.exe, écrits au premier lancement, à copier pour votre DAW.
- GAIN PAR PARTIE (-12 à +12 dB, dans la fenêtre de rangement, entendu à l'écoute) et NIVEAU CIBLE du mixage (LUFS, EBU R128 : -8 à -16 ou aucun) : la somme est mesurée au moment de fabriquer et un décalage global est ajouté aux quatre gains. Appliqué à l'encodage ET au mixage complet. Retenu dans le projet. Filtre ebur128 ajouté à la recette ffmpeg minimale.
- Créer : bouton « Créer, ajouter à la bibliothèque et installer » (tout d'un coup, bibliothèque ouverte requise). La question « remplacer ? » passe par la fenêtre du thème.
- Cadenas derrière le champ Tempo (bibliothèque et conversion NI) : fermé et surligné quand la grille rythmique est verrouillée, un clic bascule ; même état que la case « Verrouiller la grille rythmique ». Grisé quand le tempo est vide (rien à verrouiller). Le tempo repris d'un fichier NI est verrouillé d'office.
- Créer : « Ranger et écouter les parties… » et « Ajouter un dossier de parties… ». Dix ou quinze fichiers pour quatre places : chaque fichier est rangé par le nom (vox, bass, drum, kick, synth…), puis, pour les noms muets, par une mesure d'énergie (beaucoup de grave → basse, beaucoup d'aigu → batterie, sinon mélodie). Écoute d'un fichier seul, d'une partie (somme de ses fichiers) ou du morceau entier (tout additionné, comme la platine le jouera), extrait de 20 s au début, au milieu ou vers la fin, avant de valider. Filtres lowpass/highpass ajoutés à la recette ffmpeg minimale.
- Glisser-déposer sur la fenêtre entière : un .stem.mp4 ouvre la conversion, un dossier le lot, un .stems le demux, des fichiers audio le rangement.
- Conversion NI : le tempo du fichier (tempo/bpm/TBPM) est repris quand il existe.
- Place disque vérifiée avant une conversion ou un lot (les WAV extraits pèsent ~25 fois le .stem.mp4) ; avertissement avec le choix de lancer.
- EN_EN.lang : traduction complète (653 clés sur 668, le reste est identique dans les deux langues).
- Doublons par EMPREINTE : le SHA-1 de chaque fichier NI converti est retenu dans « conversions.db », une petite base SQLite du dossier des réglages (%AppData%\StemsPrime), avec une table par bibliothèque Engine : rien n'est déposé dans la bibliothèque, et m.db n'est pas touchée (une table étrangère survivrait mal aux migrations d'Engine). Un fichier déjà converti est reconnu même si la piste a été renommée ou ses étiquettes corrigées ; titre + artiste restent en second recours. Dans les deux modes ; la suppression d'une piste l'oublie.
- MULTILINGUE. Le français reste la langue de référence et chaque texte est sa propre clé. Un fichier par langue dans « Lang/ » à côté de StemsPrime.exe : FR_FR.lang (référence, régénérée par le banc à chaque compilation) et EN_EN.lang (anglais : boutons, onglets, libellés, titres, états et messages courts traduits ; les longs textes d'aide restent en français en attendant leur traduction). Le banc ajoute les clés manquantes à chaque .lang sans toucher aux traductions faites.
- Choix de la langue dans Paramètres › Affichage, appliqué à chaud.
- Sous le capot : le XAML n'est pas modifié, `Langue.Traduire` repasse l'arbre (Text, Content, Header, ToolTip, Title, bulles d'aide) ; les messages du code passent par `Langue.T("…")` et `Langue.F("… {0} …", …)`.
- Lot : reprise d'un lot interrompu. L'état est écrit dans « .stemsprime-lot.json » du dossier traité après chaque fabrication et chaque insertion ; au comptage suivant du même dossier, « Reprendre » exclut les fichiers déjà importés et installe sans refaire ceux déjà fabriqués, « Repartir de zéro » efface l'état.
- Lot : bouton « Contrôler les .stems installés » en fin de lot (manuel) : présence du .stems sous le nom attendu et cohérence de durée avec la musique (écart > 2 s signalé), verdict sur chaque ligne.
- Nouvel onglet « Outils » : cohérence de la bibliothèque (pistes sans fichier audio, .stems orphelins ou étrangers, pistes sans stems, sauvegardes .avant-stemsprime) et purge confirmée des sauvegardes.
- Paramètres réorganisés en quatre pages : Outillage, Affichage, Fabrication, Lot et surveillance.
- Nouveaux réglages : fichiers fabriqués à la fois dans un lot (automatique ou 1 à 6) ; pochette de secours (cover/folder/front/album/artwork .jpg/.png à côté du fichier NI quand il n'en porte pas) ; liste de lecture du lot ; dossier surveillé (actif, sous-dossiers) : tout .stem.mp4 qui y apparaît est importé en automatique dans la bibliothèque ouverte, un à la fois, jamais pendant un autre travail, après que sa copie est finie.
- Doublon repéré aussi en mode unique (même titre, même artiste) : le bloc 4 propose de mettre à jour la piste existante plutôt que d'en ajouter une.
- Lot : liste de lecture « Import StemsPrime jj/mm » avec les pistes du lot ; bouton « Rapport HTML + CSV » écrit dans le dossier traité et ouvert.
- Pendant un travail, un clic sur un autre onglet est refusé avec une explication (le code, lui, peut toujours basculer).
- Lot : le bandeau de progression dit x/n fabriqués, échecs, fichiers en cours, temps écoulé et restant estimé au débit constaté ; puis x/n pistes écrites en bibliothèque.
- Lot : au comptage, les étiquettes de chaque fichier sont lues (en parallèle) et les pistes DÉJÀ dans la bibliothèque (même titre, même artiste) sont repérées ; une question propose de les mettre à jour (étiquettes, pochette, musique, .stems remplacé, l'ancien gardé en .avant-stemsprime) ou de les exclure. Fichiers illisibles décochés d'office.
- Lot plus rapide : extraction et fabrication de plusieurs fichiers à la fois (moitié des cœurs, trois au plus — ffmpeg encode l'AAC sur un seul fil), sans passer par les champs de l'écran ; puis la base en UNE passe à la fin (une sauvegarde, ajout ou mise à jour, installation, un seul rechargement). Durée et parallélisme affichés dans le bilan.
- Lot : bouton « Arrêter après ce fichier » pendant le traitement : le fichier en cours va au bout, les suivants sont marqués « non traité », bilan à part.
- Lot : comptage automatique dès que le dossier est désigné (et quand la case « sous-dossiers » change) ; le bouton devient « Recompter ».
- Conversion NI, deux modes : « Un fichier » (bloc par bloc, ou bouton « Tout faire automatiquement » qui enchaîne analyse, conversion, fabrication, ajout et installation) et « Un dossier (lot) » : dossier + sous-dossiers au choix, seuls les .stem.mp4 sont retenus ; étape intermédiaire de comptage avec la liste des fichiers en accordéon (case « Auto » par ligne, bouton « À la main » qui ouvre le fichier en mode unique), puis traitement en série — une erreur n'arrête pas les autres, chaque ligne affiche son résultat, bilan à la fin. Les trois cœurs (analyse, conversion, ajout+installation) sont séparés des boutons et partagés par les trois chemins.
- Bandeau de progression : le bloc est maintenant la première bordure posée dans une pile, ce qui vaut aussi pour les sous-modes.
- Progression affichée SOUS le bloc courant (bandeau qui pulse, puis « terminé » deux secondes et disparaît ; échec ou interruption restent plus longtemps), dans tous les onglets. La barre du bas est conservée en secondaire.
- Conversion NI : la bibliothèque devient le bloc 1 et décide du rangement (dossier StemsPrime à la racine de son disque) ; le dossier de sortie n'est plus demandé. Blocs : 1 bibliothèque, 2 fichier, 3 fabrication, 4 étiquettes, 5 terminé.
- Bloc 2 : le détail des flux est un accordéon replié, une ligne de résumé reste visible.
- Bloc 3 : tri des canaux (même liste de schémas que « Créer ») ; dans les deux formulaires, une case « Schéma par défaut » fixe le schéma proposé d'office. Le dernier schéma utilisé ne devient plus le défaut en silence.
- Bloc 4 : champ pochette avec aperçu (celle du fichier NI, ou une autre) ; commentaire prérempli « Converti avec StemsPrime le … » si le fichier n'en a pas.
- CONVERSION NI REPENSÉE : tout se passe dans l'onglet « Convertir », en cinq blocs qui apparaissent l'un après l'autre et vers lesquels la vue défile — 1 fichier (analysé aussitôt), 2 fabrication (« Convertir et fabriquer », ou « Extraire seulement » vers l'onglet Créer), 3 bibliothèque (celle de l'onglet 1, ou une autre), 4 musique et étiquettes (préremplies depuis le fichier NI) avec un seul bouton « Ajouter à la bibliothèque et installer le .stems », 5 terminé. Plus de renvoi d'un onglet à l'autre par des annonces. L'ajout et l'installation sont factorisés (`AjouterLaPisteDepuisLesChampsAsync`, `InstallerLesStems`) et partagés avec les boutons de l'onglet Bibliothèque ; le contrôle d'écart de durée et l'erreur d'installation passent par les fenêtres du thème.
- Doublon retiré : `SignalerLArrivee` (branche parallèle) faisait la même chose que `ConduireVers`.
- `Vues/FenetreEtiquettes.xaml` orphelin supprimé (éditeur en popup abandonné).
- Arrivée dans un bloc depuis une annonce d'étape (ou au choix d'une piste) : la vue défile jusqu'au bloc et son fond s'allume en accent puis revient en fondu (`ConduireVers`), pour que l'œil sache où reprendre.
- Corbeille de suppression de la musique déplacée À GAUCHE sous la liste du bloc 3 : à droite, elle sortait de l'écran sur une fenêtre étroite.
- Rappel : liste de lecture AVANT les étiquettes et numérotation des blocs selon leur visibilité étaient déjà en place.
- AIGUILLAGE des annonces de fin, resté sur la numérotation d'avant la 2.9.0 (Créer = étape 1, bibliothèque = étape 2) :
- « Le .stems est fabriqué » disait « passez à l'étape 2 » et restait sur Créer ; conduit maintenant à l'étape 1 « Bibliothèque Engine » AVANT l'annonce, qui se pose donc sur le bon onglet.
- « Converti en .stems Engine » envoyait sur Créer (index 1) au lieu de la bibliothèque.
- « Conversion terminée » sans fabrication envoyait sur la bibliothèque (index 0) au lieu de Créer.
- Textes du journal, des bulles d'aide et de l'assistant réalignés. Contrôles au banc : bascule avant annonce et texte cohérent, pour les trois.
- Conversion NI : le fichier est analysé dès qu'il est déposé, choisi ou collé dans le champ (nombre de flux, pochette, noms des parties, étiquettes) ; on sait aussitôt si c'est un stems NI lisible à cinq flux. Le bouton « Analyser » reste pour relancer.
- Commentaire vide = signature datée : « Créé avec StemsPrime le jj/mm/aaaa » à l'ajout, « Modifié avec StemsPrime le jj/mm/aaaa » à la correction. Un commentaire saisi est gardé tel quel.
- BUG « Specified cast is not valid » après l'annonce de succès (ajout ou mise à jour) : `SelectionnerLaPiste` parcourait la liste avec un `foreach` typé `ElementDePiste`, or la liste contient aussi les en-têtes de listes de lecture depuis la 2.14. Parcours en `object` avec filtrage.
- BUG : « Enregistrer les étiquettes » (correction d'une piste existante) n'appelait pas la mise au format de la pochette, seul l'ajout la faisait ; un PNG était refusé avec le message brut « doit être un JPEG ». La conversion est mutualisée (`MettreLaPochetteAuFormatDEngineAsync`) et la correction passe par l'enveloppe d'exécution : intitulé, annonce maison, erreur dans la fenêtre du thème et non plus une boîte système.
- Pochette : formats d'image courants acceptés (JPEG, PNG, WebP, GIF, BMP, TIFF), tous convertis en JPEG carré 256 px avant installation. Décodeurs correspondants ajoutés à la recette ffmpeg minimale.
- Pochette au format d'Engine : mesuré sur une vraie bibliothèque, un 1024×1024 importé par Engine Desktop ressort en 256×256 dans Artwork. Toute image (PNG ou JPEG, carrée ou non) est désormais recadrée au carré (centré) et réduite à 256 px en JPEG avant installation, dans un fichier `<nom>.engine-256.jpg` à côté de l'original, qui n'est pas touché. Filtre `crop` ajouté à la recette ffmpeg minimale.
- BUG : « Corriger les étiquettes » ne reprenait que titre, artiste et tempo (ceux de la ligne de liste). Album, genre, année, commentaire, verrou de grille, pochette et fichier audio sont maintenant relus dans m.db (`LireLesEtiquettes` existait mais n'était pas appelé ; il rend en plus la pochette retrouvée dans Artwork par le hash d'AlbumArt et le chemin absolu).
- Le formulaire d'étiquettes défile de lui-même à l'écran quand il apparaît.
- Légende sous la liste : ● avec stems, ○ sans ; la rubrique « Stems » de la platine n'est pas une liste de lecture, elle rassemble d'elle-même les ●.
- BUG : « 3 sur 4 — choisissez la piste » s'affichait sans qu'aucune réponse soit cochée (`IntentionChoisie` vaut null, et null ≠ PasEncoreRepondu).
- Titres d'onglet : style unique `TitreDOnglet` (21 px) et `SousTitreDOnglet`, alignés sur le texte des cartes (marge 15), remontés (remplissage haut 30 → 12). Le titre de l'onglet 2 passe AVANT la carte du projet.
- Onglet actif 5 px plus court (marge gauche 10).
- Décalage entre échelle 1 et échelle zoomée corrigé : la hauteur de la bande du titre (46), la marge du logo (29,22), la marge (30) et le remplissage (124) de la languette et la position des pastilles étaient en pixels fixes hors du zoom. `AppliquerLEchelle()` les multiplie désormais par le facteur, à partir de la marge d'ombre de la coque qui, elle, ne bouge pas.
- Onglets inactifs 15 px plus courts (rognés à gauche, toujours collés au conteneur). Onglet actif passé AU-DESSUS du conteneur : le ScrollViewer de la colonne rognait son débordement, remplacé par un StackPanel nu avec ZIndex ; plus aucun filet entre l'onglet actif et son contenu. Logo +10 % (130 px).
- Les onglets touchent enfin le conteneur : la 2.19.9 avait mis à zéro les marges du ScrollViewer et du cadre, mais l'écart de 16 px venait de la marge droite du gabarit `OngletPrincipal` lui-même. Corrigée.
- Plus rien entre les onglets et le conteneur : marge droite des onglets à zéro, marge gauche du conteneur à zéro. Ils se touchent.
- `publish.bat` lance StemsPrime sans demander : la publication n'a d'intérêt que si on l'essaie.
- Le logo passe à 118 pixels, agrandi vers le bas et la droite depuis sa place d'origine ; la languette s'élargit vers la droite d'autant, et le titre suit.
- Onglet actif rentré de 3 pixels, onglets inactifs de 15 ; la colonne descend sous le logo agrandi.
- ★ **CORRECTION : la bande du titre était restée à 118 pixels**, héritage de la 2.19.0, alors que la 2.19.4 prétendait revenir à la 2.18.2. C'est elle qui faisait flotter le logo au-dessus de la fenêtre. Elle reprend ses 46 pixels, et la marge de la languette en fenêtre agrandie ses valeurs d'origine.
- Un contrôle du banc verrouille cette hauteur.
- **`publish.bat` lance StemsPrime à la fin**, après cinq secondes ou tout de suite si vous validez ; répondre N rend la main sans lancer. Le programme part depuis SON dossier, sinon il chercherait la clé, ffmpeg et son journal dans celui des sources.
- Le script signale l'absence de clé à côté de l'exécutable plutôt que de le rappeler à chaque fois.
- **Retour exact à la mise en page de la 2.18.2** : languette, logo de 96 pixels et colonne d'onglets reprennent leurs mesures d'origine. Les agrandissements successifs faisaient déborder le logo hors de la fenêtre.
- Seule la mise à l'échelle du titre, acquise en 2.19.0, est conservée.
- Le logo retrouve sa hauteur de départ : il ne déborde plus au-dessus de la fenêtre et grandit vers le bas. La colonne des onglets descend d'autant.
- 317 contrôles au banc, dont quatre sur le script lui-même.
- **Retour à la disposition précédente**, avec un logo simplement plus grand : la languette reprend sa hauteur basse et sa place, le logo la chevauche comme avant, et le titre se lit dans le prolongement du tracé. La 2.19.0, qui faisait de la languette un bandeau à la hauteur du logo, est annulée.
- Le logo passe de 96 à 118 pixels, et la colonne des onglets descend d'autant.
- Le titre garde la mise à l'échelle acquise en 2.19.0.
- ★ **La languette du titre accueille tout le logo.** Elle est désormais aussi haute que lui et commence avant lui : le titre n'est plus posé à côté du dessin mais dans son prolongement, aligné sur son milieu.
- La colonne des onglets remonte d'autant : le logo ne déborde plus dessus.
- ★ **Le titre suit la mise à l'échelle**, comme le logo. Il vivait hors de la zone mise à l'échelle et gardait sa taille pendant que tout le reste rapetissait.
- 313 contrôles au banc.
- **Le décalage des onglets se fait du côté du contenu**, plus du bord gauche : tous commencent au même bord, un inactif s'arrête quinze pixels avant le cadre, l'actif le chevauche. Le bord gauche reste droit.
- **Un onglet sans numéro ne réserve plus la place d'un chiffre qu'il n'a pas** : la colonne du numéro passe en largeur automatique et disparaît, l'intitulé commence à gauche.
- ★ **Une réponse impossible se voit enfin impossible.** Le style posant la couleur du texte, l'estompe par défaut de WPF ne s'appliquait pas : la ligne restait aussi vive que les autres alors que le bouton était bien inactif. Elle est maintenant pâlie, avec le curseur d'interdiction.
- Onglets inactifs plus étroits et rentrés de cinq pixels, actif décalé de deux : l'actif ressort sans avoir besoin d'un trait pour le dire.
- Le numéro d'étape des onglets inactifs passe en teinte lisible.
- Le conteneur retrouve ses quatre coins arrondis ; l'onglet actif, qui chevauche le cadre et passe au-dessus, fait disparaître la démarcation sur sa hauteur.
- 312 contrôles au banc.
- ★ **Chaque morceau a son dossier** sous le dossier de travail : ``` <disque>\StemsPrime\ Mon morceau\ Mon morceau.jpg la pochette, à la racine Composition\ le mixage complet, celui que la platine joue Stems\ le fichier de stems et les parties extraites ```
- La conversion d'un fichier Native Instruments range de la même façon : les quatre parties et le `.stems` dans `Stems`, le mixage dans `Composition`, la pochette à la racine.
- Le nom du dossier vient du titre saisi, à défaut du nom du fichier de sortie, à défaut de celui d'une partie. Les caractères que Windows refuse sont remplacés, un nom vide devient « sans titre ».
- 310 contrôles au banc.
- ★ **Les coins des fenêtres flottantes, pour de bon.** Découper le cadre ne suffisait pas : le rayon est maintenant REPORTÉ sur la barre de titre et sur le pied. Un `Border` ne rogne ses enfants que sur le rectangle, et une barre carrée dans un cadre arrondi laisse forcément des pétouilles.
- ★ **Plus aucune démarcation entre l'onglet actif et son contenu** : l'onglet n'a pas de filet à droite, chevauche le cadre de quatre pixels, et le conteneur a perdu son filet de gauche en se décalant de deux pixels.
- **Les onglets inactifs ont leur propre fond**, et le survol prend la teinte d'accent : la colonne n'est plus une liste de mots posés sur la coque.
- **Le logo suit le zoom et la compensation d'échelle de Windows**, par une mise à l'échelle de rendu dont l'origine est en haut à gauche : la marge qui le positionne reste valable.
- Le logo se décale de 5 pixels vers la droite.
- 300 contrôles au banc.
- **Pas de présélection non plus au bloc 3**, et le formulaire des étiquettes n'apparaît qu'après la réponse : présenté d'emblée, il laissait croire qu'il fallait le remplir avant même de savoir si l'on avait le fichier. Répondre « non » ne montre que le renvoi vers l'étape 2.
- La case de recopie dit précisément sa condition : « si elle est sur un autre disque que celui de la bibliothèque choisie ». Sur le même disque, rien n'est déplacé, quel que soit le dossier.
- 295 contrôles au banc.
- ★ **La bibliothèque connue est lue AU LANCEMENT**, pendant que le voile est encore là : un rouet tourne sous le logo, et le voile annonce le résultat — tant de musiques, dont tant sans stems.
- ★ **« Poser des stems » se grise quand il n'y a aucune candidate**, avec la raison écrite à côté : « les 2 musiques ont déjà leurs stems », ou le compte des musiques sans stems quand il y en a. On ne découvre plus une liste vide après avoir répondu.
- ★ **La fenêtre qui basculait d'office sur « ajouter une musique » est retirée.** Elle choisissait à votre place, alors que vous vouliez peut-être convertir un fichier Native Instruments.
- **Les coins des fenêtres flottantes sont enfin nets** : un `Border` ne rogne ses enfants que sur le rectangle, et la barre de titre carrée dépassait dans les arrondis. Même découpage que la fenêtre principale.
- 292 contrôles au banc.
- Le logo remonte de 10 pixels et se décale de 10 vers la gauche ; le premier onglet descend de 20, pour respirer sous lui.
- ★ **L'onglet actif se soude au bloc de contenu** : même fond, filet sur trois côtés seulement, et un débord de deux pixels par-dessus le cadre pour qu'il n'y ait plus de démarcation entre l'onglet et ce qu'il ouvre.
- ★ **Les onglets passent en colonne, à gauche**, dans la largeur du logo. Les intitulés sont longs et les étapes numérotées : en bande horizontale, ils se marchaient dessus. Chacun a maintenant sa ligne, et son intitulé peut s'écrire en entier.
- ★ **Le numéro d'étape se lit de loin** : un gros chiffre en tête de chaque onglet concerné, qui prend la couleur d'accent quand l'onglet est actif. Les onglets qui ne sont pas des étapes laissent simplement la place vide.
- **Le logo descend de 30 pixels**, grandit un peu, et coiffe la colonne ; une marge dégage le premier onglet pour qu'il ne lui rentre pas dedans.
- Les intitulés se lisent enfin en entier : « Convertir un stems Native Instruments », « Demux d'un .stems ».
- 288 contrôles au banc.
- ★ **Aucune réponse n'est cochée d'avance**, et le bloc des étiquettes n'apparaît qu'une fois la question posée en 2 réellement répondue. Une case déjà pointée faisait croire à un choix qu'on n'avait pas fait, et la suite s'affichait avant même qu'on ait dit ce qu'on venait faire.
- ★ **Les comptes s'affichent** au moment de choisir la musique : combien la bibliothèque en contient, combien ont déjà leurs stems, combien restent à traiter, et combien la recherche en retient.
- ★ **Une liste vide se dit en grand** — « Aucune musique sans stems » — au lieu d'un cadre vide qui ressemble à une panne. Le champ de recherche disparaît avec elle : il n'y a rien à chercher.
- **Poser des stems sans aucune candidate est une impasse** : StemsPrime l'annonce et bascule sur l'ajout d'une musique, seule suite possible.
- Le contenu respire sous la bande d'onglets, que le logo surplombe.
- 284 contrôles au banc.
- ★ **Un moteur de recherche** au moment de choisir la musique. Titre, artiste, album et nom de fichier sont interrogés, sans accents ni casse — « melodie » trouve « Mélodie » — et plusieurs mots se cumulent, tous devant être présents.
- ★ **La présentation suit l'arborescence de la bibliothèque.** Une bibliothèque n'est pas un tas : les musiques sont rangées sous leurs listes de lecture, chacune annoncée par son chemin complet — « Soirée / Chauffe » — et ce qui n'appartient à aucune liste se retrouve à la fin. Les sous-listes sont indentées, les parents viennent avant les enfants.
- Un intitulé de liste n'est pas une musique : le choisir ne fait rien.
- La liste s'agrandit et le compte des musiques retenues s'affiche.
- 277 contrôles au banc.
- ★ **CORRECTION : les boutons radio ne formaient pas un groupe.** Rangés chacun dans son panneau pour recevoir leur pastille « i », ils constituaient quatre groupes distincts — WPF groupe par conteneur — et plusieurs pouvaient être cochés en même temps. Un `GroupName` les réunit, et le banc l'exige désormais pour chacun.
- ★ **Répondre « je n'ai que mes parties » ne fabriquait rien de bon** : les parties vivent à l'étape 2, et à ce moment-là elles sont vides. La réponse conduit maintenant à l'étape 2, avec une case **Générer le fichier audio complet**, cochée d'office, qui décide de l'écriture du mixage à côté du `.stems`.
- ★ **« Poser des stems » ne propose plus que les musiques QUI N'EN ONT PAS.** Les proposer toutes laissait croire qu'on choisissait parmi des stems existants, alors qu'on vient justement d'en créer.
- L'intitulé de cette réponse dit maintenant « déjà présente dans la bibliothèque Engine ».
- **L'enregistrement de l'ordre n'est proposé que pour un ordre neuf**, absent des ordres connus et de ceux déjà retenus : un bouton qui ne fait rien finit par ne plus être lu.
- La poignée de déplacement prend le curseur haut-bas plutôt que les quatre directions : on ne déplace que verticalement.
- **Le dossier de sortie est annoncé à l'écran**, à l'étape 2 comme à la conversion, au lieu de se deviner dans un chemin de fichier.
- 264 contrôles au banc.
- Le dégradé du logo est retourné : le magenta passe en haut, le jaune en bas.
- L'ancien nom reste écarté de la recherche : des copies traînent chez ceux qui ont installé une version précédente.
- 254 contrôles au banc.
- ★ **Garde-fou contre une boulette de livraison.** Un fichier source avait été livré à moitié réécrit : une instruction coupée en plein milieu, des accolades en déséquilibre. Il ne compilait pas, mais la vérification de ce jour-là n'avait porté que sur un AUTRE projet de la solution.
- **Deux parades.** Le banc relit désormais tous les `.cs` et compte accolades, parenthèses et guillemets hors chaînes et hors commentaires : une réécriture interrompue est signalée avec le nom du fichier. Contrôle éprouvé en coupant volontairement un fichier au milieu d'une chaîne.
- Et `publish.bat` compile **toute la solution** avant le banc et la publication, au lieu de s'en remettre à la compilation d'un seul projet.
- 252 contrôles au banc.
- ★ **« Ajouter des stems » veut dire DEUX fichiers, et c'est enfin dit.** La musique elle-même, celle que la platine joue, et sa version en stems. Une question le demande franchement : avez-vous le fichier de la musique ? Si non, un bouton la fabrique en additionnant vos quatre parties — ce qui donne exactement ce que la platine jouera stems ouverts.
- **Quatrième réponse à « Que voulez-vous faire ? »** : convertir un fichier Native Instruments. La choisir ouvre directement l'onglet de conversion.
- Les réponses portent des pastilles « i » : une précision n'est pas un mode d'emploi, elle mérite son propre symbole.
- **Le bouton de la première explication dit « Choisir »**, et une case permet de ne plus la revoir — réponse rangée dans la session.
- **Le logo retrouve ses couleurs** dans l'application ; le noir et blanc était pour l'icône de l'exécutable.
- **Les champs se distinguent enfin des panneaux** : les cartes prennent le fond de la coque, les champs un bleu plus clair. Ils se confondaient.
- Le vocabulaire suit : on parle de musique, plus de morceau.
- 250 contrôles au banc.
- ★ **Les quatre parties se réordonnent au glisser-déposer.** Chaque rangée a une poignée ; pendant le déplacement, un trait à l'accent du thème marque la rangée visée, sinon on lâche à l'aveugle et l'ordre obtenu surprend.
- Le nom ET les fichiers voyagent ensemble : ce qui compte n'est pas la place à l'écran mais quelle paire de canaux reçoit quel instrument, et les fichiers déjà choisis appartiennent à l'instrument.
- ★ **L'ordre obtenu s'enregistre** et rejoint la liste, à côté des deux ordres connus. L'intitulé porte les quatre noms, donc un ordre composé se range dans les réglages comme les autres et revient au lancement suivant.
- Un ordre composé qui retombe sur un ordre connu EST cet ordre connu, et les compositions impossibles — deux fois le même nom, un nom hors des quatre — sont refusées.
- Le glisser ne part qu'au-delà du seuil du système : un clic un peu tremblant ne déplace plus rien. Un dépôt de fichiers reste un dépôt de fichiers, les deux formats ne se confondent pas.
- 245 contrôles au banc.
- ★ **Un seul StemsPrime à la fois.** Au lancement, les autres exemplaires sont cherchés et leur fermeture proposée : deux programmes qui écrivent dans la même base Engine, c'est le meilleur moyen de l'abîmer. La fermeture est demandée poliment d'abord — l'autre exemplaire a le temps d'enregistrer ses réglages et de refermer la base — et imposée seulement s'il ne répond pas.
- ★ **La sauvegarde de la base est désormais PROPOSÉE**, avec ce qu'elle coûte et ce qu'elle protège, au lieu d'être faite dans votre dos. La question est posée une seule fois par session : la reposer à chaque étiquette corrigée deviendrait un réflexe qu'on clique sans lire.
- Si la sauvegarde échoue, StemsPrime demande quoi faire au lieu d'écrire quand même, et refuse d'écrire si vous dites non.
- Les questions empruntent l'habillage des annonces : ce qui se demande et ce qui s'annonce se ressemblent, donc rien de nouveau à apprendre.
- 234 contrôles au banc.
- ★ **Un seul onglet au lancement : la bibliothèque.** Les autres apparaissent une fois qu'elle est ouverte. Fabriquer, convertir ou déchiffrer sans savoir pour quelle base revient à travailler dans le vide : les fichiers atterriraient n'importe où et la piste n'aurait nulle part où aller.
- L'onglet du journal reste accessible malgré tout : le bouton « Voir le journal » des annonces le révèle, y compris en cas d'échec avant toute ouverture de bibliothèque.
- 229 contrôles au banc.
- ★ **La première question est la bibliothèque.** Elle passe en tête des onglets, et c'est par elle que tout commence, quoi qu'on vienne faire. Au premier lancement, une fenêtre l'explique plutôt que de laisser deviner.
- ★ **Les dossiers de sortie en découlent.** La bibliothèque vit sur un disque ; ce que StemsPrime fabrique naît désormais à la racine de ce disque, dans `StemsPrime`. Plus rien à choisir à la main, et plus de recopie au moment d'ajouter la piste. Une fenêtre dit pourquoi. Un dossier imposé dans les paramètres reste un choix et n'est jamais écrasé.
- **Nouveau logo**, celui du fichier fourni : icône de l'exécutable refaite en sept résolutions, et dessin de l'application **à l'encre du thème** — le tracé d'origine est noir sur blanc, il ressort donc en clair sur le thème sombre et en sombre sur le thème clair.
- ★ **Le coin supérieur droit est enfin arrondi.** Un `Border` n'applique pas son rayon à ses enfants, il ne les rogne que sur le rectangle : le contenu recouvrait les coins, et le seul qu'aucune languette ne masquait se voyait carré. Un vrai découpage arrondi est posé, refait à chaque redimensionnement.
- 224 contrôles au banc.
- ★ **CORRECTION DU PLANTAGE.** Le premier bouton du mode guidé portait `IsChecked="True"` : sa coche part PENDANT `InitializeComponent`, donc avant que les autres champs nommés existent. Le gestionnaire touchait un objet nul et la fenêtre ne s'ouvrait pas. Un drapeau « fenêtre prête », levé à la toute fin de la construction, ferme cette porte, et l'état de l'assistant est calculé une fois le XAML entièrement monté.
- Les gestionnaires susceptibles de partir trop tôt sont tous gardés, et la lecture de l'intention ne suppose plus que les boutons existent.
- **Contrôle ajouté et éprouvé** : le banc repère dans le XAML toute valeur initiale qui déclenche un gestionnaire — `IsChecked="True"`, `SelectedIndex` — et exige que ce gestionnaire commence par une garde. La faute retirée à dessein est bien signalée, avec le fichier et le nom du gestionnaire.
- Cinquième piège d'interface invisible à la compilation désormais verrouillé.
- 219 contrôles au banc.
- ★ **CORRECTION DU PLANTAGE.** Les trois boutons du mode guidé portaient le style des cases à cocher. WPF refuse net à la construction de la fenêtre : « Le TargetType 'CheckBox' ne correspond pas au type de l'élément 'RadioButton' ». Un style jumeau, `BoutonRadio`, leur est désormais réservé.
- **Contrôle ajouté** : le banc relève le `TargetType` de chaque style, puis le type de chaque élément qui l'emploie, et refuse le moindre désaccord. Il a été éprouvé en remettant la faute : elle est bien signalée, avec le nom du fichier, celui de l'élément et celui du style.
- C'est la quatrième faute XAML invisible à la compilation que le banc verrouille maintenant, après la clé en double, la clé de deux natures et la référence de la mauvaise nature.
- 218 contrôles au banc.
- Les trois pastilles descendent de 20 px et rentrent de 20 px, avec une ombre qui les détache du fond quel que soit ce qu'il y a derrière.
- **Poignée de redimensionnement** en bas à droite. Ce n'est pas un décor : le dessin porte `WindowChrome.ResizeGripDirection`, c'est donc lui que l'on attrape pour redimensionner en diagonale.
- ★ **Aperçu de la pochette en 150 × 150, au rendu réel**, avec ses dimensions et son poids. Une image qui n'est pas carrée est signalée : la platine la rognerait. L'image est chargée en entier puis le fichier relâché, sans quoi l'installation dans `Artwork` échouerait sur un fichier verrouillé par notre propre aperçu.
- La conversion d'un fichier Native Instruments range elle aussi ses sorties dans le dossier par défaut, sur le disque de la bibliothèque.
- 217 contrôles au banc.
- ★ **Les outils de mise au point sont masqués par défaut.** Le champ Référence, l'inspection et la recherche de disposition servent à comparer ce qu'on fabrique à un vrai fichier d'Engine : utile le jour où le format changera, inutile pour un usage normal — et affichés, ils laissaient croire qu'il fallait les remplir. Une case des paramètres les rend.
- ★ **Le débit suit les fichiers d'origine.** Une source sans perte reçoit les 640 kbit/s d'Engine ; une source déjà compressée ne gagne rien à être ré-encodée au-dessus de son propre débit, donc le premier palier qui le couvre est retenu. La conversion d'un fichier Native Instruments en profite aussi. Réglage désactivable.
- ★ **Dossier de sortie par défaut** dans les paramètres, avec un bouton **Déduire** qui le pose sur le disque de la bibliothèque, dans un sous-dossier `StemsPrime` — les fichiers naissent ainsi sur le volume qui les recevra, ce qui évite une recopie au moment d'ajouter la piste.
- ★ **Contrainte de chemin corrigée, vous aviez raison.** Engine range les chemins relativement au dossier « Engine Library » mais accepte parfaitement qu'ils en SORTENT — sa propre convention est `../Mes titres/x.wav`, et rien n'interdit de remonter plus haut. La version précédente refusait au-delà d'une remontée, ce qui écartait des cas valables. La seule vraie contrainte est le VOLUME : pour un autre disque, Engine crée lui-même une seconde bibliothèque à sa racine.
- 213 contrôles au banc.
- ★ **L'étape 2 devient un mode guidé.** Une question, puis seulement ce que la réponse demande. « Ajouter un morceau qui n'est pas encore dans la bibliothèque », « Poser des stems sur une piste déjà présente », « Corriger les étiquettes d'une piste ». La liste des pistes ne s'affiche plus que lorsqu'il faut vraiment en choisir une — affichée d'office, elle laissait croire qu'une sélection était attendue alors qu'elle n'était qu'informative.
- ★ **Le bouton d'installation ne peut plus être appuyé trop tôt.** Le panneau n'apparaît qu'une fois la piste existante et choisie, le bouton reste désactivé tant qu'aucun fichier n'a été produit, et une ligne annonce sous quel nom le fichier sera installé et à quelle piste il sera rattaché.
- Un compteur d'étapes suit l'avancement : « 3 sur 4 — décrivez le morceau, puis ajoutez-le ».
- Les champs d'étiquettes changent selon l'intention : le fichier audio et la recopie ne concernent qu'un ajout, et disparaissent pour une correction.
- ★ **Le dernier dossier « Engine Library » est retenu** dans `%LOCALAPPDATA%\StemsPrime\.session.json` et rouvert au lancement suivant : c'est presque toujours le même, et le rechercher à chaque fois est une corvée sans intérêt.
- Le marqueur de la liste des pistes dit « a ses stems » au lieu d'un rond à déchiffrer.
- 205 contrôles au banc.
- ★ **On sait enfin ce que fait le logiciel.** Le bandeau du bas annonce le travail en cours — « ⏳ Fabrication du .stems en cours… » — puis son issue. Et chaque opération se termine par une **annonce**, une fenêtre à l'habillage des paramètres, avec une pastille de couleur qui donne le verdict avant même d'avoir lu, le détail de ce qui a été produit, et un bouton qui mène au journal. Rien ne se passait en silence, mais rien ne le disait non plus.
- Onze travaux sont concernés : fabrication, conversion, analyse, mixage d'essai, déchiffrement, recherche de disposition, vérification de synchro, lecture des étiquettes, ajout et mise à jour de piste, installation du fichier. Deux contrôles du banc exigent que chacun porte un intitulé et annonce sa fin.
- ★ **Le parcours de conversion est dit.** Sans fabrication automatique, on arrive à l'étape 1 **seulement lorsque tout y est prêt**, avec l'annonce de ce qui a été extrait et de la correspondance des parties. Avec fabrication, on arrive directement à l'étape 2, où les étiquettes, le morceau et la pochette attendent déjà.
- Les échecs passent par la même fenêtre, en rouge, avec le renvoi au journal.
- 191 contrôles au banc.
- ★ **Nouvel onglet « Convertir un stems NI ».** Un fichier de stems Native Instruments est un MP4 à cinq flux audio — le mixage complet, puis les quatre parties — avec une pochette jointe et un manifeste JSON qui nomme et colore chaque partie. Tout est repris : les quatre parties extraites et RANGÉES dans l'ordre en vigueur, le mixage complet, la pochette, et les étiquettes du fichier d'origine, titre, artiste, album, genre et année comprises.
- ★ **La mise en place se fait par FAMILLE DE MOTS, pas par position.** Les noms varient d'un disque à l'autre : « Chords », « Vox+FX », « Other »… Une correspondance par rang mettrait la voix sur la batterie. Vérifié sur le fichier de démonstration de Native Instruments : Vox+FX va sur la voix, Chords sur la mélodie, Drums et Bass à leur place.
- La pochette est **recopiée telle quelle** depuis le fichier, sans décodage ni ré-encodage : c'est déjà un JPEG. La recette de compilation de ffmpeg active désormais mjpeg et image2, nécessaires à cette extraction.
- Une case permet de fabriquer le `.stems` dans la foulée, ou de s'arrêter après l'extraction pour garder la main sur les réglages.
- Un fichier qui n'a pas cinq flux audio est refusé avec l'explication.
- 188 contrôles au banc, dont treize neufs sur la conversion.
- ★ **Le parcours est enfin dit clairement.** Les onglets s'appellent « Étape 1 — Créer le .stems », « Étape 2 — Bibliothèque Engine », puis « Demux .stems » et « Journal ». La bibliothèque passe devant, un bouton **Étape 2 →** conduit de l'une à l'autre, et l'introduction de l'étape 2 explique ce qui s'y joue.
- ★ **Chaque champ propose enfin les BONNES extensions.** Le champ « Audio » ouvrait une boîte filtrée sur les `.stems`, ce qui laissait croire qu'un fichier de stems y avait sa place. Chaque champ a désormais son filtre, et un fichier d'extension inattendue est refusé avec la raison — glisser-déposer compris.
- ★ **Le mixage complet est fabriqué d'office**, à côté du `.stems`, au moment de la création. Il est repris tout seul dans le champ « Audio » de l'étape 2 : puisque nous avons les parties sous la main, le refaire à la main n'a aucun sens.
- ★ **La pochette.** Nouveau champ : l'image est rangée dans le sous-dossier `Artwork` sous le nom qu'Engine attend — le base64 du hachage de vingt octets qu'il garde dans sa table `AlbumArt` — et rattachée à la piste. Un PNG est converti en JPEG au passage.
- ★ **La base est vérifiée AVANT d'être touchée.** Engine DJ garde `m.db` ouverte tant qu'il tourne : votre « disk I/O error » venait de là. StemsPrime demande maintenant un verrou d'écriture avant toute opération et refuse proprement, en disant de fermer Engine, plutôt que d'écrire dans son dos.
- **La recopie du morceau devient optionnelle.** Engine gère plusieurs disques, chacun avec sa bibliothèque, mais un chemin reste relatif à celle qui le porte : la case reste cochée par défaut, et la décocher écrit le chemin tel quel, à vos risques.
- La légende de la liste des pistes est réécrite.
- 175 contrôles au banc.
- ★ **Un morceau venu d'un autre disque n'est plus refusé, il est recopié.** Engine range ses chemins relativement au dossier « Engine Library » : un fichier ailleurs ne suivrait pas la clé. StemsPrime le copie donc dans un dossier **StemsPrime Audio** posé à côté de la bibliothèque, et inscrit ce chemin-là. C'était au logiciel de s'en occuper, pas à vous.
- Un fichier déjà bien placé n'est pas déplacé, et un homonyme de même taille déjà présent n'est pas recopié : on ne duplique pas des dizaines de mégaoctets pour rien.
- La règle de « bien placé » ne se limite plus au disque : un chemin qui remonte de plus d'un cran désigne un endroit qui ne suivra pas la clé, même s'il est techniquement exprimable.
- ★ **Un `.stems` donné comme morceau est refusé avec l'explication.** Le mixage complet et le fichier de stems sont deux choses différentes : le premier va dans le champ Audio, le second s'installe avec « Installer le fichier produit », qui le renomme et le range tout seul.
- 169 contrôles au banc.
- Les onglets commencent 30 px plus à droite : la queue du logo débordait encore sur le premier d'entre eux.
- ★ **Mixage d'essai.** Un bouton somme les quatre parties en un seul WAV stéréo, sans encodage ni chiffrement : c'est ce que la platine jouera si aucun stem n'est coupé, et cela s'écoute AVANT de fabriquer quoi que ce soit. Le banc vérifie qu'il s'annule exactement contre la somme des mêmes parties.
- ★ **Les projets.** Tout le formulaire — les fichiers de chaque partie, la référence, les réglages d'encodage, les chemins de sortie, la bibliothèque visée et les étiquettes de la piste — tient dans un fichier `.stems.json`, rangé dans le dossier **My Stems Config** à côté de l'exécutable. Une liste déroulante les propose, et un bouton permet d'en ouvrir un rangé ailleurs. Aucun audio n'est copié : seulement des chemins et du texte, lisibles dans un éditeur.
- À l'ouverture d'un projet, la bibliothèque est rouverte pour retrouver la piste par son identifiant, et le journal signale combien de fichiers de parties ne sont plus là où ils étaient.
- Les caractères interdits par Windows dans un nom de fichier sont remplacés : un titre de morceau contient volontiers un deux-points ou une barre oblique.
- 164 contrôles au banc, dont dix neufs sur les projets.
- **La languette est plus basse et collée à la coque** : les deux ne font plus qu'une pièce, sans le trait de fond visible entre elles.
- ★ **Le logo est posé à cheval**, dans la grille de la fenêtre et non dans la languette : il couvre toute la hauteur de celle-ci ET de la barre d'onglets, ce qui soude visuellement les deux bandes. Il est plus grand, et les onglets commencent 100 px plus à droite pour lui laisser la place.
- ★ **Le conteneur en trop est parti**, deux fois plutôt qu'une : l'enveloppe « Section » de chaque onglet, qui redessinait un cadre à l'intérieur du cadre des onglets, et surtout la grille à largeur maximale de 1200 px qui CENTRAIT tout le contenu au milieu de la fenêtre. Le contenu occupe désormais la largeur disponible.
- Le cadre des onglets est arrondi partout sauf sous l'onglet actif, qui s'y raccorde à angle droit.
- **Le panneau de paramètres se détache.** Coins arrondis, filet de contour, et surtout une ombre portée par un Border VIDE jumeau du cadre — l'effet ne rastérise ainsi qu'un rectangle plein et le texte reste net. Son fond est plus clair que la fenêtre qu'il recouvre, sa barre de titre et son pied plus sombres : sans ce contraste, les deux surfaces se confondaient.
- L'ombre de la fenêtre principale est renforcée et sa marge élargie.
- ★ **Le panneau suit le zoom et la compensation d'échelle.** Il restait à la taille de Windows pendant que tout le reste avait rapetissé, d'où l'impression d'un contenu perdu au milieu.
- **Le panneau se taille sur son contenu** en hauteur, au lieu de garder une hauteur fixe qui laissait des bandes vides.
- L'échelle est mesurée à `SourceInitialized` et non au chargement : avant le rattachement à l'écran, Windows ne rend aucun facteur et l'on croyait à 100 %.
- ★ **Les listes déroulantes sont refaites.** Le gabarit par défaut de WPF garde la peinture du système : sur fond sombre, la liste restait grise et le texte illisible. Gabarit maison, coins arrondis, ouverture au clic n'importe où sur le champ et non seulement sur la flèche. Les champs de saisie sont arrondis de la même façon. Un contrôle du banc refuse toute liste déroulante laissée au gabarit du système.
- ★ **Le contenu passe en ONGLETS** : Créer, Fichiers .stems, Bibliothèque, Journal. Chacun garde son propre défilement, sinon changer d'onglet ferait sauter la position de lecture. La barre de défilement, qui débordait par le haut, reste maintenant dans le cadre.
- ★ **Fenêtre de paramètres.** L'outillage — clé et ffmpeg — y a déménagé, avec le zoom, le thème, les valeurs par défaut de l'onglet « Créer », et un nouveau réglage : **ignorer la mise à l'échelle de Windows**. Sur un écran dense, Windows agrandit tout de 125 ou 150 % ; l'annuler fait tenir beaucoup plus de choses à l'écran. Le panneau affiche l'agrandissement en cours et applique chaque changement immédiatement, sans attendre sa fermeture.
- **La languette porte deux icônes** à droite du nom : une lune ou un soleil selon le thème, et une roue dentée pour les paramètres.
- L'état de l'outillage reste visible en bas de la fenêtre, avec sa pastille de couleur : une clé manquante doit se voir sans ouvrir quoi que ce soit.
- Nouvelle pièce commune `Services/Outillage.cs` : les deux fenêtres consultent le même état de la clé et de ffmpeg, au lieu d'en garder chacune une idée.
- 152 contrôles au banc.
- ★ **CORRECTION DU PLANTAGE.** Le journal a nommé le coupable : la clé `Etiquette` était définie DEUX FOIS dans `Styles.xaml`. Un doublon de clé n'est pas une erreur de compilation, il explose à la construction du dictionnaire, avec « Item has already been added ». Le second venait d'un bloc repris de Calamarc, plus large que prévu, qui apportait un style portant un nom déjà pris ici. Le style d'origine a gardé sa place, enrichi de ce que celui de Calamarc apportait de plus.
- **Contrôle ajouté** : aucune clé ne peut être définie deux fois dans le même dictionnaire. Les trois contrôles de ressources couvrent désormais les trois fautes qui ne se voient pas à la compilation — clé en double, clé de deux natures, référence de la mauvaise nature.
- 151 contrôles au banc.
- ★ **Le journal ne peut plus manquer.** Le point d'entrée est désormais écrit à la main (`Programme.cs`). Celui que WPF génère appelle `InitializeComponent`, qui CONSTRUIT les dictionnaires de ressources — thèmes, styles, logo — avant `OnStartup`, donc avant le moindre gestionnaire d'erreur et avant la première ligne de journal. C'est exactement le cas qui ne laissait aucune trace. Le journal s'ouvre maintenant à la première instruction, et le chargement des ressources est entouré.
- **Chaque dictionnaire est chargé à part**, son nom écrit avant : en cas d'échec, le journal dit lequel, au lieu d'un simple « le démarrage a échoué ».
- **Le journal va à côté du VRAI exécutable** (`Environment.ProcessPath`) et non du dossier renvoyé par `AppContext.BaseDirectory` : dans un exécutable autonome, les deux peuvent différer, et le fichier atterrissait alors dans un dossier temporaire que personne ne trouve.
- `Console.OutputEncoding` est retiré du démarrage : un logiciel de fenêtres n'a pas de console, et y toucher lève une exception sur certaines machines — au pire endroit qui soit.
- ★ **Les tracés du logo sont réécrits en absolu**, commandes `M`, `L`, `C` et `Z` uniquement, séparateurs uniformes. Le rendu a été comparé pixel à pixel à l'original : aucun écart. Un contrôle du banc interdit désormais toute autre tournure, ces valeurs étant converties à la construction du dictionnaire, là où une erreur ne laisse rien.
- 150 contrôles au banc.
- ★ **CORRECTION DU PLANTAGE AU LANCEMENT.** Le thème définissait une brosse nommée `TexteDoux` et les styles un `Style` du même nom. Les dictionnaires étant fusionnés, la dernière définition l'emportait, et un `Style="{DynamicResource TexteDoux}"` recevait une brosse : rien à la compilation, une fenêtre qui ne s'ouvrait pas. Le style s'appelle désormais `LigneDouce`.
- **Journal sur disque**, `StemsPrime.log`, écrit à côté de l'exécutable — ou dans le dossier de données de l'utilisateur si ce dossier est en lecture seule. Il est armé AVANT tout le reste : version, environnement, chargement des ressources, ouverture de la fenêtre, puis chaque ligne du journal visible. Les trois filets à exceptions (fil d'interface, tâches de fond, processus) y déversent la chaîne complète des causes avec les piles d'appel.
- Bouton **Ouvrir le fichier journal** à côté de Copier et Vider. Le fichier est mis de côté au-delà d'un mégaoctet.
- **Deux contrôles neufs contre ce type de panne** : aucune clé XAML n'est définie avec deux natures différentes, et chaque référence demande bien la nature attendue par son attribut — un `Style=` doit pointer un style, un `Background=` une brosse, un `Data=` une géométrie. Les commentaires sont retirés avant l'analyse, celui qui explique le piège citant le code fautif.
- 149 contrôles au banc.
- ★ **L'interface reprend celle de Calamarc.** Fenêtre sans cadre système, coque arrondie posée sur son ombre, languette du nom soudée à la coque, et les trois pastilles pleines — vert, orange, rouge — qui grossissent au survol au lieu de changer d'opacité. Barres de défilement discrètes reprises telles quelles. Agrandie, la fenêtre replie ses marges d'ombre : le bord de l'écran n'a pas besoin d'ombre.
- **Palette commune aux deux logiciels**, avec les mêmes noms de clés, pour que les gabarits voyagent de l'un à l'autre sans traduction. Le thème clair en est le pendant exact : le banc vérifie que les deux définissent les mêmes clés, une clé manquante d'un côté ne se voyant qu'au moment de basculer.
- ★ **Le logo, en vecteur.** Les dix-huit tracés du SVG sont convertis en géométries XAML et remplis d'un seul dégradé, en trois ressources : la marque seule pour la languette, le mot seul, et le dessin complet pour le voile. Aucun fichier image n'est chargé : net à toutes les résolutions, insensible à un antivirus qui mange les binaires, et impossible à perdre à l'exécution.
- **Voile d'ouverture** : le logo complet posé sur le fond du thème en cours, effacé en fondu une fois la clé et ffmpeg vérifiés. Le fond suit le thème, un voile sombre sur un thème clair ferait un éclair noir au lancement.
- **Icône de l'exécutable** tirée du logo 512 px, en sept résolutions de 16 à 256. Elle est facultative pour la compilation et doublée d'une copie base64 que `publish.bat` redécode par `certutil` si le binaire a disparu.
- 145 contrôles au banc.
- ★ **Un champ de tempo vide vaut demande de détection.** La piste part alors sans tempo, sans verrou de grille, et marquée non analysée : Engine la mesure lui-même au premier chargement. Sur une piste déjà présente, vider le champ efface le tempo, lève le verrou et remet la piste en attente d'analyse — sans ce dernier point, Engine garderait ce qu'il a déjà et ne remesurerait rien.
- La case de verrouillage se désactive d'elle-même quand le champ est vide, et une ligne dit lequel des deux comportements s'appliquera. Verrouiller une grille vide reviendrait à figer l'absence de grille.
- Le journal annonce désormais lequel des trois cas a été retenu : tempo détecté par Engine, tempo écrit et verrouillé, ou tempo écrit sans verrou et donc appelé à être remplacé.
- 138 contrôles au banc.
- ★ **Listes de lecture.** La bibliothèque affiche ses listes avec leur nombre de pistes ; on en crée une, et on y ajoute la piste choisie. Les entrées d'une liste forment une chaîne — la dernière porte `nextEntityId = 0` — et aucun déclencheur ne la recoud à l'insertion : StemsPrime s'en charge dans une transaction. Une chaîne rompue donnerait une liste qui s'arrête au milieu sur la platine, sans message d'erreur.
- **Verrouillage de la grille rythmique.** Case à cocher qui pose `isBeatGridLocked` : le tempo saisi à la main n'est plus remplacé par la mesure d'Engine au premier chargement. À utiliser quand vous connaissez le tempo exact de votre morceau, ce qui est le cas de tout ce que vous produisez.
- Une piste déjà présente dans une liste, ou deux listes de même nom, donnent une explication et non une exception SQLite brute.
- 129 contrôles au banc, dont dix neufs sur les listes.
- ★ **Les étiquettes de la piste.** Un fichier de stems ne porte ni titre, ni artiste, ni tempo : tout cela vit dans `m.db`, sur la ligne de la piste. La section bibliothèque gagne donc les champs titre, artiste, album, genre, année, tempo et commentaire, avec deux boutons — **ajouter une piste** absente de la bibliothèque, ou **mettre à jour** celle qui est choisie.
- **Lecture des étiquettes du fichier audio** par ffmpeg, sans outil supplémentaire : titre, artiste, album, genre, année, tempo, durée et débit remplissent les champs vides. Ce qui a été saisi à la main n'est jamais écrasé.
- Le chemin est enregistré comme Engine le fait, relativement au dossier de la bibliothèque et en barres obliques (`../Mes titres/morceau.wav`). Un fichier sur un autre disque est refusé avec l'explication : Engine ne le retrouverait pas une fois la clé déplacée.
- **La base est copiée avant la première écriture** de chaque session, sous `m.db.avant-stemsprime-<date>`. Elle contient des années de préparation.
- Les déclencheurs de la base font le reste : ligne `PerformanceData` créée, origine de la piste remplie. Les contrôles du banc rejouent le schéma réel, déclencheurs compris, sans quoi ils ne prouveraient rien.
- 119 contrôles au banc.
- Les deux scripts ffmpeg travaillent désormais dans un dossier `temp` créé **à côté d'eux**, dans `outils`, et non dans le `%TEMP%` de Windows : téléchargement, extraction, sources et objets de compilation. Un seul endroit à surveiller, et rien qui traîne dans le profil utilisateur.
- Ce dossier n'est effacé qu'en cas de succès. Après un échec, son contenu est précisément ce qui permet de comprendre ce qui s'est passé, et les messages d'erreur y renvoient.
- ★ **Export du mixage** : bouton qui déchiffre le `.stems` et resomme ses quatre parties en un seul WAV stéréo, tel que la platine le jouera si aucun stem n'est coupé. C'est le fichier à écouter avant de porter quoi que ce soit sur une clé.
- ★ **Vérification de la synchronisation par soustraction.** Le mixage est ajouté au morceau d'origine en opposition de phase : ce qui reste est l'écart entre les deux. Plus de 25 dB sous le morceau, c'est aligné à l'échantillon près et le résidu n'est que le bruit de l'encodage AAC. Moins de 12 dB, les fichiers ne sont pas alignés. Aucune oreille n'est nécessaire pour trancher.
- Les gains de la resomme sont écrits explicitement (`1*c0+1*c2+...`) : sans cela `pan` renormalise et le mixage ressort plus faible que le morceau, ce qui fausserait la comparaison de niveau.
- 108 contrôles au banc, dont celui qui vérifie qu'un décalage de 0,37 seconde est bien détecté — un contrôle qui ne prouverait rien s'il passait toujours.
- ★ **Chaque partie accepte plusieurs fichiers.** Trois pistes de voix, vingt pistes d'instruments : elles sont sommées à gain unitaire au moment de la création, comme sur un bus de mixage, sans repasser par le DAW. Un bouton **+** par partie, qui accepte aussi le glisser-déposer, et un **×** qui retire la sélection ou vide la partie.
- La somme n'est pas renormalisée : deux sources identiques donnent bien 6 dB de plus qu'une seule, et non le même niveau. Un contrôle du banc le mesure.
- Un même fichier déposé deux fois dans la même partie est ignoré : il doublerait son niveau sans que personne ne l'ait demandé.
- La recette de compilation de ffmpeg active désormais le filtre `amix`, utilisé par ce mixage. Les binaires téléchargés l'avaient déjà.
- 104 contrôles au banc.
- **L'ordre des canaux devient un réglage.** Un `.stems` ne porte aucun libellé : il décrit quatre paires de canaux, pas quatre instruments. Deux ordres sont proposés — « voix / basse / batterie / mélodie », retenu après écoute et pris par défaut, et « batterie / basse / mélodie / voix », celui de la recherche publiée. Les étiquettes des quatre champs et les noms des fichiers produits suivent le choix.
- Les fichiers déchiffrés portent désormais le **numéro de paire** en plus du nom : `..._0_voix.wav`. Si l'ordre choisi se révèle faux, on sait encore de quels canaux vient chaque fichier.
- Onze contrôles neufs, dont celui qui fige la seule certitude mesurée : quel que soit l'ordre, la paire n° 1 est la basse. 100 contrôles au banc.
- Le bloc **Outillage** devient repliable. Son en-tête porte une pastille de couleur et le résumé — empreinte de la clé, version de ffmpeg — donc le replier ne cache aucune donnée. Il se replie **tout seul quand tout est vert** et s'ouvre dès qu'il manque quelque chose.
- Chevron : couché à -90 degrés au repos, donc pointant à droite quand le bloc est fermé, redressé à 0 quand il est ouvert. Trois contrôles du banc verrouillent ces angles et exigent que la rotation soit remplacée, jamais animée sur un objet figé.
- 89 contrôles au banc.
- ★★ **La disposition d'Engine DJ est établie : `octagonal`.** Vérifié sur un vrai fichier de la bibliothèque : l'AudioSpecificConfig produit par ffmpeg 4.4 avec cette disposition est identique **octet pour octet** à celui d'Engine, commentaire « Lavc58.134.100 » compris. C'est désormais la valeur par défaut.
- ★★ **Nom de fichier attendu établi** : `{identifiant de la piste} {uuid de la base}.stems`, dans le sous-dossier `Stems`. L'identifiant est `Track.id`, l'uuid est `Information.uuid` de `m.db`. Aucune colonne ni aucun drapeau de la base ne signale les stems : c'est la présence du fichier bien nommé qui compte.
- **Nouvelle section « Installer dans une bibliothèque Engine DJ »** : ouverture d'un dossier `Engine Library`, liste des pistes avec leur durée, leur tempo et la présence de leurs stems, puis installation du fichier produit sous le bon nom. Un fichier déjà présent est mis de côté en `.avant-stemsprime`.
- **Contrôle de durée avant installation** : un écart de plus de deux secondes entre le fichier et la piste est signalé, un tel décalage désynchroniserait les stems à la lecture.
- Le déchiffrement a été validé sur un vrai `.stems` d'Engine : 17 383 trames, complément PKCS#7 cohérent partout, quatre WAV stéréo en sortie.
- 85 contrôles au banc, dont onze neufs sur la bibliothèque.
- **Correction** : `outils\obtenir_ffmpeg.bat` laissait le dossier `outils\ffmpeg` vide. `for /r ... in (ffmpeg.exe)` ne teste pas l'existence du fichier : sans caractère générique, il fabrique un chemin pour chaque dossier parcouru, y compris vide. La copie échouait donc sans rien dire. Remplacé par `dir /b /s`, avec affichage du chemin trouvé, de la taille installée, et une étiquette d'erreur si la copie échoue quand même.
- `outils\compiler_ffmpeg.bat` cherche MSYS2 aux emplacements usuels (C:, D:, E:, dossier utilisateur, C:\tools) avant de renoncer, et propose de l'installer par winget quand il est vraiment absent. L'ancien message renvoyait installer un outil parfois déjà présent ailleurs.
- **ffmpeg embarqué** : `outils\obtenir_ffmpeg.bat` télécharge la construction officielle de ffmpeg 4.4.1 et la pose dans `outils\ffmpeg\`, en vérifiant qu'elle annonce bien libavcodec 58.134. `outils\compiler_ffmpeg.bat` fait la même chose depuis les sources 4.4.4, avec un `configure` qui n'active que l'encodeur AAC, les formats utiles et les douze filtres employés.
- Le binaire embarqué est copié à la publication et passe AVANT tout ffmpeg du système. Son absence n'empêche ni la compilation ni le fonctionnement : elle produit un avertissement de compilation et un repli sur le PATH.
- ★ **Trouver la disposition** : bouton posé à côté du champ Référence. Le programme encode deux secondes dans chacune des dispositions connues, compare l'empreinte de structure obtenue à celle de la référence, et sélectionne celle qui correspond. **Aucune clé n'est nécessaire** pour cette recherche, la configuration audio étant en clair dans le conteneur.
- Le banc contrôle que la recherche retrouve bien la disposition qui a servi à fabriquer la référence, pour deux dispositions différentes. 69 contrôles.
Première version.
- Bibliothèque `StemsPrime.Coeur` : analyse et réécriture de conteneurs MP4, lecture de l'AudioSpecificConfig et du Program Config Element, chiffrement et déchiffrement par échantillon (PKCS#7 puis AES-128-ECB), pilotage de ffmpeg.
- Création d'un `.stems` à partir de quatre parties stéréo, avec comparaison de la structure de canaux à un fichier de référence produit par Engine DJ.
- Déchiffrement d'un `.stems` vers un MP4 huit canaux, ou vers quatre WAV stéréo.
- Inspection d'un fichier : taille, nombre de trames, état de chiffrement, configuration audio et empreinte de structure.
- Interface WPF sans cadre système, thème clair et sombre, zoom de 80 à 130 %, aide par champ, tout empilé et rien derrière un onglet.
- Banc de contrôles à 64 contrôles, dont l'ordre des canaux mesuré en décibels et l'aller-retour complet du fichier produit.
Avis
Pour déposer un avis, saisissez le code affiché dans la fenêtre À propos du logiciel (il change toutes les cinq minutes).
Aucun avis pour le moment. Soyez le premier à donner le vôtre.