LilyPond: programmare una partitura

Servizi online per musicisti: accordatori online, editor musicali in browser, sequencer ed archivi digitali
Rispondi
Avatar utente
Scuoladimusica
Site Admin
Messaggi: 53
Iscritto il: mercoledì 31 luglio 2019, 19:04
Località: Pesaro
Professione: Sviluppatore software presso Allart Softworks
Attività musicale: Musicista
Contatta:

LilyPond: programmare una partitura

Messaggio da Scuoladimusica » mercoledì 21 agosto 2019, 23:25

Lilypond è un software open source e free per la notazione musicale che utilizza una notazione testuale (un po' come LaTeX) che può essere utilizzato per produrre partiture di alta qualità in vari formati (PDF, PostScript, SVG, PNG ed altri) ed esportare anche un file MIDI.

La particolarità di LiliyPond risiede nel tipo di scrittura, che è completamente testuale.

In fondo anche una partitura è un sistema codificato di segni che interpretiamo secondo una serie di protocolli di comunicazione: se vediamo una palla bianca sul terzo spazio suoniamo (se siamo strumentisti non traspositori) un Do lungo tutta la battuta.

Chiaramente per chi è meno avvezzo alla programmazione pensare al seguente codice come musica può essere fuorviante:

Codice: Seleziona tutto

#!lilypond firebreathers.ly -*- coding: utf-8; -*-
%% Tema per "Fire Breathers", un gioco in continuo sviluppo
%% Composto da Urpo Lankinen.

%% Nota: il compositore ha reso disponibile questo codice sorgente
%% a Wikipedia sotto licenza GFDL. Le versioni al di fuori di Wikipedia
%% Sono tipicamente sotto CC BY-SA.

%% Questo file utilizza la notazione finnica (ad esempio, dove
%% gli americani utilizzano "F#" e "Bb", i Finnici utilizzano "Fis" e "B"). 
%% I nomi olandesi sono utilizzati di default.
\include "suomi.ly"

%% Helper opzionale di aggiornamento del linguaggio
\version "2.6.0"

%% Il blocco Header definisce i titoli
\header {
    title = "Theme to ``Fire Breathers!''"
    instrument = "For the 2A03 or SID"
    composer = "Urpo Lankinen"
    enteredby = "Urpo Lankinen"
    updatedby = "Jan Nieuwenhuizen"
    date = "June 2005"
}

Melody = \relative c'' {
   \clef treble
   \time 3/4
   \key a \minor

   %% Il pezzo inizia con una battuta parziale lunga un quarto, "\partial 4"
   %% lo dice a LilyPond.
   \partial 4
   a4 | e'4.( d8[ c]) r8 | d4.( c8[ h]) r8 | a2. | e2
   a4 | e'4.( d8[ c]) r8 | d4.( e8[ f]) r8 | e2. | r2
   e4 |  f4.( e8[ d]) r8 | d4.( c8[ h]) r8 | a2. | e2
   a4 | e'4.( d8[ c]) r8 | d4.( c8[ h]) r8 | a2. ~ a2 r4 | \bar "|."
}

%% Questa è la seconda voce
SecondVoice = \relative c {
   \clef bass
   \time 3/4
   \key a \minor

   \partial 4
    r4 | e2.              | d2.             | a2. | e2
    a4 | e'2.             | d2       f4     | e2. | r2.
       |  f2.             | d2.             | a2. | e2
    a4 | e'2.             | d2       h4     | a2. ~ a2 r4 | \bar "|."
}

%% Le melodie, le parole e gli accordi possono essere assegnati a
%% variabili e in seguito riutilizzate da altre parti. Qui ci sono
%% tre diversi  pezzi di accompagnamento, che vengono poi utilizzati
%% nella melodia di accompagnamento
AccompA = \relative c { a4 e'8 a, e' a, | }
AccompB = \relative c { g4 d'8 g, d' g, | }
AccompC = \relative c { e,4 h'8 e, h' e, | }

Accompaniment = {
   \clef bass
   \time 3/4
   \key a \minor

   \partial 4
    r4 | \AccompA \AccompB \AccompA \AccompA
        \AccompA \AccompB \AccompA \AccompA
        \AccompC \AccompC \AccompA \AccompA
        \AccompA \AccompB \AccompA | a2 r4 | \bar "|."
}

%% La definizione della musica.
«
  \new Staff \Melody
  \new Staff \Accompaniment
  \new Staff \SecondVoice
»
e sicuramente trova più facile approcciarsi a questo:
Firebreathers.jpg
Firebreathers.jpg (373.98 KiB) Visto 131 volte
Ma bisogna tener presente che ogni metodo ha il suo contesto. Per esempio un programmatore può trovare il codice precedente comodo da visualizzare (anzi "sentire") ed immaginare mentalmente; inoltre si tratta di testo, quindi estremamente facile da condividere.

Ad esempio, questo codice è tutta la partitura di Autumn Leaves (credits: http://listenlearnread.blogspot.com/201 ... ypond.html )

Codice: Seleziona tutto

% ****************************************************************
% Autumn Leaves (Joseph Kosma)
% ****************************************************************
\version "2.12.3"
\header {
 title = "Les Feuilles mortes (Autumn Leaves)"
 composer = "Joseph Kosma"
}
\sourcefilename "display-predefined-fretboards.ly"
\include "predefined-guitar-fretboards.ly"
\storePredefinedDiagram \chordmode {a:m6}
                        #guitar-tuning
                        #"x;o;2-2;2-3;1-1;2-4;"
\storePredefinedDiagram \chordmode {b:9-}
                        #guitar-tuning
                        #"x;2-2;1-1-(;2-3;1-1-);2-4;"
\storePredefinedDiagram \chordmode {g:maj7}
                        #guitar-tuning
                        #"3-2;2-1;o;o;o;2-3;"
theChords = \chordmode {
  \set majorSevenSymbol = \markup { maj7 }
  \partial 4 r4 
  \repeat volta 2 {
  a2:m7 d2:7 
  g2:maj7 c2
  a2:m6 b2 
  e1:m
  a2:m7 d2:7 
  g2:maj7 c2 
  a2:m6 b2:9-
  e1:m 
  b1
  e1:m
  d1
  g1
  b1:9- 
  e1:m7 
  a2:m6 b2:7}
 \alternative {
  { e1:m }
  { e1:m }
 }
}
staffMelody = {
   \key e \minor
   \partial 4 \times 2/3 { e'8 fis'8 g'8 } 
   \repeat volta 2 {
    c''2. \times 2/3 { d'8 e'8 fis'8 }
    b'4 b'4( b'8) r8 \times 2/3 { c'8 d'8 e'8 } 
    a'2. \times 2/3 { b8 cis'8 dis'8 } 
    g'2 (g'8) r8 \times 2/3 { e'8 fis'8 g'8 } \break
    c''2. \times 2/3 { d'8 e'8 fis'8 } 
    b'4 b'4( b'8) r8 \times 2/3 { c'8 d'8 e'8 }
    a'2( a'8) fis'8 a'8 g'8 
    e'2( e'8) r8 dis'8 e'8 \break
    fis'8 b8 fis'2 e'8 fis'8 
    g'4 g'4( g'8) g'8 fis'8 g'8
    a'2( a'8) d'8 d''8. c''16 
    b'2. ais'8 b'8 \break
    c''8 c''8 a'!8 a'8 fis'4 c''4
    b'4 b'2 e'4 
    a'4 a'8 g'8 fis'4 g'8. b16 }
   \alternative {
  { e'2( e'8) e'8 fis'8 g'8 }
  { e'2( e'8) r8 r4 \bar "|." }
 }
}
\score {
  <<
    \context ChordNames { \theChords }
    \context FretBoards { \theChords }
    \new Staff 
      \with {
      \consists "Volta_engraver"
    }
    {
      \context Voice = "voiceMelody" { \staffMelody }
    }
    \new TabStaff 
    { \transpose c' c \staffMelody }
  >>
\layout {
    \context {
      \Score
      \remove "Volta_engraver"
    }
  }
}
Che sicuramente è parecchio più portabile, facilmente editabile e distribuibile rispetto a questa immagine:

AutumnLeaves_tab.png
AutumnLeaves_tab.png (74.27 KiB) Visto 131 volte
Per trasportare il tutto in un'altra tonalità basta utilizzare la direttiva \transpose et voilà, si ottiene uno spartito nella tonalità desiderata.

Ovviamente si tratta di funzioni egregiamente svolte anche da Finale, Sibelius e MuseScore (per citarne alcuni) ma questo sistema comunque potrebbe trovare numerosi adepti, magari anche per chi vuole editare musica dal cellulare.

Esistono siti come

http://lilybin.com/


che consentono di editare la propria musica online scrivendo codice LilyPond a sinistra e visualizzando in maniera automatica a destra il risultato in notazione musicale tradizionale, oltre che scaricare il file MIDI corrispondente.

Molto utile quando non si ha a disposizione altro che il proprio cellulare e si deve scrivere musica con una certa qualità.

Buono studio!

Rispondi