Communitygithub.com

jcl2018/bass-tab

Transforme des sources de chanson (captures d'écran de tablatures, PDF, liens, notes) en une tablature basse compacte au format fixe, et génère un PDF de partition play-along d'une ou deux pages avec étiquettes de sections, répétitions réduites, accords et paroles.

Qu'est-ce que bass-tab ?

Cette compétence permet à un agent IA (tel que Claude Code, Cursor ou Codex) de créer une tablature basse à partir de sources visuelles comme des captures d'écran, PDF ou notes manuscrites. Elle génère un fichier structuré au format `.py` contenant les métadonnées, les mesures, les sections, les accords et les paroles, puis produit une tablature texte compacte (`.tab`) et un PDF prêt à imprimer (une à deux pages US-Letter/A4). La compétence insiste sur la fidélité aux sources : l'agent ne doit rien inventer, ne vérifier chaque répétition qu'une seule fois, et signaler clairement les mesures manquantes ou estimées. Elle supporte les thèmes non latins (nécessite Pillow) et inclut des scripts pour la génération et la vérification. Utile pour les musiciens souhaitant un support de répétition lisible, elle offre aussi des suggestions pédagogiques et musicales.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jcl2018/skillset/tree/HEAD/skills/bass-tab

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait bass-tab ?

Transforme ce qu'une source montre réellement en un fichier de données de chanson, puis génère une tablature basse compacte (.tab) et un PDF de partition play-along prêt à imprimer (1-2 pages US-Letter). Nécessite uniquement python3 ; Pillow est également nécessaire lorsque le titre ou l'artiste est non latin (par exemple chinois). Sans lui, chart2pdf.py et tab2pdf.py refusent plutôt que d'afficher ? ; installez-le dans un environnement virtuel (python3 -m venv v && v/bin/pip install pillow) et exécutez le script avec ce python, ou passez --allow-lossy. Les scripts se trouvent dans scripts/ à côté de ce fichier ; exécutez-les depuis le dossier de cette compétence ou donnez les chemins complets.

Le fichier de chanson

Une chanson, un répertoire, trois fichiers :

<slug>/
  <slug>.py     la source de vérité : données structurées, modifiables à la main (à partir de templates/song-template.py)
  <slug>.tab    généré par scripts/tabgen.py
  <slug>.pdf    la partition play-along, générée par scripts/chart2pdf.py directement à partir de <slug>.py

<slug>.py fournit META / BARS / SECTIONS / CHORDS / LYRICS. Une figure répétée est écrite UNE FOIS et estampillée partout où elle est jouée, donc une correction atteint chaque copie. Ne développez jamais une répétition en copies indépendantes.

LYRICS associe un numéro de mesure aux mots chantés sous cette mesure. Ils peuvent provenir du propriétaire, ou de ce qu'une source montre visiblement (par exemple des paroles à l'écran dans une vidéo de tablature). Ne les inventez jamais et ne les remplissez pas de mémoire ou via une recherche web ; si aucune source ne montre de mots, laissez LYRICS = {} et dites que le propriétaire peut les ajouter. Une chanson sans paroles s'affiche proprement. Les paroles s'impriment textuellement et survivent à chaque régénération.

Rendu

python3 scripts/chart2pdf.py <slug>/<slug>.py -o <slug>/<slug>.pdf [--paper letter|a4]
python3 scripts/tabgen.py <slug>/<slug>.py <slug>/<slug>.tab --bars <1 si META slots == 16 sinon 3> --cut compact

Le PDF est une partition, dans le style d'un lecteur de tablature en ligne : plusieurs mesures par ligne, une étiquette de section en gras là où chaque section commence, une figure répétée dessinée une fois entre les signes de répétition avec son compte (x4), une section qui répète une précédente réduite à une ligne (Chorus 2 = Chorus (mesures 13-16)), des noms d'accords au-dessus des mesures où CHORDS les a, et des paroles sous la mesure à laquelle elles appartiennent. Il est au format US-Letter par défaut et au maximum 2 pages : les chiffres de tablature restent à 9 pt ou plus, l'espacement se resserre et les répétitions se réduisent avant que la police ne rétrécisse, et une chanson qui ne tient toujours pas est refusée avec une ligne la nommant. Signalez le nombre de pages. Nécessite Pillow pour les paroles ou titres non latins (voir ci-dessus). --collapse-sections force les lignes de référence.

