Communitygithub.com

jcl2018/bass-tab

Convierte fuentes de una canción (capturas de tablatura, PDFs, enlaces, notas) en una tablatura de bajo compacta en un formato fijo, y la renderiza en un PDF de una o dos páginas para tocar junto con la canción, con etiquetas de sección, repeticiones colapsadas, acordes y letras. Úsalo cuando te pidan crear, corregir, renderizar o imprimir una tablatura de bajo.

¿Qué es bass-tab?

Esta habilidad para agentes de IA (como Claude Code, Cursor y Codex) permite convertir diversas fuentes de una canción (capturas de tablatura, PDFs, enlaces o notas) en un archivo de datos de canción estructurado y luego generar una tablatura de bajo compacta (`.tab`) y un PDF listo para imprimir con diagrama de acompañamiento (1-2 páginas tamaño carta). Está diseñada para músicos y bajistas que necesitan una representación visual clara y concisa de la tablatura, con etiquetas de sección, repeticiones colapsadas (figuras repetidas escritas una vez y marcadas con su cuenta), acordes sobre los compases y letras debajo. La habilidad se apoya en scripts Python (`scripts/chart2pdf.py`, `scripts/tabgen.py`) que requieren solo Python3 y, para caracteres no latinos, Pillow. El agente debe extraer exclusivamente lo que muestran las fuentes visibles (no inventar compases, letras ni acordes de memoria o búsqueda web), verificar repeticiones comparando ocurrencias y reportar claramente qué estuvo ausente o fue estimado. También ofrece sugerencias de práctica, musicales y de arreglo, separadas de la transcripción.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace bass-tab?

Convierte lo que una fuente muestra realmente en un archivo de datos de canción, y luego renderiza una tablatura de bajo compacta (.tab) y un PDF listo para imprimir con diagrama de acompañamiento (1-2 páginas tamaño carta). Solo necesita python3; Pillow también es necesario cuando el título o el artista no son latinos (por ejemplo, chino). Sin ella, chart2pdf.py y tab2pdf.py se niegan en lugar de imprimir ?; instálala en un entorno virtual (python3 -m venv v && v/bin/pip install pillow) y ejecuta el script con ese python, o pasa --allow-lossy. Los scripts están en scripts/ junto a este archivo; ejecútalos desde la carpeta de esta habilidad o proporciona rutas completas.

El archivo de canción

Una canción, un directorio, tres archivos:

<slug>/
  <slug>.py     la fuente de verdad: datos estructurados, editables a mano (empieza desde templates/song-template.py)
  <slug>.tab    generado por scripts/tabgen.py
  <slug>.pdf    el diagrama de acompañamiento, generado por scripts/chart2pdf.py directamente desde <slug>.py

<slug>.py proporciona META / BARS / SECTIONS / CHORDS / LYRICS. Una figura repetida se escribe UNA VEZ y se sella dondequiera que se toque, de modo que una corrección llega a cada copia. Nunca expandas una repetición en copias independientes.

LYRICS asigna un número de compás a las palabras que se cantan bajo ese compás. Pueden provenir del propietario, o de lo que una fuente muestra visiblemente (por ejemplo, letras en pantalla en un video de tablatura). Nunca las inventes ni las completes de memoria ni de una búsqueda web; si ninguna fuente muestra palabras, deja LYRICS = {} y di que el propietario puede agregarlas. Una canción sin letras se renderiza limpiamente. Las letras se imprimen textualmente y sobreviven a cada regeneración.

Renderizar

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 if META slots == 16 else 3> --cut compact

El PDF es un diagrama, al estilo de un reproductor de tablaturas en línea: varios compases por línea, una etiqueta de sección en negrita donde comienza cada sección, una figura repetida dibujada una vez entre signos de repetición con su cuenta (x4), una sección que repite una anterior reducida a una línea (Chorus 2 = Chorus (bars 13-16)), nombres de acordes sobre los compases donde CHORDS los tiene, y letras debajo del compás al que pertenecen. Es tamaño carta por defecto y como máximo 2 páginas: los dígitos de la tablatura se mantienen a 9 pt o más, el espaciado se ajusta y las repeticiones colapsan antes de que la fuente se reduzca, y una canción que aún no quepa se rechaza con una línea que la nombra. Reporta el recuento de páginas. Necesita Pillow para letras o títulos no latinos (ver arriba). --collapse-sections fuerza las líneas de referencia.

