patacrep / patadata

Songs data for LaTeX songbooks
http:///www.patacrep.com
22 stars 37 forks source link

Converting all the files to the chordpro format #17

Closed Luthaf closed 9 years ago

Luthaf commented 9 years ago

Voici le début de la conversion de patadata ! Le script de conversion est convert_to_chordpro.py, et pour le moment une vingtaine de chansons plantent encore, avec

$ ./convert_to_chordpro.py
Error while converting ./songs/amplitude/des_couleurs_sur_mon_chemin.sg
list index out of range
Error while converting ./songs/amplitude/la_caravane.sg
list index out of range
Error while converting ./songs/amy_macdonald/this_is_the_life.sg
list index out of range
Error while converting ./songs/au_petit_bonheur/je_veux_du_soleil.sg
list index out of range
Error while converting ./songs/benabar/le_diner.sg
list index out of range
Error while converting ./songs/bob_dylan/blowin_in_the_wind.sg
list index out of range
Error while converting ./songs/jacques_sevin/chant_de_la_promesse.sg
list index out of range
Error while converting ./songs/jacques_sevin/chant_des_adieux.sg
list index out of range
Error while converting ./songs/jacques_sevin/legende_du_feu.sg
list index out of range
Error while converting ./songs/jean-jacques_goldman/le_coureur.sg
list index out of range
Error while converting ./songs/jeff_buckley/hallelujah.sg
list index out of range
Error while converting ./songs/john_lennon/imagine.sg
list index out of range
Error while converting ./songs/le_donjon_de_naheulbeuk/a_l_aventure_compagnons.sg
list index out of range
Error while converting ./songs/le_donjon_de_naheulbeuk/mon_ancetre_gurdil.sg
list index out of range
Error while converting ./songs/louise_attaque/je_t_emmene_au_vent.sg
list index out of range
Error while converting ./songs/louise_attaque/lea.sg
list index out of range
Error while converting ./songs/manu_chao/clandestino.sg
list index out of range
Error while converting ./songs/oldelaf_et_monsieur_d/cafe.sg
list index out of range
Error while converting ./songs/queen/we_will_rock_you.sg
list index out of range
Error while converting ./songs/ray_charles/hit_the_road.sg
list index out of range
Error while converting ./songs/renaud/des_que_le_vent_soufflera.sg
list index out of range
Error while converting ./songs/renaud/mistral_gagnant.sg
list index out of range
Error while converting ./songs/simon_garfunkel/scarborough_fair.sg
list index out of range
Error while converting ./songs/simon_garfunkel/the_sounds_of_silence.sg
list index out of range
Error while converting ./songs/sinsemilia/tout_le_bonheur_du_monde.sg
list index out of range
Error while converting ./songs/the_beatles/hey_jude.sg
list index out of range
Error while converting ./songs/the_beatles/yellow_submarine.sg
list index out of range
Error while converting ./songs/the_eagles/hotel_california.sg
list index out of range
Error while converting ./songs/tryo/l_hymne_de_nos_campagnes.sg
list index out of range

À faire avant de merger :

paternal commented 9 years ago

