-
Notifications
You must be signed in to change notification settings - Fork 23
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changer de format de fichiers de chansons #64
Comments
Je suis partage cette analyse.
Intéressant, en effet, et facilement convertible en LaTeX. De plus, il a l'air aisément extensible.
Effectivement : ça sera toujours plus rapide qu'avec PlasTeX.
Pas très grave pour les cas de base.
Pas forcément (voir plus bas)
Pour l'intégration de l'analyse à patacrep, ça peut se faire facilement avec les plugins. Pas besoin de mettre en cache un fichier : le plugin pourrait générer le code latex
Je pense qu'il vaut mieux éviter les regex, mais utiliser un vrai analyseur syntaxique (pyparsing ou PLY par exemple, que je n'ai jamais utilisé, mais j'ai déjà fait de l'analyse syntaxique) : ça sera plus propre, et moins sujet à des bugs.
Le rendre « format par défaut » n'est même pas nécessaire : si on garde l'extension Tout ça est intéressant. Aucune contre-indication pour créer un nouveau plugin qui utilise ce format là (il semble déjà exister des bibliothèques analysant le chordpro : exemple1, exemple2, exemple3, il faut voir si c'est réutilisable). Ensuite, pour passer à Python3, il faut abandonner plasTeX, ce qui devrait simplifier la maintenance. Deux solutions :
Ce que j'en pense :
À ce stade, ma préférence va à :
Mais n'hésitez pas à me faire changer d'avis… Question : Est-ce que l'on attend ces changement pour publier une version 4 ?
|
Oui, en effet, ce sera mieux. Ce point de vue mon convient :
En y ajoutant l'item suivant :
On attends surtout de pouvoir mettre à jour le site patacrep.com. Mais je ne pense pas que cette évolution sera finie avant que le site ne soit mis à jour, et comme on reste rétro-compatible, on peut garder ça sous la main pour la 4.1 |
Hé bien en route ! Je vois les étapes suivantes (renommez les branches à votre guise) :
|
La proposition me va. Concernant l'organisation du code, je propose un module
Concernant les extensions, je propose d'utiliser |
Je pensais effectivement à un module de ce genre, mais :
En fait, pour patanet, en supposant qu'on ait dans patacrep une classe |
J'y ai repensé, et voici mon idée.
La signature (de base) des classes héritant de Pour Patanet, il suffit de définir une classe qui hérite de En fait, je me dit qu'on a déjà trois types de fichiers différents, donc que ça commence à valoir de coup d'avoir un (nouveau) système de plugins… Mais si je surréagis, dites-le moi. C'est un peu anecdotique, mais je me demande si on ne renommerait pas la méthode |
J'y ai repensé aussi, et je voyais le truc plus comme ça :
À savoir on délègue à un module
class SongFile:
metadata = {}
path = ''
...
def include_latex(self, context):
'''
Renvoie la chaine \input{path} pour latex et se charge du pré/post-traitement si besoin
''' Ce même module se charge d'associer les types de contenus aux extensions des fichiers. C'est un système de "plugins", pour les types de fichier en entrée. |
J'ai l'impression que la seule différence (aux noms près) est que dans ta proposition, le module Seulement, pour la classe Enfin, je pense que l'attribut |
Je n'y avais pas pensé, c'est une bonne idée ! Sinon pour la position du module songfile, je préfère quand même ma proposition, mais ce n'est pas très grave. |
C'est par ici : #65. Comme d'habitude, ça n'est pas prêt à être mergé : c'est juste pour centraliser les discussions. |
Ma logique pour le placer dans Quelle est ta raison pour le placer directement dans PS : Je ne suis pas en train d'essayer de te forcer la main, seulement de t'aider à me convaincre. |
Il faudrait définir les extensions que l'on apporte au format chordpro. Je propose d'avoir les éléments de base :
Les accords étant définis par On peut alors y ajouter les éléments suivants :
|
Pour les titres, je pensais simplement à autoriser plusieurs balises Pour les métadonnées des chansons, on peut définir quelques balises déjà utilisées (album, cover, vcover, etc.). J'ajouterais à cela une balise générique : si l'utilisateur (avancé) a défini une nouvelle clef C'est une bonne idée d'autoriser plusieurs balises artiste, pour autoriser plusieurs artistes. On utilise les mêmes règles pour pour les chansons LaTeX (à savoir un artiste Pour les tags (vous compter les utiliser dans patanet ?), on peut mettre le singulier, puisque chaque balise ne contient qu'un seul tag, non ? Pour le Quelle est la signification du Pour la mise en œuvre, si on utilise ply (comme pour LaTeX), ça devrait être plus simple que pour LaTeX. @Luthaf : Est-ce que tu sais faire ; est-ce que tu veux t'en occuper ? Je peux le faire, et ça m'amuse plutôt. Mais (en supposant que tu ne saches pas encore faire) si tu veux apprendre, et qu'on ait deux personnes qui comprennent cette partie du code au lieu d'une seule, c'est peut-être bien que tu t'en occupes. Je peux t'expliquer si nécessaire. |
La balise subtitle est présente dans le format par défaut de chordpro, c'est la raison de sa présence ici.
Bonne idée !
J'ai pas compris ...
On peut trouver un caractère spécial en effet, que ce soit la tilde ou autre chose.
Si possible oui.
Oui en effet !
Je crois qu'il fait aussi partie du format par défaut, à vérifier.
C'est la convention pour indiquer la tonalité de la chanson utilisée par par mal d'autres logiciels chordpro.
Je ne sais pas faire, et je ne sais pas si j'aurai le temps de m'en occuper. Je vais essayer un peu, et puis j'aviserai. La doc de ply sera mon amie ! |
Dans le paquet LaTeX songs (et dans patacrep) configuré correctement, si on met en option de la chanson |
Ok. Pour moi ce genre de cas est typiquement le cas où l'on écrit au début du fichier
Ainsi, on ne dépends pas d'une langue pour les chaînes "écrit par" ou "chanté par". |
Mais avec ça, ça permet aussi, dans le rendu PDF, d'avoir les détails « Paroles de X, Musique de Y ». En utilisant seulement |
Vu qu' Du coup, il faut aussi avoir les instructions |
En fait, on ne dépend pas d'une langue particulière, puisque l'utilisateur peut définir (dans le fichier .sg ou dans les templates) comment sont interprétées les chaînes de caractères artist ( |
J'ai fait une page décrivant le format utilisé : chordpro. J'ai coché les balises pour lesquelles nous sommes d'accord (n'hésite pas à décocher si j'ai mal interprété tes messages). Je te laisse accepter ou discuter mes propositions.
|
Bonne idée !
C'est en effet l'idée originale, afin de faciliter la recherche par albums. Il serait aussi possible de modifier
Ma préférence reste là-dessus, parce qu'il est possible d'ajouter les clefs correspondantes à
Peut aller aussi.
Je propose Sinon, je suis d'accord avec les autres points non cochés, et j'ai rempli les TODO. À ce sujet, la "norme" chordpro pour les tablatures est d'utiliser simplement des zones de texte à chasse fixe, mais cela risque de poser problème dans notre cas (3 colonnes et une tablature prévue pour de l'A4 par exemple). Je propose donc d'ignorer ce point, sachant que les tablatures peuvent être écrites avec Lilypond. Un exemple de tablature de ce genre ici. EDIT: J'ai ajouté HS : j'ai lu la doc de PLY, je vais tenter quelque chose ce soir. |
J'ai créé le système de plugins pour les types de fichiers : fe2d2da. Tu pourras y intégrer tes modifications quand tu auras fini l'implémentation. |
Oups… La fermeture de ce ticket était une erreur… |
Je suis en train de bosser là dessus, et j'ai deux questions (rappel : je ne suis pas musicien) :
|
La syntaxe est de la forme Sinon, les accords sont toujours entre crochets, et sont associés à la syllabe qui suit, ou rien si c'est un espace après.
Le |
Merci. Juste une demande de précision : dans ton expression régulière pour un accord (que l'on traduit bien par chord ?), à quoi correspond le |
Tout à fait !
On peut avoir un accord de la forme |
On continue dans les questions : les tablatures, elles sont affichées au fil du texte, ou regroupées au début / à la fin ? |
Le mieux est sans doutes de les afficher au fil du texte, via lilypond (pour ne pas avoir à gérer la largeur du papier). Elles peuvent être là pour noter des passages instrumentaux. |
Bon, c'est tout (et c'est déjà trop) pour ce soir. Je bloque sur l'analyseur syntaxique. Maintenant que j'ai une vue d'ensemble, il faudra que je reprenne ça du début, à tête reposée. |
Fait : #79 |
L'utilisation de LaTeX pour les fichiers .sg induit plusieurs difficultés :
Pour l'utilisateur final
Pour le fonctionnement interne de patacrep
Proposition
Utiliser un autre langage de description des fichiers de données. Mais plutôt que de réinventer le notre juste pour le plaisir, utiliser le format chordpro, qui existe déjà, comprend donc de grandes bibliothèques de chansons, et est utilisé par plusieurs logiciels. J'avais déjà avancé l'idée dans le forum.
Le format est décrit ici. La plupart des directives se traduisent directement en LaTeX, et l'on peut en ajouter pour les directives du paquet Songs qui n'existent pas encore dans ce format, ainsi que pour les métadonnées exploitées par patacrep (auteurs, albums, etc.).
Inconvénients
Avantages
Implémentation
Il faut ajouter un module d'analyse des fichiers chordpro à patacrep, ou vérifier s'il en existe un en Python. Il faut ensuite utiliser ce module pour mettre en cache des versions LaTeX des fichiers chordpro afin de pouvoir inclure ces fichiers lors des passes pdflatex.
Ce module doit pouvoir être écrit à base de regex, les expressions à matcher étant relativement simples :
{<key>:<value>}
,{<directive>}
et[<chord>]
. Les commentaires peuvent être supprimés par une première passe.Enfin, il faudra un script de transformation
.sg
-> chordpro pour mettre à jour patadata et les fichiers utilisateurs.Dans un premier temps, le format chordpro peut être introduit sous la forme d'un plugin, puis devenir s'il en vaut le coup le format par défaut en conservant les fichiers LaTeX sous forme de plugin.
Quel est votre avis sur la question ?
The text was updated successfully, but these errors were encountered: