psalterio / repository

Músicas da Juventude Adventista ... since 1988
http://www.psalterio.net
17 stars 23 forks source link

Mudar o sistema de latex para Markdown (ou equivalente). #47

Open psalterio opened 9 years ago

psalterio commented 9 years ago

O latex será gerado automaticamente mas usando Markdown simplifica-se grandemente o processo de edição/criação das músicas.

Subtasks

jcalado commented 9 years ago

Aprovo! ASAP na minha opinião. Podemos usar um front matter YAML para definir os metadados: número, autor, etc.

psalterio commented 9 years ago

:) fixe! queres propor o formato base? assim vamos pensando como implementar isto ...

jcalado commented 9 years ago

O problema do markdown é que não foi pensado para conteúdos estruturados. Como vamos marcar as linhas dos acordes por exemplo?

psalterio commented 9 years ago

Vai levar um tempo para assentar num formato que funcione bem mas de partida tem que ser algo que seja facilmente legível. Penso que vamos ter que criar uma nova markup language. Do que vejo as hipóteses com as markup languages existentes (Latex, YAML, JSON, TOML, XML ...) são limitadas ou complexas. Seria ate um bom exercício tentar usar cada uma e ver como iria ficar. Mas aqui proponho o novo formato Psalterio Markup Language. Teremos que implementar o nosso parser mas já temos meio caminho andado com o parser existente para latex. O que achas?

PML  (Psalterio markup language) proposal

A cruz
=================================================
# comment 

title                : A cruz # repetir?
title common         : 
title original       : 
id                   : 67
music composer       : Ruben Lima
lyric composer       : Ruben Lima
arrangement by       : 
licence              : 
copyright            : 
video url 1          : 
video url 1          : 
note 1               : 
note 2               : 

# comments, lorem ...

-------------------------------------------------
section              : verse 1
-------------------------------------------------
# the chords could be embedded in the lyrics, this 
# is more precise but less readable in raw format
Jama[C]is compreenderei o [F7+]Seu imenso Amor
Suport[C]ou a aflição, para eu [F7+]ter a Salvação.
Pa[G]lavras eu não tenho para [Am]Lhe agradecer
Mas eu [Dm]sinto a esperança que me [G]faz renascer.

-------------------------------------------------
section              : chorus 1
-------------------------------------------------
# the chords could be placed above the lyrics 
#  as usual, but less precise colocation of chords
# (although still precise when using monospaced fonts), 
# but certainly more readable
  C                    F7+
Jamais compreenderei o Seu imenso Amor
     C                      F7+
Suportou a aflição, para eu ter a Salvação.
  G                        Am
Palavras eu não tenho para Lhe agradecer
       Dm                       G
Mas eu sinto a esperança que me faz renascer.

-------------------------------------------------
section              : verse 2
-------------------------------------------------
  C                    F7+
Jamais compreenderei o Seu imenso Amor
     C                      F7+
Suportou a aflição, para eu ter a Salvação.
  G                        Am
Palavras eu não tenho para Lhe agradecer
       Dm                       G
Mas eu sinto a esperança que me faz renascer.

-------------------------------------------------
section              : bridge 1
-------------------------------------------------
  G                        Am
Palavras eu não tenho para Lhe agradecer
       Dm                       G
Mas eu sinto a esperança que me faz renascer.
psalterio commented 9 years ago

se forcarmos o uso de acordes sabemos sempre que a primeira linha de cada seção é uma linha de acordes, depois alterna com letra, acordes. Penso que não é difícil implementar um parser para isto desde que tenhamos uma estrutura mais ou menos bem definida.

jcalado commented 9 years ago

E como definimos a estrutura da música? Ou seja, se seguirmo o normal:

Como depois vamos definir os que fogem à regra? No outro dia vi uma solução que me pareceu decente: definir na metadata no início do ficheiro a estrutura da musica:

title                : A cruz # repetir?
title common         : 
title original       : 
(...)
order                : 1,chorus,2,chorus,3,chorus

Qualquer coisa como isto... Que me dizes? Assim ajudaria a não termos de repetir o coro múltiplas vezes por musica, reduzindo a hipótese de erros. PS: Isto já para não falar nas músicas com pontes.

psalterio commented 9 years ago

