Questo scritto vuole fornire le conoscenze di base necessarie alla realizzazione di sketches e partiture musicali attraverso il software Lilypond ed è propedeutico a quello dedicato alla composizione algoritmica (Computer Aided Composition) con python.
Per chi volesse approfondire specifici argomenti sotto i titoli dei paragrafi c'è un link che rimanda ai manuali on line.
Conoscenza di base della struttura dei linguaggi di Markup come Latex o HTML e degli elementi comuni ai linguaggi di programmazioni come variabili e funzioni.
\version "2.24.1"
\language "english"
\header {tagline = ""}
\relative c'' {a b c d}
Possiamo eseguire il codice di questo notebook in due modi:
lilypond --output=provaly --pdf PATH_AL_FILE.ly
Genera un file pdf con il risultato grafico.
lilypond -dresolution=300 -dpixmap-format=pngalpha --output=provaly --png PATH_AL_FILE.ly
Genera un file png con il risultato grafico.
Possiamo poi visualizzare il file png in un Notebook come questo.
from IPython.display import HTML
HTML('<center><img src="esempi/01_Scrivi.png" width="35%"></center>')
Per approfondire: Input e Output.
Tutti i files Lilypond devono contenere:
lilypond --version
c d e f g a b do re mi fa sol la si
N.B. I commenti sono preceduti dal simbolo '%'.
#(set! paper-alist (cons '("mio formato" . (cons (* 80 mm) (* 30 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\header {tagline = ""}
% --------------------------------------
\version "2.24.1" % Versione
\language "english" % Lingua per nomi note
% --------------------------------------
\header {} % Titoli
\paper {}
% -------------------------------------- Input (Contenuto musicale)
\book { % Crea un singolo file .pdf
\bookOutputName "02_Struttura" % Nome del pdf e del file midi
% --------------------------------------
\score { % Un singolo movimento o brano separato nel file Book
% Un blocco Score può contenere una sola espressione
% musicale
% --------------------------------------
\new Staff { % Tipo di Rigo (singolo, pianof, etc.)
\new Voice {
{c'' a' b' c''} % Espressione musicale
}
}
% -------------------------------------- Output
\layout{} % Formattazione sistemi (Genera output per la stampa)
% - Se interno a Score influenza solo quel brano
% - Se interno a Book tutto il file
\midi{} % Genera output per il midi
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/02_Struttura.png" width="36%"></center>')
Per approfondire: Titoli e intestazioni.
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 80 mm) (* 80 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 20 short-indent = 0}
\header { % Possiamo omettere quelli che non desideriamo...
dedication = "Dedica"
title = "Titolo"
subtitle = "Sottotitolo"
subsubtitle = "Sotto-sottotitolo"
instrument = "Strumento"
composer = "Compositore"
arranger = "Arrangiatore"
poet = "Paroliere"
meter = "Metro"
piece = "Brano"
opus = "Opera"
copyright = "Copyright"
tagline = "Tagline"
}
{c'' a' b' c''}
from IPython.display import HTML
HTML('<center><img src="esempi/03_Titoli.png" width="36%"></center>')
Per approfondire: Formattazione della pagina.
Per formattare la pagina abbiamo a disposizione due blocchi:
Per approfondire: Paper Block.
Include le regole da applicare a tutte le partiture di un libro o di una parte, come l’altezza del foglio o se stampare o meno i numeri di pagina, etc.
\version "2.24.1"
\language "english"
\header { title = "Titolo" tagline = ""}
#(set! paper-alist (cons '("mio formato" . (cons (* 500 mm) (* 500 mm))) paper-alist) ) % formato custom
\paper {
% #(set-paper-size "a4landcape") % Default, se si cambia viene riscalata automaticamente...
% #(set-paper-size "letter")
% #(set-paper-size "tabloid")
% #(set-paper-size "a4" 'landscape)
% #(set-paper-size "a4" 'portrait)
#(set-paper-size "mio formato") % formato custom
% --------------------- margini assoluti
top-margin = 10 % in mm di default
bottom-margin = 10
left-margin = 10
right-margin = 10
% --------------------- spaziatura flessibile
top-markup-spacing.basic-distance = 20 % Distanza tra margine e testo (titolo)
markup-system-spacing.basic-distance = 20 % Distanza del primo rigo dal titolo
system-system-spacing.basic-distance = 15 % Distanza tra sistemi
last-bottom-spacing.basic-distance = 20 % Distanza tra margine inferiore e ultimo rigo
% (riformatta tutto dinamicamente...)
top-system-spacing.basic-distance = 40 % Distanza tra margine superiore e primo rigo
% se non è presente il titolo come nella seconda pagina
% systems-per-page = 5 % Opzionale...
}
{\repeat unfold 10 {s1 \break}}
from IPython.display import HTML
HTML('<center><img src="esempi/04_Paper.png" width="95%"></center>')
Per approfondire: Score-layout.
Include le impostazioni di formattazione della partitura, come il numero di sistemi da usare o lo spazio tra i gruppi di righi, etc.
\version "2.24.1"
\language "english"
\header {tagline = ""}
#(set! paper-alist (cons '("mio formato" . (cons (* 100 mm) (* 100 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\layout{
#(layout-set-staff-size 20) % Staff size
indent = 50 % Controlla il rientro del primo rigo
short-indent = 10 % Controlla il rientro degli altri righi
}
{\repeat unfold 5 {s1 \break}}
from IPython.display import HTML
HTML('<center><img src="esempi/05_Layout.png" width="40%"></center>')
Per approfondire: Contesti, Aspetto del rigo.
Nella struttura del file dopo aver scritto eventuali titoli e formattato le pagine dobbiamo inserire la partitura vera e propria attraverso il blocco Score.
\version "2.24.1"
\language "english"
\header {tagline = ""}
#(set! paper-alist (cons '("mio formato" . (cons (* 80 mm) (* 30 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 12 short-indent = 0}
\score {
\new Staff { % Tipo di Rigo (singolo, pianof, etc.)
\new Voice = "Ciccio" { % Voce nel rigo
{c'' a' e' c''} % Espressione musicale
}
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/06_Score.png" width="35%"></center>')
Possiamo notare come Staff e Voice siano precedute dalla keyword \new. Questi si chiamano contesti che hanno struttura gerarchica e ognuno contiene delle regole proprie e dei parametri di default:
Ogni contesto è responsabile della creazione di alcuni oggetti della notazione, di far rispettare alcune regole di notazione e di conservare le proprietà associate.
Ad esempio, il contesto Voice può introdurre un’alterazione e poi il contesto Staff mantiene la regola per mostrare o sopprimere l’alterazione per il resto della misura.
Per spartiti molto semplici, i contesti vengono creati implicitamente con valori di default:
\version "2.24.1"
\language "english"
\header {tagline = ""}
#(set! paper-alist (cons '("mio formato" . (cons (* 80 mm) (* 30 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 12 short-indent = 0}
{c'' a' e' c''} % Solo espressione musicale
from IPython.display import HTML
HTML('<center><img src="esempi/07_Contesti_1.png" width="35%"></center>')
Notiamo che in input abbiamo specificato solo le altezze e Lilypond ha creato automaticamente i contesti Voice, Staff e Score utilizzandone i parametri di default per la chiave, il tempo e la durata delle note.
Per partiture più complesse è meglio specificare tutti i contesti che possono essere suddivisi in tre livelli:
Livello superiore - contenitori di righi
GrandStaff - Un gruppo di righi, con una parentesi graffa sul lato sinistro, che raggruppa insieme i righi. Le stanghette dei righi in esso contenuti sono connessi verticalmente.
PianoStaff - Identico a GrandStaff, ma con il supporto ai nomi degli strumenti a sinistra di ogni sistema.
In questo livello per inserire più righi dobbiamo includerli tra i simboli << Staff1 Staff2 ... >>.
Livello intermedio - righi
MensuralStaff - Identico a Staff, a parte il fatto che è progettato per rappresentare un brano in stile mensurale.
In questo livello per inserire più voci dobbiamo includerli tra i simboli << Voice1 Voice2 ... >>.
Livello inferiore - voci
\version "2.24.1"
\language "english"
\header {tagline = ""}
#(set! paper-alist (cons '("mio formato" . (cons (* 80 mm) (* 50 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 12 short-indent = 0}
\score { % inizio di una singola espressione musicale composta
% ---------------------------------------- % Livello superiore
\new StaffGroup % senza parentesi...
% ---------------------------------------- % Livello intermedio
<< % inizio di una sezione di righi simultanei
\new Staff { % crea primo rigo
% ---------------------------------------- % Livello inferiore
<< % inizio di una sezione di voci simultanee
\new Voice = "s" {\voiceOne { a' b' c'' d''} }
\new Voice = "c" {\voiceTwo { c' d' e' f' } }
>> % fine di una sezione di voci simultanee
}
\new Staff { % crea secondo rigo
<< % inizio di una sezione di voci simultanee
\new Voice = "a" {\voiceThree { c' d' e' f'} }
\new Voice = "b" {\voiceFour { c' g a f } }
>> % fine di una sezione di voci simultanee
}
>> % fine di una sezione di righi simultanei
}
from IPython.display import HTML
HTML('<center><img src="esempi/08_Contesti_2.png" width="35%"></center>')
A questo link possiamo trovare dei Modelli di partiture con diverse caratteristiche.
Per approfondire: Nomi degli strumenti, Chiavi, Indicazioni di tempo e Tonalità
Per inserire i nomi degli strumenti dobbiamo utilizzare \with all'interno del blocco Staff mentre per quanto riguarda le indicazioni di tempo e la tonalità possiamo specificarle direttamente all'interno del blocco Voice:
\version "2.24.1"
\language "english"
% ------------------------------------------ Formattazione pagina
#(set! paper-alist (cons '("mio formato" . (cons (* 200 mm) (* 200 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato")
right-margin = 13
top-markup-spacing.basic-distance = 8
markup-system-spacing.basic-distance = 15
system-system-spacing.basic-distance = 15
last-bottom-spacing.basic-distance = 20
top-system-spacing.basic-distance = 20
}
% ------------------------------------------ Formattazione Sistema
\layout{#(layout-set-staff-size 20)
indent = 20
short-indent = 10
}
% ------------------------------------------ Titoli
\header {title = "Brano" composer = "Me Medesimo" tagline = ""}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Violino" % Primo staff
shortInstrumentName = "Vl. " % Dal secondo in poi
}
\new Voice {\override Score.MetronomeMark.padding = 3 % Sposta in verticale
\tempo "Andante" 4 = 100 % Tempi
\time 2/4
\clef treble % Chiavi
\key e \major % Tonalità
\repeat unfold 6 {s2 \break}} % Espressioni musicali
}
from IPython.display import HTML
HTML('<center><img src="esempi/09_Pit_stop_1.png" width="70%"></center>')
Possiamo inserire le altezze musicali delle note in due modalità differenti:
Per approfondire: Ottava assoluta.
Per ogni nota dobbiamo specificare l'ottava utilizzando i simboli apice e virgola oppure stabilire all'inizio una nota perno (root note).
\version "2.24.1"
\language "english"
\header {tagline = ""}
#(set! paper-alist (cons '("mio formato" . (cons (* 100 mm) (* 60 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
{c,, g,, c, g, c g c' g' c'' g'' c''' g''' \break} % Su ogni nota \break = a capo
\fixed c' {c d e f g a b c' d' e' f' g'} % Fissando una nota perno
from IPython.display import HTML
HTML('<center><img src="esempi/10_Altezze_1.png" width="45%"></center>')
Per approfondire: Ottava relativa.
Questa modalità è definita dalla keyword \relative e da una nota di riferimento posta prima dell'espressione musicale.
Ogni ottava è determinata dall’ultima nota: se cambiamo l’ottava di una nota, cambieranno anche le ottave di tutte quelle successive.
\version "2.24.1"
\language "english"
\header {tagline = ""}
#(set! paper-alist (cons '("mio formato" . (cons (* 100 mm) (* 40 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\relative c' {c d e f g a b c }
\relative c' {d g c f, c' a, e'' c} % Cambi d'ottava
from IPython.display import HTML
HTML('<center><img src="esempi/11_Altezze_2.png" width="45%"></center>')
Per approfondire: Alterazioni.
Per inserire alterazioni delle altezze in lingua inglese dobbiamo aggiungere i seguenti suffissi:
Semitoni
Quarti di tono
\version "2.24.1"
\language "english"
\header {tagline = ""}
#(set! paper-alist (cons '("mio formato" . (cons (* 100 mm) (* 40 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\relative c' {c cs css d a'! af aff? g? } % Possiamo anche non specificare la nota perno iniziale.
\relative c' {c cqs cs ctqs a' aqf af atqf}
from IPython.display import HTML
HTML('<center><img src="esempi/12_Alterazioni.png" width="45%"></center>')
Per approfondire: Accordi.
Se vogliamo scrivere accordi dobbiamo includere le note desiderate tra i simboli < note_accordo >.
\version "2.24.1"
\language "english"
\header {tagline = ""}
#(set! paper-alist (cons '("mio formato" . (cons (* 100 mm) (* 30 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\relative c' { <c e g c> <d f g b> <e g c> g <fs a> gs <e e'> <a a>}
from IPython.display import HTML
HTML('<center><img src="esempi/13_Accordi.png" width="45%"></center>')
Per approfondire: Voci.
Possiamo scrivere più voci all'interno dello stesso rigo in tre modi:
\version "2.24.1"
\language "english"
\header {tagline = ""}
#(set! paper-alist (cons '("mio formato" . (cons (* 100 mm) (* 30 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\new Staff <<
\new Voice = "prima"
\relative c'' { \voiceOne c e g f e f d c }
\new Voice = "seconda"
\relative c'' { \voiceTwo c g e f g a b c }
>>
from IPython.display import HTML
HTML('<center><img src="esempi/14_Voci_1.png" width="45%"></center>')
\version "2.24.1"
\language "english"
\header {tagline = ""}
#(set! paper-alist (cons '("mio formato" . (cons (* 100 mm) (* 30 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\new Staff
\new Voice = "double"
\relative c'' { c % una voce
<< {\voiceOne e g } % due voci
\new Voice {\voiceTwo g, e }
>>
\oneVoice % una voce
f e f
<< {\voiceOne d c } % tre voci
\new Voice {\voiceTwo b c }
\new Voice {\voiceThree <e' gs> <g' fs> }
>>
}
from IPython.display import HTML
HTML('<center><img src="esempi/15_Voci_2.png" width="45%"></center>')
\version "2.24.1"
\language "english"
\header {tagline = ""}
#(set! paper-alist (cons '("mio formato" . (cons (* 100 mm) (* 30 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\new Staff
<<
\relative c'' { c e g f e f d c }
\\
\relative c' { c2 c c c }
\\
\relative c'' { c4 g e f g a b c }
>>
from IPython.display import HTML
HTML('<center><img src="esempi/16_Voci_3.png" width="45%"></center>')
In quest'ultima modalità l'ordine delle voci è il seguente:
Le voci pari hanno la gambetta in giù mentre quelle dispari in su.
Per approfondire: Modifica più altezze.
Per inserire sequenze musicali in uno o più righi possiamo sfruttare alcune procedure comuni dei linguaggi formali sia informatici che musicali.
Una di queste consiste nell'assegnare frammenti di sequenze musicali a variabili che potremo in seguito richiamare, modificare, iterare, etc.
\version "2.24.1"
\language "english"
\header {tagline = ""}
#(set! paper-alist (cons '("mio formato" . (cons (* 100 mm) (* 40 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
primo = {c' e' g' c''} % Assegna la sequenza a una variabile
secondo = {d' f' a' c''}
quinto = {d' f' g' b'}
{\primo \secondo \quinto \retrograde \primo \transpose d' a \secondo \retrograde \quinto \primo}
from IPython.display import HTML
HTML('<center><img src="esempi/17_Variabili.png" width="45%"></center>')
Questa procedura è quella che utilizzeremo nel Notebook dedicato alla Composizione algoritmica con python.
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 200 mm) (* 90 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {title = "Altezze"
composer = "Me Medesimo"
tagline = ""}
% ------------------------------------------ Variabili (frammenti musicali)
assolute = {c' e' g' c''}
relaa = \relative c' { e gs b e}
relab = \relative c'' { d g, e d'}
semit = \relative c' { c cs css d a' af aff g}
quartit = \relative c' { c cqs cs ctqs a' aqf af atqf}
acco = \relative c' { <c e g c> <d f g b> <e g c> g <fs a> gs <e e'> <a a>}
vocia = \relative c'' { c
<< {\voiceOne e g }
\new Voice {\voiceTwo g, e }
>>
\oneVoice
c'' b cs?
<< {\voiceOne d c }
\new Voice {\voiceTwo b c }
>>
}
vocib = \relative c'' { <<
{g b g a g b c e }
\\
{e, c c f e g f d}
\\
{d c b c f e d g}
>>
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Violino"}
\new Voice {\override Score.MetronomeMark.padding = 3
\tempo "Andante" 4 = 100 % Tempi
\time 4/4
\clef treble % Chiavi
\key a \major % Tonalità
\assolute % Variabili...
\relaa
\relab
\semit \break % va a capo...
\quartit
\acco \break % va a capo...
\vocia
\vocib
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/18_Pit_stop_2.png" width="80%"></center>')
Per approfondire: Durate.
Per inserire durate musicali dobbiamo aggiungere un numero subito dopo l'altezza.
La durata specificata viena adottata anche dalle note successive in assenza di nuove indicazioni.
Il numero uno corrisponde al valore dell'intero e per le altre durate specifichiamo le suddivisioni.
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 200 mm) (* 40 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Variabili
durate = \relative c'' {a1
a2 a4 a8 a
a16 a a a a32 a a a a64 a a a a a a a a2
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Violino"}
\new Voice {\override Score.MetronomeMark.padding = 3
\tempo "Andante" 4 = 100 % Tempi
\time 4/4
\clef treble % Chiavi
\key a \major % Tonalità
\durate % Musica
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/19_Durate.png" width="80%"></center>')
Per approfondire: Pause.
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 200 mm) (* 40 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Variabili
punto = \relative c' { a4. a8 a8. a16 a a8.}
pausea = \relative c' { r4.. a16 r8. a16 r a8.}
pauseb = \relative c' { a4\rest d4\rest r2} % specifica la posizione sul rigo...
spazio = \relative c' { c4 s4 c8 c8 c4}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Flauto"}
\new Voice {\override Score.MetronomeMark.padding = 3
\tempo "Andante" 4 = 100 % Tempi
\time 4/4
\clef treble % Chiavi
\key a \major % Tonalità
\punto
\pausea
\pauseb
\spazio
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/20_Pause.png" width="85%"></center>')
Per approfondire: Gruppi irregolari.
Se vogliamo inserire gruppi irregolari possiamo utilizzare il comando \tuplet 5/4 { c c c c c }.
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 200 mm) (* 60 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Variabili
irra = \relative c'' {
\tuplet 3/2 { f8 g a }
\tuplet 3/2 { c8 r c }
\tuplet 3/2 { f,8 g16 a g a }
\tuplet 3/2 { d4 a8 }
}
% ------------------ Stanghette orizzontali
irrb = \relative c'' {
\override TupletBracket.bracket-visibility = ##t
\tuplet 3/2 { f8 g a }
\tuplet 3/2 { c8 r c }
\tuplet 3/2 { f,8 g16 a g a }
\tuplet 3/2 { d4 a8 }
}
% ------------------ Se sono tanti valori uguali
irrc = \relative c' {
g2 r8 \tuplet 3/2 8 { c16 d e e f g g f e}
}
% ------------------ Posizione dell'indicazione
irrd =\relative c'' {
\tupletUp \tuplet 3/2 { c8 d e }
\tupletNeutral \tuplet 3/2 { c8 d e }
\tupletDown \tuplet 3/2 { f,8 g a }
\tupletNeutral \tuplet 3/2 { f8 g a }
}
% ------------------ Annidate...
irre = \relative c'' {
\override TupletBracket.bracket-visibility = ##t
c4 \tuplet 5/4 { f8 e f \tuplet 3/2 { e[ f g] } } f4
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Violino"}
\new Voice {\override Score.MetronomeMark.padding = 4
\tempo "Andante" 4 = 100 % Tempi
\time 4/4
\clef treble % Chiavi
\key c \major % Tonalità
\irra
\irrb
\irrc
\irrd
\irre
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/21_Terzine.png" width="85%"></center>')
Per approfondire: Travature.
Possiamo accorpare tra di loro in diversi modi i collegamenti tra gruppi di note con durate uguali racchiudendoli tra parentesi quadre.
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 200 mm) (* 40 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Variabili
trava = \relative c' {
c16 d ef [f g] f [g a bf c] d ef f [g] a b, c1
}
travb = \relative c' {
\autoBeamOff % Toglie il beaming automatico
a'8 c b4 d8. c16 b4
\autoBeamOn % Riattiva il beaming automatico
a8 c b4 d8. c16 bf4
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Violino"}
\new Voice {\override Score.MetronomeMark.padding = 3
\tempo "Andante" 4 = 100 % Tempi
\time 4/4
\clef treble % Chiavi
\key bf \major % Tonalità
\trava
\travb
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/22_Beaming.png" width="85%"></center>')
Per approfondire: Abbellimenti e cadenze.
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 200 mm) (* 40 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Variabili
%----------------------------- Abbellimenti
grace = \relative c'' {
c2 \grace { a32 b e f } c2
\appoggiatura b8 c2
\acciaccatura b16 c2
}
%----------------------------- Senza stanghette
stemOff = \hide Staff.Stem
stemOn = \undo \stemOff
nost = \relative c'' {
\stemOff % Richiama la variabile
c4 a b e
f2 d
\stemOn % Richiama la variabile
f4 d2.
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Violino"}
\new Voice {\override Score.MetronomeMark.padding = 3
\tempo "Andante" 4 = 100 % Tempi
\time 4/4
\clef treble % Chiavi
\key bf \major % Tonalità
\grace
\bar "||"
\nost
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/23_Abbellimenti.png" width="85%"></center>')
Possiamo trovare ulteriori approfondimenti su casi particolari come poliritmi, cadenze, tempi composti, etc. a questo Link.
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 200 mm) (* 80 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {title = "Durate"
composer = "Me Medesimo"
tagline = ""}
% ------------------------------------------ Variabili
durate = \relative c'' { a2 a4 a8 a }
pausea = \relative c'' { r4.. a16 r8. a16 r a8.}
irrego = \relative c' {
\override TupletBracket.bracket-visibility = ##t
\tuplet 3/2 { f8 g a }
\tuplet 3/2 { f g a }
\tuplet 3/2 { f g a }
\tuplet 3/2 { f g a }
}
trava = \relative c' {
c8 d ef [f g] f [g a bf c] r4 r2
}
grace = \relative c' {
c'2 \grace { a32 b } c2
\appoggiatura b8 c2
\acciaccatura b16 c2
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Violino"}
\new Voice {\override Score.MetronomeMark.padding = 3
\tempo "Andante" 4 = 100 % Tempi
\time 4/4
\clef treble % Chiavi
\key bf \major % Tonalità
\durate
\pausea
\irrego \break
\trava
\grace
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/24_Pit_stop_3.png" width="85%"></center>')
from IPython.display import HTML
HTML('<center><img src="media/eser_31.png" width="80%"></center>')
from IPython.display import HTML
HTML('<center><img src="media/eser_32.png" width="80%"></center>')
from IPython.display import HTML
HTML('<center><img src="media/eser_33.png" width="80%"></center>')
Per approfondimenti: Post-eventi.
Quando inseriamo una nota dobbiamo seguire la seguente sintassi:
I post-eventi corrispondono alle dinamiche, articolazioni, diteggiature, i numeri di corda, le legature di valore e portamento, e tutte le indicazioni legate a quella nota.
Per approfondimenti: dinamiche.
Per approfondimenti: formattare testo.
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 200 mm) (* 40 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Sulla Nota
din = \relative c' {\override Score.MetronomeMark.padding = 5
\tempo "Presto" 2 = 234
\time 4/4
c2\pp d'\sfz
e,^\fff f'_\fz
}
% ------------------------------------------ Custom
% Utilizzare \markup (testo)
moltoF = \markup { molto [ \dynamic p ] } % Specifica dinamica in una variabile
cus = \relative c' {
<d e>16_\moltoF <d e>
<d e>2..
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Sho"}
\new Voice {
\din
\cus
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/25_Dinamiche.png" width="80%"></center>')
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 200 mm) (* 50 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Variabili
% \< \! Crescendo
% \cr \endcr
% \> \! Decrescendo
% \decr \enddecr
% Se presente una dinamica o un nuovo crescendo o diminuendo non serve \!
forc = \relative c'' {
c2\< c\!
d2\< d\f
e2\< e\>
f2\> f\!
e2\> e\mp
d2\> d\>
c1\!
}
% ------------------------------------------ Testuali
test = \relative c' {
% \override DynamicTextSpanner.style = #'none %toglie i trattini...
g8\cresc a b c b c d e\mf
f8\decresc e d c e\> d c b
a1\dim ~
a2. r4\!
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Piccolo"}
\new Voice {
\forc \break
\test
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/26_Forcelle.png" width="80%"></center>')
Tutte le dinamiche sono posizionate il più vicino possibile alle note. Se vogliamo allinearle:
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 100 mm) (* 100 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Orizzontale
oriz = \relative c' {
c1\<
\once \override Hairpin.shorten-pair = #'(1 . 1)
c\<
\once \override Hairpin.shorten-pair = #'(2 . 1)
c\<
\once \override Hairpin.shorten-pair = #'(3 . 1)
c\< \break
\once \override Hairpin.shorten-pair = #'(3 . 1)
c\>
\once \override Hairpin.shorten-pair = #'(2 . 1)
c\>
\once \override Hairpin.shorten-pair = #'(1 . 1)
c\>
\once \override Hairpin.shorten-pair = #'(0 . 0)
c\> \! \break
}
% ------------------------------------------ Verticale
vert = \relative c' {
\override DynamicLineSpanner.staff-padding = #5 % distanza dallo staff
a2\p b\f
e4\p f\f\> g, b\p
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Fischio"}
\new Voice {
\oriz
\vert
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/27_Allineamento.png" width="40%"></center>')
from IPython.display import HTML
HTML('<center><img src="media/eser_4.png" width="80%"></center>')
Per approfondimenti: Legature di valore.
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 100 mm) (* 80 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Una voce
% Si utilizza il simbolo tilde e si può omettere l'altezza delle note legate
val = \relative c' {
a2~ a4~ a8 r8
a'2~ 4~ 8 r8 % altezze omesse...
}
% ------------------------------------------ Accordi
acc = \relative c' {
<c e g>2~ 2
<c e g>4~ <c e g c>
<c~ e g~ b> <c d g c>
}
% ------------------------------------------ l.v.
lv = \relative c' {
<c f g>1 \laissezVibrer
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Pipa"}
\new Voice {
\val \break
\acc \break
\lv
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/28_Valore.png" width="40%"></center>')
Per approfondimenti: Legature di portamento.
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 100 mm) (* 40 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Una voce
% Tra parentesi
% La prima ( segue la prima nota legata...
por = \relative c'' {
f4( g a) a8 b(
a4 g2 f4)
<c e>2( <b d>2)
}
% ------------------------------------------ Portamento + Valore
mix = \relative c'' {
\tieSolid
\slurSolid
c4(~ c8 d~ 4 e)
}
% ------------------------------------------ Doppie legature
dop = \relative c' {
\set doubleSlurs = ##t
<c e>4( <d f> <c e> <d f>)
\set doubleSlurs = ##f
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Oboe"}
\new Voice {
\por
\mix
\dop
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/29_Portamento.png" width="40%"></center>')
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 100 mm) (* 30 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 8 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Una voce
% Per legature più lunghe che incorporano legature di portamento possiamo utilizzare \(
fra = \relative c'' {
g4\( g8( a) b( c) b4\)
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Liuto"}
\new Voice {
\fra
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/30_Frase.png" width="43%"></center>')
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 200 mm) (* 100 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 10 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {title = "Dinamiche e Legature"
composer = "Me Medesimo"
tagline = ""}
% ------------------------------------------ Variabili
val = \relative c' { a2~\< \p a4~ a8\! r8 }
acc = \relative c' {
<c e g>2~\> 2 \!
<c e g>4~ <c e g c>
<c~ e g~ b> <c e g b>
}
por = \relative c'' {
f4(\cresc g a~) a8 \mf b(
a4 \dim g2 f4) \p
<c e>2 \>( <b d>2) \!
}
mix = \relative c'' {
\tieSolid
\slurSolid
c4(~\pp c8 d~ 4 e)
}
fra = \relative c'' {
g4\( g8( a) b( c) b4~
b2\) a(
g1)
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Violino"}
\new Voice {\override Score.MetronomeMark.padding = 3
\tempo "Andante" 4 = 100 % Tempi
\time 4/4
\clef treble % Chiavi
\key bf \major % Tonalità
\val
\acc \break
\por \break
\mix
\fra
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/31_Pit_stop_4.png" width="77%"></center>')
from IPython.display import HTML
HTML('<center><img src="media/eser_5.png" width="77%"></center>')
Elenco delle: articolazioni.
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 200 mm) (* 70 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 8 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Articolazioni
arti = \relative c' {\override Score.MetronomeMark.padding = 4
\tempo "Andante" 4 = 124
\time 4/4
c4-> d'-. e,-! f'-^
c 4-- d'-_ e,-! f'\espressivo
}
% ------------------------------------------ Ornamenti
orna = \relative c' {
g4\trill a'\prall b,\turn c'\lineprall
g 4\mordent a'\downmordent b,\prallmordent c'\reverseturn
}
% ------------------------------------------ Corone
cor = \relative c'' {
d2\fermata e,\shortfermata
f'\longfermata g,\verylongfermata
}
% ------------------------------------------ Tecniche strumentali
strum = \relative c'' {
a8\downbow b'\upbow c,\snappizzicato d,\halfopen e-+ f\flageolet g\thumb a\lheel
}
% ------------------------------------------ Ripetizioni
rip = \relative c' {
a'2\segno b\coda
f1 \varcoda
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Sho"}
\new Voice {
\arti
\orna \break
\cor
\strum
\rip
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/32_Segni.png" width="83%"></center>')
Per approfondimenti: diteggiature.
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 80 mm) (* 30 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 0 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Variabili
dit = \relative c' {\override Score.MetronomeMark.padding = 4
\tempo "Andante" 4 = 124
\time 4/4
b8-1 c'-4 d-5 e,-1 f-2 g'-5 a,-1 b-2
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Fiddle"}
\new Voice {
\dit
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/33_Diteggiature.png" width=35%"></center>')
Per approfondimenti: allineamento degli oggetti.
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 80 mm) (* 40 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 4 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Rispetto al rigo
% - Automatica
% _ Sotto
% ^ Sopra
posr = \relative c' {\override Score.MetronomeMark.padding = 4
\tempo "Andante" 4 = 124
\time 4/4
b8^> c'_> d_> e,^> f-> g'_> a,-> b_>
}
% ------------------------------------------ Offset Verticale
% Unità per semitono rispetto al rigo centrale (0)
posv = \relative c''' {
a2 -\tweak Y-offset #0 -> % (sul rigo centrale)
b -\tweak Y-offset #-5 _\fermata
}
% ------------------------------------------ Offset Orizzontale
poso = \relative c'' {
a1 -\tweak X-offset #4 -\segno
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Fiddle"}
\new Voice {
\posr
\posv
\poso
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/34_Posizione.png" width=35%"></center>')
Per approfondimenti: indicazioni testuali e Respiri.
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 100 mm) (* 50 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 2 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Variabili
txt = \relative c'' {
\once \override TextScript.self-alignment-X= -1 % allineamento X
c4^ \markup { con gioia }
b' _\markup { \sharp } c,
\once \override TextScript.self-alignment-X= -2 % allineamento X
d, ^\markup { (\flat) }
r1
}
% ------------------------------------------ Ordine Verticale con altri segni
ove = \relative c' {
\once \override TextScript.script-priority = #-100 % TextScript
a'2^\prall^\markup { \sharp }
\once \override Script.script-priority = #-100 % Script...
a2^\prall^\markup { \sharp }
}
% ------------------------------------------ Respiri
res = \relative c' {c2. \breathe d'4
\override BreathingSign.text =\markup { \musicglyph "scripts.rvarcomma" }
c,2. \breathe d'4
\override BreathingSign.Y-offset = #2.6
\override BreathingSign.text =\markup { \musicglyph "scripts.tickmark" }
c2. \breathe d4
\override BreathingSign.Y-offset = #1.7
\override BreathingSign.text = \markup {\musicglyph "scripts.caesura.straight"}
c2. \breathe d,4
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Oboe"}
\new Voice {
\txt
\ove
\res
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/35_Testi.png" width=40%"></center>')
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 200 mm) (* 80 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 8 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {title = "Simboli vari"
composer = "Me Medesimo"
tagline = ""}
% ------------------------------------------ Variabili
arti = \relative c' { c4-> d'-. e,-! f'-^ }
orna = \relative c' { g4\trill a'\prall b,\turn c'\lineprall }
cor = \relative c'' { d2\fermata e,\shortfermata }
strum = \relative c'' { a8\downbow b'\upbow c,\snappizzicato d,\halfopen e-+ f\flageolet g\thumb a\lheel }
rip = \relative c' { a'2\segno b\coda }
dit = \relative c' { b8-1 c'-4 d-5 e,-1 f-2 g'-5 a,-1 b-2 }
txt = \relative c'' {
\once \override TextScript.self-alignment-X= -1 % allineamento X
c1^ \markup { con gioia }
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Violino"}
\new Voice {\override Score.MetronomeMark.padding = 3
\tempo "Andante" 4 = 100 % Tempi
\time 4/4
\clef treble % Chiavi
\key bf \major % Tonalità
\arti
\orna
\cor \break
\strum
\rip
\dit
\txt
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/36_Pit_stop_5.png" width=85%"></center>')
Per approfondimenti: Portamento e Glissando.
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 100 mm) (* 50 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 7 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Portamento (sulla nota)
por = \relative c'' {
\override Score.SpacingSpanner.shortest-duration-space = #3.0 % lunghezza del portamento
c2\bendAfter #+4
c2\bendAfter #-4
\revert Score.SpacingSpanner.shortest-duration-space % Resetta
}
% ------------------------------------------ Glissando (tra due note)
gli = \relative c' {
g2 \glissando g'
c2 \glissando c,
\afterGrace f,1 \glissando f'16
}
% ------------------------------------------ Apparenza
sti = \relative c'' {
d2 \glissando d'2
\override Glissando.style = #'dashed-line
d,2 \glissando d'2
\override Glissando.style = #'dotted-line
d,2 \glissando d'2
\override Glissando.style = #'zigzag
d,2 \glissando d'2
\override Glissando.style = #'trill
d,2 \glissando d'2
\revert Glissando.style % resetta
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Voce"}
\new Voice {
\por
\gli
\sti
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/37_Glissando.png" width=40%"></center>')
Per approfondimenti: Arpeggio.
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 100 mm) (* 30 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 7 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Semplici
cho = <c e g c>2 % Accordo
arp = \relative c'{
\arpeggioNormal
\cho \arpeggio
\arpeggioArrowUp
\cho \arpeggio
\arpeggioArrowDown
\cho \arpeggio
\arpeggioBracket
\cho \arpeggio
\arpeggioParenthesis
\cho \arpeggio
\arpeggioParenthesisDashed
\cho \arpeggio
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Voce"}
\new Voice {
\arp
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/38_Arpeggio.png" width=45%"></center>')
Per approfondimenti: Trilli.
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 150 mm) (* 50 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 2 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Senza linea
tri = \relative c'' {
d4\trill r4 d2\trill
}
% ------------------------------------------ Con linea
lin = \relative c'' {
d1\startTrillSpan
d1
c2\stopTrillSpan r2
d1\startTrillSpan ~
d1
b1\startTrillSpan % nuovo trillo = stop linea
d2\stopTrillSpan r2
}
% ------------------------------------------ Risoluzioni
acc = \relative c'' {
d1~ \afterGrace
d1 \startTrillSpan { c32[ d]\stopTrillSpan }
c2 r2
}
% ------------------------------------------ Doppio
lind = \relative c'' {
<<
{ % Voce nascosta...
s1\startTrillSpan
s1
s2\stopTrillSpan s2}
\\
{
\once \override TrillSpanner.Y-offset = 6
d1\startTrillSpan
d1
c2\stopTrillSpan b2\rest} % posizione pausa...
>>
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Voce"}
\new Voice {
\tri
\lin
\acc
\lind
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/39_Trilli.png" width=60%"></center>')
Per approfondimenti: Tremolo.
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 150 mm) (* 70 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 8 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Ribattuto
rib = \relative c'' {
c2:8 c:32
c: c:16 % se il numero di ribattuti è omesso vale l'ultimo
}
% ------------------------------------------ Fra 2 note
rin = \relative c'' {
\repeat tremolo 8 { c16 d }
\repeat tremolo 4 { c16 d }
\repeat tremolo 2 { c8 d }
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Viola"}
\new Voice {
\rib
\rin
}
}
% ------------------------------------------ Fra 2 Staff
sup = \relative c'' {
s2 r2 % Spazio vuoto
}
sdo = \relative c'' {
\voiceOne
\repeat tremolo 8 {
<a e'>32
{\change Staff = "up"
\voiceTwo
<cs a' ds>32
}
} \change Staff = "down" b2 \rest
}
\score{
\new PianoStaff \with {instrumentName = "Piano"}
<<
\new Staff = "up" \sup
\new Staff = "down" \sdo
>>
}
from IPython.display import HTML
HTML('<center><img src="esempi/40_Tremolo.png" width=61%"></center>')
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 150 mm) (* 40 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 0 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {title = "Articolazioni varie"
composer = "Me Medesimo"
tagline = ""}
% ------------------------------------------ Variabili
por = \relative c'' {
\override Score.SpacingSpanner.shortest-duration-space = #3.0 % lunghezza del portamento
c2\bendAfter #+4
\revert Score.SpacingSpanner.shortest-duration-space % Resetta
}
gli = \relative c' { g2 \glissando g' }
arp = \relative c' { <c e g c>2 \arpeggio }
lin = \relative c'' {
d1\startTrillSpan
c2\stopTrillSpan r2
}
rib = \relative c'' { c2:8 c:16 }
rin = \relative c'' {
\repeat tremolo 16 { c32 d }
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Violino"}
\new Voice {\override Score.MetronomeMark.padding = 3
\tempo "Andante" 4 = 100 % Tempi
\time 4/4
\clef treble % Chiavi
\key bf \major % Tonalità
\por
\gli
\arp
\lin
\rib
\rin
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/41_Pit_stop_6.png" width=61%"></center>')
from IPython.display import HTML
HTML('<center><img src="media/eser_61.png" width=80%"></center>')
from IPython.display import HTML
HTML('<center><img src="media/eser_62.png" width=80%"></center>')
from IPython.display import HTML
HTML('<center><img src="media/eser_63.png" width=80%"></center>')
Per approfondimenti: Misure.
Le linee di battuta sono aggiunte automaticamente in base all'indicazione di tempo.
Un metodo conveniente per evitare di inserire un numero errato di durate all'interno di una battita consiste nello specificare nel codice i controlli di battuta che, oltre a ordinare il codice verificano il contenuto della battuta aiutando a rilevare gli errori di durata scrivendo l'errore nel file di log:
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 150 mm) (* 30 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 2 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
bark = \relative c'' { g1 | %m2
e1 | %m3
c2. c'4 | %m4
g4 c g e | %m5
c4 r c'1 | %m6 % errore di durata...
}
\score{
\new Staff \with {instrumentName = "Ocarina"}
\new Voice {
\override Score.MetronomeMark.padding = 3
\tempo "Andante" 4 = 100
\time 4/4
\clef treble
\key ef \major
\bark
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/42_Battute_1.png" width=62%"></center>')
Se vogliamo inserire una o più note "in levare" (anacrusi) dobbiamo utilizzare \partial n:
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 150 mm) (* 30 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 2 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
levare = \relative c' {
\partial 4. % Durata della battuta parziale
r4 e8 | % m0 battuta parziale
a2 c8 b c4 | % m1
}
\score{
\new Staff \with {instrumentName = "Ocarina"}
\new Voice {
\override Score.MetronomeMark.padding = 3
\tempo "Andante" 4 = 100
\time 4/4
\clef treble
\key gf \major
\levare
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/43_Anacrusi.png" width=63%"></center>')
Possiamo specificare diversi tipi di stanghette sia semplici che doppie nonchè simboli di rirornello impiegando il comando \bar. Attenzione perchè questi ultimi hanno solo funzione grafica e non influiscono sull'eventuale file MIDI generato automaticamente.
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 150 mm) (* 50 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 0 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Semplice e doppie
misca = \relative c' {
f1 \bar "|" | %m1
f1 \bar "." | %m2
g1 \bar "||" | %m3
a1 \bar ".|" | %m4
b1 \bar ".." | %m5
c1 \bar "|.|" | %m6
d1 \bar "|." | %m7
e1 | %m8
}
% ------------------------------------------ Puntate e e tratteggiate
dash = \relative c' {
f1 \bar ";" | %m9
g1 \bar "!" | %m10
a1 | %m11
}
% ------------------------------------------ Ritornelli
rito = \relative c' {
f1 \bar ".|:"
g1 \bar ":..:"
a1 \bar ":|.|:"
b1 \bar ":|.:"
c1 \bar ":.|.:"
d1 \bar "[|:"
e1 \bar ":|][|:"
f1 \bar ":|]"
g1 \bar ":|."
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Zufolo"}
\new Voice {
\override Score.MetronomeMark.padding = 3
\tempo "Andante" 4 = 100
\time 4/4
\clef treble
\key c \major
\misca
\dash
\rito
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/44_Stanghette.png" width=63%"></center>')
Se vogliamo scrivere musica senza misura abbiamo due possibilità:
Se vogliamo andare a capo in un punto interno a una misura per una spaziatura ottimale di un rigo possiamo utilizzare il primo metodo specificando un'inesistente stanghetta invisivile nel punto di \break.
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 200 mm) (* 80 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 2 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Misurato
nobar = \relative c' {
c4 d e f | %m1
\bar "" % stanghetta invisibile
g a b c | %m2
\bar ""
d e f g | %m3
\bar ""
f e d c | %m4
\bar ""
b a g f | %m5
\bar ""
e d c2 | %m6
\bar "|."
}
% ------------------------------------------ Cadenza
cade = \relative c'' {
c4 d e d
\bar "||" | %m7 doppia barra
\cadenzaOn
c4 c d8[d d] f4 g4. a8 a [b g a] f16 [f] c2
\cadenzaOff
\bar "||" | %m8 doppia barra
d4 e d c | %m9
b a g f | %m10
e g c2 | %m11
g4 f e d | %m12
g f \bar "" \break % stanghetta vuota per a capo a metà misura
e d | %m13
c d e f g a b c d c b a g f e d c b a b| %m18
c1 | %m19
\bar "|."
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Flicorno"}
\new Voice {
\override Score.MetronomeMark.padding = 3
\tempo "Andante" 4 = 100
\time 4/4
\clef treble
\key c \major
\nobar
\cade
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/45_Cadenza.png" width=85%"></center>')
I numeri di battuta sono visualizzati automaticamente all'inizio di ogni rigo ad eccezione del primo ma possiamo:
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 150 mm) (* 110 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 0 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Omessi da tutta la partitura
%\layout {
% \context {
% \Score
% \omit BarNumber
% }
%}
% ------------------------------------------ Offset
offset = \relative c' {
\set Score.currentBarNumber = #50 % offset
c1 | c | c | c |
\break
c1 | c | c | c | c | c |
\bar "||"
}
% ------------------------------------------ Intervalli regolari
interv = \relative c'' {
\override Score.BarNumber.break-visibility = #end-of-line-invisible
\set Score.barNumberVisibility = #(every-nth-bar-number-visible 3)
c1 | c | c | c | c
\break
c1 | c | c | c | c
\bar "||"
}
% ------------------------------------------ Inclusi
inclu = \relative c'' {
\override Score.BarNumber.break-visibility = #end-of-line-invisible
\set Score.barNumberVisibility = #(every-nth-bar-number-visible 4)
\override Score.BarNumber.font-size = #2 % ingrandisce il font size
\override Score.BarNumber.self-alignment-X = #CENTER % Centra sulla stanghetta
%----------------------------- Box rettangolare
\override Score.BarNumber.stencil = #(make-stencil-boxer 0.1 0.25 ly:text-interface::print)
g1 | g | g | g | g
%----------------------------- Box circolare
\override Score.BarNumber.stencil = #(make-stencil-circler 0.1 0.25 ly:text-interface::print)
g1 | g | g | g | g
\bar "|."
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Zufolo"}
\new Voice {
\override Score.MetronomeMark.padding = 3
\tempo "Andante" 4 = 100
\time 4/4
\clef treble
\key c \major
\offset \break
\interv \break
\inclu
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/46_Barnum.png" width=60%"></center>')
Possiamo inserire sulle stanghette di battuta diverse tipologie di segni di chiamata (la lettera I viene saltata come da tradizione) che incrementano automaticamente:
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 150 mm) (* 35 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 0 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Segni di chiamata
mark = \relative c'' {
%----------------------------- Numeri e lettere
\set Score.markFormatter = #format-mark-numbers
c1 \mark \default
c1 \mark \default
\set Score.markFormatter = #format-mark-letters
c1 \mark \default
%----------------------------- Box rettangolare
\set Score.markFormatter = #format-mark-box-numbers
c1 \mark \default
\set Score.markFormatter = #format-mark-box-letters
c1 \mark \default
%----------------------------- Box circolare
\set Score.markFormatter = #format-mark-circle-numbers
c1 \mark \default
\set Score.markFormatter = #format-mark-circle-letters
c1
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Salterio"}
\new Voice {
\override Score.MetronomeMark.padding = 6
\tempo "Andante" 4 = 100
\time 4/4
\clef treble
\key c \major
\mark
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/47_Chiamata.png" width=63%"></center>')
Possiamo inserire sulle stanghette di battuta diverse tipologie di glifi.
Ne troviamo un elenco esaustivo a questo Link.
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 150 mm) (* 35 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 0 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
glifi = \relative c' {
c1 \mark \markup { \musicglyph "scripts.segno" }
c1 \mark \markup { \musicglyph "scripts.coda" }
c1 \mark \markup { \musicglyph "scripts.ufermata" }
c1 \bar "|."
}
\score{
\new Staff \with {instrumentName = "Zufolo"}
\new Voice {
\override Score.MetronomeMark.padding = 6
\tempo "Andante" 4 = 100
\time 4/4
\clef treble
\key c \major
\glifi
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/48_Glifi.png" width=63%"></center>')
from IPython.display import HTML
HTML('<center><img src="media/eser_7.png" width=85%"></center>')
Per approfondimenti: Indicazioni di tempo.
Come già accennato nel paragrafo sulla Formattazione possiamo specificare le indicazioni di tempo attraverso il comando \time. Osserviamo ora alcune particolarità riguardo alle suddivisioni interne alla battuta.
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 200 mm) (* 80 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 8 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Semplici
compa = \relative c' {\override Score.MetronomeMark.padding = 1
\tempo 4. = 92
\time 6/8
c4 d8 e f4 g8 a b c4. | %m1
\bar "||"
}
% ------------------------------------------ Articolazione costante
compb = \relative c' {
\tempo "" 4. = 92 % parentesi...
\time 2,2,3 7/8
c8 d e f g a b | %m2
\time 3,2,2 7/8 | %m3
c c c a a g f
\bar "||"
}
% ------------------------------------------ Articolazioni variabili
compc = \relative c' {\override Score.MetronomeMark.direction = #DOWN % Sotto il rigo...
\tempo "" 8 = 120
\time 5/8
f8 [g a] b c | %m4
f, [g] r b c | %m5
f, [g a b c] | %m6
f, [g a r c | %m7
f, g] a[ b r | %m8
f] g [a b c] | %m9
\bar "||"
}
% ------------------------------------------ Articolati
compe = \relative c' {
\compoundMeter #'((2 3 2 8))
c8 d e f g b c | %m10
c16 d e f g a b a g f e [d r c] | %m11
\bar "||"
}
compf = \relative c' {
\compoundMeter #'((1 2 3 8) (3 4))
c8 e g c e g e g c e c g | %m12
\bar "||"
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Salterio"}
\new Voice {
\compa
\compb
\compc
\compe
\compf
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/49_Composti.png" width=90%"></center>')
Per approfondimenti: Tonalità.
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 150 mm) (* 50 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 6 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Chiavi
arma = \relative c' {
\clef violin
\key a \major
c8 d e f g a b c | %m1 alterazioni indipendenti dall'armatura...
\key e \minor
c, d e fs g a b c | %m2
%----------------------------- Posizione diversa
\override Staff.KeySignature.sharp-positions = #'(2)
\key a \major
cs, d e fs gs a b cs | %m3
%----------------------------- Tutte le posizioni sul rigo
\override Staff.KeySignature.flat-positions = #'((-5 . 5))
\override Staff.KeyCancellation.flat-positions = #'((-5 . 5))
\key ef \mixolydian % \ionian, \dorian, \phrygian, \lydian, \mixolydian, \aeolian e \locrian.
c, df ef f
%----------------------------- Cambio a metà battuta
\revert Staff.KeySignature.flat-positions % Resetta la modifica precedente
\revert Staff.KeyCancellation.flat-positions % Resetta la modifica precedente
\key c \major
g a b c | %m4
\bar "|."
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Armonica"}
\new Voice {
\arma
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/50_Tradizionali.png" width=63%"></center>')
Per approfondimenti: Ritornelli.
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 200 mm) (* 30 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 6 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Semplice
sem = \relative c'' {
\repeat volta 2 { c4 d e f } | %m1
c2 d | %m2
\repeat volta 2 { d4 e f g | %m3
a g f d | %m4
} | %m5
c1
\bar "||"
}
% ------------------------------------------ Casella 1 e 2
cas = \relative c'' {
\repeat volta 2 { c4 d e f | } %m6 N.B. controlli di battuta dentro le parentesi
\alternative {
{ c2 e | } %m7
{ f2 g | } %m8
}
c1 | %m9
\bar "|."
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Piffero"}
\new Voice {
\sem
\cas
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/51_Ritornelli.png" width=83%"></center>')
Per approfondimenti: Ripetizioni.
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 220 mm) (* 50 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 6 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {tagline = ""}
% ------------------------------------------ Notazione estesa
% se vogliamo ripetere figure uguali
est = \relative c'' {
\repeat unfold 4 { c 16 d e f }
\bar "||"
}
% ------------------------------------------ Figure
rip = \relative c'' {
\repeat percent 2 { c2 } % durate uguali
\repeat percent 4 { c4 }
\repeat percent 4 { c8 d }
\bar "||"
\repeat percent 4 { c8. <d f>16 } % durate miste
\repeat percent 2 { \tuplet 3/2 { r8 c d } e4 }
\bar "||"
}
% ------------------------------------------ Battute
bur = \relative c'' {
\repeat percent 2 { c4 d e f }
\repeat percent 2 { c2 d }
\bar "|."
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Piffero"}
\new Voice {
\est
\rip
\bur
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/52_Ripetizioni.png" width=92%"></center>')
\version "2.24.1"
\language "english"
#(set! paper-alist (cons '("mio formato" . (cons (* 200 mm) (* 100 mm))) paper-alist) )
\paper {#(set-paper-size "mio formato") top-margin = 6 left-margin = 0}
\layout{#(layout-set-staff-size 20) indent = 0 short-indent = 0}
\header {title = "Tempi chiavi e tonalità"
composer = "Me Medesimo"
tagline = ""}
% ------------------------------------------ Variabili
interv = \relative c'' {
\override Score.BarNumber.break-visibility = #end-of-line-invisible
\set Score.barNumberVisibility = #(every-nth-bar-number-visible 5)
}
compb = \relative c' {\clef treble % Chiavi
\key bf \major % Tonalità
\time 2,2,3 7/8
c8 d e f g a b | %m2
\bar "||"
}
compc = \relative c' {\clef alto % Chiavi
\key a \major % Tonalità
\time 5/8
f8 [g a] b c | %m3
f, [g] r b c | %m4
f, [g a b c] | %m5
f, [g a r c | %m6
f, g] a[ b r | %m7
f] g [a b c] | %m8
\bar "||"
}
compe = \relative c' {
\compoundMeter #'((2 3 2 8))
c8 d e f g b c | %m9
\clef treble % Chiavi
\key f \major % Tonalità
c16 d e f g a b a g f e [d r c] | %m10
\bar "||"
}
compf = \relative c' {
\compoundMeter #'((1 2 3 8) (3 4))
c8 e g c e g e g c e c g | %m11
\bar "||"
}
% ------------------------------------------ Partitura
\score{
\new Staff \with {instrumentName = "Violino"}
\new Voice {\override Score.MetronomeMark.padding = 3
\tempo "Andante" 4 = 100 % Tempi
\interv
\compb
\compc
\compe
\compf
}
}
from IPython.display import HTML
HTML('<center><img src="esempi/53_Pit_stop_7.png" width=85%"></center>')
from IPython.display import HTML
HTML('<center><img src="media/eser_81.png" width=70%"></center>')
from IPython.display import HTML
HTML('<center><img src="media/eser_82.png" width=80%"></center>')
from IPython.display import HTML
HTML('<center><img src="media/eser_83.png" width=90%"></center>')
In quest'ultima sezione ho inserito solamente link tematici che rimandano ai manuali ufficiali in modo che ognuno possa ricercare autonomamente gli argomenti di proprio interesse.