Kirjoittaja Aihe: EsAC Folksong Database Lilypond-muotoon?  (Luettu 1636 kertaa)

Tommi S.

  • Käyttäjä
  • Viestejä: 240
    • Profiili
EsAC Folksong Database Lilypond-muotoon?
« : 07.07.08 - klo:09.58 »
Eli löysin tällaisen sivuston johon on kerätty kansansävelmiä eräänlaiseen ASCII-pikakirjoitus muotoon.

http://www.esac-data.org/

Nyt haluaisin muuttaa niitä jotenkin kätevästi Lilypondin ymmärtämään muotoon, jotta voin tehdä niistä nuotteja.

Tässä on esimerkki EsAC-muotoisesta sävelmästä:
Koodia: [Valitse]
KEY[A0014  08  E 4/4]
MEL[-5-5-5  1_.23b_2_  1__0
    555  4_.45_4_  3b__0 //] >>

Tässä sama Lilypondille käännettynä:
Koodia: [Valitse]
\time 4/4
g8 g8 g8  c'4. d'8 ees'4 d'4  c'2 r8
g'8 g'8 g'8  f'4. f'8 g'4 f'4  ees'2 r8

Eli otetaan KEY-rivin viimeinen "4/4" tahtilajimerkintä ja muutetaan se Lilypondin "\time 4/4" muotoon.

Sitten muutetaan MEL-osion numerot säveliksi, siten että 1=c' 2=d' 3=e', jne. ja -1=c -2=d -3=e jne.
Numeron perässä oleva b- tai #-merkki on alennus- ja ylennysmerkki. Esim. 2b=des', 3#=eis' eli Lilypondissa alennus on -es ja ylennys on -is.

Sitten laitetaan vielä nuoteille aika-arvot. Oletus aika-arvo on KEY-rivillä oleva "08", joka tarkoittaa että pelkkä yksittäinen numero saa tämän aika-arvon, eli EsAC-muodossa 123 on Lilypond-muodossa c'8 d'8 e'8. Jos numeron perässä on alaviiva, _ ,tarkoittaa se sitä että nuotin perässä oleva aika-arvo numero puolitetaan, eli 1_23__ on Lilypond-muodossa c'4 d'8 e'2 (viimeinen tupla-alaviiva puolittaa tuplasti, eli 8/2/2=2, jne.). Numeron perässä oleva piste lisää aika-arvoa 50%, kuten piste nuottikirjoituksessa, ja tämä on Lilypondin kannalta helppo, koska myös Lilypondissa samaan tarkoitukseen käytetään pistettä, eli "1_." on Lilypondissa "c'4." .

Jos KEY-rivillä onkin "08":n tilalla vaikka "16", niin silloin kaikki puolitukset ym. menevätkin uusiksi, esim. 1_=c'8, 1__=c'4 jne.

Kun nyt alan tätä ratkomaan niin onko kellään mitään hyviä ehdotuksia miten tätä kannattaisi alkaa selvittämään? Onnistuuko kätevästi ihan shell-skriptillä, vai kannattaako käyttää vaikka Perliä tai Pythonia, ym.? Yksittäiset sävelet saa ihan tekstieditorin korvaa-toiminnalla, mutta miten kannattaisi tehdä tuo tahtilajin uuttaminen ( "KEY ... 4/4" = "\time 4/4") ja tuon oletus aika-arvon asettaminen?