Rappresentazioni simboliche ed editoria musicale¶
Altezze ¶
In questo paragrafo introduciamo l'utilizzo del software Lilypond.
Un software di videoscrittura rappresenta i parametri musicali.
L'ambiente di lavoro è simile in tutti gli IDE che possiamo utilizzare sia in locale (Frescobaldi) che in remoto (Hacklily).
Apriamo Frescobaldi.
! /Applications/Frescobaldi.app/Contents/MacOS/Frescobaldi
Osserviamo come tutti sono divisi in tre parti:
- un interprete dove scrivere le istruzioni.
- una finestra dove sono riportati eventuali messaggi di errore o altro.
- una o più finestre per visualizzare l`anteprima del file pdf generato.

Ogni file deve cominciare con la:
- dichiarazione dlla versione corrente per consentire compatibilità future.
- lingua che vogliamo impiegare per specificare i nomi delle note (consiglio l'inglese).
\version "2.24.3"
\language "english"
Per il momento possiamo scrivere direttamente una sequenza di note diatoniche includendole tra parentesi graffe.
{a b c d e f g}
Se abbiamo impostato la compilazione automatica vedremo comparire l'anteprima dello spartito altrimenti clicchiamo sull'ìcona del fiore di loto.
Notiamo come tutte siano comprese all'interno di un'ottava, per la precisioone quella che parte da C3.
In questo caso se vogliamo cambiare ottava rispetto a quella di riferimento dobbiamo aggiungere per ogni nota
- uno o più apici (') per le ottave sopra.
- una o più virgole (,) per quelle sotto.
{a b, c' d'' e,,, f'' g,}
C'é un metodo più pratico che consiste nel relativizzare la posizione.
\relative c'{c e g c d g f d b c g e c}
Per le alterazioni aggiungiamo al nome (senza spazio) le iniziali in lingua inglese:
- f $\rightarrow$ flat (bemolle)
- s $\rightarrow$ sharp (diesis)
- ff $\rightarrow$ double flat (doppio bemolle)
- ss $\rightarrow$ double sharp (doppio diesis)
- ! $\rightarrow$ natural (bequadro)
- ? $\rightarrow$ aggiunto all'àlterazione la include tra parentesi.
Differentemente dalla teoria musicale le alterazioni valgono per le singole note e non per l'intera misura.
\relative c'{c ef g c ds? g f d b css gff e! c}
Se vogliamo omettere il metro o nascondere i gambi delle note o le linee di battuta.
\relative c'{
\omit Staff.TimeSignature
\hide Staff.Stem
\hide Staff.BarLine
c ef g c ds? g f d b css gff e! c
}
Possiamo consultare on line:
Argomenti¶
- Rappresentazioni musicali e codici
- Altezza e frequenza
- Linguaggi formali e naturali
- IDE audio
- Dati in Input e risultato in output
- Scale e tonalità (linguaggio musicale)
Tonalità ¶
- Impostare la tonalità di un brano
\version "2.24.3"
\language "english"
\relative c'{
\key d \major % maggiore
d e fs g a b cs d
\key ef \minor % minore
ef df cf bf af gf f ef
}
Possiamo inoltre definire armature di chiave non tradizionali.
\relative c'{
% \omit Staff.KeySignature % se volessimo omettere
% grado diatonico , alterazione
\set Staff.keyAlterations = #`((0 . ,NATURAL)
(1 . ,SHARP)
(4 . ,SHARP)
(6 . ,FLAT))
c ds e f gs a bf c
}
Metro ¶
In Lilypond possiamo specificare il metro con il comando \time
\version "2.24.3"
\language "english"
\relative c' {
\time 5/4
g' a b c e
\time 6/8
f 8 e d c d c
}
Possiamo anche definire strutture metriche complesse e polimetriche, questo un'esempio non esaustivo delle possibilità.
\relative c' {
\compoundMeter #'((2 1 2 8))
g'8 a g a g
}
Tempo ¶
Per le indicazioni di tempo utilizziamo il comando \tempo
\relative c' {\override Score.MetronomeMark.padding = 3 % Sposta in verticale
\tempo "Andante" 4 = 100
\time 3/4
g' a b c e d
}
Durate ¶
Per quanto riguarda le durate dobbiamo aggiungere il numero corrispondente alla suddivisione dell' intero (whole note) all'indicazione dell'altezza.
Fino a quando non lo modifichiamo vale l'ultimo valore scritto.
\relative c' {
c8 d16 e f4 g2 a1
}
Per i punti di valore singoli, doppi o tripli basta specificarli.
\relative c' {
c8.. d32 e8. f16 g2 a1
}
Misure ¶
Per controllare che i valori all'interno di una misura siano corretti e per ordinare il codice.
\relative c' {
c2 d4 e4 | %m1
f g a b | %m2
c d1 c8 | %m3 N.B. errore...
e4 f g a | %m4
}
Abbiamo a disposizione diversi tipi di stanghette per le misure (barlines), ecco una lista non esaustiva:
\relative {
f'1 \bar "|"
f1 \bar "."
g1 \bar "||"
a1 \bar ".|"
b1 \bar ".."
c1 \bar "|.|"
d1 \bar "|."
e1 \bar ";"
f1 \bar "!"
g1 \bar ""
a
}
Per nasconderle dal rigo (mantenendo peró il metro).
- \omit - omette e rispazia
- \hide - nasconde e lascia gli spazi inalterati.
\relative c' {
\omit Staff.TimeSignature
\omit Staff.BarLine
c d e f g a b c d e f g
}
Note ¶
Il concetto teorico di nota musicale si riflette anche nel linguaggio impiegato dal Lilypond in quanto la minima unità semantica di questo linguaggio informatico è definita porprio dall'ínsieme di altezza_durata.
\version "2.24.3"
\language "english"
\relative c' {c4 d f g}
Potremo specificare tutti gli altri elementi grafici solo dopo aver indicato questi due parametri.
Ad esempio aggiungiamo delle dinamiche fisse.
\relative c' {c8\p d e f g a b\mf c e1\sfz}
Pause¶
Anche in questo caso possiamo pensare le pause come una nota senza la specifica dell'altezza che sostituiamo con la lettera r (rest).
\relative c' {c8 d r g r b c d}
Se vogliamo uno spazio vuoto senza il simbolo delle pause utilizziamo la lettera s (space).
\relative c' {c8 d s g s b c d}
Staff ¶
Finora abbiamo specificato il contenuto musicale includendolo tra parentesi graffe senza preoccuparci troppo di altre caratteristiche di una partitura.
Cominciamo a formalizzare il pensiero sia informatico che musicale specificando un rigo musicale al quale successivamente daremo ulteriori caratteristiche.
\new Staff {
\relative c' {c4 d f g}
}
Variabili (beaming) ¶
Proseguiamo il processo di formalizzazione specificando gli aggregati musicali (Beaming) attraverso variabili.
Questa formalizzazione può essere sia informatica che musicale.
seqa = {c4 d8 f g2} % Variabili
seqb = {g8 a b c a4 g4}
seqc = {g2 c,}
\new Staff {
\relative c' \seqa % Richiama le variabili più volte (line)
\relative c'' \seqb
\relative c''' \seqc
}
Legature e travature ¶
Negli aggregati musicali possiamo specoificare ulteriori elementi musciali come i diversi tipi di legature:
- di valore - aumentano la durata di una o più note sommando i valori tra loro. Si utilizza il simbolo tilde (~)
\relative c'{c4~ c8 d16 e f4~ f8 g~ g1}
- di portamento - legato inteso come espressione. Si utilizza la parentesi tonda sia relata alla nota di apertura che a quella di chiusura.
\relative c'{c4~( c8 d16 e) f4~( f8 g~ g1)}
- di frase - indicano un fraseggio più ampio. Si utilizza la parentesi tonda preceduta da uno slash sia relata alla nota di apertura che a quella di chiusura.
\relative c'{c4~(\( c8 d16 e) f4~( f8 g~ g1)\)}
Possiamo anche modificare le travature di default raggruppando in modo diverso gli agglomerati musicali. La sintassi è la stessa delle legature di portamento ma con parentesi quadre.
\relative c'{c8 d e[ f g] a [b c d] c d e f g[ f e]}
Dovrebbe essere chiara ora la struttura sintattica della nota: altezza_durata_altri_elementi.
Gruppi irregolari ¶
I gruppi irregolari sono specificati attraverso il comando \tuplet frazione { musica }.
\relative c' {
\tuplet 3/2 { c8 e g }
a g
\tuplet 5/4 { g16 a b c d }
\tuplet 3/2 { e4 d8}
c1
}
Accordi ¶
Per scrivere degli accordi dobbiamo includere le altezze tra i simboli < > e successivamente specificare la durata.
\version "2.24.3"
\language "english"
\relative c' {<c e g>2 d4 e <fs a>2 b <c, e g c e c'>1}
Alcune particolarità riguardo le legature di valore.
\relative c' {
<c e g>2~ 2
<c e g>2~ <c e g c>
<c~ e g~ b> <c d g c>
}
StaffGroup ¶
Possiamo ottenere diversi tipi di raggruppamento dei righi musicali:
- semplice sovrapposizione di voci.
<<
\new Staff \relative { c''1 c }
\new Staff \relative { c''1 c }
>>
- con parentesi quadra iniziale (StaffGroup) e le stanghette di battuta che collegano tutti i righi.
\new StaffGroup
<<
\new Staff \relative { c''1 c }
\new Staff \relative { c''1 c }
\new Staff \relative { c''1 c }
>>
- con parentesi graffa iniziale (GrandStaff) e le stanghette di battuta che collegano tutti i righi.
\new GrandStaff
<<
\new Staff \relative { c''1 c }
\new Staff \relative { c''1 c }
\new Staff \relative { c''1 c }
>>
- partiture per Pianoforte.
\new PianoStaff
<<
\new Staff \relative { c''1 c }
\new Staff \relative { c''1 c }
>>
\version "2.24.3"
\language "english"
\relative c'' {c8\pp. c\mf c\sfz c\ff r4\fz}
\relative c'' {c8 -. c-- c-> c-! c-_ r4.}
Ornamenti
\relative c'' {c4\prall c\mordent c2\trill c\turn c\reverseturn}
Corone o fermate
\relative c'' {c2\shortfermata c\fermata c\longfermata c\verylongfermata}
Segni specifici
\relative c'' {c2\upbow c\downbow c\flageolet c\snappizzicato c\open c\stopped}
Segni di ripetizione
\relative c'' {c2\segno c\coda}
\relative c' { <c e g c>1\arpeggio }
\relative c''{
d1\startTrillSpan
d1
c2\stopTrillSpan
r2
}
Per approfondimenti: Segni di espressione
Partitura ¶
Per realizzare una partitura possiamo formalizzare il pensiero suddividendo il codice in diverse parti per poi collocarle nel blocco \score{}.
- Titoli vari (\header{}).
\version "2.24.3"
\language "english"
\header { % Titoli e altro
title = "Che bel lavoro"
composer = "Me medesimo"
tagline = ""
}
- Formato e margini della pagina (blocco \paper{}).
\paper { % Formato pagina e margini
#(set-paper-size "a4")
top-margin = 10 % in mm di default
bottom-margin = 10
left-margin = 10
right-margin = 10
}
- Indicazioni comuni a tutti gli strumenti (assegnato a una variabile).
global = { % Indicazioni comuni
\key c \major % a tutti gli strumenti
\numericTimeSignature
\time 3/4
\override Score.MetronomeMark.padding = 3 % Sposta in verticale
\tempo "Andante" 4 = 100
}
- Contenuto musicale di ogni rigo (assegnato a variabili).
flute = \relative c'' { % Contenuto musicale
\global % Indicazioni comuni
c4 d e f g a c, d e f g a c, d e f g a
c, d e f g a c, d e f g a c, d e f g a
\bar "|." % Linea di battuta finale
}
violin = \relative c'' {
\global
c2 b4 a2 a4 c2 b4 a2 a4 c2 b4 a2 a4
c2 b4 a2 a4 c2 b4 a2 a4 c2 b4 a2 a4
}
viola = \relative c' {
\global
f4 f2 d4 d2 f4 f2 d4 d2 f4 f2 d4 d2
f4 f2 d4 d2 f4 f2 d4 d2 f4 f2 d4 d2
}
cello = \relative c {
\global
c2. c c c c c
c2. c c c c c
}
right =\relative c'' {
\global
c8 d e f g a b d c a f d c d e f g a b d c a f d c d e f g a b d c a f d
c8 d e f g a b d c a f d c d e f g a b d c a f d c d e f g a b d c a f d
}
left = \relative c, {
\global
c2. g' c g c g
c2. g' c g c g
}
- Parti singole (\new Staff) per permettere di estrarle facilmente.
flutePart = \new Staff \with {
instrumentName = "Flauto"
shortInstrumentName = "Fl."
midiInstrument = "flute"
} \flute % Musica
violinPart = \new Staff \with {
instrumentName = "Violino"
shortInstrumentName = "Vl."
midiInstrument = "violin"
} \violin
violaPart = \new Staff \with {
instrumentName = "Viola"
shortInstrumentName = "V.la"
midiInstrument = "viola"
} {\clef alto % Chiave
\viola} % Musica
celloPart = \new Staff \with {
instrumentName = "Violoncello"
shortInstrumentName = "Vlc."
midiInstrument = "cello"
} {\clef bass
\cello }
pianoPart = \new PianoStaff \with {
instrumentName = "Pianoforte"
shortInstrumentName = "Pf."
}
<<
\new Staff = "right" \with {
midiInstrument = "acoustic grand"
} \right
\new Staff = "left" \with {
midiInstrument = "acoustic grand"
} {\clef bass
\left }
>>
- Partitura (\score{}) che include tutto e genera:
- un file pdf (\layout)
- un file MIDI (\midi)
\score {
<<
\flutePart
\violinPart
\violaPart
\celloPart
\pianoPart
>>
\layout { % Genera file pdf
#(layout-set-staff-size 20)
indent = 20
short-indent = 10
}
\midi {\tempo 4 = 100} % Genera file MIDI
}
Crescendo e diminuendo ¶
Possiamo inserirli sotto forma simbolica attraverso forcelle.
\version "2.24.3"
\language "english"
\relative c'{
c1\p\<~ c
c'\mf \> ~ c c'\p
}
Oppure in forma testuale.
\relative c'{
c1\p\cresc~ c
c'\mf \dim ~ c c'\p
}
In entrambe i casi dobbiamo specificare la nota che chiude la forcella attraverso il simbolo \!
Se presente un nuovo crescendo o diminuendo oppure una nuova indicazione dinamica non serve \! .
Accelerando e ritardando ¶
In questo caso possiamo specificarli come testo e aggiungere o meno i trattini estensori (spanner)
\relative c'' {
\override TextSpanner.bound-details.left.text = "rit." % Testo da visualizzare
b1 \startTextSpan
c
e, \stopTextSpan
}
Anche in questo caso dobbiamo indicare la fine dei trattini.