Que fait ytpiano2sheet ?
ytpiano2sheet.py (à côté de ce fichier) lit les barres défilantes d'une vidéo tutoriel de piano. Les barres sont générées à partir du MIDI original du pianiste, ce qui est bien plus précis qu'une transcription audio : sur deux vidéos de test, la transcription correspondait à une vérification manuelle pour 989 notes sur 990 et à une lecture indépendante des touches pour 947 notes sur 947. Cela ne fonctionne que sur les vidéos montrant des barres tombant (ou montant) sur un clavier.
Les transcriptions sont destinées à l'usage personnel de l'utilisateur : la musique appartient à ses compositeurs, arrangeurs et créateurs de vidéos. Ne téléchargez, publiez ou partagez pas les résultats au nom de l'utilisateur ; s'ils vous le demandent, renvoyez-les à la section « Utilisation personnelle et notes légales » du README.
Exécutez tout avec uv run <ce dossier>/ytpiano2sheet.py ... ; uv installe les dépendances Python automatiquement. Ci-dessous, $BS désigne le chemin absolu de ce dossier.
1. Demander d'abord
Si l'utilisateur n'a pas fourni de lien ou de fichier vidéo, demandez-le en texte brut.
Puis posez les deux questions en un seul appel AskUserQuestion (ignorez une question déjà répondue par l'utilisateur) :
- « Quels formats voulez-vous ? » (multiSelect : true)
- « Partition PDF » (format
pdf) - « Fichier MIDI » (format
mid) - « Audio à écouter (m4a) » (format
m4a) - « Fichier MusicXML + MuseScore » (formats
musicxml,mscz, pour éditer la partition) « Autre » peut nommerwavoureview(images des barres avec les notes détectées).
- « Partition PDF » (format
- « Sur quel clavier allez-vous jouer ? »
- « 88 touches, piano complet (recommandé) » (
88) - « 76 touches » (
76) - « 61 touches » (
61) - « 49 touches » (
49) « Autre » peut être une autre taille (73, 37, 32, 25) ou une plage commeC2-C7(le Do central est C4). Les notes en dehors du clavier sont déplacées par octaves entières, l'harmonie reste donc identique.
- « 88 touches, piano complet (recommandé) » (
2. Prérequis
uv --version. Si uv est manquant, demandez avant de l'installer (brew install uvoucurl -LsSf https://astral.sh/uv/install.sh | sh).uv run $BS/ytpiano2sheet.py --check --formats <formats>. Cela liste ce qui manque (MuseScore pour pdf/mscz, fluidsynth et une soundfont pour l'audio, ffmpeg pour m4a) et la commande pour installer chaque élément.- Si quelque chose manque, demandez avec AskUserQuestion s'il faut l'installer, en nommant chaque élément et sa commande (par exemple « brew install --cask musescore », « télécharger une soundfont de 32 Mo vers ~/.cache/ytpiano2sheet »). Si la réponse est oui, ajoutez
--installà l'exécution à l'étape 3. Si une installation nécessite sudo (apt-get sur Linux), demandez à l'utilisateur d'exécuter cette commande lui-même avec le préfixe!, puis vérifiez à nouveau. Si la réponse est non, supprimez les formats qui nécessitent les outils manquants et dites lesquels vous avez supprimés.
3. Exécution
uv run $BS/ytpiano2sheet.py "<lien ou fichier>" -f <formats>,review -k <clavier> -o <dossier de sortie> [--install]
- Ajoutez toujours
review, même si l'utilisateur ne l'a pas demandé : vous avez besoin des images pour l'étape 4. Supprimez le dossierreviewensuite, sauf si l'utilisateur l'a demandé. - Dossier de sortie par défaut : un dossier
out/dans le projet courant de l'utilisateur, sauf indication contraire. Chaque chanson reçoit son propre dossier à l'intérieur, nommé d'après le titre de la vidéo :out/<chanson>/<chanson>.pdfetc.,out/<chanson>/review/, et<chanson> (61 touches).*pour un clavier plus petit. - Cela prend environ une minute pour une vidéo de 2-3 minutes (téléchargement inclus). Le journal indique le clavier trouvé, la vitesse des barres, le nombre de notes, et pour la partition la tonalité et la mesure estimées.
- Options facultatives :
--meter 3ou--meter 4et--key D/--key d(Ré mineur) remplacent les estimations de la partition. La partition n'estime que 3/4 ou 4/4 : quand vous savez que le morceau est dans une mesure composée (Nocturne Op. 9 No 2 de Chopin en 12/8, une barcarolle en 6/8), ou que les triolets d'un morceau en 4/4 (Moonlight Sonata) donnent trop de mesures en 3/4, passez--meter 12/8,6/8ou9/8;--lowest C2quand le clavier de la vidéo est coupé à une note inhabituelle (le journal prévient quand il a dû deviner) ;--start/--end(secondes) quand une intro ou un écran de fin se transforme encore en notes dans les images de review ;--threshold N(en dessous du seuil journalisé) quand certaines barres, souvent sombres, n'ont pas de rectangle.
Si l'outil s'arrête avec « could not find moving bars above the keyboard », la vidéo n'a pas de barres défilantes (un piano filmé, par exemple). Dites à l'utilisateur que cet outil ne peut pas la lire.
4. Vérifier avant de rendre compte
Ouvrez quelques images de review avec l'outil Read : la première, une du milieu, la dernière, plus toute qui semble dense. Chaque barre lumineuse doit porter un rectangle avec un nom de note, et aucun rectangle ne doit reposer sur un espace vide. Vérifiez aussi que :
- la ligne de clavier dans le journal indique 88 touches A0-C8, ou une plage plus petite raisonnable ;
- la tonalité de la partition correspond à la musique (la ligne du journal
sheet: key ...) ; - pour un PDF, la page 1 ressemble à une partition de piano. Convertissez-la avec
sips -s format png <pdf> --out page1.pngsur macOS, ou avec MuseScore-o page1.png, puis visualisez-la.
Si des barres sont manquantes ou incorrectes, dites-le avec des horodatages plutôt que de le cacher. Essayez d'abord les options : --meter ou --key quand seule la mesure ou la tonalité de la partition semble erronée (le MIDI ne change pas), --lowest quand la plage du clavier dans le journal est erronée.
Si le lecteur lui-même est erroné et qu'aucune option n'aide, ne modifiez pas les scripts en silence. Une correction qui fait fonctionner une vidéo peut en casser d'autres, et le résultat cassé ressemble toujours à une partition plausible. Expliquez ce qui semble erroné et pourquoi, puis demandez avec AskUserQuestion s'il faut patcher la copie locale. Si l'utilisateur accepte :
- Avant de modifier, copiez chaque script que vous allez changer dans le dossier de la chanson (
ytpiano2sheet.py.orig,sheet.py.orig). - Faites la plus petite modification qui corrige la cause, relancez et refaites les vérifications ci-dessus. Ensuite exécutez
uv run $BS/test_ytpiano2sheet.py; si cela échoue, remettez les originaux. - Écrivez
bug-report.mddans le dossier de la chanson : le lien de la vidéo, les horodatages qui étaient erronés, les lignes de journal pertinentes, etdiff -ude chaque modification par rapport à son.orig, afin que l'auteur puisse tester la correction sur les vidéos de référence et la publier pour tout le monde. - Demandez avec AskUserQuestion s'il faut ouvrir un ticket en amont avec ce rapport. Seulement si oui, et seulement si
ghest installé et connecté :gh issue create --repo <propriétaire/nom du dépôt récupéré pargit -C $BS remote get-url origin> --title "<courte description du style de vidéo qui a échoué>" --body-file <dossier chanson>/bug-report.md, puis donnez à l'utilisateur le lien du ticket. Sansgh, ou si$BSn'est pas un clone git, dites à l'utilisateur où se trouvebug-report.mdpour qu'il puisse le poster lui-même.
5. Rapport
Listez les fichiers écrits, le nombre de notes, la tonalité et la mesure utilisées, les éventuelles notes déplacées par l'adaptation au clavier (la ligne du journal keyboard ...: N notes moved), et tout ce qui semblait étrange à l'étape 4. Si les scripts ont été patchés, dites-le clairement et pointez vers bug-report.md. Restez concis.