El PDF largo de un compás de ancho todavía está disponible: tabgen.py ... --cut compact luego tab2pdf.py <slug>.tab -o <slug>-long.pdf. --cut compact es la hoja de texto. Es el único corte que lleva la notación de repetición (una figura colapsada etiquetada A-B xN). --cut full es una vista de depuración (cada compás, más una fila de regla de tiempos que el formato no lista), nunca el entregable. Da rutas completas a las salidas.

El formato de texto: líneas de encabezado (título, artista, tonalidad, tempo, compás, afinación, fuente, leyenda), luego por sección un encabezado [Nombre - compases a-b . m:ss], una fila de acordes, una fila de números de compás, una fila de ritmo R|, y cuatro filas de cuerdas G D A E; luego advertencias, luego un bloque [Checked]. Las líneas del pentagrama se fijan a 77 caracteres para que cada canción se imprima a la misma escala; si una línea es más larga, usa menos compases por sistema.

Cómo crear un archivo de canción a partir de fuentes

Sigue esto literalmente; es el propósito de la habilidad.

  1. Toma solo lo que una fuente muestra realmente. Una captura de pantalla o PDF de una tablatura se puede leer. Un enlace a una grabación no se puede: no puedes escuchar audio. De una URL de canción toma el título, tempo y nombres de sección si están impresos, nada más. Nunca proporciones un compás de memoria de la canción. Un hueco visible es mejor que un compás que se ve bien y no está.
  2. Solo pista de bajo. Si una fuente muestra varios instrumentos, toma el bajo y di qué pista. Dos pistas de bajo, o bajo duplicado: pregunta, no elijas.
  3. Verifica cada repetición, y codifícala una vez. Lee cada ocurrencia y compáralas. El acuerdo es la verificación más fuerte disponible; el desacuerdo significa que al menos una lectura es incorrecta. Las ocurrencias coinciden: codifica una vez. No coinciden: dilo, da el recuento de cada manera, marca la lectura como estimada. Un compás sin repetición en ninguna parte no se puede verificar; dilo en la hoja.
  4. Nunca afirmes lo que no has verificado. Afirmaciones como "igual que los compases A-B" se generan a partir de los datos, no se escriben. Los rangos de compases de las secciones se calculan a partir de los límites.
  5. Estructura, acordes, tempo. Llena SECTIONS con las etiquetas de la propia fuente. Dale a cada compás su entrada CHORDS : el acorde fija en qué cuerda está un traste (traste 7 es Si en la cuerda Mi, Mi en la cuerda La), así que tabgen.py deriva la cuerda y lanza una excepción en un par traste/acorde que no concuerden en ninguna cuerda. Pon el tempo en META; las marcas de tiempo de las secciones se calculan a partir de él.
  6. Reporta lo que no hiciste. Qué compases faltan, cuáles son estimados, qué fuente dio qué. Termina cada transcripción con eso, no con un certificado de buena salud.

El ritmo leído a ojo y los trastes nunca medidos son los puntos débiles conocidos; dilo en CAVEATS.

Sugerencias

Después de una transcripción o a petición, ofrece tres tipos, claramente separados de la transcripción: práctica (qué practicar primero), musical (qué está haciendo la progresión) y arreglo (una simplificación o adición). Una sugerencia de arreglo es tu invención; nunca dejes que se lea como lo que dice la fuente.

Verificar

tests/bass-tab/run.sh en el repositorio renderiza una canción de prueba y la compara con la línea base registrada, y verifica el diagrama en canciones inventadas (etiquetas de sección, repeticiones colapsadas, alineación de letras, el límite de 2 páginas).

Skills relacionados