Le long PDF d'une mesure de large est toujours disponible : tabgen.py ... --cut compact puis tab2pdf.py <slug>.tab -o <slug>-long.pdf. --cut compact est la feuille texte. C'est la seule découpe qui porte la notation des répétitions (une figure réduite étiquetée A-B xN). --cut full est une vue de débogage (chaque mesure, plus une rangée de rythme que le format ne liste pas), jamais le livrable. Donnez aux sorties des chemins complets.

Le format texte : lignes d'en-tête (titre, artiste, tonalité, tempo, mesure, accordage, source, légende), puis par section un en-tête [Nom - mesures a-b . m:ss], une ligne d'accords, une ligne de numéros de mesures, une ligne de rythme R|, et quatre lignes de cordes G D A E ; puis des avertissements, puis un bloc [Vérifié]. Les lignes de portée sont fixées à 77 caractères pour que chaque chanson s'imprime à la même échelle ; si une ligne est plus longue, utilisez moins de mesures par système.

Création d'un fichier de chanson à partir de sources

Suivez cela littéralement ; c'est le but de la compétence.

  1. Prenez uniquement ce qu'une source montre réellement. Une capture d'écran ou un PDF d'une tablature peut être lu. Un lien vers un enregistrement ne peut pas : vous ne pouvez pas entendre l'audio. À partir d'une URL de chanson, prenez le titre, le tempo et les noms de sections s'ils sont imprimés, rien d'autre. Ne fournissez jamais une mesure de mémoire de la chanson. Une lacune visible vaut mieux qu'une mesure qui a l'air correcte et ne l'est pas.
  2. Piste de basse uniquement. Si une source montre plusieurs instruments, prenez la basse et dites quelle piste. Deux pistes de basse, ou basse doublée : demandez, ne choisissez pas.
  3. Vérifiez chaque répétition, et encodez-la une fois. Lisez chaque occurrence et comparez. L'accord est la vérification la plus solide disponible ; un désaccord signifie qu'au moins une lecture est erronée. Les occurrences concordent : encodez une fois. Elles divergent : dites-le, donnez le nombre dans chaque cas, marquez la lecture comme une estimation. Une mesure sans répétition nulle part ne peut pas être vérifiée ; dites-le sur la feuille.
  4. N'affirmez jamais ce que vous n'avez pas vérifié. Des affirmations comme "identique aux mesures A-B" sont générées à partir des données, pas tapées. Les plages de mesures de sections sont calculées à partir des limites.
  5. Structure, accords, tempo. Remplissez SECTIONS avec les propres étiquettes de la source. Donnez à chaque mesure son entrée CHORDS : l'accord fixe sur quelle corde se trouve une frette (la frette 7 est Si sur la corde de Mi, Mi sur la corde de La), donc tabgen.py dérive la corde et lève une exception pour une paire frette/accord qui ne s'accorde sur aucune corde. Mettez le tempo dans META ; les horodatages de section sont calculés à partir de lui.
  6. Signalez ce que vous n'avez pas fait. Quelles mesures manquent, lesquelles sont estimées, quelle source a donné quoi. Terminez chaque transcription par cela, pas par un bilan de santé vierge.

Le rythme lu à l'œil et les frettes jamais mesurées sont les points faibles connus ; dites-le dans CAVEATS.

Suggestions

Après une transcription ou sur demande, proposez trois types, clairement séparés de la transcription : pratique (quoi travailler en premier), musical (ce que fait la progression), et arrangement (une simplification ou un ajout). Une suggestion d'arrangement est votre invention ; ne la faites jamais passer pour ce que dit la source.

Vérification

tests/bass-tab/run.sh dans le dépôt génère une chanson de test et la compare à la référence enregistrée, et vérifie la partition sur des chansons inventées (étiquettes de sections, répétitions réduites, alignement des paroles, la limite de 2 pages).

Skills associés