Ciro Durán Un archivo vivo

Notas sobre Chordpro

Desde que comencé a tocar ukulele he estado interesado en escribir mis propios arreglos, y una manera común que he visto es usar Microsoft Word y las fuentes de Chordette. Así fue como comencé.

Sin embargo, en algún momento me comentaron de Chordpro. El sitio web y el software me recuerdan a los 2000 de una buena manera. Solo mira ese lens flare:

Chordpro logo

Mi mente hizo click con todas las páginas que había visto compartidas. Algunas tienen diagramas de acordes con fuentes viejísimas, sugiriendo que han sido compartidas desde tiempos inmemoriables, pasados de generación en generación de escritores. También comprendí cómo funciona la página ObZcoz.com, también conocida como Jim’s Ukulele Songbook. Esta página usa la sintaxis de Chordpro.

En general, todo esto parece una intersección entre escritores de música y gente que usa herramientas de líneas de comando.

Así que estas notas muestran mi setup de Chordpro, y cómo llegué ahí. No lo considero como un tutorial (al menos no todavía) ya que requiere alguna experiencia con la interfaz de línea de comandos. Chordpro tiene un foro de usuarios, el cual ha sido útil, ya que la documentación del programa asume que ya sabes lo que estás buscando y puede ser demasiado para el principiante.

Si este documento genera suficiente interés, podría publicar mis archivos de configuración para que los puedas usar.

¿Qué es Chordpro?

Chordpro es básicamente una herramienta de línea de comando. Esto significa que el programa corre en un terminal, o una ventana de línea de comandos. Por ejemplo:

$ chordpro ciro-songbook.cho -o ciro-songbook.pdf

La instrucción anterior leerá un archivo de texto plano llamado ciro-songbook.cho y produce un PDF con el mismo nombre.

Las herramientas de línea de comando son lo que hace funcionar el internet (literalmente), pero me temo que sugerir usar esto puede asustar a alguien que no tenga experiencia con ellos en primer lugar. Al menos es esta época de herramientas gráficas. Sin embargo, dado mi interés en usar texto plano tanto como me sea posible creo que vale la pena hablar sobre este tipo de herramientas.

El archivo puede contener algo como esto:

{title: Moliendo Café}
{composer: Hugo Blanco, José Manzo Perroni}
{year: 1961}
{key: Am}
{time: 4/4}

{comment:Estrofa 1}

[Am]Cuando la tarde langui[E7]dece renacen las [Am]sombras,
y en la quie[Am]tud los cafetales [A7]vuelven a sen[Dm]tir,
el chas tristón, canción de a[Bb]mor de la [E7]vieja mo[Am]lienda,
que en el le[B7]targo de la [E7]noche parece ge[Am]mir.

Cuando corres chordpro, obtienes un PDF que se parece a esto:

Moliendo Café

Los acordes que ves ahí son para ukulele, pero pueden ser fácilmente cambiados por guitarra, cuatro venezolano o teclado. El sistema de configuración de Chordpro permite separar los datos de la canción de cómo los presentas. Puedes también exportar a PDF o a HTML para subir a un sitio web (Jim’s Ukulele Songbook usa chordpro para esto).

Estas notas cubren cómo instalar Chordpro para Linux (o Windows si usas Linux con WSL).

Installing Chordpro

Instrucciones para instalar Chordpro en el sitio web

Si estás usando herramientas de línea de comandos en Windows y no estás usando WSL te estás perdiendo de una mejor interfaz que cmd.exe Sigue las instrucciones para instalar WSL en la documentación de Microsoft. Uso Debian para WSL. También deberías descargarte Windows Terminal.

Una vez que estás en Debia, puedes instalar chordpro corriendo: $ sudo cpan install chordpro

Después de instalar Chordpro, deberías poder producir un PDF del ejemplo anterior, aunque probablemente los resultados no sean iguales a los de la imagen.

Instalar en Windows sin WSL

TO-DO: Es posible usar Chordpro en cmd.exe en Windows, actualizaré esto luego.

Configuración de Chordpro

La configuración de Chordpro es la parte donde creo que su sitio web podría mejorar. La documentación es extensa, pero da muy pocos ejemplos de uso, así que toca hacer mucha experiementación, cambiar cosas y correr chordpro nuevamente hasta que estés satisfecho con los resultados.

