karel-brinda / tp-zpevnik

Zpěvník Technické přestávky. Výsledné (automaticky generované) zpěvníky se nachází na http://karel-brinda.github.io/tp-zpevnik/.
MIT License
5 stars 6 forks source link

Změna způsobu vkládání akordů #42

Closed karel-brinda closed 8 years ago

karel-brinda commented 8 years ago

@jhajas, @pedrosow, @vasekp: Dávám do diskuze jeden z Vaškovým starých nápadů. Zjednodušilo by úpravy, pokud by se místo \Ch{}{} vkládaly akordy do písní jako [Ami] nebo ještě lépe jako <Ami> (protože [ a ] mají texový význam)? Na \Ch{Ami}{.......} by se to konvertovalo spolu s transpozicemi.

Jedna z hlavních výhod by byla, že by se mnohem lépe přidávaly nové písně např. ze SuperMusic: http://www.supermusic.sk/export.php?idpiesne=695057&stiahni=1&typ=TXT&sid=%3C?%20echo%20;%20?%3E.

Jinak kvůli snadnějšímu přechodu by to šlo udělat i tak, že by \Ch a <> bylo ekvivalentní (aby se všechno nemuselo hned přepisovat).

vasekp commented 8 years ago

Já teď budu chvíli sám proti svému. Otázka je, jestli plánujeme přidávat ještě hodně nových písní. Teď jich máme téměř 400. Zase nechceme konkurovat SuperMusic – chceme mít písničky, které se opravdu hrají nebo hrát chtějí, a to se po těch letech už tak nějak stabilizovalo. A chceme je mít v dobrém pořádku.

Kdyby se jednalo do příštích let řekněme tak o do 20 nových písní za rok, bylo by potřeba zvážit, jestli chceme

  1. mít smíšené dvě různé formy, nebo
  2. kvůli té troše předělávat všechno ostatní a zvykat si na nové.

Ale na druhou stranu

  1. by to vyřešilo práci s vymýšlením, jaký text ještě "do akordu" patří, a škaredé mezery, když ji někdo podcení,
  2. bylo by odolné vůči transpozicím (třeba délka akordové značky C/G poměrně značně naroste při zvednutí o půltón, a testovat tohle u celého zpěvníku nikdo nebude),
  3. konverzi dokážu vyřešit skriptem, takže při přechodu by šlo spíš o zvyk a o synchronizaci našich osobních repozitářů.

Pokud bychom se pro tohle rozhodli, aktualizace všech našich větví bude asi klíčová, než začneme dělat další úpravy, protože jinak se v tom už ani Git nevyzná.

jhajas commented 8 years ago

Ja jsem rozhodne pro a mozna by se mohly i vsechny stavajici pisne nejak konvertovat, aby tam zbytecne nebyly 2 podporovane formaty, ktere budou mast uzivatele.

Ja myslim ze se pisne budou porad pridavat. Mozna ne do TP zpevniku, ale tenhle projekt vidim jako suprovou platformu kde si kazdy muze udelat svuj PDF zpevnik a cim vic pisni tam uz bude, tam lepe. Doufam treba, ze TP kapela jich prida (a natrenuje) jeste hodne.

Idelani by bylo, kdyby ty pisne sli editovat v nejake wiki a na pozadani by to zkonvertovalo do latexu a vysazelo PDF. To je takovy muj sen a zjednoduseni syntaxe akordu by tomu rozhodne pomohl...

karel-brinda commented 8 years ago

@vasekp : Ne, v tomhle repu by určitě byla jenom jedna forma. Ale zároveň by mělo být přeložitelné i to ve staré syntaxi (pokud má někdo něco mimo git, apod (např. Miško)).

Vlastně jediná úprava TPCB by se pak týkala toho, že před transpozicí se inteligentně nahradí <, > => \Ch{...}{...}

vasekp commented 8 years ago

Dobrá, ale když někdo má prastarý fork a rozhodne se, že v Okoři patří "tam se sešli trampi" místo "tam zapadli trampi", opraví a pošle na to commit k pull req, hned je konflikt na světě.

vasekp commented 8 years ago

Trochu jsem o tom přemýšlel a mám problém, jak detekovat konec řádku. Proč: protože platnost [x] v nové notaci by končila buď dalším [y] nebo právě koncem řádku, a protože konec řádku v písni nerovná se nutně konci odstavce a ani jedno se zdaleka nerovná zalomení řádku v TeXu. Třeba máme ve zdrojáku

K\Ch{G}{dopak} ví, kam jej zítra pošta do\Ch{C}{ručí} a kolik náhod mu poručí? ↵
\Ch{D}{Chtěl} bych jen vidět zář očí, \Ch{G}{které} budo\Ch{D}{u} jej číst.