Pas mal, mais je vois qu'il y a encore pas mal d'erreurs (je pense qu'une recherche de \ devrait en montrer la plupart). Vérifier tout cela va constituer un travail de fou !

oliverpool commented 9 years ago

J'avais pas vu ce script, je vais y jeter un oeil! (a première vue, ca fonctionne à "grands coups de regexp" ;-)

L'avantage d'un parseur conventionnel (comme celui que j'ai trouvé en JS / ou comme PlasTeX ?), c'est que les erreurs sont bien plus compréhensibles (normalement).

Ce n'est pas possible d'utiliser PlasTex pour faire cette conversion ? (sachant que j'avous ne pas connaitre grand chose, et un peu mieux comprendre les regexp)

oliverpool commented 9 years ago

Autre question: du coup les commandes \begin{verse*} et bridge disparaissent avec chordpro ?

Luthaf commented 9 years ago

Ce n'est pas possible d'utiliser PlasTex pour faire cette conversion ? (sachant que j'avous ne pas connaitre grand chose, et un peu mieux comprendre les regexp)

C'est possible, mais ça demanderai plus de travail et je ne crois pas que l'on ait besoin de l'AST pour s'en sortir. Le script ici fait son boulot, et ne sert pas à parser mais à transformer.

Autre question: du coup les commandes \begin{verse*} et bridge disparaissent avec chordpro ?

Je crois que oui, on peut utiliser d'autres environements pour arriver au même but. Et sinon, ajouter un {start_of_bridge}/{end_of_bridge} au parseur chordpro ne coute pas trop cher je pense.

oliverpool commented 9 years ago

Je suis assez partant pour rajouter les start/end_of_bridge

(et les verse* sont probablement très peu utilisés - mais je trouve quand même dommage qu'on s'en débarrasse...)

paternal commented 9 years ago

Je suis assez partant pour rajouter les start/end_of_bridge

Pourquoi pas, dans la mesure où ils sont utilisés ailleurs.

(et les verse* sont probablement très peu utilisés - mais je trouve quand même dommage qu'on s'en débarrasse...)

Ça me gêne un peu d'étendre la norme (même si elle n'est pas vraiment normalisée). Est-ce qu'on ne pourrait pas trouver une autre convention ? Si on a pas le choix, on peut, mais j'aime bien l'idée de maintenir une cohérence (toute relative, vues les implémentations actuelles) du format, pour garder un semblant d'intéropérabilité entre les différents logiciels.

oliverpool commented 9 years ago

Pourquoi pas, dans la mesure où ils sont utilisés ailleurs. ... Ça me gêne un peu d'étendre la norme

Ca me convient!


Du coup en résumé:

Par ailleurs, je pense qu'il faut faire attention aux saut de lignes répétés: dans LaTeX ils sont ignorés, dans chordpro, ils représentent un nouveau couplet.

@Luthaf : je pense que je vais poursuivre mes expérimentation pour la conversion via JS: ca pourra rendre service à des personnes qui veulent rapidement convertir un chant sur le site (mais ton script reste parfaitement justifié pour convertir toute une bibliothèque)

paternal commented 9 years ago

En y repensant, la suppression des verse* me gêne quand même, enfin, pas directement.

Les verse* sont utilisés en LaTeX pour créer des sauts de lignes au sein d'un couplet (sans incrémenter la numérotation des couplets). C'est un détournement de l'usage original, mais ça marche. Et c'est cette fonctionnalité (sauter une ligne dans un couplet) que je trouve intéressante, et qu'il serait dommage de perdre. Plus qu'un verse*, ça serait un saut de ligne ua sein d'un couplet qui serait intéressant, mais, à ma connaissance, ça n'existe pas en chordpro, et ça me gêne toujours d'étendre la notation…

Je ne sais pas quoi faire…

oliverpool commented 9 years ago

@paternal je partage totalement ton point de vue... et je n'ai aucune idée de solution élégante.

En écrivant mon script de transition (en JS avec le ParserGenerator), je suis tombé sur plein de petites spécificités LaTeX, que je vais essayer de nettoyer proprement (je pense ouvrir une issue à ce sujet)

paternal commented 9 years ago

Autre question: du coup les commandes \begin{verse*} et bridge disparaissent avec chordpro ?

Je crois que oui, on peut utiliser d'autres environements pour arriver au même but. Et sinon, ajouter un {start_of_bridge}/{end_of_bridge} au parseur chordpro ne coute pas trop cher je pense.

C'est bien ce que je pensais : c'est implémenté depuis un bon moment déjà.

oliverpool commented 9 years ago

:+1:

Luthaf commented 9 years ago

Je ferme en faveur de #18