La configuración usa el formato JSON, y se pueden escribir para tener archivos modulares que se pueden componer. Así, puedes cambiar la configuración para varios casos de uso: una configuración para un sitio web, otro para ukulele, otro para guitarra, etc. El formato JSON que usa Chordpro es menos estricto con el propósito de facilitar su uso. Este formato de JSON permite poner comentarios (que comienzan con //) y deja que el último elemento de un arreglo u objeto tengan una coma.

La mejor manera de comenzar a escribir tu propia configuración es imprimir la configuración por defecto con el comando $ chordpro --print-default-config, también puedes enviar todo eso a un archivo:

$ chordpro --print-default-config >basic-config.json

Ahora, esto va a imprimir todas las opciones por defecto en un solo archivo. A medida que vayas escribiendo tu propia configuración, vas a querer copiar estas partes a un nuevo archivo, y borrarlas del archivo viejo. Así puedes tener archivos modulares. Así puedes mezclar las configuraciones a tu medida. Necesitas acordes de guitarra en vez de ukulele? Cambias el nombre del archivo que quieres y listo.

Directorios de los archivos de configuración

Existen tres directorios donde chordpro busca por archivos de configuración:

  • El directorio de trabajo (de donde estás corriendo los comandos)
  • La librería de usuario de chordpro (guardado en la variable de ambiente $CHORDPRO_LIB, usualmente ~/.config/chordpro), los archivos de configuración están en el subdirectorio config, ej. ~/.config/chordpro/config.
  • La librería de presets de chordpro (en mi máquina están en /usr/local/share/perl/5.28.1/App/Music/ChordPro/res)

Puedes ver cuáles son los dos últimos directorios en tu máquina corriendo $ chordpro --about.

Usando los archivos de configuración

Puedes usar una configuración pasando la ubicación del archivo a la opción --config, ej.: chordpro moliendo.cho -o moliendo.pdf --config=config/base.json. En este ejemplo, hay un subdirectorio config en el directorio de trabajo, con un archivo base.json.

Cuando quieres pasar más de una configuración, pasas varias opciones --config, ej.: chordpro moliendo.cho -o moliendo.pdf --config=config/base.json --config=config/ukulele-ext.json. La página web de chordpro difiere en esta parte, diciendo que pasas varios archivos separándolos con comas.

Chordpro busca primero en el directorio de trabajo. Luego intenta buscar en el directorio $CHORDPRO_LIB/config, y luego busca en la librería de presets. Cuando quieres una configuración de la librería de usuario o la de presets, solo pones el nombre, sin directorio o extensión .json, ej. --config=modern1. Los presets están listados en el sitio web. Algunos que te pueden interesar:

  • ukulele añade acordes de ukulele, afinación estándar GCEA
  • keyboard añade acordes en teclado
  • modern1 usa fuentes sans-serif

Opciones de configuración

TO-DO: Mostrar las opciones más interesantes

Chordpro syntax

Ya has visto algo de la sintaxis en el primer ejemplo. Esto es un archivo de texto plano, así que necesitas un editor de texto (notepad++ o VSCode están bien, no uses Word). Crea un archivo nuevo y copia y pega lo siguiente:

{title: Burrito Sabanero}
{composer: Hugo Blanco}
{year: 1972}
{key: C}
{time: 4/4}

{comment:Introducción}

[C] [G] [D7] [G] [C] [G] [D7] [G]

{comment:Estrofa 1}

Con mi burrito saba[C]nero voy ca[D7]mino de Be[G]lén
Con mi burrito saba[C]nero voy ca[D7]mino de Be[G]lén

{start_of_chorus}
Si me [C]ven, si me [G]ven, voy ca[D7]mino de Be[G]lén
Si me [C]ven, si me [G]ven, voy ca[D7]mino de Be[G]lén
{end_of_chorus}

Este ejemplo muestra algunas cosas extra, pero esto es lo que usarás comúmmente. Las líneas entre corchetes son directivas, y en el ejemplo se usan con datos sobre la canción. Puedes controlar cómo se ven y se posicionan en la configuración. Puede que necesites title si no sabes nada sobre el resto de la canción. La directiva comment permite organizar la canción por secciones.

Esto es lo que necesitas saber para comenzar. Guarda esto a un archivo llamado burrito.cho, corre chordpro burrito.cho -o burrito.pdf y tendrás en un PDF con la canción. Agrega las configuraciones con --config para controlar cómo se va a ver el resultado.

Ambientes (environments)

{start_of_chorus}
Si me [C]ven, si me [G]ven, voy ca[D7]mino de Be[G]lén
Si me [C]ven, si me [G]ven, voy ca[D7]mino de Be[G]lén
{end_of_chorus}

Las líneas start_of_chorus y end_of_chorus definen un “ambiente”, el cual es una palabra que chordpro usa para un bloque específico de texto. Esto permite a Chordpro resaltar el coro como te parezca (ej. indentar el coro y poner una línea vertical a la izquierda).

Existe otra directa útil, start_of_tab y end_of_tab, que permite poner tabs en ASCII que se alínean bien. Estos se suelen escribir a mano.

{start_of_tab}
   G            F            Am           E
A|------1---1--------3---2-3-0--0-3-0-2-3--------------|x2
E|-3--3---3---2-1--1---1------------------0--0-3-0-1-2-|
C|-----------------------------------------------------|
G|-----------------------------------------------------|
{end_of_tab}

Hay otros ambientes, como start_of_abc o start_of_ly que aceptan instrucciones en ABC Notation y LilyPond. Hay programas que aceptan texto plano con una sintaxis específica y producen partituras musicales. Puede que necesites instalar estos programas antes de que puedas usar estos ambientes. Esto se ve interesante, como trabajo futuro.

Libros de canciones

Puedes tener más de una canción en el mismo archivo, lo cual te permite producir un libro de canciones. Usa la directiva {new_song} para separar cada canción. Puedes cambiar la configuración para añadir un índice por nombre de canción y otro por nombre del artista, y esto es generaado automáticamente para ti.