(ty polohy akordů jsou koukám nesmyslně*, ale to opravím jindy a jinde) a ve vysázeném souboru to vypadá takhle:

|  G                               C                             D              |
| Kdopak ví, kam jej zítra pošta doručí a kolik náhod mu poručí? Chtěl bych jen |
|                G         D                                                    |
| vidět zář očí, které budou jej číst.                                          |

Náš nový formát bychom očekávali jako

K[G]dopak ví, kam jej zítra pošta do[C]ručí a kolik náhod mu poručí? ↵
[D]Chtěl bych jen vidět zář očí, [G]které budo[D]u jej číst.

Kam až by správně byla platnost prvního D na druhé řádce? Python v tu chvíli neví, že ty řádky patří dohromady, a vědět ani nemůže, že to bude pro šířku stránky příliš dlouhé a zalomí se někde uprostřed věty. Pokud bychom postupovali čistě algoritmicky, vyšlo by po konverzi

K\Ch{G}{dopak ví, kam jej zítra pošta do}\Ch{C}{ručí a kolik náhod mu poručí?} ↵
\Ch{Chtěl bych jen vidět zář očí,} \Ch{G}{které budo}\Ch{D}{u jej číst.}

a to je špatně, protože uvnitř \Ch nejde lámat a ten kus od „Chtěl“ do „očí“ je strašně dlouhý. Řádka by se musela kvůli tomu utnout asi o 5 cm dřív a LaTeX by měl hned plnou pusu řečí, jak to dělá nerad a že to bude hloupě vypadat (nemluvě o tom, že by měl pravdu).

Další problém je s tím, jak se má poznat konec řádky od konce odstavce. Kritérium „koukat se jen po dvou newlinech za sebou“ nefunguje hned z několika důvodů. Co se týká parsování TeXu, bych nechal na parsování TeXu, jinak si zaděláváme na problém.

Jak to já řeším ve svém zpěvníku, kde konvenci [akord] používám, je, že to vůbec ten vnitřní text nemá. Prostě z hlediska průběhu textu má akord nulovou šířku a vysází se jako obdélník, který je nad textem a přetéká svoji předepsanou šířku doprava. To ale taky nemůžeme udělat en bloc v TP zpěvníku, protože to znamená, že zodpovědnost za nepřekrývání akordů spočívá na předvídání v době psaní zdroje. Nijak se to nekontroluje, takže kdybych napsal

[C]Tak, jako jazyk [F6]stále na[F#6]rá[G]ží

mám krásné srovnání překryvem, nakolik se číslice 6 a velké G v daném fontu podobají. Musím (u sebe) udělat buď něco jako

[C]Tak, jako jazyk [F6]stále na[F#6]rá\ \ [G]ží

nebo spíš

[C]Tak, jako jazyk [F6]stále na[F#6 G]ráží

ale první by zase znamenalo projít znovu úplně všechny písničky a druhé si nerozumí, jak víme, s transpozicemi.

Tak nevím. Nejspíš to nějak řešit půjde, všechno jde. Ale v tuhle chvíli nevím, jak, a taková zdánlivě jednoduchá věc se mi zdá až moc zamotaná.

*) Neopravoval jsem u písniček, co nevím, jak patří správně.

vasekp commented 8 years ago

Tak jsem přece jen vymyslel, jak si s tím poradit :-) Ve větvi akordy jsem to implementoval. Je to veliká změna. Na vzhled existujících písniček by to mělo mít minimální dopad (a pokud nějaký vůbec, tak spíš v pozitivním směru) a na stránkování žádný. Ale kdo může, byl bych rád, kdyby si tuhle větev stáhnul, přeložil AllSongs nebo svoje oblíbené zpěvníky a prošel, jestli některé písničky nevypadají nepřirozeně. Zatím pull request dělat nebudu, než mi aspoň jeden další člověk řekne, že to viděl a že to je v pořádku.

Jestli to přijde do master, na písničky ve svých vlastních repozitářích můžete použít skript pro sed (standardní UNIXový nástroj, na OSX bude skoro určitě taky), který jsem přibalil v hlavním adresáři. Instrukce viz popis commitu 8c96800b73. Můžete taky kliknout na tři tečky nahoře těsně nad tímhle příspěvkem.

karel-brinda commented 8 years ago

Podle mě to je super!!

vasekp commented 8 years ago

Díky! Já už jsem taky mezitím zkontroloval všechno v AllSongs. Takže za mě zelená. Počkáme ještě na názor @pedrosow?