[ < ] [ > ]   [ << ] [ Amunt ] [ >> ]         [Part superior] [Continguts] [Índex] [ ? ]

3.3 Treball sobre els fitxers d’entrada

@translationof Working with input files


[ < ] [ > ]   [ << ] [ Amunt ] [ >> ]         [Part superior] [Continguts] [Índex] [ ? ]

3.3.1 Inclusió de fitxers del LilyPond

@translationof Including LilyPond files

Un projecte gran es pot dividir en diversos fitxers. Per referir-se a un altre fitxer, utilitzeu

 
\include "unaltrefitxer.ly"

La línia \include "unaltrefitxer.ly" equival a enganxar el contingut de ‘unaltrefitxer.ly’ al fitxer actual al lloc en el qual apareix l’\include. Por exemple, a un projecte gran podríem voler fitxer diferents per a cada part instrumental i crear un fitxer de “partitura completa” que reuneix els fitxers individuals dels instruments. Normalment el fitxer inclòs defineix un cert nombre de variables que a partir d’aleshores queden disponibles per poder-les utilitzar al fitxer de la partitura completa. Als fitxers inclosos es poden marcar les seccions etiquetades per ajudar a fer-les utilitzables a diferents llocs de la partitura. Vegeu Diferents edicions a partir d’una mateixa font.

Els fitxers que estan al directori de treball actual es poden referenciar simplement especificant el nom després de l’ordre \include. Els fitxers a d’altres llocs es poden incloure proporcionant una referència de ruta completa o una ruta relativa (però utilitzeu la barra inclinada normal de l’UNIX, /, no la barra invertida de DOS/Windows, \, com a separador de directori). Per exemple, si ‘material.ly’ està ubicat un directori per sobre del directori de treball actual, utilitzeu

 
\include "../material.ly"

o si els fitxers de les parts orquestrals incloses estan tots situats en un subdirectori anomenat ‘parts’ dins del directori actual, useu

 
\include "partes/VI.ly"
\include "partes/VII.ly"
… etc.