@jcalado ok, concordo. Tinha primeiro pensado em usar so a sequencia da letra conforme aparece mas de facto se houver vários coros repetidos temos que ter sempre cuidado em actualizar tudo. Da forma que sugeres parece-me bem. Temos que ver os casos especiais, tipo às vezes no fim da música repete-se a última frase do coro 2 ou 3 vezes. Como vamos fazer isso?

Exemplo

-------------------------------------------------
section              : chorus 3
-------------------------------------------------
# the chords could be placed above the lyrics 
#  as usual, but less precise colocation of chords
# (although still precise when using monospaced fonts), 
# but certainly more readable
  C                    F7+
Jamais compreenderei o Seu imenso Amor
     C                      F7+
Suportou a aflição, para eu ter a Salvação.
  G                        Am
Palavras eu não tenho para Lhe agradecer
       Dm                       G
Mas eu sinto a esperança que me faz renascer. (repete)
       Dm                       G
Mas eu sinto a esperança que me faz renascer.
psalterio commented 9 years ago

Criei um ficheiro template.pml para podermos brincar e adicionar as ideias https://github.com/psalterio/repository/blob/master/songs/template.pml

psalterio commented 9 years ago

@jcalado uma outra ideia é de que o pml deveria ser legível por humanos sem ter que precisar de recorrer a um parser para poder interpretar o conteúdo da música. Nesse sentido secalhar não usaríamos a tag "order". O que ahas?

jcalado commented 9 years ago

Concordo que a parte do "legível" cai um bocado por terra. É uma questão custo/benefício. O que preferimos? As correções depois de uma musica adicionada não são assim tantas, se calhar justifica-se não usar a tag "order" e manter tudo mais legível.

jcalado commented 9 years ago

Gosto da versão com font monospace, fica o dilema de como lidar com os acordes. Se não tiver acordes, como é que o sistema sabe? Forçar a existência de acordes parece-vos viável?

cc @4brunu @tomasm123 @fifas @pablomoises @neburpedrosa @rubenjosue

4brunu commented 9 years ago

Tenho algum receio quanto à questão de forçar a ter acordes... Penso que a flexibilidade que tenho actualmente permite-nos avançar muito mais rapido. Se hoje não tiver tempo para introduzir a musica com os acordes, hoje introduzo só a letra, e amanha os acordes. Alem disso, como é que vamos forçar a ter sempre acordes?

4brunu commented 9 years ago

Estar a separar a linha dos acordes e da letra levanta-me algumas preocupações sobre como é que o html vai ser gerado... A minha maior preocupação é, o html gerado vai ser diferente daquele que é gerado actualmente? É que se o html gerado for diferente, e estiver em linhas diferentes, voltamos a ter um problema antigo nos dispositivos moveis sobre a quebra de linha...

jcalado commented 9 years ago

Bem lembrado Bruno. Não é tão legível mas talvez os acordes inline com o resto da letra seja mesmo a melhor opção.

4brunu commented 9 years ago

Concordo, para alem disso, temos mais precisão, e seria mais facil converter as musicas automaticamente atraves de um script.

psalterio commented 9 years ago

@jcalado @4brunu A minha preferência é também manter a flexibilidade de adicionar os acordes a qualquer momento. Penso que conseguimos fazer o parser para que possa identificar se existem ou não acordes numa determinada linha. A lógica não é assim tão complicada (basta detectar se a linha contém palavras tipo acordes ou não, explico melhor no bitbucket).

Vamos manter a opção de ter os acordes numa linha intermédia opcional.

pedroesantos commented 8 years ago

O que vos parece a criação de um identificador específico para ponte / bridge na descrição das músicas (tal como o atual [verse] e [chorus]) que poderia eventualmente estar associado a uma formatação CSS em itálico? Assim, teríamos: verse (normal) chorus (bold) bridge (italic)

Seria útil na medida em que se compreende de forma intuitiva que aquela parte é nova e não mais uma repetição de um verso...

jcalado commented 8 years ago

Será que devemos tentar reinventar a roda, ou usar algo como o OpenLyrics? O formato está aqui: http://openlyrics.info/dataformat.html Além do mais parece-me relativamente direto fazer um conversor.

@psalterio @4brunu