Tutoriales de Lilypond[editar]

Primeros pasos[editar]

  • lilypond es un lenguaje de códigos mark-up para la escritura de partituras musicales.
  • para escribir código lilypond en musiki deberás contener el código dentro de <score> código lilypond </score>

Por ejemplo el código:

<score>{\key c \minor {g8 g aes aes g g c' c' ees' ees' aes' aes'4 g' }}</score> 

resultará en:

El choclo (Ángel Villoldo)

{\key c \minor {g8 g aes aes g g c' c' ees' ees' aes' aes'4 g' }}

vamos a repasar los códigos lilypond que aparecen en este ejemplo:


Las alturas[editar]

Las alturas en lilypond siempre se escriben en minúscula utilizando la nomencleatura norteamericana:

a b c d e f g = la si do re mi fa sol

entonces

<score>{c d e f g a b} </score> 

devuelve:

{c d e f g a b}

para ubicar la octava se utiliza el apóstrofe ' que es igual al do central (Do4)

si escribimos

<score>{c' d' e' f' g' a' b'} </score>

obtenemos

{c' d' e' f' g' a' b'}

Alteraciones[editar]

Para escribir sostenido (#) al nombre de altura se le agrega el sufijo is

<score>{c' dis' e' fis' gis' a' b'} </score>

resulta:

{c' dis' e' fis' gis' a' b'}

Para escribir bemol (b) al nombre de altura se le agrega el sufijo es

<score>{c' d' ees' f' ges' aes' bes'} </score>

resulta:

{c' d' ees' f' ges' aes' bes'}

Armadura de Clave[editar]

Para poner una armadura de clave usamos el código \key seguido de la nota en cifrado americano seguido del modo , \major para mayor y \minor para menor.

algunas armaduras de clave

<score> {\key c \minor} </score> <score> {\key aes \major} </score> <score> {\key e \major} </score> <score> {\key deses \major} </score>


 {\key c \minor}
 {\key aes \major}
 {\key e \major}
 {\key deses \major}

Estructura[editar]

El código lilypond puede organizarse en estructuras desde muy simples (ej. voz solista) hasta muy complejas (ej. orquesta sinfónica con ossias). Vamos a recorrer las estructuras teniendo en cuenta que la regla es siempre utilizar la menor cantidad de código segun la necesidad.

expresión[editar]

toda expresión se encierra en llaves {} y también pueden anidarse:

{ c'4 c' c' c'} % una expresión
expresiones anidadas
{
   {c'4}
   {d4 d d d}
}
 {
    {c'4}
    {d'4}
 }

Para unir sistemas utilizamos << >>

 <<   {c'4}
   {d'4 }>>
 {
 <<   {c'4}
    {d'4 }>>
 }

Pentagrama y grupos[editar]

Cuando necesitamos agrupar instrumentos o voces utilizamos la definición de pentagrama (\new Staff, si no la escribimos lilypond lo hace por defecto ahorrando caracteres de código). Para agrupar pentagramas utlizamos \new GrandStaff y encerramos los pentagramas entre << >>

contextos[editar]

lilypond se organiza a partir de contextos y grabadores(engravers). La mayoría de las veces lilypond se encarga de agregar el código necesario que no necesitamos explicitar en el código de entrada. Esto se llama interpretación por defecto y permite comprimir el lenguaje a las necesidades. Cuando precisamos redifinir mas variables, necesitamos definir los contextos, conjunto de reglas y porciones de información que organizan los niveles y operadores del código musical de forma jerárquica. Por ejemplo , mientras una alteración solo afecta al pentagrama, pero una linea de compás alterará a todo el sistema.

La jerarquia de contextos es la siguient:


\score {    %toda la partitura
   \Staff {     %cada uno de los sistemas
       \Voice {   %cada voz dentro del sistema
                 }
           }
         }


en realidad cuando escribimos una expresión simple sin handlers por ejemplo

{ c d e f }

lilypond va a escribir

\book {
\header { }
 \score {
   \new Staff {
     \new Voice {
      { c d e f }
     }
   }
   \layout { }
 }
 \paper { }

}

que son todos los contexts necesarios para renderear la partitura en modo gráfico.

Los contextos pueden variar cuando llamamos a determinadas plantillas que lilypond establece por defecto, ya preparadas para determinados usos standard:

en \Staff:

\StaffGroup: añade un corchete a la izquierda formando un grupo con lineas de compás conectadas entre subsistemas.

\ChoirStaff: idem StaffGroup pero no se conectan las lineas de compás.

\GrandStaff: se utiliza para piano, los dos sistemas se enlazan con una llave.

\PianoStaff: idem GrandStaff con el nombre del instrumento a la izquierda.

\RhytmicStaff: imprime ritmos, se ignoran las alturas, una sola linea.

\TabStaff: tablaturas de guitarra.

\DrumStaff: tipografías de instrumentos de percusión. Contiene el contexto \DrumVoice

\VaticanaStaff

División automática de notas[editar]

Las notas largas se pueden convertir automáticamente en notas ligadas. Se hace mediante la sustitución del Note_heads_engraver por el Completion_heads_engraver. De forma similar, los silencios largos que sobrepasan líneas de compás se dividen automáticamente sustituyendo el grabador Rest_engraver con el grabador Completion_rest_engraver. En el ejemplo siguiente, las notas y los silencios que atraviesan la barra de compás se dividen, y además las notas se unen mediante una ligadura.

\new Voice \with {
 \remove "Note_heads_engraver"
 \consists "Completion_heads_engraver"
 \remove "Rest_engraver"
 \consists "Completion_rest_engraver"
}

No se pudo compilar el archivo de entrada LilyPond:

line 7 - column 2:
syntax error, unexpected end of input

Títulos[editar]



\header {
 title=  "Título"
 composer = "Compositor"}
\new Staff {
c'
}

Nuestro ejemplo terminado[editar]

{\key c \minor{
\time 2/4 
\tempo "Tango" 4=120
% este es un comentario, hasta aquí la información de cabecera. ahora la melodia:

r8 g8 g-- aes-- aes-^ g-- g-- c'-- c'-- ees'-- ees'-- aes'-_ aes'4-! (g') 
}
}

Representando el ámbito[editar]



global = {
  \key c \major
  \time 4/4
}
stemOn = { \override Staff.Stem #'transparent = ##f }
stemOff = { \override Staff.Stem #'transparent = ##t }

\layout {
\context{
\Voice
\consists "Ambitus_engraver"
\override SpacingSpanner.base-shortest-duration = #(ly:make-moment 1/2)
}
}

sopranonotes = \relative c' { c4\glissando c'' \stemOff < \parenthesize e >}
mezzonotes = \relative c' { a4\glissando g'' \stemOff < \parenthesize a >}
altonotes = \relative c' {g4\glissando e'' \stemOff< \parenthesize g >}
tenornotes = { \clef "G_8" c4\glissando c'' \stemOff< \parenthesize e'' >}
baritononotes = \relative c' {  \clef "bass" g,\glissando c' \stemOff < \parenthesize e >}
bajonotes =  { \clef "bass" e,4 \glissando c' \stemOff < \parenthesize e' >}

\score {
  \new ChoirStaff <<
    \new Staff <<
      \set Staff.instrumentName = #"Soprano"
      \new Voice = "Soprano" <<
        \global
        \sopranonotes
            >>
         >>

 \new Staff <<
      \set Staff.instrumentName = #"Mezzosoprano"
      \new Voice = "Mezzo" <<
        \global
        \mezzonotes
            >>
         >>

\new Staff <<
      \set Staff.instrumentName = #"Alto"
      \new Voice = "Alto" <<
        \global
        \altonotes
            >>
         >>
\new Staff <<
       \set Staff.instrumentName = #"Tenor"
      \new Voice = "Tenor" <<
        \global
        \tenornotes
            >>
         >>
 \new Staff <<
      \set Staff.instrumentName = #"Barítono"
      \new Voice = "Barítono" <<
        \global
        \baritononotes
            >>
         >>
\new Staff <<
       \set Staff.instrumentName = #"Bajo"
      \new Voice = "Bajo" <<
        \global
        \bajonotes
            >>
         >>
>>
}

Para hacer una canción[editar]

Diganle, (Luis Alberto Spinetta)



<<
 \relative c'' {
  \key d \minor
     \time 4/4
      r2 d8 cis b a g4 f8 a a2 
      r2 c8 bes a g g4 f2 r4
      r4 d'8 d d d d e e4 a,16 a c8~ c2
      r2 d8 c bes a \tuplet 3/2 {g4 f8} r2
      \tuplet 3/2{r8 d f} f4 \tuplet 3/2{r8 g g} g4. f8
}
  \addlyrics {
   Hoy des -- pués de_un lar -- go po -- lo,
   to -- do se_ha -- brá i -- do
   y_es que ten -- go que sa -- lir a vo -- lar__
   ha -- cia_un nue -- vo cie -- lo
   y me voy de mi cuer -- po
  }
>>

Usar variables[editar]


tresilloA = \tuplet 3/2 { c,8 e g }
compasA = { \tresilloA \tresilloA \tresilloA \tresilloA }

\relative c'' {
 \compasA \compasA
}

Plantilla para himnos[editar]

Timeline = {
  \time 4/4
  \tempo 4=96
  \partial 2
  s2 | s1 | s2 \breathe s2 | s1 | s2 \bar "||" \break
  s2 | s1 | s2 \breathe s2 | s1 | s2 \bar "||"
}

SopranoMusic = \relative g' {
  g4 g | g g g g | g g g g | g g g g | g2
  g4 g | g g g g | g g g g | g g g g | g2
}

AltoMusic = \relative c' {
  d4 d | d d d d | d d d d | d d d d | d2
  d4 d | d d d d | d d d d | d d d d | d2
}

TenorMusic = \relative a {
  b4 b | b b b b | b b b b | b b b b | b2
  b4 b | b b b b | b b b b | b b b b | b2
}

BassMusic =  \relative g {
  g4 g | g g g g | g g g g | g g g g | g2
  g4 g | g g g g | g g g g | g g g g | g2
}

global = {
 \key g \major
}

\score {  % Start score
  <<
    \new PianoStaff <<  % Start pianostaff
      \new Staff <<  % Start Staff = RH
        \global
        \clef "treble"
        \new Voice = "Soprano" <<  % Start Voice = "Soprano"
          \Timeline
          \voiceOne
          \SopranoMusic
        >>  % End Voice = "Soprano"
        \new Voice = "Alto" <<  % Start Voice = "Alto"
          \Timeline
          \voiceTwo
          \AltoMusic
        >>  % End Voice = "Alto"
      >>  % End Staff = RH
      \new Staff <<  % Start Staff = LH
        \global
        \clef "bass"
        \new Voice = "Tenor" <<  % Start Voice = "Tenor"
          \Timeline
          \voiceOne
          \TenorMusic
        >>  % End Voice = "Tenor"
        \new Voice = "Bass" <<  % Start Voice = "Bass"
          \Timeline
          \voiceTwo
          \BassMusic
        >>  % End Voice = "Bass"
      >>  % End Staff = LH
    >>  % End pianostaff
  >>
}  % End score

\markup {
  \fill-line {
    ""
    {
      \column {
        \left-align {
          "This is line one of the first verse"
          "This is line two of the same"
          "And here's line three of the first verse"
          "And the last line of the same"
        }
      }
    }
    ""
  }
}

Software asociado[editar]

online[editar]

software[editar]

repositorios y páginas asociadas[editar]