Els fitxers d’inclusió també poden contenir enunciats \include al seu cop. De forma predeterminada, aquests enunciats \include de segon nivell no s’interpreten fins que s’incorporen al fitxer principal, per la qual cosa els noms de fitxer que especifiquen han de ser relatius al directori que conté el fitxer principal, no al directori que conté el fitxer inclòs. Malgrat això, aquest comportament es pot modificar globalment passant l’opció ‘-drelative-includes’ a la línia d’ordres (o mitjançant l’addició de #(ly:set-option 'relative-includes #t) al principi del fitxer principal d’entrada).

Quan relative-includes està establert al valor #t, la ruta de cada ordre \include es considera relativa al fitxer que conté aquesta ordre. Aquest comportament és el recomanat i es convertirà en el comportament predeterminat a una versió futura del LilyPond.

Tant els fitxers relatius al directori principal com els fitxers relatius a algun altre directori es poden incloure (\include) mitjançant l’establiment de relative-includes al valor #t o a #f als llocs apropiats dins dels fitxers. Per exemple, si s’ha creat una biblioteca genèrica, libA, que al seu cop utilitza sub-fitxers que s’inclouen (\include) per mitjà del fitxer d’entrada d’aquesta biblioteca, aquestes instruccions \include hauran d’anar precedides per #(ly:set-option #relative-includes #t) de manera que s’interpretin correctament en construir el fitxer d’entrada .ly principal, d’aquesta forma:

 
libA/
  libA.ly
  A1.ly
  A2.ly
  …

aleshores el fitxer d’entrada, libA.ly, conté

 
#(ly:set-option 'relative-includes #t)
\include "A1.ly"
\include "A2.ly"
…
% retorn a l'ajustament predeterminat
#(ly:set-option 'relative-includes #f)

Qualsevol fitxer ‘.ly’ pot aleshores incloure la biblioteca completa, simplement amb

 
\include "~/libA/libA.ly"

Es poden utilitzar estructures de fitxer més complexes instant els canvis als llocs adequats.

També es poden incloure fitxers d’un directori que està a una ruta de cerca especificada com opció en invocar al LilyPond des de la línia d’ordres. Els fitxers inclosos s’especifiquen usant sols el seu nom de fitxer. Per exemple, per compilar mitjançant aquest mètode un fitxer ‘principal.ly’ que inclou fitxers situats a un subdirectori anomenat ‘parts’, canvieu el directori que conté ‘principal.ly’ e introduïu

 
lilypond --include=parts principal.ly

i a ‘principal.ly’ escriviu

 
\include "VI.ly"
\include "VII.ly"
… etc.

Els fitxers que s’inclouen a moltes partitures es poden posar al directori del LilyPond ‘../ly’ (la localització d’aquest directori depèn de la instal·lació: vegeu (learning)Altres fonts d’informació section ‘Altres fonts d'informació’ in Manual d’aprenentatge). Aquests fitxers es poden incloure senzillament pel seu nom a una ordre \include. D’aquesta forma s’inclouen els fitxers dependents de la llengua com ‘catala.ly’.

El LilyPond inclou de forma predeterminada certes fitxers quan s’inicia el programa. Aquestes inclusions no són visibles per a l’usuari, però els fitxers es poden identificar executant lilypond --verbose des de la línia d’ordres. Això presentarà una llista de rutes i fitxers que fa servir el LilyPond, junt amb moltes altres indicacions. De forma alternativa, poden veure’s explicacions sobre els fitxers més importants d’aquest conjunt a (learning)Altres fonts d’informació section ‘Altres fonts d'informació’ in Manual d’aprenentatge. Aquests fitxers es poden editar, però els canvis realitzats sobre ells es perdran en instal·la una nova versió del LilyPond.

Es poden veure exemples senzills sobre l’ús de \include a en (learning)Partitures i particel·les section ‘Partitures i particel·les’ in Manual d’aprenentatge.

Vegeu també

Manual d’aprenentatge (learning)Altres fonts d’informació section ‘Altres fonts d'informació’ in Manual d’aprenentatge, (learning)Partitures i particel·les section ‘Partitures i particel·les’ in Manual d’aprenentatge.

Advertiments i problemes coneguts

Si un fitxer inclòs rep un nom igual al d’un dels fitxers d’instal·lació del LilyPond, el fitxer que té prioritat és el dels fitxers d’instal·lació del LilyPond.


[ < ] [ > ]   [ << ] [ Amunt ] [ >> ]         [Part superior] [Continguts] [Índex] [ ? ]

3.3.2 Diferents edicions a partir d’una mateixa font

@translationof Different editions from one source

Es posen usar diversos mètodes per generar la producció de diferents versions d’una partitura a partir de la mateixa font musical. Les variables són potser el més útil per combinar seccions extenses de música i/o anotacions. Les etiquetes són més útils per seleccionar una secció d’entre diverses seccions de música alternatives, més curtes, i es poden usar també per dividir peces de música en diferents trossos.

Qualsevol que sigui el mètode utilitzat, la separació de la notació de l’estructura de la partitura farà que sigui més fàcil canviar l’estructura deixant intacta la notació.


[ < ] [ > ]   [ << ] [ Amunt ] [ >> ]         [Part superior] [Continguts] [Índex] [ ? ]

Ús de les variables

@translationof Using variables

Si les seccions de la música es defineixen dins de variables, es poden reutilitzar en diferents parts de la partitura, vegeu (learning)Organitzar les peces mitjançant variables section ‘Organitzar les peces mitjançant variables’ in Manual d’aprenentatge. Per exemple, una partitura vocal a cappella freqüentment inclou una reducció de piano de les parts per assajar que és idèntica a la música vocal, per la qual cosa aquesta partitura sols s’ha d’escriure una vegada. Es pot combinar sobre un sol pentagrama la música de dues variables, vegeu Combinació automàtica de les parts. Vegeu aquí un exemple:

 
sopranoMusic = \relative { a'4 b c b8( a) }
altoMusic = \relative { e'4 e e f }
tenorMusic = \relative { c'4 b e d8( c) }
bassMusic = \relative { a4 gis a d, }
allLyrics = \lyricmode { King of glo -- ry }
<<
  \new Staff = "Soprano" \sopranoMusic
  \new Lyrics \allLyrics
  \new Staff = "Alto" \altoMusic
  \new Lyrics \allLyrics
  \new Staff = "Tenor" {
    \clef "treble_8"
    \tenorMusic
  }
  \new Lyrics \allLyrics
  \new Staff = "Bass" {
    \clef "bass"
    \bassMusic
  }
  \new Lyrics \allLyrics
  \new PianoStaff <<
    \new Staff = "RH" {
      \partCombine \sopranoMusic \altoMusic
    }
    \new Staff = "LH" {
      \clef "bass"
      \partCombine \tenorMusic \bassMusic
    }
  >>
>>

[image of music]

Es poden produir partitures diferents que presenten sols les parts vocals o sola la part de piano, canviant sols els enunciats estructurals, sense modificar la notació musical.

Per partitures extenses, les definicions de variable es poden posar a fitxers separats que s’inclouen més tard, vegeu Inclusió de fitxers del LilyPond.


[ < ] [ > ]   [ << ] [ Amunt ] [ >> ]         [Part superior] [Continguts] [Índex] [ ? ]

Ús d’etiquetes

@translationof Using tags

L’ordre \tag #'parteA marca una expressió musical amb el nom parteA. Les expressions etiquetades d’aquesta manera es poden seleccionar o filtrar més tard pel seu nom, usant o bé \keepWithTag #'nom o bé \removeWithTag #'nom. El resultat de l’aplicació d’aquests filtres a la música etiquetada és com segueix:

FiltreResultat
Música etiquetada precedida de \keepWithTag #'nom o de \keepWithTag #'(nom1 nom2…)S’inclou la música no etiquetada i la música etiquetada amb el nom o noms d’etiquetes donats; s’exclou la música etiquetada amb qualsevol altre nom d’etiqueta.
Música etiquetada precedida de \removeWithTag #'nom o \removeWithTag #'(nom1 nom2…)S’inclou la música no etiquetada i la música que no està etiquetada amb cap dels noms d’etiqueta donats; s’exclou la musica etiquetada amb els noms d’etiqueta donats.
Música etiquetada no precedida de \keepWithTag ni de \removeWithTagS’inclou la música etiquetada i no etiquetada.

Els arguments de les ordres \tag, \keepWithTag i \removeWithTag han de ser un símbol o llista de símbols (com #'score o #'(violiI violiII), seguida d’una expressió musical. Si i sols si els símbols són identificadors del LilyPond vàlids (caràcters alfabètics sols, sense números, guions baixos ni guions normals) que no poden confondre’s amb notes, la porció #' es pot ometre i, com abreviatura, una llista de símbols pot usar el separador de punt, és a dir: \tag #'(violiI violiII) es pot escriure com \tag violiI.violiII. Val el mateix per a \keepWithTag i \removeWithTag.

A l’exemple següent veiem dues versions d’una peça musical, una que mostra trins amb la notació usual i una altra amb els trins expandits explícitament:

 
music = \relative {
  g'8. c32 d
  \tag #'trills { d8.\trill }
  \tag #'expand { \repeat unfold 3 { e32 d } }
  c32 d
 }

\score {
  \keepWithTag #'trills \music
}
\score {
  \keepWithTag #'expand \music
}

[image of music]

De forma alternativa, a vegades és més fàcil excloure seccions de música:

 
music = \relative {
  g'8. c32 d
  \tag #'trills { d8.\trill }
  \tag #'expand {\repeat unfold 3 { e32 d } }
  c32 d
 }

\score {
  \removeWithTag #'expand
  \music
}
\score {
  \removeWithTag #'trills
  \music
}

[image of music]

El filtrat d’etiquetes es pot aplicar a articulacions, textos, etc., anteposant

 
-\tag #'la-meva-etiqueta

a una articulació. Per exemple, això defineix una nota amb una indicació opcional de digitació i una nota amb una anotació condicional:

 
c1-\tag #'finger ^4
c1-\tag #'warn ^"Alerta!"

Es poden posar diverses etiquetes sobre expressions amb diverses entrades de \tag, o combinant diverses etiquetes en una llista de símbols:

 
music = \relative c'' {
  \tag #'a \tag #'both { a4 a a a }
  \tag #'(b both) { b4 b b b }
}
<<
\keepWithTag #'a \music
\keepWithTag #'b \music
\keepWithTag #'both \music
>>

[image of music]

Es poden aplicar diversos filtres \removeWithTag a una sola expressió musical per treure diverses seccions etiquetades amb noms diferents. De forma alternativa, podem usar una sola ordre \removeWithTag amb una llista d’etiquetes.

 
music = \relative c'' {
  \tag #'A { a4 a a a }
  \tag #'B { b4 b b b }
  \tag #'C { c4 c c c }
  \tag #'D { d4 d d d }
}
\new Voice {
  \removeWithTag #'B
  \removeWithTag #'C
  \music
  \removeWithTag #'(B C)
  \music
}

[image of music]

L’ús de dos o més filtres \keepWithTag sobre una sola expressió musical produeix l’eliminació de totes les seccions etiquetades. El primer filtre treu totes excepte la que es nombra, i qualsevol filtre posterior elimina el reste. Usant una sola ordre \keepWithTag amb una llista de diverses etiquetes se suprimiran sols les seccions etiquetades que no apareixen especificades a la llista.

 
music = \relative c'' {
  \tag #'violiI { a4 a a a }
  \tag #'violiII { b4 b b b }
  \tag #'viola { c4 c c c }
  \tag #'violoncel { d4 d d d }
}

\new Staff {
  \keepWithTag #'(violinI violinII)
  \music
}

[image of music]

imprimirà \tags violiI i violiII però no viola o violoncel.

Tot i que \keepWithTag és útil per a la gestió de un sol conjunt d’alternatives, l’eliminació de música etiquetada amb altres etiquetes no relacionades és problemàtica si s’utilitza per més d’un propòsit. En aquest cas poden declarar-se ‘grups d’etiquetes’:

 
\tagGroup #'(violiI violiII viola violoncel)

Ara totes les etiquetes pertanyen a un sol ‘grup d’etiquetes’. Observeu que les etiquetes individuals no poden ser membres de més d’un grup d’etiquetes.

 
\keepWithTag #'violiI …

mostrarà sols la música etiquetada a partir del grup d’etiquetes de violiI i qualsevol fragment musical etiquetada amb una de les altres etiquetes resultarà suprimit.

 
music = \relative {
  \tagGroup #'(violiI violiII viola violoncel)
  \tag #'violiI { c''4^"violiI" c c c }
  \tag #'violiII { a2 a }
  \tag #'viola { e8 e e2. }
  \tag #'violoncel { d'2 d4 d }
  R1^"untagged"
}

\new Voice {
  \keepWithTag #'violiI
  \music
}

[image of music]

En usar l’ordre \keepWithTag sols són visibles les etiquetes dels grups d’aquelles etiquetes que s’inclouen a l’ordre.

A vegades podem desitjar dividir la música en un determinat lloc dins d’una expressió musical existent. Podem usar \pushToTag i \appendToTag per afegir material davant o al final dels elements d’una construcció musical existent. No tota construcció musical té la part elements, però les músiques seqüencials i simultànies són dues apostes segures:

 
music = { \tag #'here { \tag #'here <<c''>> } }

{
  \pushToTag #'here c'
  \pushToTag #'here e'
  \pushToTag #'here g' \music
  \appendToTag #'here c'
  \appendToTag #'here e'
  \appendToTag #'here g' \music
}

[image of music]

Les dues ordres admeten una etiqueta, el material que divideix en cada aparició de l’etiqueta, i l’expressió etiquetada.

Vegeu també

Manual d’aprenentatge: (learning)Organitzar les peces mitjançant variables section ‘Organitzar les peces mitjançant variables’ in Manual d’aprenentatge.

Referència de la notació: Combinació automàtica de les parts, Inclusió de fitxers del LilyPond.

Advertiments i problemes coneguts

En cridar a \relative sobre una expressió musical obtinguda mitjançant el filtratge de música amb les ordres \keepWithTag o \removeWithTag, podria passar que canviessin les altures de les notes que efectivament romanen a l’expressió filtrada. L’aplicació de \relative en primer lloc, abans de \keepWithTag o de \removeWithTag, evita aquest perill perquè en aquest cas \relative actua sobre totes les notes tal i com s’introdueixen.


[ < ] [ > ]   [ << ] [ Amunt ] [ >> ]         [Part superior] [Continguts] [Índex] [ ? ]

Ús d’ajustaments globals

@translationof Using global settings

Es poden incloure ajustos globals a partir d’un fitxer diferent:

 
lilypond -dinclude-settings=ELS_MEUS_AJUSTAMENTS.ly LA_MEVA_PARTITURA.ly

A fitxers diferents es poden emmagatzemar grups d’ajustaments com la mida de la pàgina o les fonts tipogràfiques. Això permet fer diferents edicions de la mateixa partitura així com aplicar ajustaments estàndard a moltes partitures, simplement per mitjà de l’especificació del fitxer d’ajustaments adequat.

Aquesta tècnica també funciona bé amb l’ús de fulls d’estil, com s’estudia a (learning)Fulls d’estil section ‘Fulls d'estil’ in Manual d’aprenentatge.

Vegeu també

Manual d’aprenentatge: (learning)Organitzar les peces mitjançant variables section ‘Organitzar les peces mitjançant variables’ in Manual d’aprenentatge. (learning)Fulls d’estil section ‘Fulls d'estil’ in Manual d’aprenentatge.

Referència de la notació: Inclusió de fitxers del LilyPond.


[ < ] [ > ]   [ << ] [ Amunt ] [ >> ]         [Part superior] [Continguts] [Índex] [ ? ]

3.3.3 Caràcters especials

@translationof Special characters


[ < ] [ > ]   [ << ] [ Amunt ] [ >> ]         [Part superior] [Continguts] [Índex] [ ? ]

Codificació del text

@translationof Text encoding

El LilyPond usa el conjunt de caràcters definit pel consorci Unicode i la norma ISO/IEC 10646. Defineix un nom únic i un codi per als conjunts de caràcters que s’utilitzen en pràcticament tots els idiomes moderns i també en molts d’altres. L’Unicode es pot implementar utilitzant diverses esquemes de codificació diferents. El LilyPond usa la codificació UTF-8 (UTF són les sigles d’Unicode Transformation Format, o format de transformació de l’Unicode) que representa tots els caràcters comuns de la codificació Latin en un sol byte, i representa altres caràcters usant un format de longitud variable de fina a quatre bytes.

L’aspecte visual real dels caràcter ve determinat per els glifs que es defineixen als tipus de lletres concretes que es tinguin disponibles: un tipus de lletra defineix l’assignació d’un subconjunt dels codis d’Unicode a glifs. El LilyPond fa servir la biblioteca Pango per representar i disposar tipogràficament els textos multilingües.

El Lilypond no realitza cap conversió a la codificació de l’entrada. Això significa que qualsevol text, ja sigui el títol, la lletra de la cançó o una ordre musical que contingui caràcters diferents als del conjunt ASCII, s’han de codificar en UTF-8. La forma més fàcil d’escriure aquest text és utilitzar un editor preparat per a Unicode i desar el fitxer amb la codificació UTF-8. Gairebé tots els editors moderns populars donen suport al UTF-8, per exemple ho fan el vim, l’Emacs, el jEdit i el Gedit. Tots els sistemes MS Windows posteriors a NT fan servir l’Unicode com a codificació de caràcters nativa, de manera que fins i tot l’accessori Bloc de Notes (Notepad) pot editar-se i desar un fitxer en el format UTF-8. Una alternativa més funcional per a Windows és el BabelPad.

Si un fitxer d’entrada que conté un caràcter que no és ASCII no es desa en el format UTF-8, es genera un missatge d’error.

 
FT_Get_Glyph_Name () error: argument invàlid

Vet aquí un exemple que mostra text ciríl·lic, hebreu i portuguès:

[image of music]


[ < ] [ > ]   [ << ] [ Amunt ] [ >> ]         [Part superior] [Continguts] [Índex] [ ? ]

Unicode

@translationof Unicode

Per introduir un caràcter aïllat per al qual es coneix el punt de codi Unicode però no està disponible a l’editor que s’està fent servir, useu \char ##xhhhh o bé \char #dddd dins d’un bloc \markup, on hhhh és el codi hexadecimal del caràcter en qüestió i dddd és el seu valor decimal corresponent. Poden ometre’s els zeros inicials, però és costum indicar els quatre caràcters a la representació hexadecimal (observeu que no s’ha d’utilitzar la codificació UTF-8 del punt de codi Unicode després de \char, atès que la codificació UTF-8 conté bits addicionals que indiquen el nombre d’octets). Hi ha taules de codis Unicode i un índex de noms de caràcters que dóna el punt de codi en hexadecimal per a qualsevol caràcter al portal del Consorci Unicode, http://www.unicode.org/.

Per exemple, tant \char ##x03BE com \char #958 insereixen el caràcter Unicode U+03BE, que té el nom Unicode “Lletra grega Xi petita”.

Es pot escriure d’aquesta forma qualsevol punt de codi Unicode, i si tots els caràcters especials s’escriuen en aquest format no cal desar el fitxer d’entrada en format UTF-8. Per suposat, ha d’estar instal·lat i estar disponible per al LilyPond un tipus de lletra que contingui codificats tots aquests caràcters.

L’exemple següent mostra valors hexadecimals Unicode que s’usen a quatre llocs: a una crida d’assaig, com text d’articulació, a la lletra i com text independent sota la partitura:

 
\score {
  \relative {
    c''1 \mark \markup { \char ##x03EE }
    c1_\markup { \tiny { \char ##x03B1 " to " \char ##x03C9 } }
  }
  \addlyrics { O \markup { \concat { Ph \char ##x0153 be! } } }
}
\markup { "Copyright 2008--2015" \char ##x00A9 }

[image of music]

Per escriure el símbol de copyrights a la nota de crèdits, utilitzeu:

 
\header {
  copyright = \markup { \char ##x00A9 "2008" }
}

[ < ] [ > ]   [ << ] [ Amunt ] [ >> ]         [Part superior] [Continguts] [Índex] [ ? ]

Àlies d’ASCII

@translationof ASCII aliases

Es pot incloure una llista d’àlies d’ASCII per a caràcters especials:

 
\paper {
  #(include-special-characters)
}

\markup "&flqq; &ndash; &OE;uvre incomplète&hellip; &frqq;"

\score {
  \new Staff { \repeat unfold 9 a'4 }
  \addlyrics {
    This is al -- so wor -- kin'~in ly -- rics: &ndash;_&OE;&hellip;
  }
}

\markup \column {
  "The replacement can be disabled:"
  "&ndash; &OE; &hellip;"
  \override #'(replacement-alist . ()) "&ndash; &OE; &hellip;"
}

[image of music]

També podem fer els nostres propis àlies, ja sigui de forma global,

 
\paper {
  #(add-text-replacements!
    '(("100" . "hundred")
      ("dpi" . "dots per inch")))
}
\markup "A 100 dpi."

[image of music]

o local:

 
\markup \replace #'(("100" . "hundred")
                    ("dpi" . "dots per inch")) "A 100 dpi."

[image of music]

Vegeu també

Referència de la notació: Llista de caràcters especials.

Fitxers instal·lats: ‘ly/text-replacements.ly’.


[ < ] [ > ]   [ << ] [ Amunt ] [ >> ]

This document was generated by gub on Juliol 13, 2020 using texi2html 1.82.

Altres idiomes: English, deutsch, español, français, italiano, 日本語.
Quant a la selecció automàtica de la llengua.