[Inizio][Contenuti] |
LilyPond — Frammenti
Questo documento contiene una selezione di frammenti LilyPond tratti dal LilyPond Snippet Repository (LSR). I frammenti sono nel pubblico dominio. Desideriamo ringraziare Sebastiano Vigna per la gestione del sito web e del database dell’LSR, e l’università di Milano per l’hosting. Questo documento non è un sottoinsieme esatto dell’LSR: alcuni frammenti
vengono dalla directory ‘input/new’ dei sorgenti di LilyPond; i
frammenti tratti dall’LSR vengono convertiti con I frammenti sono raggruppati per categorie; le categorie elencate nell’indice corrispondono a una sezione del manuale di notazione di LilyPond. Un frammento potrebbe avere più di una categoria, e non tutte le categorie dell’LSR saranno presenti in questo documento. Nella versione HTML di questo manuale, si può fare clic sul nome del file o sull’immagine di ciascun esempio per vedere il corrispondente file di input. |
Notazione musicale | ||
---|---|---|
Pitches | Altezze | |
Rhythms | Ritmi | |
Expressive marks | Segni di espressione | |
Repeats | Ripetizioni | |
Simultaneous notes | Note simultanee | |
Staff notation | Notazione del rigo | |
Editorial annotations | Note editoriali | |
Text | Testo | |
Notazione specialistica | ||
Vocal music | Musica vocale | |
Chords | Accordi | |
Keyboards | Tastiere | |
Percussion | Percussioni | |
Fretted strings | Strumenti a corde con tasti | |
Unfretted strings | Strumenti a corde senza tasti | |
Winds | Strumenti aerofoni | |
Ancient notation | Notazione antica | |
World music | ||
Altre raccolte | ||
Contexts and engravers | Contesti e incisori | |
Tweaks and overrides | Modifiche e sovrascritture | |
Paper and layout | Foglio e formattazione | |
Titles | Titoli | |
Spacing | Spaziatura | |
MIDI | ||
Templates | Modelli |
Questo manuale è disponibile in altri formati ed è integrato col resto della documentazione. Maggiori informazioni in Manuali. La documentazione completa si trova all’indirizzo https://lilypond.org/. |
[ << Top ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < Top ] | [ Su : Top ] | [ > ] |
Pitches
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < Pitches ] | [ Su : Pitches ] | [ > ] |
Un ambitus per voce
L’ambitus può essere specificato per voce. In tal caso occorre spostarlo manualmente per evitare collisioni.
\new Staff << \new Voice \with { \consists "Ambitus_engraver" } \relative c'' { \override Ambitus.X-offset = #2.0 \voiceOne c4 a d e f1 } \new Voice \with { \consists "Ambitus_engraver" } \relative c' { \voiceTwo es4 f g as b1 } >>
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Aggiungere un segno di ottava a una sola voce
Se il rigo ha più di una voce, l’ottavazione in una voce trasporrà
la posizione delle note in tutte le voci per la durata della parentesi
dell’ottava. Se si intende applicare l’ottavazione a una sola voce,
occorre spostare l’incisore Ottava_spanner_engraver
nel
contesto Voice
.
\layout { \context { \Staff \remove Ottava_spanner_engraver } \context { \Voice \consists Ottava_spanner_engraver } } { \clef bass << { <g d'>1~ q2 <c' e'> } \\ { r2. \ottava -1 <b,,, b,,>4 ~ | q2 \ottava 0 <c e>2 } >> }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Teste di nota Aiken variante sottile
Le teste di nota Aiken bianche sono più difficili da leggere a dimensioni del rigo più piccole, specialmente coi tagli addizionali. Perdendo lo spazio bianco interno le fa apparire come note di un quarto.
\score { { \aikenHeads c''2 a' c' a % Switch to thin-variant noteheads \set shapeNoteStyles = ##(doThin reThin miThin faThin sol laThin tiThin) c'' a' c' a } }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Altering the length of beamed stems
Stem lengths on beamed notes can be varied by overriding the
beamed-lengths
property of the details
of the
Stem
. If a single value is used as an argument, the length
applies to all stems. When multiple arguments are used, the first
applies to eighth notes, the second to sixteenth notes and so on. The
final argument also applies to all notes shorter than the note length
of the final argument. Non-integer arguments may also be used.
\relative c'' { \override Stem.details.beamed-lengths = #'(2) a8[ a] a16[ a] a32[ a] \override Stem.details.beamed-lengths = #'(8 10 12) a8[ a] a16[ a] a32[ a] r8 \override Stem.details.beamed-lengths = #'(8) a8[ a] \override Stem.details.beamed-lengths = #'(8.5) a8[ a] \revert Stem.details.beamed-lengths a8[ a] a16[ a] a32[ a] r16 }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Ambitus
Ambitus indicate pitch ranges for voices.
Accidentals only show up if they are not part of the key
signature. AmbitusNoteHead
grobs also have ledger lines.
\layout { \context { \Voice \consists "Ambitus_engraver" } } << \new Staff { \relative c' { \time 2/4 c4 f' } } \new Staff { \relative c' { \time 2/4 \key d \major cis4 as' } } >>
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Ambitus dopo armatura di chiave
Per impostazione predefinita, gli ambitus sono posizionati a sinistra della chiave. La
funzione \ambitusAfter
permette di cambiare questo posizionamento.
La sintassi è \ambitusAfter grob-interface
(vedi
Graphical Object Interfaces per un elenco dei possibili valori per
grob-interface
.)
Un caso d’uso comune è il posizionamento dell’ambitus tra l’armatura di chiave e l’indicazione di tempo.
\new Staff \with { \consists Ambitus_engraver } \relative { \ambitusAfter key-signature \key d \major es'8 g bes cis d2 }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Ambitus su più voci
Se si aggiunge l’incisore Ambitus_engraver
al contesto Staff
viene
creato un solo ambitus per il rigo, anche nel caso di righi che hanno più
voci.
\new Staff \with { \consists "Ambitus_engraver" } << \new Voice \relative c'' { \voiceOne c4 a d e f1 } \new Voice \relative c' { \voiceTwo es4 f g as b1 } >>
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Applicazione degli stili delle teste di nota in base al grado della scala
La proprietà shapeNoteStyles
può essere usata per definire vari
stili di teste di nota per ogni grado della scala (definita dall’armatura
di chiave o dalla proprietà tonic
). Questa proprietà richiede un
insieme di simboli, che può essere puramente arbitrario (sono permesse
espressioni geometriche come triangle
, cross
e xcircle
)
o basato sull’antica tradizione tipografica americana (sono consentiti
anche alcuni nomi di nota latini).
Detto questo, per imitare gli antichi canzionieri americani, ci sono vari
stili predefiniti disponibili attraverso dei comodi comandi come
\aikenHeads
o \sacredHarpHeads
.
Questo esempio mostra modi diversi di ottenere teste di nota di varie forme e illustra la possibilità di trasporre una melodia senza perdere la corrispondenza tra le funzioni armoniche e gli stili delle teste.
fragment = { \key c \major c2 d e2 f g2 a b2 c } \new Staff { \transpose c d \relative c' { \set shapeNoteStyles = ##(do re mi fa #f la ti) \fragment } \break \relative c' { \set shapeNoteStyles = ##(cross triangle fa #f mensural xcircle diamond) \fragment } }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Cambiare automaticamente la direzione del gambo della nota centrale in base alla melodia
LilyPond può modificare la direzione del gambo della nota centrale di un
rigo in modo che segua la melodia: occorre aggiungere l’incisore
Melody_engraver
al contesto Voice
.
La proprietà di contesto suspendMelodyDecisions
può essere usata
per disattivare questo comportamento localmente.
\relative c'' { \time 3/4 a8 b g f b g | \set suspendMelodyDecisions = ##t a b g f b g | \unset suspendMelodyDecisions c b d c b c | } \layout { \context { \Voice \consists "Melody_engraver" \autoBeamOff } }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Changing ottava text
Internally, \ottava
sets the properties ottavation
(for
example, to 8va
or 8vb
) and middleCPosition
. To
override the text of the bracket, set ottavation
after invoking
\ottava
.
Short text is especially useful when a brief ottava is used.
{ c'2 \ottava #1 \set Staff.ottavation = #"8" c''2 \ottava #0 c'1 \ottava #1 \set Staff.ottavation = #"Text" c''1 }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Modifica dell’intervallo dell’ambitus
È possibile cambiare le impostazioni predefinite dell’intervallo tra le teste di nota dell’ambitus e la linea che le collega.
\layout { \context { \Voice \consists "Ambitus_engraver" } } \new Staff { \time 2/4 % Default setting c'4 g'' } \new Staff { \time 2/4 \override AmbitusLine.gap = #0 c'4 g'' } \new Staff { \time 2/4 \override AmbitusLine.gap = #1 c'4 g'' } \new Staff { \time 2/4 \override AmbitusLine.gap = #1.5 c'4 g'' }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Changing the interval of lines on the stave
staffLineLayoutFunction
is used to change the position of notes.
This snippet shows setting its value to ly:pitch-semitones
in
order to produce a chromatic scale with the distance between each space
and line of the stave equal to one semitone.
scale = \relative c' { a4 ais b c cis4 d dis e f4 fis g gis a1 } \new Staff \with { \remove "Accidental_engraver" staffLineLayoutFunction = #ly:pitch-semitones } { << \scale \context NoteNames { \set printOctaveNames = ##f \scale } >> }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Clefs can be transposed by arbitrary amounts
Clefs can be transposed by arbitrary amounts, not just by octaves.
\relative c' { \clef treble c4 c c c \clef "treble_8" c4 c c c \clef "treble_5" c4 c c c \clef "treble^3" c4 c c c }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Coloring notes depending on their pitch
It is possible to color note heads depending on their pitch and/or their names: the function used in this example even makes it possible to distinguish enharmonics.
%Association list of pitches to colors. #(define color-mapping (list (cons (ly:make-pitch 0 0 NATURAL) (x11-color 'red)) (cons (ly:make-pitch 0 0 SHARP) (x11-color 'green)) (cons (ly:make-pitch 0 1 FLAT) (x11-color 'green)) (cons (ly:make-pitch 0 2 NATURAL) (x11-color 'red)) (cons (ly:make-pitch 0 2 SHARP) (x11-color 'green)) (cons (ly:make-pitch 0 3 FLAT) (x11-color 'red)) (cons (ly:make-pitch 0 3 NATURAL) (x11-color 'green)) (cons (ly:make-pitch 0 4 SHARP) (x11-color 'red)) (cons (ly:make-pitch 0 5 NATURAL) (x11-color 'green)) (cons (ly:make-pitch 0 5 FLAT) (x11-color 'red)) (cons (ly:make-pitch 0 6 SHARP) (x11-color 'red)) (cons (ly:make-pitch 0 1 NATURAL) (x11-color 'blue)) (cons (ly:make-pitch 0 3 SHARP) (x11-color 'blue)) (cons (ly:make-pitch 0 4 FLAT) (x11-color 'blue)) (cons (ly:make-pitch 0 5 SHARP) (x11-color 'blue)) (cons (ly:make-pitch 0 6 FLAT) (x11-color 'blue)))) %Compare pitch and alteration (not octave). #(define (pitch-equals? p1 p2) (and (= (ly:pitch-alteration p1) (ly:pitch-alteration p2)) (= (ly:pitch-notename p1) (ly:pitch-notename p2)))) #(define (pitch-to-color pitch) (let ((color (assoc pitch color-mapping pitch-equals?))) (if color (cdr color)))) #(define (color-notehead grob) (pitch-to-color (ly:event-property (event-cause grob) 'pitch))) \score { \new Staff \relative c' { \override NoteHead.color = #color-notehead c8 b d dis ees f g aes } }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Creating a sequence of notes on various pitches
In music that contains many occurrences of the same sequence of notes at different pitches, the following music function may prove useful. It takes a note, of which only the pitch is used.
This example creates the rhythm used throughout Mars, from Gustav Holst’s The Planets.
rhythm = #(define-music-function (p) (ly:pitch?) "Make the rhythm in Mars (the Planets) at the given pitch" #{ \tuplet 3/2 { $p 8 8 8 } 4 4 8 8 4 #}) \new Staff { \time 5/4 \rhythm c' \rhythm c'' \rhythm g }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Creating custom key signatures
LilyPond supports custom key signatures. In this example, print for D minor with an extended range of printed flats.
\new Staff \with { \override StaffSymbol.line-count = #8 \override KeySignature.flat-positions = #'((-7 . 6)) \override KeyCancellation.flat-positions = #'((-7 . 6)) % presumably sharps are also printed in both octaves \override KeySignature.sharp-positions = #'((-6 . 7)) \override KeyCancellation.sharp-positions = #'((-6 . 7)) \override Clef.stencil = # (lambda (grob)(grob-interpret-markup grob #{ \markup\combine \musicglyph "clefs.C" \translate #'(-3 . -2) \musicglyph "clefs.F" #})) clefPosition = #3 middleCPosition = #3 middleCClefPosition = #3 } { \key d\minor f bes, f bes, }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Direction of merged ’fa’ shape note heads
Using property NoteCollision.fa-merge-direction
, the
direction of ‘fa’ shape note heads (‘fa’, ‘faThin’, etc.)
can be controlled independently of the stem direction if two
voices with the same pitch and different stem directions are
merged. If this property is not set, the ‘down’ glyph variant
is used.
{ \clef bass << { \aikenHeads f2 \override Staff.NoteCollision.fa-merge-direction = #UP f2 } \\ { \aikenHeads f2 f2 } >> }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Force a cancellation natural before accidentals
The following example shows how to force a natural sign before an accidental.
\relative c' { \key es \major bes c des \tweak Accidental.restore-first ##t eis }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Forcing a clef symbol to be displayed
When a clef sign has already been displayed and it has not been changed
to a different clef, then repeating the \clef
command will be
ignored by LilyPond, since it is not a change of clef. It is possible
to force the clef to be redisplayed using the command
\set Staff.forceClef = ##t
.
\relative c' { \clef treble c1 \clef treble c1 \set Staff.forceClef = ##t c1 \clef treble c1 }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Generating random notes
This Scheme-based snippet generates 24 random notes (or as many as required), based on the current time (or any randomish number specified instead, in order to obtain the same random notes each time): i.e., to get different random note patterns, just change this number.
\score { { $(let ((random-state (seed->random-state (current-time)))) (make-sequential-music (map (lambda (x) (let ((idx (random 12 random-state))) (make-event-chord (list (make-music 'NoteEvent 'duration (ly:make-duration 2 0 1/1) 'pitch (ly:make-pitch (quotient idx 7) (remainder idx 7) 0)))))) (make-list 24)))) } }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Nascondere le alterazioni delle note con legatura di valore
all’inizio di un nuovo sistema
Questo frammento mostra come nascondere le alterazioni delle note unite alla figura precedente mediante una legatura di valore all’inizio di un nuovo sistema
\relative c'' { \override Accidental.hide-tied-accidental-after-break = ##t cis1~ cis~ \break cis }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Keep change clefs full sized
When a clef is changed, the clef sign displayed is smaller than the
initial clef. This can be overridden with full-size-change
.
\relative c' { \clef "treble" c1 \clef "bass" c1 \clef "treble" c1 \override Staff.Clef.full-size-change = ##t \clef "bass" c1 \clef "treble" c1 \revert Staff.Clef.full-size-change \clef "bass" c1 \clef "treble" c1 }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Esempio di makam
Makam è un tipo di melodia proveniente dalla Turchia che usa alterazioni microtonali di 1/9. Consultare il file di inizializzazione ‘ly/makam.ly’ per vedere come sono definiti i nomi delle altezze e le alterazioni.
% Initialize makam settings \include "makam.ly" \relative c' { \set Staff.keyAlterations = #`((6 . ,(- KOMA)) (3 . ,BAKIYE)) c4 cc db fk gbm4 gfc gfb efk fk4 db cc c }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Modificare l’inclinazione dell’estensore dell’ottava
È possibile cambiare l’inclinazione dell’estensore dell’ottava.
\relative c'' { \override Staff.OttavaBracket.stencil = #ly:line-spanner::print \override Staff.OttavaBracket.bound-details = #`((left . ((Y . 0) (attach-dir . ,LEFT) (padding . 0) (stencil-align-dir-y . ,CENTER))) (right . ((Y . 5.0) ; Change the number here (padding . 0) (attach-dir . ,RIGHT) (text . ,(make-draw-dashed-line-markup (cons 0 -1.2)))))) \override Staff.OttavaBracket.left-bound-info = #ly:horizontal-line-spanner::calc-left-bound-info-and-text \override Staff.OttavaBracket.right-bound-info = #ly:horizontal-line-spanner::calc-right-bound-info \ottava #1 c1 c'''1 }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Armature di chiave non tradizionali
Il comando \key
comunemente usato imposta la proprietà
keyAlterations
del contesto Staff
.
Per creare armature di chiave non standard, tale proprietà va
impostata esplicitamente.
Il formato di questo comando è una lista:
\set Staff.keyAlterations = #`(((ottava . grado) . alterazione) ((ottava
. grado) . alterazione) ...)
dove, per ogni elemento della lista, ottava
indica l’ottava (0 è
l’ottava dal Do centrale al Si precedente), grado
indica la nota
all’interno dell’ottava (0 significa Do e 6 significa Si) e alterazione
può essere ,SHARP ,FLAT ,DOUBLE-SHARP
etc.
Altrimenti, usando il formato breve per ogni elemento della lista,
(grado . alterazione)
, ciò indica che la stessa alterazione deve
essere presente in tutte le ottave. Per le scale microtonalidove un
“diesis” non è 100 centesimi, alterazione
si riferisce alla
proporzione di un duecentesimo di tono intero.
\include "arabic.ly" \relative do' { \set Staff.keyAlterations = #`((0 . ,SEMI-FLAT) (1 . ,SEMI-FLAT) (2 . ,FLAT) (5 . ,FLAT) (6 . ,SEMI-FLAT)) %\set Staff.extraNatural = ##f re reb \dwn reb resd dod dob dosd \dwn dob | dobsb dodsd do do | }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Numeri dentro le teste di nota
Le teste di nota con nome della nota usano la proprietà note-names
dell’oggetto NoteHead
per determinare cosa appaia
all’interno della testa. È possibile sovrascrivere questa proprietà
e mostrare numeri corrispondenti ai gradi della scala.
Si può creare un semplice incisore che faccia questo per ogni oggetto testa di nota che incontra.
#(define Ez_numbers_engraver (make-engraver (acknowledgers ((note-head-interface engraver grob source-engraver) (let* ((context (ly:translator-context engraver)) (tonic-pitch (ly:context-property context 'tonic)) (tonic-name (ly:pitch-notename tonic-pitch)) (grob-pitch (ly:event-property (event-cause grob) 'pitch)) (grob-name (ly:pitch-notename grob-pitch)) (delta (modulo (- grob-name tonic-name) 7)) (note-names (make-vector 7 (number->string (1+ delta))))) (ly:grob-set-property! grob 'note-names note-names)))))) #(set-global-staff-size 26) \layout { ragged-right = ##t \context { \Voice \consists \Ez_numbers_engraver } } \relative c' { \easyHeadsOn c4 d e f g4 a b c \break \key a \major a,4 b cis d e4 fis gis a \break \key d \dorian d,4 e f g a4 b c d }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Modello per orchestra, coro e pianoforte
Questo modello mostra come usare i contesti annidati StaffGroup
e
GrandStaff
per creare sottogruppi degli strumenti dello stesso
tipo. Mostra anche come usare \transpose
in modo che le variabili
mantengano la musica per gli strumenti traspositori nell’intonazione reale.
#(set-global-staff-size 17) \paper { indent = 3.0\cm % add space for instrumentName short-indent = 1.5\cm % add less space for shortInstrumentName } fluteMusic = \relative c' { \key g \major g'1 b } % Pitches as written on a manuscript for Clarinet in A % are transposed to concert pitch. clarinetMusic = \transpose c' a \relative c'' { \key bes \major bes1 d } trumpetMusic = \relative c { \key g \major g''1 b } % Key signature is often omitted for horns hornMusic = \transpose c' f \relative c { d'1 fis } percussionMusic = \relative c { \key g \major g1 b } sopranoMusic = \relative c'' { \key g \major g'1 b } sopranoLyrics = \lyricmode { Lyr -- ics } altoIMusic = \relative c' { \key g \major g'1 b } altoIIMusic = \relative c' { \key g \major g'1 b } altoILyrics = \sopranoLyrics altoIILyrics = \lyricmode { Ah -- ah } tenorMusic = \relative c' { \clef "treble_8" \key g \major g1 b } tenorLyrics = \sopranoLyrics pianoRHMusic = \relative c { \key g \major g''1 b } pianoLHMusic = \relative c { \clef bass \key g \major g1 b } violinIMusic = \relative c' { \key g \major g'1 b } violinIIMusic = \relative c' { \key g \major g'1 b } violaMusic = \relative c { \clef alto \key g \major g'1 b } celloMusic = \relative c { \clef bass \key g \major g1 b } bassMusic = \relative c { \clef "bass_8" \key g \major g,1 b } \score { << \new StaffGroup = "StaffGroup_woodwinds" << \new Staff = "Staff_flute" \with { instrumentName = "Flute" } \fluteMusic \new Staff = "Staff_clarinet" \with { instrumentName = \markup { \concat { "Clarinet in B" \flat } } } % Declare that written Middle C in the music % to follow sounds a concert B flat, for % output using sounded pitches such as MIDI. %\transposition bes % Print music for a B-flat clarinet \transpose bes c' \clarinetMusic >> \new StaffGroup = "StaffGroup_brass" << \new Staff = "Staff_hornI" \with { instrumentName = "Horn in F" } % \transposition f \transpose f c' \hornMusic \new Staff = "Staff_trumpet" \with { instrumentName = "Trumpet in C" } \trumpetMusic >> \new RhythmicStaff = "RhythmicStaff_percussion" \with { instrumentName = "Percussion" } << \percussionMusic >> \new PianoStaff \with { instrumentName = "Piano" } << \new Staff { \pianoRHMusic } \new Staff { \pianoLHMusic } >> \new ChoirStaff = "ChoirStaff_choir" << \new Staff = "Staff_soprano" \with { instrumentName = "Soprano" } \new Voice = "soprano" \sopranoMusic \new Lyrics \lyricsto "soprano" { \sopranoLyrics } \new GrandStaff = "GrandStaff_altos" \with { \accepts Lyrics } << \new Staff = "Staff_altoI" \with { instrumentName = "Alto I" } \new Voice = "altoI" \altoIMusic \new Lyrics \lyricsto "altoI" { \altoILyrics } \new Staff = "Staff_altoII" \with { instrumentName = "Alto II" } \new Voice = "altoII" \altoIIMusic \new Lyrics \lyricsto "altoII" { \altoIILyrics } >> \new Staff = "Staff_tenor" \with { instrumentName = "Tenor" } \new Voice = "tenor" \tenorMusic \new Lyrics \lyricsto "tenor" { \tenorLyrics } >> \new StaffGroup = "StaffGroup_strings" << \new GrandStaff = "GrandStaff_violins" << \new Staff = "Staff_violinI" \with { instrumentName = "Violin I" } \violinIMusic \new Staff = "Staff_violinII" \with { instrumentName = "Violin II" } \violinIIMusic >> \new Staff = "Staff_viola" \with { instrumentName = "Viola" } \violaMusic \new Staff = "Staff_cello" \with { instrumentName = "Cello" } \celloMusic \new Staff = "Staff_bass" \with { instrumentName = "Double Bass" } \bassMusic >> >> \layout { } }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Impedire l’inserimento automatico dei bequadri supplementari
Secondo le norme tipografiche tradizionali, un segno di bequadro viene
inserito prima di un diesis o di un bemolle se un precedente doppio diesis o
bemolle sulla stessa nota è cancellato. Per cambiare questo comportamento
e seguire la pratica contemporanea, si imposta la proprietà extraNatural
su f
(falso) nel contesto Staff
.
\relative c'' { aeses4 aes ais a \set Staff.extraNatural = ##f aeses4 aes ais a }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Impedire l’inserimento dei segni di bequadro quando cambia l’armatura di chiave
Quando l’armatura di chiave cambia, vengono inseriti automaticamente i
segni di bequadro per annulare le alterazioni di precedenti armature. Si
può evitare questo comportamento impostando su f
(falso) la proprietà
printKeyCancellation
nel contesto Staff
.
\relative c' { \key d \major a4 b cis d \key g \minor a4 bes c d \set Staff.printKeyCancellation = ##f \key d \major a4 b cis d \key g \minor a4 bes c d }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Quoting another voice with transposition
Quotations take into account the transposition of both source and
target. In this example, all instruments play sounding middle C; the
target is an instrument in F. The target part may be transposed using
\transpose
. In this case, all the pitches (including the
quoted ones) are transposed.
\addQuote clarinet { \transposition bes \repeat unfold 8 { d'16 d' d'8 } } \addQuote sax { \transposition es' \repeat unfold 16 { a8 } } quoteTest = { % french horn \transposition f g'4 << \quoteDuring "clarinet" { \skip 4 } s4^"clar." >> << \quoteDuring "sax" { \skip 4 } s4^"sax." >> g'4 } { \new Staff \with { instrumentName = \markup { \column { Horn "in F" } } } \quoteTest \transpose c' d' << \quoteTest s4_"up a tone" >> }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Separating key cancellations from key signature changes
By default, the accidentals used for key cancellations are placed
adjacent to those for key signature changes. This behavior can be
changed by overriding the 'break-align-orders
property of the
BreakAlignment
grob.
The value of 'break-align-orders
is a vector of length 3, with
quoted lists of breakable items as elements. This example only
modifies the second list, moving key-cancellation
before
staff-bar
; by modifying the second list, break alignment
behavior only changes in the middle of a system, not at the beginning
or the end.
\new Staff { \override Score.BreakAlignment.break-align-orders = ##((left-edge ambitus breathing-sign clef staff-bar key-cancellation key-signature time-signature custos) (left-edge ambitus breathing-sign clef key-cancellation staff-bar key-signature time-signature custos) (left-edge ambitus breathing-sign clef key-cancellation key-signature staff-bar time-signature custos)) \key des \major c'1 \bar "||" \key bes \major c'1 }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Trasposizione delle altezze con numero minimo di alterazioni
Questo esempio usa del codice Scheme per imporre delle modifiche enarmoniche alle note che permettano di avere il numero minimo di alterazioni. In questo caso si applica la seguente regola:
Le doppie alterazioni devono essere eliminate
Si diesis -> Do
Mi diesis -> Fa
Do bemolle -> Si
Fa bemolle -> Mi
In questo modo vengono scelti i suoni enarmonici più semplici.
#(define (naturalize-pitch p) (let ((o (ly:pitch-octave p)) (a (* 4 (ly:pitch-alteration p))) ;; alteration, a, in quarter tone steps, ;; for historical reasons (n (ly:pitch-notename p))) (cond ((and (> a 1) (or (eqv? n 6) (eqv? n 2))) (set! a (- a 2)) (set! n (+ n 1))) ((and (< a -1) (or (eqv? n 0) (eqv? n 3))) (set! a (+ a 2)) (set! n (- n 1)))) (cond ((> a 2) (set! a (- a 4)) (set! n (+ n 1))) ((< a -2) (set! a (+ a 4)) (set! n (- n 1)))) (if (< n 0) (begin (set! o (- o 1)) (set! n (+ n 7)))) (if (> n 6) (begin (set! o (+ o 1)) (set! n (- n 7)))) (ly:make-pitch o n (/ a 4)))) #(define (naturalize music) (let ((es (ly:music-property music 'elements)) (e (ly:music-property music 'element)) (p (ly:music-property music 'pitch))) (if (pair? es) (ly:music-set-property! music 'elements (map naturalize es))) (if (ly:music? e) (ly:music-set-property! music 'element (naturalize e))) (if (ly:pitch? p) (begin (set! p (naturalize-pitch p)) (ly:music-set-property! music 'pitch p))) music)) naturalizeMusic = #(define-music-function (m) (ly:music?) (naturalize m)) music = \relative c' { c4 d e g } \score { \new Staff { \transpose c ais { \music } \naturalizeMusic \transpose c ais { \music } \transpose c deses { \music } \naturalizeMusic \transpose c deses { \music } } \layout { } }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Turkish Makam example
This template uses the start of a well-known Turkish Saz Semai that is familiar in the repertoire in order to illustrate some of the elements of Turkish music notation.
\paper { tagline = ##f } % Initialize makam settings \include "turkish-makam.ly" \header { title = "Hüseyni Saz Semaisi" composer = "Lavtacı Andon" } \relative { \set Staff.extraNatural = ##f \set Staff.autoBeaming = ##f \key a \huseyni \time 10/8 a'4 g'16 [fb] e8. [d16] d [c d e] c [d c8] bfc | a16 [bfc a8] bfc c16 [d c8] d16 [e d8] e4 fb8 | d4 a'8 a16 [g fb e] fb8 [g] a8. [b16] a16 [g] | g4 g16 [fb] fb8. [e16] e [g fb e] e4 r8 | }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ > ] |
Modifiche manuali della proprietà della chiave
Cambiando il glifo della chiave, la sua posizione o l’ottavazione non
cambia la posizione delle note successive nel rigo. Per far sì che
le armature di chiave si trovino sulle linee del rigo corrette, bisogna
specificare anche middleCPosition
, con valori positivi o negativi
che spostano il Do centrale
rispettivamente su o giù in senso
relativo alla linea centrale del rigo.
Per esempio, \clef "treble_8"
equivale a impostare
clefGlyph
, clefPosition
(che regola la posizione
verticale della chiave), middleCPosition
e
clefTransposition
. Viene stampata una chiave quando cambia una
di queste proprietà, eccetto middleCPosition
.
Gli esempi seguenti mostrano le possibilità date dall’impostazione manuale di tali proprietà. Sulla prima linea le modifiche manuali preservano il posizionamento relativo standard di chiavi e note, mentre sulla seconda linea non lo fanno.
{ % The default treble clef \key f \major c'1 % The standard bass clef \set Staff.clefGlyph = #"clefs.F" \set Staff.clefPosition = #2 \set Staff.middleCPosition = #6 \set Staff.middleCClefPosition = #6 \key g \major c'1 % The baritone clef \set Staff.clefGlyph = #"clefs.C" \set Staff.clefPosition = #4 \set Staff.middleCPosition = #4 \set Staff.middleCClefPosition = #4 \key f \major c'1 % The standard choral tenor clef \set Staff.clefGlyph = #"clefs.G" \set Staff.clefPosition = #-2 \set Staff.clefTransposition = #-7 \set Staff.middleCPosition = #1 \set Staff.middleCClefPosition = #1 \key f \major c'1 % A non-standard clef \set Staff.clefPosition = #0 \set Staff.clefTransposition = #0 \set Staff.middleCPosition = #-4 \set Staff.middleCClefPosition = #-4 \key g \major c'1 \break % The following clef changes do not preserve % the normal relationship between notes, key signatures % and clefs: \set Staff.clefGlyph = #"clefs.F" \set Staff.clefPosition = #2 c'1 \set Staff.clefGlyph = #"clefs.G" c'1 \set Staff.clefGlyph = #"clefs.C" c'1 \set Staff.clefTransposition = #7 c'1 \set Staff.clefTransposition = #0 \set Staff.clefPosition = #0 c'1 % Return to the normal clef: \set Staff.middleCPosition = #0 c'1 }
[ << Pitches ] | [Inizio][Contenuti] | [ Rhythms >> ] |
[ < ] | [ Su : Pitches ] | [ Rhythms > ] |
Using autochange with more than one voice
Using autochange
with more than one voice.
\score { \new PianoStaff << \new Staff = "up" { << \set Timing.beamExceptions = #'() \set Timing.beatStructure = #'(4) \new Voice { \voiceOne \autoChange \relative c' { g8 a b c d e f g g,8 a b c d e f g } } \new Voice { \voiceTwo \autoChange \relative c' { g8 a b c d e f g g,,8 a b c d e f g } } >> } \new Staff = "down" { \clef bass } >> }
[ << Pitches ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Top ] | [ > ] |
Rhythms
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < Rhythms ] | [ Su : Rhythms ] | [ > ] |
Adding beams, slurs, ties etc. when using tuplet and non-tuplet rhythms
LilyPond syntax can involve many unusual placements for parentheses, brackets etc., which might sometimes have to be interleaved.
For example, when entering a manual beam, the left square bracket has to be placed after the starting note and its duration, not before. Similarly, the right square bracket should directly follow the note which is to be at the end of the requested beaming, even if this note happens to be inside a tuplet section.
This snippet demonstrates how to combine manual beaming, manual slurs, ties and phrasing slurs with tuplet sections (enclosed within curly braces).
{ r16[ g16 \tuplet 3/2 { r16 e'8] } g16( a \tuplet 3/2 { b d e') } g8[( a \tuplet 3/2 { b d') e'] ~ } \time 2/4 \tuplet 5/4 { e'32\( a b d' e' } a'4.\) }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Adding drum parts
Using the powerful pre-configured tools such as the \drummode
function and the DrumStaff
context, inputting drum parts is
quite easy: drums are placed at their own staff positions (with a
special clef symbol) and have note heads according to the drum.
Attaching an extra symbol to the drum or restricting the number of
lines is possible.
drh = \drummode { cymc4.^"crash" hhc16^"h.h." hh hhc8 hho hhc8 hh16 hh hhc4 r4 r2 } drl = \drummode { bd4 sn8 bd bd4 << bd ss >> bd8 tommh tommh bd toml toml bd tomfh16 tomfh } timb = \drummode { timh4 ssh timl8 ssh r timh r4 ssh8 timl r4 cb8 cb } \score { << \new DrumStaff \with { instrumentName = "timbales" drumStyleTable = #timbales-style \override StaffSymbol.line-count = #2 \override BarLine.bar-extent = #'(-1 . 1) } << \timb >> \new DrumStaff \with { instrumentName = "drums" } << \new DrumVoice { \stemUp \drh } \new DrumVoice { \stemDown \drl } >> >> \layout { } \midi { \tempo 4 = 120 } }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Adjusting grace note spacing
The space given to grace notes can be adjusted using the
spacing-increment
property of Score.GraceSpacing
.
graceNotes = { \grace { c4 c8 c16 c32 } c8 } \relative c'' { c8 \graceNotes \override Score.GraceSpacing.spacing-increment = #2.0 \graceNotes \revert Score.GraceSpacing.spacing-increment \graceNotes }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Allineare i numeri di battuta
Per impostazione predefinita i numeri di battuta sono allineati a destra rispetto al loro oggetto genitore. Di solito si tratta del margine sinistro della linea oppure, se i numeri appaiono all’interno della linea, del lato sinistro della stanghetta. I numeri possono essere posizionati anche direttamente sopra la stanghetta oppure allineati a sinistra della stanghetta.
\relative c' { \set Score.currentBarNumber = #111 \override Score.BarNumber.break-visibility = #all-visible % Increase the size of the bar number by 2 \override Score.BarNumber.font-size = #2 % Print a bar number every second measure \set Score.barNumberVisibility = #(every-nth-bar-number-visible 2) c1 | c1 % Center-align bar numbers \override Score.BarNumber.self-alignment-X = #CENTER c1 | c1 % Left-align bar numbers \override Score.BarNumber.self-alignment-X = #LEFT c1 | c1 }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Note brevi alternative
Le note brevi sono disponibili anche con due linee verticali su ciascun lato della testa invece di una sola e in stile barocco.
\relative c'' { \time 4/2 c\breve | \override Staff.NoteHead.style = #'altdefault b\breve \override Staff.NoteHead.style = #'baroque b\breve \revert Staff.NoteHead.style a\breve }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Appoggiatura or grace note before a bar line
By default, appoggiaturas and grace notes that occur on the first beat of a measure are printed after the bar line. They can however be printed before, simply by adding an invisible BarLine and then the visible one, as demonstrated here.
{ R1 %% default \appoggiatura d''8 c''4 r2. %% cheated \appoggiatura { \bar "" d''8 \bar "|" } c''4 r2. }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Automatic beam subdivisions
Beams can be subdivided automatically. By setting the property
subdivideBeams
, beams are subdivided at beat positions (as
specified in baseMoment
).
\new Staff { \relative c'' { << { \voiceOne \set subdivideBeams = ##t b32[ a g f c' b a g b32^"subdivide beams" a g f c' b a g] } \new Voice { \voiceTwo b32_"default"[ a g f c' b a g b32 a g f c' b a g] } >> \oneVoice \set baseMoment = #(ly:make-moment 1/8) \set beatStructure = 2,2,2,2 b32^"baseMoment 1 8"[ a g f c' b a g] \set baseMoment = #(ly:make-moment 1/16) \set beatStructure = 4,4,4,4 b32^"baseMoment 1 16"[ a g f c' b a g] } }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Automatically change durations
shiftDurations
can be used to change the note lengths of a piece
of music.
It takes two arguments - the scaling factor as a power of two, and the number of dots to be added as a positive integer.
\paper { indent = 0 } music = \relative c'' { a1 b2 c4 d8 r } \score { \new Voice { \time 4/2 \music \time 4/4 \shiftDurations #1 #0 { \music } \time 2/4 \shiftDurations #2 #0 { \music } \time 4/1 \shiftDurations #-1 #0 { \music } \time 8/1 \shiftDurations #-2 #0 { \music } \time 6/2 \shiftDurations #0 #1 { \music } \time 7/2 \shiftDurations #0 #2 { \music } } }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Estremità delle travature nel contesto Score
Le regole relative alle estremità delle travature definite nel contesto Score
si applicano a tutti i righi, ma possono essere modificate anche ai livelli
Staff
e Voice
:
\relative c'' { \time 5/4 % Set default beaming for all staves \set Score.baseMoment = #(ly:make-moment 1/8) \set Score.beatStructure = 3,4,3 << \new Staff { c8 c c c c c c c c c } \new Staff { % Modify beaming for just this staff \set Staff.beatStructure = 6,4 c8 c c c c c c c c c } \new Staff { % Inherit beaming from Score context << { \voiceOne c8 c c c c c c c c c } % Modify beaming for this voice only \new Voice { \voiceTwo \set Voice.beatStructure = 6,4 a8 a a a a a a a a a } >> } >> }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Travature che attraversano le interruzioni di linea
Le interruzioni di linea sono di norma proibite quando le travature attraversano la stanghetta di una battuta. Si può cambiare questo comportamento nel modo seguente:
\relative c'' { \override Beam.breakable = ##t c8 c[ c] c[ c] c[ c] c[ \break c8] c[ c] c[ c] c[ c] c }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Modificare la distanza delle travature angolari
Le travature angolari vengono inserite automaticamente quando viene
rilevata un’ampia distanza tra le teste di nota. Questo comportamento
può essere regolato attraverso la proprietà auto-knee-gap
. Viene
disegnata una travatura angolare se la distanza è più grande del valore
di auto-knee-gap
più la larghezza della travatura (che dipende dalla
durata delle note e dall’inclinazione della travatura). Il valore predefinito
di auto-knee-gap
è 5.5 spazi rigo.
{ f8 f''8 f8 f''8 \override Beam.auto-knee-gap = #6 f8 f''8 f8 f''8 }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Modificare la forma delle pause multiple
Se la pausa multipla dura dieci misure o un numero inferiore a dieci, nel rigo
apparirà una serie di pause di longa e di breve (chiamate in tedesco “Kirchenpausen”
- pause ecclesiastiche); altrimenti apparirà una semplice linea. Il numero
predefinito di dieci può essere cambiato sovrascrivendo la proprietà
expand-limit
..
\relative c'' { \compressMMRests { R1*2 | R1*5 | R1*9 \override MultiMeasureRest.expand-limit = #3 R1*2 | R1*5 | R1*9 } }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Modifica del numero di punti di aumentazione per nota
Il numero di punti di aumentazione su una singola nota può essere modificato in modo indipendente dai punti posizionati dopo la nota.
\relative c' { c4.. a16 r2 | \override Dots.dot-count = #4 c4.. a16 r2 | \override Dots.dot-count = #0 c4.. a16 r2 | \revert Dots.dot-count c4.. a16 r2 | }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Modificare il tempo senza mostrare l’indicazione metronomica
Per cambiare il tempo del file MIDI senza che appaia l’indicazione metronomica, basta renderla invisibile.
\score { \new Staff \relative c' { \tempo 4 = 160 c4 e g b c4 b d c \set Score.tempoHideNote = ##t \tempo 4 = 96 d,4 fis a cis d4 cis e d } \layout { } \midi { } }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Modifica del numero del gruppo irregolare
Di norma compare sulla parentesi del gruppo irregolare solo il
numeratore del numero del gruppo irregolare, ovvero il numeratore
dell’argomento del comando \tuplet
. Ma è possibile
mostrare la frazione num:den del numero del gruppo irregolare
oppure nascondere del tutto il numero.
\relative c'' { \tuplet 3/2 { c8 c c } \tuplet 3/2 { c8 c c } \override TupletNumber.text = #tuplet-number::calc-fraction-text \tuplet 3/2 { c8 c c } \omit TupletNumber \tuplet 3/2 { c8 c c } }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Changing time signatures inside a polymetric section using \scaleDurations
The measureLength
property, together with
measurePosition
, determines when a bar line is needed. However,
when using \scaleDurations
, the scaling of durations makes it
difficult to change time signatures. In this case,
measureLength
should be set manually, using the
ly:make-moment
callback. The second argument must be the same
as the second argument of \scaleDurations
.
\layout { \context { \Score \remove "Timing_translator" } \context { \Staff \consists "Timing_translator" } } << \new Staff { \scaleDurations 8/5 { \time 6/8 \set Timing.measureLength = #(ly:make-moment 6/5) b8 b b b b b \time 2/4 \set Timing.measureLength = #(ly:make-moment 4/5) b4 b } } \new Staff { \clef bass \time 2/4 c2 d e f } >>
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Notazione per canti e salmi
Questa forma di notazione è utilizzata per i salmi, dove i versi non sono sempre della stessa lunghezza.
stemOff = \hide Staff.Stem stemOn = \undo \stemOff \score { \new Staff \with { \remove "Time_signature_engraver" } { \key g \minor \cadenzaOn \stemOff a'\breve bes'4 g'4 \stemOn a'2 \section \stemOff a'\breve g'4 a'4 \stemOn f'2 \section \stemOff a'\breve^\markup { \italic flexe } \stemOn g'2 \fine } }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Compound time signatures
Odd 20th century time signatures (such as “5/8”) can often be played as compound time signatures (e.g. “3/8 + 2/8”), which combine two or more inequal metrics.
LilyPond can make such music quite easy to read and play, by explicitly printing the compound time signatures and adapting the automatic beaming behavior.
\relative c' { \compoundMeter #'((2 8) (3 8)) c8 d e fis gis c8 fis, gis e d c8 d e4 gis8 }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Segni per la conduzione, segni di raggruppamento della misura
Il raggruppamento delle pulsazioni all’interno della misura è regolato dalla
proprietà di contesto beatStructure
. I valori di beatStructure
per
varie indicazioni di tempo vengono stabiliti in scm/time-signature-settings.scm
.
Questi valori possono essere impostati o modificati con \set
. Altrimenti, si
può usare \time
per impostare sia l’indicazione di tempo che la struttura
delle pulsazioni. Per farlo si specifica il raggruppamento interno delle pulsazioni in
una misura in una lista di numeri (nella sintassi di Scheme) prima dell’indicazione
di tempo.
\time
agisce nel contesto Timing
, dunque non reimposterà i
i valori di beatStructure
e baseMoment
che sono impostati in
altri contesti di più basso livello, come Voice
.
Se si include l’incisore Measure_grouping_engraver
in uno dei
contesti che regolano l’aspetto, appariranno i segni di raggruppamento
della misura. Tali segni facilitano la lettura di musica moderna ritmicamente
complessa.
Nell’esempio la misura di 9/8 è raggruppata in due diversi schemi usando
due metodi differenti, mentre la misura di 5/8 è raggruppata in base alle
impostazioni predefinite in scm/time-signature-settings.scm
:
\score { \new Voice \relative c'' { \time 9/8 g8 g d d g g a( bes g) | \set Timing.beatStructure = 2,2,2,3 g8 g d d g g a( bes g) | \time 4,5 9/8 g8 g d d g g a( bes g) | \time 5/8 a4. g4 | } \layout { \context { \Staff \consists "Measure_grouping_engraver" } } }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Consistently left aligned bar numbers
When left aligning bar numbers, overlapping problems may occur with Staves brackets.
The snippet solves this by keeping right aligned the first bar number following line breaks.
consistentlyLeftAlignedBarNumbers = { \override Score.BarNumber.break-visibility = #end-of-line-invisible \override Score.BarNumber.self-alignment-X = #(lambda (grob) (let ((break-dir (ly:item-break-dir grob))) (if (= break-dir RIGHT) RIGHT LEFT))) } \new ChoirStaff << \new Staff { \relative c' { \set Score.barNumberVisibility = #(every-nth-bar-number-visible 3) \bar "" \consistentlyLeftAlignedBarNumbers \set Score.currentBarNumber = #112 \repeat unfold 8 { R1 } \break \repeat unfold 9 { R1 } \break \repeat unfold 7 { R1 } } } \new Staff { \relative c' { \repeat unfold 24 { R1 } } } >> \layout { indent = #0 ragged-right = ##t ragged-last = ##t }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Controllare la visibilità della parentesi del gruppo irregolare
Il comportamento predefinito relativo alla visibilità della parentesi quadra del gruppo irregolare è di mostrare una parentesi a meno che non ci sia una travatura della stessa lunghezza del gruppo.
Per controllare la visibilità di tale parentesi, si imposta la proprietà
'bracket-visibility
su #t
(mostra sempre la parentesi),
#'if-no-beam
(mostra la parentesi solo se non c’è una travatura,
che è il comportamento predefinito) o #f
(non mostrare mai la parentesi).
L’ultima opzione equivale a omettere l’oggetto @code{TupletBracket}
dall’output.
music = \relative c'' { \tuplet 3/2 { c16[ d e } f8] \tuplet 3/2 { c8 d e } \tuplet 3/2 { c4 d e } } \new Voice { \relative c' { \override Score.TextMark.non-musical = ##f \textMark "default" \music \override TupletBracket.bracket-visibility = #'if-no-beam \textMark \markup \typewriter "'if-no-beam" \music \override TupletBracket.bracket-visibility = ##t \textMark \markup \typewriter "#t" \music \override TupletBracket.bracket-visibility = ##f \textMark \markup \typewriter "#f" \music \omit TupletBracket \textMark \markup \typewriter "omit" \music } }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Cow and ride bell example
Two different bells, entered with ’cb’ (cowbell) and ’rb’ (ridebell).
\paper { tagline = ##f } #(define mydrums '((ridebell default #f 3) (cowbell default #f -2))) \new DrumStaff \with { instrumentName = #"Different Bells" } \drummode { \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) \set DrumStaff.clefPosition = 0.5 \override DrumStaff.StaffSymbol.line-positions = #'(-2 3) \override Staff.BarLine.bar-extent = #'(-1.0 . 1.5) \time 2/4 rb8 8 cb8 16 rb16-> ~ | 16 8 16 cb8 8 | }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Creare indicazioni metronomiche in modalità testuale
Si possono creare nuove indicazioni metronomiche in modalità testuale, ma non modificheranno il tempo del file MIDI.
\relative c' { \tempo \markup { \concat { ( \smaller \general-align #Y #DOWN \note {16.} #1 " = " \smaller \general-align #Y #DOWN \note {8} #1 ) } } c1 c4 c' c,2 }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Disegnare manualmente le legature di valore
Le legature di valore possono essere disegnate a mano cambiando la
proprietà tie-configuration
dell’oggetto TieColumn
. Il
primo numero indica la distanza dal centro del rigo nell’unità di
metà spazio rigo, mentre il secondo numero indica la
direzione (1 = su, -1 = giù).
Si noti che LilyPond fa una distinzione tra valori precisi e imprecisi
per il primo numero. Se si usa un valore preciso (ovvero un intero o
una frazione come (/ 4 5)
), il valore serve come posizione verticale
approssimata che viene ulteriormente aggiustata da LilyPond per far sì che
la legatura di valore eviti le linee del rigo. Se si usa un valore impreciso,
come una virgola mobile, viene usato per la posizione verticale senza ulteriori
regolazioni.
\relative c' { <c e g>2~ <c e g> \override TieColumn.tie-configuration = #'((0.0 . 1) (-2.0 . 1) (-4.0 . 1)) <c e g>2~ <c e g> \override TieColumn.tie-configuration = #'((0 . 1) (-2 . 1) (-4 . 1)) <c e g>2~ <c e g> }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Engraving tremolos with floating beams
If a tremolo’s total duration is less than a quarter-note, or exactly a
half-note, or between a half-note and a whole-note, it is normally
typeset with all beams touching the stems. Certain engraving styles
typeset some of these beams as centered floating beams that do not
touch the stems. The number of floating beams in this type of tremolo
is controlled with the 'gap-count
property of the Beam
object, and the size of the gaps between beams and stems is set with
the 'gap
property.
\relative c'' { \repeat tremolo 8 { a32 f } \override Beam.gap-count = #1 \repeat tremolo 8 { a32 f } \override Beam.gap-count = #2 \repeat tremolo 8 { a32 f } \override Beam.gap-count = #3 \repeat tremolo 8 { a32 f } \override Beam.gap-count = #3 \override Beam.gap = #1.33 \repeat tremolo 8 { a32 f } \override Beam.gap = #1 \repeat tremolo 8 { a32 f } \override Beam.gap = #0.67 \repeat tremolo 8 { a32 f } \override Beam.gap = #0.33 \repeat tremolo 8 { a32 f } }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Inserire vari gruppi irregolari usando una sola volta il comando \tuplet
La proprietà tupletSpannerDuration
imposta la durata di ognuno dei
gruppi irregolari compresi tra parentesi dopo il comando \tuplet
.
In questo modo si possono inserire molti gruppi irregolari consecutivi
all’interno di una singola espressione \tuplet
, risparmiando così
tempo e spazio.
Ci sono vari modi per impostare tupletSpannerDuration
. Il
comando \tupletSpan
la imposta su una certa durata e poi
la annulla quando invece di una durata viene specificato
\default
. Altrimenti si può usare un argomento
opzionale con \tuplet
.
\relative c' { \time 2/4 \tupletSpan 4 \tuplet 3/2 { c8^"\\tupletSpan 4" c c c c c } \tupletSpan \default \tuplet 3/2 { c8^"\\tupletSpan \\default" c c c c c } \tuplet 3/2 4 { c8^"\\tuplet 3/2 4 {...}" c c c c c } }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Code e punte delle travature
È possibile ottenere delle codette su note isolate e dei tratti di suddivisione all’estremità
della travatura con una combinazione di stemLeftBeamCount
,
stemRightBeamCount
e una coppia di indicatori della travatura []
.
Per ottenere delle codette rivolte a destra, si usa la coppia di indicatori
[]
e si imposta stemLeftBeamCount
a zero (vedi Example 1).
Per ottenere delle codette rivolte a sinistra, si imposta invece
stemRightBeamCount
(Example 2).
Perché i tratti di suddivisione alla fine di un gruppo di note unite da
travatura siano rivolti a destra, si imposta stemRightBeamCount
su un
valore positivo. Perché i tratti di suddivisione all’inizio di un gruppo di note
unite da travatura siano rivolti a sinistra, si imposta invece
stemLeftBeamCount
(Example 3).
Talvolta, ad esempio per una nota isolata circondata da pause, ha senso
avere una coda che punti sia a destra che a sinistra. Lo si può fare con
una coppia di indicatori di travatura []
da soli (Example 4).
(Nota che \set stemLeftBeamCount
è sempre equivalente a
\once \set
. In altre parole, le impostazioni che definiscono
il conteggio delle travature non “permangono”, quindi la coppia di code
attaccate al 16[]
solitario nell’ultimo esempio non hanno nulla a
che fare con l’impostazione \set
di due note prima.)
\score { << % Example 1 \new RhythmicStaff { \set stemLeftBeamCount = #0 c16[] r8. } % Example 2 \new RhythmicStaff { r8. \set stemRightBeamCount = #0 16[] } % Example 3 \new RhythmicStaff { 16 16 \set stemRightBeamCount = #2 16 r r \set stemLeftBeamCount = #2 16 16 16 } % Example 4 \new RhythmicStaff { 16 16 \set stemRightBeamCount = #2 16 r16 16[] r16 \set stemLeftBeamCount = #2 16 16 } >> }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Forcing rehearsal marks to start from a given letter or number
This snippet demonstrates how to obtain automatic ordered rehearsal marks, but from the letter or number desired.
\relative c'' { c1 \mark \default c1 \mark \default c1 \mark \default c1 \mark #14 c1 \mark \default c1 \mark \default c1 \mark \default c1 }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Generating custom flags
The stencil
property of the Flag
grob can be set to a
custom scheme function to generate the glyph for the flag.
#(define-public (weight-flag grob) (let* ((stem-grob (ly:grob-parent grob X)) (log (- (ly:grob-property stem-grob 'duration-log) 2)) (is-up? (eqv? (ly:grob-property stem-grob 'direction) UP)) (yext (if is-up? (cons (* log -0.8) 0) (cons 0 (* log 0.8)))) (flag-stencil (make-filled-box-stencil '(-0.4 . 0.4) yext)) (stroke-style (ly:grob-property grob 'stroke-style)) (stroke-stencil (if (equal? stroke-style "grace") (make-line-stencil 0.2 -0.9 -0.4 0.9 -0.4) empty-stencil))) (ly:stencil-add flag-stencil stroke-stencil))) % Create a flag stencil by looking up the glyph from the font #(define (inverted-flag grob) (let* ((stem-grob (ly:grob-parent grob X)) (dir (if (eqv? (ly:grob-property stem-grob 'direction) UP) "d" "u")) (flag (retrieve-glyph-flag "" dir "" grob)) (line-thickness (ly:staff-symbol-line-thickness grob)) (stem-thickness (ly:grob-property stem-grob 'thickness)) (stem-width (* line-thickness stem-thickness)) (stroke-style (ly:grob-property grob 'stroke-style)) (stencil (if (null? stroke-style) flag (add-stroke-glyph flag stem-grob dir stroke-style ""))) (rotated-flag (ly:stencil-rotate-absolute stencil 180 0 0))) (ly:stencil-translate rotated-flag (cons (- (/ stem-width 2)) 0)))) snippetexamplenotes = { \autoBeamOff c'8 d'16 c'32 d'64 \acciaccatura {c'8} d'64 } { \time 1/4 \textMark "Normal flags" \snippetexamplenotes \textMark "Custom flag: inverted" \override Flag.stencil = #inverted-flag \snippetexamplenotes \textMark "Custom flag: weight" \override Flag.stencil = #weight-flag \snippetexamplenotes \textMark "Revert to normal" \revert Flag.stencil \snippetexamplenotes }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Ritmi di accompagnamento per chitarra
Per la musica per chitarra, è possibile mostrare i ritmi di accompagnamento, insieme alle note della melodia e ai nomi e ai diagrammi degli accordi.
\include "predefined-guitar-fretboards.ly" << \new ChordNames { \chordmode { c1 | f | g | c } } \new FretBoards { \chordmode { c1 | f | g | c } } \new Voice \with { \consists "Pitch_squash_engraver" } { \relative c'' { \improvisationOn c4 c8 c c4 c8 c f4 f8 f f4 f8 f g4 g8 g g4 g8 g c4 c8 c c4 c8 c } } \new Voice = "melody" { \relative c'' { c2 e4 e4 f2. r4 g2. a4 e4 c2. } } \new Lyrics { \lyricsto "melody" { This is my song. I like to sing. } } >>
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Heavily customized polymetric time signatures
Though the polymetric time signature shown was not the most essential item here, it has been included to show the beat of this piece (which is the template of a real Balkan song!).
melody = \relative c'' { \key g \major \compoundMeter #'((3 8) (2 8) (2 8) (3 8) (2 8) (2 8) (2 8) (2 8) (3 8) (2 8) (2 8)) c8 c c d4 c8 c b c b a4 g fis8 e d c b' c d e4-^ fis8 g \break c,4. d4 c4 d4. c4 d c2 d4. e4-^ d4 c4. d4 c4 d4. c4 d c2 d4. e4-^ d4 \break c4. d4 c4 d4. c4 d c2 d4. e4-^ d4 c4. d4 c4 d4. c4 d c2 d4. e4-^ d4 \break } drum = \new DrumStaff \drummode { \repeat volta 2 { bd4.^\markup { Drums } sn4 bd \bar ";" sn4. bd4 sn \bar ";" bd sn bd4. sn4 bd } } \new Staff \with { instrumentName = \markup { \concat { "B" \flat " Sop." } } } { \melody \drum }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
High and Low woodblock example
Two Woodblocks, entered with ’wbh’ (high woodblock) and ’wbl’ (low woodblock). The length of the barline has been altered with an \override command otherwise it would be too short. The positions of the two stafflines also have to be explicitly defined.
\paper { tagline = ##f } % These lines define the position of the woodblocks in the stave; % if you like, you can change it or you can use special note heads % for the woodblocks. #(define mydrums '((hiwoodblock default #f 3) (lowoodblock default #f -2))) woodstaff = { % This defines a staff with only two lines. % It also defines the positions of the two lines. \override Staff.StaffSymbol.line-positions = #'(-2 3) % This is necessary; if not entered, % the barline would be too short! \override Staff.BarLine.bar-extent = #'(-1.0 . 1.5) % small correction for the clef: \set DrumStaff.clefPosition = 0.5 } \new DrumStaff { % with this you load your new drum style table \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) \woodstaff \drummode { \time 2/4 wbl8 16 16 8-> 8 | wbl8 16 16-> ~ 16 16 r8 | } }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Making an object invisible with the ’transparent property
Setting the transparent
property will cause an object to be
printed in “invisible ink”: the object is not printed, but all its
other behavior is retained. The object still takes up space, it takes
part in collisions, and slurs, ties and beams can be attached to it.
This snippet demonstrates how to connect different voices using ties. Normally, ties only connect two notes in the same voice. By introducing a tie in a different voice, and blanking the first up-stem in that voice, the tie appears to cross voices.
\relative { \time 2/4 << { \once \hide Stem \once \override Stem.length = #8 b'8 ~ 8\noBeam \once \hide Stem \once \override Stem.length = #8 g8 ~ 8\noBeam } \\ { b8 g g e } >> }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Legature di portamento con complesse strutture di tratteggio
Le legature di portamento possono avere schemi di tratteggio complessi
definendo la proprietà dash-definition
. dash-definition
è
una lista di dash-elements
. Un dash-element
è una lista
di parametri che definiscono il comportamento del tratteggio per un
segmento della legatura.
La legatura di portamento è definita come il parametro t della curva di
bezier che va da 0 sul margine sinistro della legatura fino a 1 su quello
destro. dash-element
è una lista di (inizio-t fine-t frazione-trattino
punto-trattino)
. La regione della legatura di portamento che va da inizio-t
a
fine-t
avrà una frazione frazione-trattino
di ogni
punto-trattino
nero. punto-trattino
viene definito in spazi
rigo. frazione-trattino
è impostato su 1 per una legatura di portamento
continua.
\relative c' { \once \override Slur.dash-definition = #'((0 0.3 0.1 0.75) (0.3 0.6 1 1) (0.65 1.0 0.4 0.75)) c4( d e f) \once \override Slur.dash-definition = #'((0 0.25 1 1) (0.3 0.7 0.4 0.75) (0.75 1.0 1 1)) c4( d e f) }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Manually controlling beam positions
Beam positions may be controlled manually, by overriding the
positions
setting of the Beam
grob.
\relative c' { \time 2/4 % from upper staff-line (position 2) to center (position 0) \override Beam.positions = #'(2 . 0) c8 c % from center to one above center (position 1) \override Beam.positions = #'(0 . 1) c8 c }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Merging multi-measure rests in a polyphonic part
When using multi-measure rests in a polyphonic staff, the rests will be placed differently depending on the voice they belong to. However they can be printed on the same staff line, using the following setting.
normalPos = \revert MultiMeasureRest.direction { << { c''1 R1 c''1 \normalPos R1 } \\ { c'1 R1 c'1 \normalPos R1 } >> }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Modifying tuplet bracket length
Tuplet brackets can be made to run to prefatory matter or the next note. Default tuplet brackets end at the right edge of the final note of the tuplet; full-length tuplet brackets extend farther to the right, either to cover all the non-rhythmic notation up to the following note, or to cover only the whitespace before the next item of notation, be that a clef, time signature, key signature, or another note. The example shows how to switch tuplets to full length mode and how to modify what material they cover.
\new RhythmicStaff { % Set tuplets to be extendable... \set tupletFullLength = ##t % ...to cover all items up to the next note \set tupletFullLengthNote = ##t \time 2/4 \tuplet 3/2 { c4 4 4 } % ...or to cover just whitespace \set tupletFullLengthNote = ##f \time 4/4 \tuplet 5/4 { 4 1 } \time 3/4 2. }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Spostare le note puntate in polifonia
Quando una nota puntata della voce più alta viene spostata per evitare una
collisione con una nota di un’altra voce, il comportamento predefinito è
spostare la nota più alta a destra. Tale comportamento può essere
modificato tramite la proprietà prefer-dotted-right
di
NoteCollision
.
\new Staff \relative c' << { f2. f4 \override Staff.NoteCollision.prefer-dotted-right = ##f f2. f4 \override Staff.NoteCollision.prefer-dotted-right = ##t f2. f4 } \\ { e4 e e e e e e e e e e e } >>
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Regolazione della lunghezza delle pause multiple
Le pause multiple hanno una lunghezza che dipende dalla loro durata totale
e tale lunghezza è regolata da MultiMeasureRest.space-increment
. Nota
che il valore predefinito è 2.0
.
\relative c' { \compressEmptyMeasures R1*2 R1*4 R1*64 R1*16 \override Staff.MultiMeasureRest.space-increment = 2.5 R1*2 R1*4 R1*64 R1*16 }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Testo a margine delle pause multiple
Il testo a margine di una pausa multipla viene centrato sopra o sotto di essa. Se il testo è lungo, la misura non si espanderà. Per espandere la pausa multipla in modo che si allinei col testo, conviene usare un accordo vuoto con del testo attaccato prima della pausa multipla.
Il testo così attaccato a una nota spaziatrice viene allineato a sinistra della posizione in cui la nota sarebbe posta nella misura, ma se la lunghezza della misura è determinata dalla lunghezza del testo, il testo verrà centrato.
\relative c' { \compressMMRests { \textLengthOn <>^\markup { [MAJOR GENERAL] } R1*19 <>_\markup { \italic { Cue: ... it is yours } } <>^\markup { A } R1*30^\markup { [MABEL] } \textLengthOff c4^\markup { CHORUS } d f c } }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Numeri non predefiniti per i gruppi irregolari
LilyPond fornisce anche funzioni di formattazione che permettono di creare numeri di gruppi irregolari diversi dalla frazione vera e propria, così come di aggiungere un valore di nota al numero o alla frazione di un gruppo irregolare.
\relative c'' { \once \override TupletNumber.text = #(tuplet-number::non-default-tuplet-denominator-text 7) \tuplet 3/2 { c4. c4. c4. c4. } \once \override TupletNumber.text = #(tuplet-number::non-default-tuplet-fraction-text 12 7) \tuplet 3/2 { c4. c4. c4. c4. } \once \override TupletNumber.text = #(tuplet-number::append-note-wrapper (tuplet-number::non-default-tuplet-fraction-text 12 7) (ly:make-duration 3 0)) \tuplet 3/2 { c4. c4. c4. c4. } \once \override TupletNumber.text = #(tuplet-number::append-note-wrapper tuplet-number::calc-denominator-text (ly:make-duration 2 0)) \tuplet 3/2 { c8 c8 c8 c8 c8 c8 } \once \override TupletNumber.text = #(tuplet-number::append-note-wrapper tuplet-number::calc-fraction-text (ly:make-duration 2 0)) \tuplet 3/2 { c8 c8 c8 c8 c8 c8 } \once \override TupletNumber.text = #(tuplet-number::fraction-with-notes (ly:make-duration 2 1) (ly:make-duration 3 0)) \tuplet 3/2 { c4. c4. c4. c4. } \once \override TupletNumber.text = #(tuplet-number::non-default-fraction-with-notes 12 (ly:make-duration 3 0) 4 (ly:make-duration 2 0)) \tuplet 3/2 { c4. c4. c4. c4. } }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Numbering single measure rests
Multi measure rests show their length by a number except for single
measures. This can be changed by setting restNumberThreshold
.
{ \compressEmptyMeasures R1 R1*10 R1*11 \bar "||" \set restNumberThreshold = 0 R1 R1*10 R1*11 \bar "||" \set restNumberThreshold = 10 R1 R1*10 R1*11 }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
PartCombine e autoBeamOff
La funzione \autoBeamOff
, se usata insieme a
\partCombine
, può essere difficile da comprendere.
È preferibile usare invece
\set Staff.autoBeaming = ##f
per assicurarsi che la disposizione delle travature sia disabilitata per tutto il rigo.
\partCombine
funziona con 3 voci – gambo in su singolo,
gambo in giù singolo, gambo in su unito.
L’uso di \autoBeamOff
all’interno del primo argomento di partCombine
ha effetto sulla voce che è attiva al momento in cui la funzione viene elaborata,
ovvero sul gambo in su singolo o sul gambo in giù unito. L’uso di \autoBeamOff
nel secondo argomento avrà effetto sulla voce che ha il gambo in giù singolo.
Per poter usare \autoBeamOff
per impedire tutte le disposizioni automatiche
delle travature, se usato con \partCombine
, è necessario richiamare
tre volte la funzione \autoBeamOff
.
{ %\set Staff.autoBeaming = ##f % turns off all autobeaming \partCombine { \autoBeamOff % applies to split up stems \repeat unfold 4 a'16 %\autoBeamOff % applies to combined up stems \repeat unfold 4 a'8 \repeat unfold 4 a'16 } { \autoBeamOff % applies to down stems \repeat unfold 4 f'8 \repeat unfold 8 f'16 | } }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Percussion example
A short example taken from Stravinsky’s L’Histoire du soldat.
#(define mydrums '((bassdrum default #f 4) (snare default #f -4) (tambourine default #f 0))) global = { \time 3/8 s4. \time 2/4 s2*2 \time 3/8 s4. \time 2/4 s2 } drumsA = { \context DrumVoice << { \global } { \drummode { \autoBeamOff \stemDown sn8 \stemUp tamb s8 | sn4 \stemDown sn4 | \stemUp tamb8 \stemDown sn8 \stemUp sn16 \stemDown sn \stemUp sn8 | \stemDown sn8 \stemUp tamb s8 | \stemUp sn4 s8 \stemUp tamb } } >> } drumsB = { \drummode { s4 bd8 s2*2 s4 bd8 s4 bd8 s8 } } \layout { indent = 40 \context { \DrumStaff drumStyleTable = #(alist->hash-table mydrums) } } \score { \new StaffGroup << \new DrumStaff \with { instrumentName = \markup \center-column { "Tambourine" "et" "caisse claire s. timbre" } } \drumsA \new DrumStaff \with { instrumentName = "Grosse Caisse" } \drumsB >> }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Consentire l’interruzione del rigo all’interno di gruppi irregolari con travature
Questo esempio artificioso mostra come permettere interruzioni del rigo sia manuali che automatiche all’interno di un gruppo irregolare con travature. Si noti che le travature di questi gruppi irregolari fuori dal ritmo devono essere disposte manualmente.
\layout { \context { \Voice % Permit line breaks within tuplets \remove "Forbid_line_break_engraver" % Allow beams to be broken at line breaks \override Beam.breakable = ##t } } \relative c'' { a8 \repeat unfold 5 { \tuplet 3/2 { c[ b a] } } % Insert a manual line break within a tuplet \tuplet 3/2 { c[ b \bar "" \break a] } \repeat unfold 5 { \tuplet 3/2 { c[ b a] } } c8 }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Positioning grace note beams at the height of normal note beams
When notes are placed on ledger lines, their beams are usually centred on the stave. Grace notes beams are shorter and grace notes on ledger lines may well have beams outside the stave. You can override this beaming for grace notes.
\relative c { f8[ e] \grace { f8[ e] \override Stem.no-stem-extend = ##f f8[ e] \revert Stem.no-stem-extend } f8[ e] }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Posizionare gli abbellimenti con dello spazio fluttuante
Se si imposta la proprietà 'strict-grace-spacing
, le colonne musicali
degli abbellimenti ’fluttuano’, ovvero si scollegano dalle note normali:
prima vengono spaziate le note normali, poi le colonne musicali degli
abbellimenti vengono messe a sinistra delle colonne delle note principali.
\relative c'' { << \override Score.SpacingSpanner.strict-grace-spacing = ##t \new Staff \new Voice { \afterGrace c4 { c16[ c8 c16] } c8[ \grace { b16 d } c8] c4 r } \new Staff { c16 c c c c c c c c4 r } >> }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Posizionamento delle pause multiple
Diversamente dalle pause normali, non esiste un comando predefinito per cambiare la posizione sul rigo di un simbolo di pausa multipla di qualsiasi tipo connettendolo a una nota. Tuttavia, nella musica polifonica le pause multiple nelle voci dispari e pari sono separate verticalmente. Il posizionamento delle pause multiple si controlla nel modo seguente:
\relative c'' { % Multi-measure rests by default are set under the fourth line R1 % They can be moved using an override \override MultiMeasureRest.staff-position = #-2 R1 \override MultiMeasureRest.staff-position = #0 R1 \override MultiMeasureRest.staff-position = #2 R1 \override MultiMeasureRest.staff-position = #3 R1 \override MultiMeasureRest.staff-position = #6 R1 \revert MultiMeasureRest.staff-position \break % In two Voices, odd-numbered voices are under the top line << { R1 } \\ { a1 } >> % Even-numbered voices are under the bottom line << { a1 } \\ { R1 } >> % Multi-measure rests in both voices remain separate << { R1 } \\ { R1 } >> % Separating multi-measure rests in more than two voices % requires an override << { R1 } \\ { R1 } \\ \once \override MultiMeasureRest.staff-position = #0 { R1 } >> % Using compressed bars in multiple voices requires another override % in all voices to avoid multiple instances being printed \compressMMRests << \revert MultiMeasureRest.direction { R1*3 } \\ \revert MultiMeasureRest.direction { R1*3 } >> }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Positioning opposing fermatas on a bar line
This snippet demonstrates a command that prints fermatas both above and below a bar line. If there would not otherwise be a bar line, it adds a double bar line. Semantically, the command codes a longer-than-normal caesura, which might be considered misuse depending on the situation.
twoWayFermata = { \once \set Staff.caesuraType = #'((underlying-bar-line . "||")) \once \set Staff.caesuraTypeTransform = ##f \caesura ^\fermata _\fermata } music = { f'1 \twoWayFermata R1 f'2 \twoWayFermata f'2 R1 b'1 \twoWayFermata \fine } \new GrandStaff << \new Staff \music \new Staff \music >>
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Preventing final mark from removing final tuplet
The addition of a final mark
can result in the loss of a final
tuplet marking. This can be overcome by setting
TupletBracket.full-length-to-extent
to false
.
% due to issue 2362 a long mark such as % \textEndMark "Composed Feb 2007 - Feb 2008" % cannot be used here. \new Staff { \set tupletFullLength = ##t \time 1/8 \tuplet 3/2 8 { c'16 c' c' c' c' c' c' c' c' } \tweak direction #DOWN \textEndMark "1234" } \new Staff { \set tupletFullLength = ##t \override TupletBracket.full-length-to-extent = ##f \time 1/8 \tuplet 3/2 8 { c'16 c' c' c' c' c' c' c' c' } \tweak direction #DOWN \textEndMark "1234" }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Mostrare i numeri di battuta a intervalli regolari
Impostando la proprietà barNumberVisibility
si possono far apparire
i numeri di battuta a intervalli regolari. In questo esempio vengono
mostrati ogni due misure eccetto alla fine della linea.
\relative c' { \override Score.BarNumber.break-visibility = #end-of-line-invisible \set Score.currentBarNumber = #11 % Print a bar number every second measure \set Score.barNumberVisibility = #(every-nth-bar-number-visible 2) c1 | c | c | c | c \break c1 | c | c | c | c }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Printing bar numbers for broken measures
By default a BarNumber
of a broken measure is not repeated at
the beginning of the new line. Use
first-bar-number-invisible-save-broken-bars
for
barNumberVisibility
to get a parenthesized BarNumber
there.
\layout { \context { \Score barNumberVisibility = #first-bar-number-invisible-save-broken-bars \override BarNumber.break-visibility = ##(#f #t #t) } } \relative c' { c1 | d | e | f2 \bar "" \break fis | g1 | e2 \bar "" \break <>^"reenabled default" % back to default - % \unset Score.barNumberVisibility would do so as well \set Score.barNumberVisibility = #first-bar-number-invisible-and-no-parenthesized-bar-numbers es | d1 | c }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Numeri di battuta racchiusi in rettangoli o cerchi
I numeri di battuta possono apparire anche all’interno di rettangoli o cerchi.
\relative c' { % Prevent bar numbers at the end of a line and permit them elsewhere \override Score.BarNumber.break-visibility = #end-of-line-invisible \set Score.barNumberVisibility = #(every-nth-bar-number-visible 4) % Increase the size of the bar number by 2 \override Score.BarNumber.font-size = #2 % Draw a box round the following bar number(s) \override Score.BarNumber.stencil = #(make-stencil-boxer 0.1 0.25 ly:text-interface::print) \repeat unfold 5 { c1 } % Draw a circle round the following bar number(s) \override Score.BarNumber.stencil = #(make-stencil-circler 0.1 0.25 ly:text-interface::print) \repeat unfold 4 { c1 } \bar "|." }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Printing bar numbers using modulo-bar-number-visible
If the remainder of the division of the current BarNumber
by the
first argument of modulo-bar-number-visible
equals its second
argument print the BarNumber
.
Useful to print the BarNumber
at certain distances, p.e:
-
(modulo-bar-number-visible 3 2)
-> prints 2,5,8 -
(modulo-bar-number-visible 4 2)
-> prints 2,6,10 -
(modulo-bar-number-visible 3 1)
-> prints 3,5,7 -
(modulo-bar-number-visible 5 2)
-> prints 2,7,12
\layout { \context { \Score \override BarNumber.break-visibility = ##(#f #t #t) barNumberVisibility = #(modulo-bar-number-visible 3 2) } } \relative c' { c1 | d | e | f \break g1 | e | d | c }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Stampare i numeri di battuta a intervalli regolari variabili
Tramite la funzione di contesto {set-bar-number-visibility}
si possono modificare gli intervalli dei numeri di battuta.
\relative c' { \override Score.BarNumber.break-visibility = #end-of-line-invisible \context Score \applyContext #(set-bar-number-visibility 4) \repeat unfold 10 c'1 \context Score \applyContext #(set-bar-number-visibility 2) \repeat unfold 10 c }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Posizionare il metronomo e i numeri di chiamata sotto il rigo
Di norma, il metronomo e i numeri di chiamata vengono posizionati sopra il
rigo. Per metterli sotto il rigo basta impostare correttamente la proprietà
direction
di MetronomeMark
o RehearsalMark
.
\layout { indent = 0 ragged-right = ##f } { % Metronome marks below the staff \override Score.MetronomeMark.direction = #DOWN \tempo 8. = 120 c''1 % Rehearsal marks below the staff \override Score.RehearsalMark.direction = #DOWN \mark \default c''1 }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Printing music with different time signatures
In the following snippet, two parts have a completely different time signature, yet remain synchronized.
The bar lines can no longer be printed at the Score
level; to
allow independent bar lines in each part, the Timing_translator
is moved from the Score
context to the Staff
context.
If bar numbers are required, the Bar_number_engraver
should also
be moved, since it relies on properties set by the
Timing_translator
; a \with
block can be used to add bar
numbers to the relevant staff.
\paper { indent = #0 ragged-right = ##t } global = { \time 3/4 { s2.*3 } \bar "" \break { s2.*3 } } \layout { \context { \Score \remove "Timing_translator" \remove "Bar_number_engraver" \override SpacingSpanner.uniform-stretching = ##t \override SpacingSpanner.strict-note-spacing = ##t proportionalNotationDuration = #(ly:make-moment 1/64) } \context { \Staff \consists "Timing_translator" } \context { \Voice \remove "Forbid_line_break_engraver" tupletFullLength = ##t } } Bassklarinette = \new Staff \with { \consists "Bar_number_engraver" barNumberVisibility = #(every-nth-bar-number-visible 2) \override BarNumber.break-visibility = #end-of-line-invisible } << \global { \bar "|" \clef treble \time 3/8 d''4. \bar "|" \time 3/4 r8 des''2( c''8) \bar "|" \time 7/8 r4. ees''2 ~ \bar "|" \time 2/4 \tupletUp \tuplet 3/2 { ees''4 r4 d''4 ~ } \bar "|" \time 3/8 \tupletUp \tuplet 4/3 { d''4 r4 } \bar "|" \time 2/4 e''2 \bar "|" \time 3/8 es''4. \bar "|" \time 3/4 r8 d''2 r8 \bar "|" } >> Perkussion = \new StaffGroup << \new Staff << \global { \bar "|" \clef percussion \time 3/4 r4 c'2 ~ \bar "|" c'2. \bar "|" R2. \bar "|" r2 g'4 ~ \bar "|" g'2. ~ \bar "|" g'2. } >> \new Staff << \global { \bar "|" \clef percussion \time 3/4 R2. \bar "|" g'2. ~ \bar "|" g'2. \bar "|" r4 g'2 ~ \bar "|" g'2 r4 \bar "|" g'2. } >> >> \score { << \Bassklarinette \Perkussion >> }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Mostrare il numero di battuta nella prima misura
Il primo numero di battuta di una partitura viene soppresso se è inferiore
o uguale a ‘1’. Se si imposta barNumberVisibility
su
all-bar-numbers-visible
, verrà mostrato il numero di battuta della
prima misura e di tutte quelle successive. Si noti che perché funzioni è
necessario inserire una stanghetta invisibile prima della prima nota.
\layout { indent = 0 ragged-right = ##t } \relative c' { \set Score.barNumberVisibility = #all-bar-numbers-visible c1 | d | e | f \break g1 | e | d | c }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Printing tuplet brackets on the note head side
Whichever option you choose for controlling the tuplet bracket
visibility, it will show or hide the tuplet bracket irrespectively
of tuplet bracket placement (stem side or note head side).
However, when placing the tuplet bracket on the note head side some
authors recommend always printing the tuplet bracket. The option
visible-over-note-heads
can be used to achieve this.
music = \relative c'' { \tupletNeutral \tuplet 3/2 { c16[ d e } f8] \tupletUp \tuplet 3/2 { c8 d e } } \new Voice { \relative c' { \time 2/4 \override TupletBracket.visible-over-note-heads = ##t \override Score.TextMark.non-musical = ##f { \textMark \markup "default" \music } \override TupletBracket.bracket-visibility = #'if-no-beam { \textMark \markup \typewriter "'if-no-beam" \music } } }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Ridefinire le impostazioni predefinite globali degli abbellimenti
Le impostazioni globali predefinite degli abbellimenti sono salvate ni seguenti identificatori:
startGraceMusic stopGraceMusic startAcciaccaturaMusic stopAcciaccaturaMusic startAppoggiaturaMusic stopAppoggiaturaMusic
Sono definiti nel file ly/grace-init.ly
. Ridefinendoli si
possono ottenere effetti diversi.
startAcciaccaturaMusic = { <>( \override Flag.stroke-style = #"grace" \slurDashed } stopAcciaccaturaMusic = { \revert Flag.stroke-style \slurSolid <>) } \relative c'' { \acciaccatura d8 c1 }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Togliere i numeri di battuta da uno spartito
I numeri di battuta possono essere tolti rimuovendo l’incisore
Bar_number_engraver
dal contesto Score
.
\layout { \context { \Score \omit BarNumber % or: %\remove "Bar_number_engraver" } } \relative c'' { c4 c c c \break c4 c c c }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Removing connecting bar lines on StaffGroup, PianoStaff, or GrandStaff
By default, bar lines in StaffGroup, PianoStaff, or GrandStaff groups are connected between the staves, i.e. a SpanBar is printed. This behaviour can be overridden on a staff-by-staff basis.
\relative c' { \new StaffGroup << \new Staff { e1 | e \once \override Staff.BarLine.allow-span-bar = ##f e1 | e | e } \new Staff { c1 | c | c \once \override Staff.BarLine.allow-span-bar = ##f c1 | c } \new Staff { a1 | a | a | a | a } >> }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Stili di pausa
Esistono vari stili di pausa.
\new Staff \relative c { \omit Score.TimeSignature \cadenzaOn \override Staff.Rest.style = #'mensural r\maxima^\markup \typewriter { mensural } r\longa r\breve r1 r2 r4 r8 r16 s32 s64 s128 s128 \bar "" \break \override Staff.Rest.style = #'neomensural r\maxima^\markup \typewriter { neomensural } r\longa r\breve r1 r2 r4 r8 r16 s32 s64 s128 s128 \bar "" \break \override Staff.Rest.style = #'classical r\maxima^\markup \typewriter { classical } r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 s128 \bar "" \break \override Staff.Rest.style = #'z r\maxima^\markup \typewriter { z-style } r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 s128 \bar "" \break \override Staff.Rest.style = #'default r\maxima^\markup \typewriter { default } r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 s128 }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Reverting default beam endings
To typeset beams grouped 3-4-3-2
in 12/8 it is necessary first
to override the default beam endings in 12/8, and then to set up the
new beaming endings:
\relative c'' { \time 12/8 % Default beaming a8 a a a a a a a a a a a % Set new values for beam endings \set Score.beatStructure = 3,4,3,2 a8 a a a a a a a a a a a }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Rhythmic slashes
In “simple” lead-sheets, sometimes no actual notes are written, instead only “rhythmic patterns” and chords above the measures are notated giving the structure of a song. Such a feature is for example useful while creating/transcribing the structure of a song and also when sharing lead sheets with guitarists or jazz musicians.
The standard support for this using \repeat percent
is
unsuitable here since the first beat has to be an ordinary note or
rest.
This example shows two solutions to this problem, by redefining
ordinary rests to be printed as slashes. (If the duration of each beat
is not a quarter note, replace the r4
in the definitions with a
rest of the appropriate duration).
% Macro to print single slash rs = { \once \override Rest.stencil = #ly:percent-repeat-interface::beat-slash \once \override Rest.thickness = #0.48 \once \override Rest.slope = #1.7 r4 } % Function to print a specified number of slashes comp = #(define-music-function (count) (integer?) #{ \override Rest.stencil = #ly:percent-repeat-interface::beat-slash \override Rest.thickness = #0.48 \override Rest.slope = #1.7 \repeat unfold $count { r4 } \revert Rest.stencil #} ) \score { \relative c' { c4 d e f | \rs \rs \rs \rs | \comp #4 | } }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Skips in lyric mode
The s
syntax for skips is only available in note mode and chord
mode. In other situations, for example, when entering lyrics, using the
\skip
command is recommended.
<< \relative c'' { a1 | a } \new Lyrics \lyricmode { \skip 1 bla1 } >>
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Skips in lyric mode (2)
Although s
skips cannot be used in \lyricmode
(it is
taken to be a literal “s”, not a space), double quotes (""
) or
underscores (_
) are available.
So for example:
<< \relative c'' { a4 b c d } \new Lyrics \lyricmode { a4 "" _ gap } >>
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Stemlets
In some notational conventions beams are allowed to extend over rests. Depending on preference, these beams may drop ’stemlets’ to help the eye appreciate the rhythm better, and in some modern music the rest itself is omitted and only the stemlet remains.
This snippet shows a progression from traditional notation, to beams
over the rest, to stemlets over the rest, to stemlets alone. Stemlets
are generated by overriding the 'stemlet-length
property of
Stem
, while rests are hidden by setting
'transparent = ##t
.
Some \markup
elements are included in the source to highlight
the different notations.
\paper { ragged-right = ##f } { c'16^\markup { traditional } d' r f' g'16[^\markup { beams over rests } f' r d'] % N.B. use Score.Stem to set for the whole score. \override Staff.Stem.stemlet-length = #0.75 c'16[^\markup { stemlets over rests } d' r f'] g'16[^\markup { stemlets and no rests } f' \once \hide Rest r16 d'] }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Travatura che segue strettamente il battito
Si possono impostare i tratti di suddivisione della travatura in modo che siano rivolti verso la relativa pulsazione. La prima travatura fa sì che non spuntino i tratti di suddivisione (comportamento predefinito); la seconda travatura è orientata verso la pulsazione.
\relative c'' { \time 6/8 a8. a16 a a \set strictBeatBeaming = ##t a8. a16 a a }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Suddividere le travature
Le travature di note consecutive di un sedicesimo (o più brevi) non
vengono suddivise, ovvero i tre (o più) tratti della travatura si
estendono, senza spezzarsi, sugli interi gruppi di note.
Questo comportamento può essere modificato in modo da suddividere le
travature in sottogruppi attraverso la proprietà
subdivideBeams
. Se impostata, le travature che comprendono più
sottogruppi verranno suddivise a intervalli definiti dal
valore attuale di baseMoment
, riducendo le travature multiple
al numero di travature che indica il valore metrico della suddivisione.
Se il gruppo successivo alla suddivisione è più breve del valore
metrico corrente (di solito perché la travatura è incompleta), il
numero di travature riflette il gruppo di suddivisione più lungo
possibile. Tuttavia, se rimane una sola nota dopo la divisione, questa
restrizione non viene applicata.
Si noti che baseMoment
, se non impostata
esplicitamente, equivale a uno fratto il denominatore dell’attuale
indicazione di tempo. Deve quindi essere impostata su una frazione
che stabilisca la durata del sottogruppo di travature; lo si può fare
usando la funzione ly:make-moment
, come è mostrato in questo
frammento di codice. Inoltre quando baseMoment
cambia, anche
beatStructure
deve essere modificato per accordarsi con
baseMoment
:
\relative c'' { c32[ c c c c c c c] \set subdivideBeams = ##t c32[ c c c c c c c] % Set beam sub-group length to an eighth note \set baseMoment = #(ly:make-moment 1/8) \set beatStructure = 2,2,2,2 c32[ c c c c c c c] % Set beam sub-group length to a sixteenth note \set baseMoment = #(ly:make-moment 1/16) \set beatStructure = 4,4,4,4 c32[ c c c c c c c] % Shorten beam by 1/32 \set baseMoment = #(ly:make-moment 1/8) \set beatStructure = 2,2,2,2 c32[ c c c c c c] r32 % Shorten beam by 3/32 \set baseMoment = #(ly:make-moment 1/8) \set beatStructure = 2,2,2,2 c32[ c c c c] r16. r2 }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Tam-tam example
A tam-tam example, entered with ’tt’
#(define mydrums '((tamtam default #f 0))) \new DrumStaff \with { instrumentName = #"Tamtam" } \drummode { \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) \override Staff.StaffSymbol.line-positions = #'( 0 ) \override Staff.BarLine.bar-extent = #'(-1.5 . 1.5) tt 1 \pp \laissezVibrer }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Tambourine example
A tambourine example, entered ’tamb’
\paper { tagline = ##f } #(define mydrums '((tambourine default #f 0))) \new DrumStaff \with { instrumentName = #"Tambourine" } \drummode { \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums) \override Staff.StaffSymbol.line-positions = #'( 0 ) \override Staff.BarLine.bar-extent = #'(-1.5 . 1.5) \time 6/8 tamb8. 16 8 8 8 8 | tamb4. 8 8 8 | % the trick with the scaled duration and the shorter rest % is neccessary for the correct ending of the trill-span! tamb2.*5/6 \startTrillSpan s8 \stopTrillSpan | }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Three-sided box
This example shows how to add a markup command to get a three sided box around some text (or other markup).
% New command to add a three sided box, with sides north, west and south % Based on the box-stencil command defined in scm/stencil.scm % Note that ";;" is used to comment a line in Scheme #(define-public (NWS-box-stencil stencil thickness padding) "Add a box around STENCIL, producing a new stencil." (let* ((x-ext (interval-widen (ly:stencil-extent stencil X) padding)) (y-ext (interval-widen (ly:stencil-extent stencil Y) padding)) (y-rule (make-filled-box-stencil (cons 0 thickness) y-ext)) (x-rule (make-filled-box-stencil (interval-widen x-ext thickness) (cons 0 thickness)))) ;; (set! stencil (ly:stencil-combine-at-edge stencil X 1 y-rule padding)) (set! stencil (ly:stencil-combine-at-edge stencil X LEFT y-rule padding)) (set! stencil (ly:stencil-combine-at-edge stencil Y UP x-rule 0.0)) (set! stencil (ly:stencil-combine-at-edge stencil Y DOWN x-rule 0.0)) stencil)) % The corresponding markup command, based on the \box command defined % in scm/define-markup-commands.scm #(define-markup-command (NWS-box layout props arg) (markup?) #:properties ((thickness 0.1) (font-size 0) (box-padding 0.2)) "Draw a box round @var{arg}. Looks at @code{thickness}, @code{box-padding} and @code{font-size} properties to determine line thickness and padding around the markup." (let ((pad (* (magstep font-size) box-padding)) (m (interpret-markup layout props arg))) (NWS-box-stencil m thickness pad))) % Test it: \relative c' { c1^\markup { \NWS-box ABCD } c1^\markup { \NWS-box \note {4} #1.0 } }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Time signature in parentheses
The time signature can be enclosed within parentheses.
\relative c'' { \override Staff.TimeSignature.stencil = #(lambda (grob) (bracketify-stencil (ly:time-signature::print grob) Y 0.1 0.2 0.1)) \time 2/4 a4 b8 c }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Time signature in parentheses - method 3
Another way to put the time signature in parenthesis
\relative c'' { \override Staff.TimeSignature.stencil = #(lambda (grob) (parenthesize-stencil (ly:time-signature::print grob) 0.1 0.4 0.4 0.1 )) \time 2/4 a4 b8 c }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Indicazione di tempo che mostra solo il numeratore (invece della frazione)
Talvolta un’indicazione di tempo non deve mostrare la frazione intera (ad esempio
7/4), ma solo il numeratore (numero 7 in questo caso). Si può ottenere
facilmente con \override Staff.TimeSignature.style = #'single-digit
,
che cambia lo stile in modo permanente. Con \revert
Staff.TimeSignature.style
, questa impostazione può essere annullata. Per
applicare lo stile a cifra singola (single-digit
) a una sola indicazione
di tempo, si usa il comando \override
preceduto da \once
.
\relative c'' { \time 3/4 c4 c c % Change the style permanently \override Staff.TimeSignature.style = #'single-digit \time 2/4 c4 c \time 3/4 c4 c c % Revert to default style: \revert Staff.TimeSignature.style \time 2/4 c4 c % single-digit style only for the next time signature \once \override Staff.TimeSignature.style = #'single-digit \time 5/4 c4 c c c c \time 2/4 c4 c }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Modificare l’aspetto degli abbellimenti di un intero brano
L’aspetto di tutte le espressioni contenute nei blocchi \grace
di un
brano può essere modificato con le funzioni add-grace-property
e
remove-grace-property
. L’esempio seguente toglie la definizione
della direzione di Stem
nell’abbellimento, in modo che gli abbellimenti
non siano sempre rivolti in su, e barra le teste di nota.
\relative c'' { \new Staff { $(remove-grace-property 'Voice 'Stem 'direction) $(add-grace-property 'Voice 'NoteHead 'style 'cross) \new Voice { \acciaccatura { f16 } g4 \grace { d16 e } f4 \appoggiatura { f,32 g a } e2 } } }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
User defined time signatures
New time signature styles can be defined. The time signature in the second measure should be upside down in both staves.
#(add-simple-time-signature-style 'topsy-turvy (lambda (fraction) (make-rotate-markup 180 (make-compound-meter-markup fraction)))) << \new Staff { \time 3/4 f'2. \override Score.TimeSignature.style = #'topsy-turvy \time 3/4 R2. \bar "|." } \new Staff { R2. e'' } >>
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Using alternative flag styles
Alternative styles of flag on eighth and shorter notes can be displayed
by overriding the stencil
property of Flag
. Valid values
are modern-straight-flag
, old-straight-flag
and
flat-flag
.
testnotes = { \autoBeamOff c8 d16 c32 d64 \acciaccatura { c8 } d64 r4 } \score { \relative c' { \time 2/4 \testnotes \override Flag.stencil = #modern-straight-flag \testnotes \override Flag.stencil = #old-straight-flag \testnotes \override Flag.stencil = #flat-flag \testnotes \revert Flag.stencil \testnotes } \layout { indent = 0 \context { \Score \override NonMusicalPaperColumn.line-break-permission = ##f } } }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ > ] |
Usare il gambo barrato degli abbellimenti con le teste normali
Il gambo barrato presente nelle acciaccature può essere applicato in altre situazioni.
\relative c'' { \override Flag.stroke-style = #"grace" c8( d2) e8( f4) }
[ << Rhythms ] | [Inizio][Contenuti] | [ Expressive marks >> ] |
[ < ] | [ Su : Rhythms ] | [ Expressive marks > ] |
Usare le legature di valore con un arpeggio
Le legature di valore vengono usate talvolta per scrivere un arpeggio. In questo
caso, le due note da legare devono non essere consecutive. Per ottenere tale risultato
occorre impostare la proprietà tieWaitForNote
su #t
. Questa
funzionalità serve anche a legare un tremolo a un accordo e in generale
qualsiasi coppia di note consecutive.
\relative c' { \set tieWaitForNote = ##t \grace { c16[ ~ e ~ g] ~ } <c, e g>2 \repeat tremolo 8 { c32 ~ c' ~ } <c c,>1 e8 ~ c ~ a ~ f ~ <e' c a f>2 \tieUp c8 ~ a \tieDown \tieDotted g8 ~ c g2 }
[ << Rhythms ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Top ] | [ > ] |
Expressive marks
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < Expressive marks ] | [ Su : Expressive marks ] | [ > ] |
Adding beams, slurs, ties etc. when using tuplet and non-tuplet rhythms
LilyPond syntax can involve many unusual placements for parentheses, brackets etc., which might sometimes have to be interleaved.
For example, when entering a manual beam, the left square bracket has to be placed after the starting note and its duration, not before. Similarly, the right square bracket should directly follow the note which is to be at the end of the requested beaming, even if this note happens to be inside a tuplet section.
This snippet demonstrates how to combine manual beaming, manual slurs, ties and phrasing slurs with tuplet sections (enclosed within curly braces).
{ r16[ g16 \tuplet 3/2 { r16 e'8] } g16( a \tuplet 3/2 { b d e') } g8[( a \tuplet 3/2 { b d') e'] ~ } \time 2/4 \tuplet 5/4 { e'32\( a b d' e' } a'4.\) }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Adding parentheses around an expressive mark or chordal note
The \parenthesize
function is a special tweak that encloses
objects in parentheses. The associated grob is Parentheses
.
\relative c' { c2-\parenthesize -> \override Parentheses.padding = #0.1 \override Parentheses.font-size = #-4 <d \parenthesize f a>2 }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Aggiungere i segni di tempo per i glissandi lunghi
I battiti saltati nei glissandi molto lunghi vengono talvolta segnalati con delle indicazioni di tempo, che consistono solitamente in dei gambi privi di teste di nota. Questi gambi possono essere usati anche per contenere segni di espressione intermedi.
Se i gambi non si allineano bene al glissando, può essere necessario riposizionarli leggermente.
glissandoSkipOn = { \override NoteColumn.glissando-skip = ##t \hide NoteHead \override NoteHead.no-ledgers = ##t } glissandoSkipOff = { \revert NoteColumn.glissando-skip \undo \hide NoteHead \revert NoteHead.no-ledgers } \relative c'' { r8 f8\glissando \glissandoSkipOn f4 g a a8\noBeam \glissandoSkipOff a8 r8 f8\glissando \glissandoSkipOn g4 a8 \glissandoSkipOff a8 | r4 f\glissando \< \glissandoSkipOn a4\f \> \glissandoSkipOff b8\! r | }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Cambiare la forma dei portamenti indeterminati verso il basso o verso l’alto
La proprietà shortest-duration-space
può essere modificata per cambiare
la forma dei portamenti indeterminati verso il basso o verso l’alto.
\relative c'' { \override Score.SpacingSpanner.shortest-duration-space = #4.0 c2-\bendAfter #5 c2-\bendAfter #-4.75 c2-\bendAfter #8.5 c2-\bendAfter #-6 }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Allineare le estremità delle forcelle alle direzioni di NoteColumn
Le estremità delle forcelle possono essere allineate alle direzioni LEFT
,
CENTER
o RIGHT
dei grob NoteColumn
modificando la
proprietà endpoint-alignments
, che è costituita da una coppia di
numeri che rappresentano le estremità sinistra e destra della forcella.
endpoint-alignments
devono essere direzioni (-1, 0 o 1). Valori
diversi verranno trasformati emettendo un avviso. Non ha effetto quando
l’estremità destra di una forcella termina su una pausa; in questo caso termina
sempre sul margine sinistro della pausa.
{ c'2\< <c' d'>\! | \override Hairpin.endpoint-alignments = #'(1 . -1) c'2\< <c' d'>\! | \override Hairpin.endpoint-alignments = #`(,LEFT . ,CENTER) c'2\< <c' d'>\! | }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Note brevi alternative
Le note brevi sono disponibili anche con due linee verticali su ciascun lato della testa invece di una sola e in stile barocco.
\relative c'' { \time 4/2 c\breve | \override Staff.NoteHead.style = #'altdefault b\breve \override Staff.NoteHead.style = #'baroque b\breve \revert Staff.NoteHead.style a\breve }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Asymmetric slurs
Slurs can be made asymmetric to match an asymmetric pattern of notes better.
slurNotes = { d,8( a' d f a f' d, a) } \relative c' { \stemDown \slurUp \slurNotes \once \override Slur.eccentricity = #3.0 \slurNotes }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Breathing signs
Breathing signs are available in different tastes: commas (default), ticks, vees and “railroad tracks” (caesura).
\new Staff \relative c'' { \key es \major \time 3/4 % this bar contains no \breathe << { g4 as g } \\ { es4 bes es } >> | % Modern notation: % by default, \breathe uses the rcomma, just as if saying: % \override BreathingSign.text = % #(make-musicglyph-markup "scripts.rcomma") << { g4 as g } \\ { es4 \breathe bes es } >> | % rvarcomma and lvarcomma are variations of the default rcomma % and lcomma % N.B.: must use Staff context here, since we start a Voice below \override Staff.BreathingSign.text = \markup { \musicglyph "scripts.rvarcomma" } << { g4 as g } \\ { es4 \breathe bes es } >> | % raltcomma and laltcomma are alternative variations of the % default rcomma and lcomma \override Staff.BreathingSign.text = \markup { \musicglyph "scripts.raltcomma" } << { g4 as g } \\ { es4 \breathe bes es } >> | % vee \override BreathingSign.text = \markup { \musicglyph "scripts.upbow" } es8[ d es f g] \breathe f | % caesura \override BreathingSign.text = \markup { \musicglyph "scripts.caesura.curved" } es8[ d] \breathe es[ f g f] | es2 r4 \bar "||" }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Broken Crescendo Hairpin
In order to make parts of a crescendo hairpin invisible, the following method is used: A white rectangle is drawn on top of the respective part of the crescendo hairpin, making it invisible. The rectangle is defined as postscript code within a text markup.
The markup command with-dimensions
tells LilyPond to consider
only the bottom edge of the rectangle when spacing it against the
hairpin. The property staff-padding
prevents the rectangle from
fitting between the hairpin and staff.
Make sure the hairpin is in a lower layer than the text markup to draw the rectangle over the hairpin.
\relative c' { << { \dynamicUp r2 r16 c'8.\pp r4 } \\ { \override DynamicLineSpanner.layer = #0 des,2\mf\< ~ \override TextScript.layer = #2 \once\override TextScript.staff-padding = #6 \once\override TextScript.vertical-skylines = #'() des16_\markup \with-dimensions #'(2 . 7) #'(0 . 0) \with-color #white \filled-box #'(2 . 7) #'(0 . 2) #0 r8. des4 ~ des16->\sff r8. } >> }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Caesura ("railtracks") with fermata
A caesura is sometimes denoted by a double “railtracks” breath mark with a fermata sign positioned above. This snippet shows an optically pleasing combination of railtracks and fermata.
\relative c'' { c2. % construct the symbol \override BreathingSign.text = \markup { \override #'(direction . 1) \override #'(baseline-skip . 1.8) \dir-column { \translate #'(0.155 . 0) \center-align \musicglyph "scripts.caesura.curved" \center-align \musicglyph "scripts.ufermata" } } \breathe c4 % set the breathe mark back to normal \revert BreathingSign.text c2. \breathe c4 \bar "|." }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Center text below hairpin dynamics
This example provides a function to typeset a hairpin (de)crescendo with some additional text below it, such as “molto” or “poco”. The added text will change the direction according to the direction of the hairpin. The Hairpin is aligned to DynamicText.
The example also illustrates how to modify the way an object is normally printed, using some Scheme code.
\paper { tagline = ##f } hairpinWithCenteredText = #(define-music-function (text) (markup?) #{ \once \override Voice.Hairpin.after-line-breaking = #(lambda (grob) (let* ((stencil (ly:hairpin::print grob)) (par-y (ly:grob-parent grob Y)) (dir (ly:grob-property par-y 'direction)) (staff-line-thickness (ly:output-def-lookup (ly:grob-layout grob) 'line-thickness)) (new-stencil (ly:stencil-aligned-to (ly:stencil-combine-at-edge (ly:stencil-aligned-to stencil X CENTER) Y dir (ly:stencil-aligned-to (grob-interpret-markup grob (make-fontsize-markup (magnification->font-size (+ (ly:staff-symbol-staff-space grob) (/ staff-line-thickness 2))) text)) X CENTER)) X LEFT)) (staff-space (ly:output-def-lookup (ly:grob-layout grob) 'staff-space)) (par-x (ly:grob-parent grob X)) (dyn-text (grob::has-interface par-x 'dynamic-text-interface)) (dyn-text-stencil-x-length (if dyn-text (interval-length (ly:stencil-extent (ly:grob-property par-x 'stencil) X)) 0)) (x-shift (if dyn-text (- (+ staff-space dyn-text-stencil-x-length) (* 0.5 staff-line-thickness)) 0))) (ly:grob-set-property! grob 'Y-offset 0) (ly:grob-set-property! grob 'stencil (ly:stencil-translate-axis new-stencil x-shift X)))) #}) hairpinMolto = \hairpinWithCenteredText \markup { \italic molto } hairpinMore = \hairpinWithCenteredText \markup { \larger moltissimo } \layout { ragged-right = ##f } \relative c' { \hairpinMolto c2\< c\f \hairpinMore c2\ppppp\< c\f \break \hairpinMolto c2^\< c\f \hairpinMore c2\ppppp\< c\f }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Nascondere la linea di estensione per le dinamiche testuali
Il testo usato per i crescendo e i decrescendo può essere cambiato
modificando le proprietà di contesto crescendoText
e
decrescendoText
.
Lo stile della linea dell’estensore può essere cambiato modificando la
proprietà 'style
di DynamicTextSpanner
. Il valore predefinito
è 'dashed-line
; gli altri valori possibili sono 'line
,
'dotted-line
e 'none
.
\relative c'' { \set crescendoText = \markup { \italic { cresc. poco } } \set crescendoSpanner = #'text \override DynamicTextSpanner.style = #'dotted-line a2\< a a2 a a2 a a2 a\mf }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Changing the appearance of a slur from solid to dotted or dashed
The appearance of slurs may be changed from solid to dotted or dashed.
\relative c' { c4( d e c) \slurDotted c4( d e c) \slurSolid c4( d e c) \slurDashed c4( d e c) \slurSolid c4( d e c) }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Cambiare il simbolo del segno di respiro
Il glifo del respiro può essere modificato sovrascrivendo la proprietà
text
dell’oggetto di formattazione BreathingSign
con
qualsiasi testo incluso in un blocco markup.
\relative c'' { c2 \override BreathingSign.text = \markup { \musicglyph "scripts.rvarcomma" } \breathe d2 }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Modifica del numero di punti di aumentazione per nota
Il numero di punti di aumentazione su una singola nota può essere modificato in modo indipendente dai punti posizionati dopo la nota.
\relative c' { c4.. a16 r2 | \override Dots.dot-count = #4 c4.. a16 r2 | \override Dots.dot-count = #0 c4.. a16 r2 | \revert Dots.dot-count c4.. a16 r2 | }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Combining dynamics with markup texts
Some dynamics may involve text indications (such as “più forte” or
“piano subito”). These can be produced using a \markup
block.
piuF = \markup { \italic più \dynamic f } \layout { ragged-right = ##f } \relative c'' { c2\f c-\piuF }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Glissando contemporaneo
Un glissando contemporaneo senza una nota finale può essere creato usando una nota nascosta e un tempo di cadenza.
\relative c'' { \time 3/4 \override Glissando.style = #'zigzag c4 c \cadenzaOn c4\glissando \hideNotes c,,4 \unHideNotes \cadenzaOff \bar "|" }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Controlling spanner visibility after a line break
The visibility of spanners which end on the first note following a line
break is controlled by the after-line-breaking
callback
ly:spanner::kill-zero-spanned-time
.
For objects such as glissandos and hairpins, the default behaviour is to hide the spanner after a break; disabling the callback will allow the left-broken span to be shown.
Conversely, spanners which are usually visible, such as text spans, can be hidden by enabling the callback.
\paper { ragged-right = ##t } \relative c'' { \override Hairpin.to-barline = ##f \override Glissando.breakable = ##t % show hairpin \override Hairpin.after-line-breaking = ##t % hide text span \override TextSpanner.after-line-breaking = #ly:spanner::kill-zero-spanned-time e2\<\startTextSpan % show glissando \override Glissando.after-line-breaking = ##t f2\glissando \break f,1\!\stopTextSpan }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Controllo dell’ordine verticale degli script
L’ordine verticale degli script è determinato dalla proprietà
'script-priority
. Più il numero è piccolo, più sarà posto
vicino alla nota. In questo esempio, il simbolo di diesis (oggetto
TextScript
) ha prima la priorità più bassa, dunque è posto più
in basso nel primo esempio. Nel secondo, il trillo (oggetto Script
) ha
la priorità più bassa, quindi si trova all’interno. Quando due oggetti hanno
la stessa priorità, l’ordine in cui sono inseriti determina quale viene
prima.
\relative c''' { \once \override TextScript.script-priority = #-100 a2^\prall^\markup { \sharp } \once \override Script.script-priority = #-100 a2^\prall^\markup { \sharp } }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Creare un gruppetto ritardato
Creare un gruppetto ritardato, dove la nota più bassa del gruppetto usa
l’alterazione, richiede vari \override. La proprietà
outside-staff-priority
deve essere impostata su #f
, perché
altrimenti questa avrebbe la precedenza sulla proprietà avoid-slur
.
Cambiando la frazione 2/3
si aggiusta la posizione orizzontale.
\relative c'' { \after 2*2/3 \turn c2( d4) r | \after 4 \turn c4.( d8) \after 4 { \once \set suggestAccidentals = ##t \once \override AccidentalSuggestion.outside-staff-priority = ##f \once \override AccidentalSuggestion.avoid-slur = #'inside \once \override AccidentalSuggestion.font-size = -3 \once \override AccidentalSuggestion.script-priority = -1 \once \hideNotes cis8\turn \noBeam } d4.( e8) }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Creare degli arpeggi che attraversano note appartenenti a voci diverse
Si può disegnare un arpeggio che attraversa delle note in voci diverse
dello stesso rigo se si aggiunge l’incisore Span_arpeggio_engraver
nel
contesto Staff
:
\new Staff \with { \consists "Span_arpeggio_engraver" } \relative c' { \set Staff.connectArpeggios = ##t << { <e' g>4\arpeggio <d f> <d f>2 } \\ { <d, f>2\arpeggio <g b>2 } >> }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Creare degli arpeggi che attraversano il rigo del pianoforte
In un rigo per pianoforte (PianoStaff
), è possibile far sì che un
arpeggio attraversi i righi impostando la proprietà PianoStaff.connectArpeggios
.
\new PianoStaff \relative c'' << \set PianoStaff.connectArpeggios = ##t \new Staff { <c e g c>4\arpeggio <g c e g>4\arpeggio <e g c e>4\arpeggio <c e g c>4\arpeggio } \new Staff { \clef bass \repeat unfold 4 { <c,, e g c>4\arpeggio } } >>
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Creare degli arpeggi che attraversano i righi in altri contesti
Si possono creare arpeggi che attraversano i righi in contesti diversi da
GrandStaff
, PianoStaff
e StaffGroup
se l’incisore
Span_arpeggio_engraver
è incluso nel contesto Score
.
\score { \new ChoirStaff { \set Score.connectArpeggios = ##t << \new Voice \relative c' { <c e>2\arpeggio <d f>2\arpeggio <c e>1\arpeggio } \new Voice \relative c { \clef bass <c g'>2\arpeggio <b g'>2\arpeggio <c g'>1\arpeggio } >> } \layout { \context { \Score \consists "Span_arpeggio_engraver" } } }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Creating double-digit fingerings
Creating fingerings larger than 5 is possible.
\relative c' { c1-10 c1-50 c1-36 c1-29 }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Creating "real" parenthesized dynamics
Although the easiest way to add parentheses to a dynamic mark is to use
a \markup
block, this method has a downside: the created
objects will behave like text markups, and not like dynamics.
However, it is possible to create a similar object using the equivalent
Scheme code (as described in the Notation Reference), combined with the
make-dynamic-script
function. This way, the markup will be
regarded as a dynamic, and therefore will remain compatible with
commands such as \dynamicUp
or \dynamicDown
.
paren = #(define-event-function (dyn) (ly:event?) (make-dynamic-script #{ \markup \concat { \normal-text \italic \fontsize #2 ( \pad-x #0.2 #(ly:music-property dyn 'text) \normal-text \italic \fontsize #2 ) } #})) \relative c'' { c4\paren\f c c \dynamicUp c\paren\p }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Creating slurs across voices
In some situations, it may be necessary to create slurs between notes
from different voices. The solution is to add invisible notes to one of
the voices, using \hideNotes
.
This example is measure 235 of the Ciaconna from Bach’s 2nd Partita for solo violin, BWV 1004.
\relative c' { << { d16( a') s a s a[ s a] s a[ s a] } \\ { \slurUp bes,16[ s e]( \hideNotes a) \unHideNotes f[( \hideNotes a) \unHideNotes fis]( \hideNotes a) \unHideNotes g[( \hideNotes a) \unHideNotes gis]( \hideNotes a) } >> }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Creating text spanners
The \startTextSpan
and \stopTextSpan
commands allow the
creation of text spanners as easily as pedal indications or
octavations. Override some properties of the TextSpanner
object
to modify its output.
\paper { ragged-right = ##f } \relative c'' { \override TextSpanner.bound-details.left.text = #"bla" \override TextSpanner.bound-details.right.text = #"blu" a4 \startTextSpan b4 c a4 \stopTextSpan \override TextSpanner.style = #'line \once \override TextSpanner.bound-details.left.stencil-align-dir-y = #CENTER a4 \startTextSpan b4 c a4 \stopTextSpan \override TextSpanner.style = #'dashed-line \override TextSpanner.bound-details.left.text = \markup { \draw-line #'(0 . 1) } \override TextSpanner.bound-details.right.text = \markup { \draw-line #'(0 . -2) } \once \override TextSpanner.bound-details.right.padding = #-2 a4 \startTextSpan b4 c a4 \stopTextSpan \set Staff.middleCPosition = #-13 \override TextSpanner.dash-period = #10 \override TextSpanner.dash-fraction = #0.5 \override TextSpanner.thickness = #10 a4 \startTextSpan b4 c a4 \stopTextSpan }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Estensore testuale della dinamica personalizzato
Funzioni postfix per estensori testuali personalizzati del crescendo. Gli
estensori devono iniziare sulla prima nota della misura; e bisogna usare
-\mycresc
, altrimenti l’inizio dell’estensore viene assegnato alla
nota successiva.
% Two functions for (de)crescendo spanners where you can explicitly % give the spanner text. mycresc = #(define-music-function (mymarkup) (markup?) (make-music 'CrescendoEvent 'span-direction START 'span-type 'text 'span-text mymarkup)) mydecresc = #(define-music-function (mymarkup) (markup?) (make-music 'DecrescendoEvent 'span-direction START 'span-type 'text 'span-text mymarkup)) \relative c' { c4-\mycresc "custom cresc" c4 c4 c4 | c4 c4 c4 c4 | c4-\mydecresc "custom decresc" c4 c4 c4 | c4 c4\! c4 c4 }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Estensore testuale della dinamica personalizzato
Si possono definire estensori testuali personalizzati che fanno uso delle
forcine e dei crescendo testuali. \<
e \>
generano le
forcine, \cresc
etc. generano gli estensori testuali.
% Some sample text dynamic spanners, to be used as postfix operators crpoco = #(make-music 'CrescendoEvent 'span-direction START 'span-type 'text 'span-text "cresc. poco a poco") \relative c' { c4\cresc d4 e4 f4 | g4 a4\! b4\crpoco c4 | c4 d4 e4 f4 | g4 a4\! b4\< c4 | g4\dim a4 b4\decresc c4\! }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Glissandi can skip grobs
NoteColumn
grobs can be skipped over by glissandi.
\relative c' { a2 \glissando \once \override NoteColumn.glissando-skip = ##t f''4 d, }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Hairpins with different line styles
Hairpins can take any style from line-interface
- dashed-line,
dotted-line, line, trill or zigzag.
\relative c' { c2\< c\! \override Hairpin.style = #'dashed-line c2\< c\! \override Hairpin.style = #'dotted-line c2\< c\! \override Hairpin.style = #'line c2\< c\! \override Hairpin.style = #'trill c2\< c\! \override Hairpin.style = #'zigzag c2\< c\! \revert Hairpin.style c2\< c\! }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Nascondere la linea di estensione per le dinamiche testuali
I cambi di dinamica in stile testuale (come cresc. e dim.) appaiono con una linea tratteggiata che mostra la loro estensione. Questa linea può essere soppressa nel modo seguente:
\relative c'' { \override DynamicTextSpanner.style = #'none \crescTextCresc c1\< | d | b | c\! }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Horizontally aligning custom dynamics (e.g. "sempre pp", "piu f", "subito p")
Some dynamic expressions involve additional text, like “sempre pp”. Since dynamics are usually centered under the note, the \pp would be displayed way after the note it applies to.
To correctly align the “sempre pp” horizontally so that it is aligned as if it were only the \pp, there are several approaches:
-
Simply use
\once\override DynamicText.X-offset = #-9.2
before the note with the dynamics to manually shift it to the correct position. Drawback: This has to be done manually each time you use that dynamic markup... -
Add some padding (
#:hspace 7.1
) into the definition of your custom dynamic mark so that after LilyPond center-aligns it, it is already correctly aligned. Drawback: The padding really takes up that space and does not allow any other markup or dynamics to be shown in that position. -
Shift the dynamic script
\once\override ... .X-offset = ...
. Drawback:\once\override
is needed for every invocation! -
Set the dimensions of the additional text to 0 (using
#:with-dimensions '(0 . 0) '(0 . 0)
). Drawback: For LilyPond, “sempre” has no extent now. This means it might put other stuff there, causing collisions (which are not detected by LilyPond’s collision detection algorithm!). There also seems to be some spacing, so it is not exactly the same alignment as without the additional text. - Add an explicit shift directly inside the scheme function for the dynamic script.
-
Set an explicit alignment inside the dynamic script. By default, this
won’t have any effect, only if one sets
X-offset
! Drawback: One needs to setDynamicText.X-offset
, which will apply to all dynamic texts! Also, it is aligned at the right edge of the additional text, not at the center of \pp.
\paper { ragged-right = ##f indent = 2.5\cm } % Solution 1: Using a simple markup with a particular halign value % Drawback: It's a markup, not a dynamic command, so \dynamicDown % etc. will have no effect semppMarkup = \markup { \halign #1.4 \italic "sempre" \dynamic "pp" } % Solution 2: Using a dynamic script & shifting with % \once \override ...X-offset = .. % Drawback: \once \override needed for every invocation semppK = #(make-dynamic-script (markup #:line (#:normal-text #:italic "sempre" #:dynamic "pp"))) % Solution 3: Padding the dynamic script so the center-alignment % puts it at the correct position % Drawback: the padding really reserves the space, nothing else can be there semppT = #(make-dynamic-script (markup #:line (#:normal-text #:italic "sempre" #:dynamic "pp" #:hspace 7.1))) % Solution 4: Dynamic, setting the dimensions of the additional text to 0 % Drawback: To lilypond "sempre" has no extent, so it might put % other stuff there => collisions % Drawback: Also, there seems to be some spacing, so it's not exactly the % same alignment as without the additional text semppM = #(make-dynamic-script (markup #:line (#:with-dimensions '(0 . 0) '(0 . 0) #:right-align #:normal-text #:italic "sempre" #:dynamic "pp"))) % Solution 5: Dynamic with explicit shifting inside the scheme function semppG = #(make-dynamic-script (markup #:hspace 0 #:translate '(-18.85 . 0) #:line (#:normal-text #:italic "sempre" #:dynamic "pp"))) % Solution 6: Dynamic with explicit alignment. This has only effect % if one sets X-offset! % Drawback: One needs to set DynamicText.X-offset! % Drawback: Aligned at the right edge of the additional text, % not at the center of pp semppMII = #(make-dynamic-script (markup #:line (#:right-align #:normal-text #:italic "sempre" #:dynamic "pp"))) \new StaffGroup << \new Staff = "s" \with { instrumentName = \markup \column { Normal } } << \relative c'' { \key es \major c4\pp c\p c c | c\ff c c\pp c } >> \new Staff = "sMarkup" \with { instrumentName = \markup \column { Normal markup } } << \relative c'' { \key es \major c4-\semppMarkup c\p c c | c\ff c c-\semppMarkup c } >> \new Staff = "sK" \with { instrumentName = \markup \column { Explicit shifting } } << \relative c'' { \key es \major \once \override DynamicText.X-offset = #-9.2 c4\semppK c\p c c c4\ff c \once \override DynamicText.X-offset = #-9.2 c4\semppK c } >> \new Staff = "sT" \with { instrumentName = \markup \column { Right padding } } << \relative c'' { \key es \major c4\semppT c\p c c | c\ff c c\semppT c } >> \new Staff = "sM" \with { instrumentName = \markup \column { Set dimension "to zero" } } << \relative c'' { \key es \major c4\semppM c\p c c | c\ff c c\semppM c } >> \new Staff = "sG" \with { instrumentName = \markup \column { Shift inside dynamics} } << \relative c'' { \key es \major c4\semppG c\p c c | c\ff c c\semppG c } >> \new Staff = "sMII" \with { instrumentName = \markup \column { Alignment inside dynamics } } << \relative c'' { \key es \major % Setting to ##f (false) gives the same result \override DynamicText.X-offset = #0 c4\semppMII c\p c c | c\ff c c\semppMII c } >> >> \layout { \override Staff.InstrumentName.self-alignment-X = #LEFT }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Inserire una cesura
I segni di cesura possono essere creati sovrascrivendo la proprietà 'text
dell’oggetto BreathingSign
. È disponibile anche un segno di cesura
curvo.
\relative c'' { \override BreathingSign.text = \markup { \musicglyph "scripts.caesura.straight" } c8 e4. \breathe g8. e16 c4 \override BreathingSign.text = \markup { \musicglyph "scripts.caesura.curved" } g8 e'4. \breathe g8. e16 c4 }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Laissez vibrer ties
Laissez vibrer ties have a fixed size. Their formatting can be tuned
using 'tie-configuration
.
\relative c' { <c e g>4\laissezVibrer r <c f g>\laissezVibrer r <c d f g>4\laissezVibrer r <c d f g>4.\laissezVibrer r8 <c d e f>4\laissezVibrer r \override LaissezVibrerTieColumn.tie-configuration = #`((-7 . ,DOWN) (-5 . ,DOWN) (-3 . ,UP) (-1 . ,UP)) <c d e f>4\laissezVibrer r }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Line arrows
Arrows can be applied to text-spanners and line-spanners (such as the Glissando).
\relative c'' { \override TextSpanner.bound-padding = #1.0 \override TextSpanner.style = #'line \override TextSpanner.bound-details.right.arrow = ##t \override TextSpanner.bound-details.left.text = #"fof" \override TextSpanner.bound-details.right.text = #"gag" \override TextSpanner.bound-details.right.padding = #0.6 \override TextSpanner.bound-details.right.stencil-align-dir-y = #CENTER \override TextSpanner.bound-details.left.stencil-align-dir-y = #CENTER \override Glissando.bound-details.right.arrow = ##t \override Glissando.arrow-length = #0.5 \override Glissando.arrow-width = #0.25 a8\startTextSpan gis a4 b\glissando b, g'4 c\stopTextSpan c2 }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Legature di portamento con complesse strutture di tratteggio
Le legature di portamento possono avere schemi di tratteggio complessi
definendo la proprietà dash-definition
. dash-definition
è
una lista di dash-elements
. Un dash-element
è una lista
di parametri che definiscono il comportamento del tratteggio per un
segmento della legatura.
La legatura di portamento è definita come il parametro t della curva di
bezier che va da 0 sul margine sinistro della legatura fino a 1 su quello
destro. dash-element
è una lista di (inizio-t fine-t frazione-trattino
punto-trattino)
. La regione della legatura di portamento che va da inizio-t
a
fine-t
avrà una frazione frazione-trattino
di ogni
punto-trattino
nero. punto-trattino
viene definito in spazi
rigo. frazione-trattino
è impostato su 1 per una legatura di portamento
continua.
\relative c' { \once \override Slur.dash-definition = #'((0 0.3 0.1 0.75) (0.3 0.6 1 1) (0.65 1.0 0.4 0.75)) c4( d e f) \once \override Slur.dash-definition = #'((0 0.25 1 1) (0.3 0.7 0.4 0.75) (0.75 1.0 1 1)) c4( d e f) }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Modificare i valori predefiniti per le abbreviazioni delle articolazioni
Le abbreviazioni sono definite in ‘ly/script-init.ly’, dove sono
assegnati valori predefiniti alle variabili dashHat
, dashPlus
,
dashDash
, dashBang
, dashLarger
, dashDot
e
dashUnderscore
. Questi valori predefiniti possono essere
modificati. Ad esempio, per associare l’abbreviazione -+
(dashPlus
)
al simbolo del trillo invece che al simbolo + predefinito, si assegna il
valore trill
alla variabile dashPlus
:
\relative c'' { c1-+ } dashPlus = \trill \relative c'' { c1-+ }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Moving slur positions vertically
The vertical position of a slur can be adjusted using the
positions
property of Slur
. The property has 2
parameters, the first referring to the left end of the slur and the
second to the right. The values of the parameters are not used by
LilyPond to make an exact movement of the slur - instead it selects
what placement of the slur looks best, taking into account the
parameter values. Positive values move the slur up, and are
appropriate for notes with stems down. Negative values move downward
slurs further down.
\relative c' { \stemDown e4( a) \override Slur.positions = #'(1 . 1) e4( a) \override Slur.positions = #'(2 . 2) e4( a) \override Slur.positions = #'(3 . 3) e4( a) \override Slur.positions = #'(4 . 4) e4( a) \override Slur.positions = #'(5 . 5) e4( a) \override Slur.positions = #'(0 . 5) e4( a) \override Slur.positions = #'(5 . 0) e4( a) \stemUp \override Slur.positions = #'(-5 . -5) e4( a) \stemDown \revert Slur.positions e4( a) }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Spostare le estremità delle forcelle
Le estremità delle forcelle possono essere spostate in modo relativo alla
loro posizione predefinita (offset) impostando la proprietà shorten-pair
dell’oggetto Hairpin
. Valori positivi spostano le estremità a
destra, valori negativi le spostano a sinistra. Diversamente dalla
proprietà minimum-length
, questa proprietà modifica solo l’aspetto
della forcella; non cambia la spaziatura orizzontale (inclusa la posizione
delle dinamiche confinanti). Questo metodo è quindi utile per ritoccare
una forcella entro lo spazio ad essa allocato.
{ c'1~\< c'2~ c'\! \once \override Hairpin.shorten-pair = #'(2 . 2) c'1~\< c'2~ c'\! \once \override Hairpin.shorten-pair = #'(-2 . -2) c'1~\< c'2~ c'\! c'1~\p-\tweak shorten-pair #'(2 . 0)\< c'2~ c'\ffff }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Positioning arpeggios
If you need to extend or shorten an arpeggio, you can modify the upper and lower start positions independently.
\relative c' { <c e g b>1\arpeggio \once \override Arpeggio.positions = #'(-5 . 0) <c e g b>1\arpeggio \once \override Arpeggio.positions = #'(0 . 5) <c e g b>1\arpeggio \once \override Arpeggio.positions = #'(-5 . 5) <c e g b>1\arpeggio }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Posizionare il testo a margine dentro le legature di portamento
I testi a margine devono avere la proprietà outside-staff-priority
impostata su false per poter apparire dentro le legature di portamento.
\relative c'' { \override TextScript.avoid-slur = #'inside \override TextScript.outside-staff-priority = ##f c2(^\markup { \halign #-10 \natural } d4.) c8 }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Stampare le forcelle in vari stili
Il segno di dinamica della forcella può avere diversi stili
\relative c'' { \override Hairpin.stencil = #flared-hairpin a4\< a a a\f a4\p\< a a a\ff a4\sfz\< a a a\! \override Hairpin.stencil = #constante-hairpin a4\< a a a\f a4\p\< a a a\ff a4\sfz\< a a a\! \override Hairpin.stencil = #flared-hairpin a4\> a a a\f a4\p\> a a a\ff a4\sfz\> a a a\! \override Hairpin.stencil = #constante-hairpin a4\> a a a\f a4\p\> a a a\ff a4\sfz\> a a a\! }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Forcelle con notazione al niente
Le forcelle di dinamica possono essere rappresentate con ua punta
tonda (notazione “al niente”) impostando la proprietà circled-tip
dell’oggetto Hairpin
su #t
.
\relative c'' { \override Hairpin.circled-tip = ##t c2\< c\! c4\> c\< c2\! }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Posizionare il metronomo e i numeri di chiamata sotto il rigo
Di norma, il metronomo e i numeri di chiamata vengono posizionati sopra il
rigo. Per metterli sotto il rigo basta impostare correttamente la proprietà
direction
di MetronomeMark
o RehearsalMark
.
\layout { indent = 0 ragged-right = ##f } { % Metronome marks below the staff \override Score.MetronomeMark.direction = #DOWN \tempo 8. = 120 c''1 % Rehearsal marks below the staff \override Score.RehearsalMark.direction = #DOWN \mark \default c''1 }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Impostare il comportamento delle forcelle sulle stanghette
Se la nota che termina una forcella si trova sul primo battito di una
battuta, la forcella si ferma prima della stanghetta che precede la
nota. Si può controllare questo comportamento modificando la
proprietà 'to-barline
.
\relative c'' { e4\< e2. e1\! \override Hairpin.to-barline = ##f e4\< e2. e1\! }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Impostare la lunghezza minima delle forcelle
Se le forcelle sono troppo corte, possono essere allungate modificando
la proprietà minimum-length
dell’oggetto Hairpin
.
<< { \after 4 \< \after 2 \> \after 2. \! f'1 \override Hairpin.minimum-length = #8 \after 4 \< \after 2 \> \after 2. \! f'1 } { \repeat unfold 8 c'4 } >>
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Showing the same articulation above and below a note or chord
By default, LilyPond does not allow the same articulation (e.g., an
accent, a fermata, a flageolet, etc.) to be displayed above and below a
note. For example, c4_\fermata^\fermata
only shows a fermata
below. The fermata above gets simply ignored.
However, one can stick scripts (just like fingerings) inside a chord,
which means it is possible to have as many articulations as desired.
This approach has the advantage that it ignores the stem and positions
the articulation relative to the note head. This can be seen in the
case of the flageolets in the snippet. To mimic the behaviour of
scripts outside a chord, 'add-stem-support
would be required.
The solution is thus to write the note as a chord and add the
articulations inside of <...>
, using the direction modifiers
^
and _
as appropriate.
\relative c' { <>^"Wrong" c2_\fermata^\fermata % The second fermata is ignored! <e d'>2^\flageolet_\flageolet \stopStaff s1 \startStaff <>^"Works if written inside a chord" <e_\flageolet d'^\flageolet>2 <e_\flageolet d'^\flageolet>2 <e_\flageolet^\flageolet>2 <e_\fermata^\fermata>2 }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Snap-pizzicato or Bartok pizzicato
A snap-pizzicato (also known as “Bartok pizzicato”) is a “strong pizzicato where the string is plucked vertically by snapping and rebounds off the fingerboard of the instrument” (Wikipedia). It is denoted by a circle with a vertical line going from the center upwards outside the circle.
\relative c' { c4\snappizzicato <c' e g>4\snappizzicato <c' e g>4^\snappizzicato <c, e g>4_\snappizzicato }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Usare un segno di spunta come simbolo di respiro
La musica vocale e per fiati usa frequentemente il segno di spunta come segno di respiro. Questo indica un respiro che sottrae un po’ di tempo alla nota precedente invece di prendere una piccola pausa, indicata dal segno di respiro rappresentato dalla virgola. Il segno può essere spostato un po’ su per allontanarlo dal rigo.
\relative c'' { c2 \breathe d2 \override BreathingSign.Y-offset = #2.6 \override BreathingSign.text = \markup { \musicglyph "scripts.tickmark" } c2 \breathe d2 }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Usare arpeggioBracket per rendere i divisi più visibili
Si può usare arpeggioBracket
per indicare la divisione delle
voci quando non ci sono gambi che forniscano questa informazione. Questo
caso è frequente nella musica corale.
\include "english.ly" \score { \relative c'' { \key a \major \time 2/2 << \new Voice = "upper" << { \voiceOne \arpeggioBracket a2( b2 <b d>1\arpeggio) <cs e>\arpeggio ~ <cs e>4 } \addlyrics { \lyricmode { A -- men. } } >> \new Voice = "lower" { \voiceTwo a1 ~ a a ~ a4 \bar "|." } >> } \layout { ragged-right = ##t } }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Uso delle doppie legature di portamento per gli accordi legati
Alcuni compositori scrivono due legature di portamento per indicare gli
accordi legati. Si può ottenere questo risultato impostando doubleSlurs
.
\relative c' { \set doubleSlurs = ##t <c e>4( <d f> <c e> <d f>) }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Uso della proprietà whiteout
Qualsiasi oggetto grafico può essere posizionato sopra uno sfondo
bianco per mascherare parti degli oggetti che si trovano sotto.
Ciò può essere utile per migliorare l’aspetto delle collisioni in
situazioni complesse in cui il riposizionamento degli oggetti è
troppo difficile. Bisogna impostare esplicitamente la proprietà
layer
(livello) per controllare quali oggetti debbano essere
mascherati dallo sfondo bianco.
In questo esempio la collisione della legatura di valore con l’indicazione
di tempo viene migliorata mascherando la parte della legatura che incrocia
l’indicazione di tempo impostando la proprietà whiteout
di
TimeSignature
. Per farlo si sposta TimeSignature
su un
livello superiore a Tie
, che viene lasciato al livello predefinito 1;
e StaffSymbol
viene spostato su un livello superiore a TimeSignature
in modo che non venga mascherato.
{ \override Score.StaffSymbol.layer = #4 \override Staff.TimeSignature.layer = #3 b'2 b'~ \once \override Staff.TimeSignature.whiteout = ##t \time 3/4 b' r4 }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ > ] |
Vertical line as a baroque articulation mark
This short vertical line placed above the note is commonly used in baroque music. Its meaning can vary, but generally indicates notes that should be played with more “weight”. The following example demonstrates how to achieve such a notation.
upline = \tweak stencil #(lambda (grob) (grob-interpret-markup grob #{ \markup \draw-line #'(0 . 1) #})) \stopped \relative c' { a'4^\upline a( c d')_\upline }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Repeats >> ] |
[ < ] | [ Su : Expressive marks ] | [ Repeats > ] |
Vertically aligning dynamics across multiple notes
Dynamics that occur at, begin on, or end on the same note will be
vertically aligned. To ensure that dynamics are aligned when they do
not occur on the same note, increase the staff-padding
property
of the DynamicLineSpanner
object.
\relative c' { \override DynamicLineSpanner.staff-padding = #4 c2\p f\mf g2\< b4\> c\! }
[ << Expressive marks ] | [Inizio][Contenuti] | [ Simultaneous notes >> ] |
[ < ] | [ Su : Top ] | [ > ] |
Repeats
[ << Repeats ] | [Inizio][Contenuti] | [ Simultaneous notes >> ] |
[ < Repeats ] | [ Su : Repeats ] | [ > ] |
Aggiungere le parentesi delle volte a altri righi
L’incisore Volta_engraver
risiede nel contesto Score
, quindi
le parentesi delle ripetizioni appaiono di norma soltanto sul rigo superiore.
Questo comportamento può essere modificato aggiungendo l’incisore
Volta_engraver
al contesto Staff
in cui si desidera
far apparire le parentesi; si veda anche il frammento “Volta multirigo”.
<< \new Staff { \repeat volta 2 { c'1 } \alternative { c' } } \new Staff { \repeat volta 2 { c'1 } \alternative { c' } } \new Staff \with { \consists "Volta_engraver" } { c'2 g' e' a' } \new Staff { \repeat volta 2 { c'1 } \alternative { c' } } >>
[ << Repeats ] | [Inizio][Contenuti] | [ Simultaneous notes >> ] |
[ < ] | [ Su : Repeats ] | [ > ] |
Centered measure numbers
Scores of large ensemble works often have bar numbers placed beneath
the system, centered horizontally on the measure’s extent. This
snippet shows how the Measure_counter_engraver
may be used to
simulate this notational practice. Here, the engraver has been added
to a Dynamics
context.
This snippet presents a legacy method: starting from LilyPond 2.23.3,
\set Score.centerBarNumbers = ##t
is enough.
\layout { \context { \Dynamics \consists #Measure_counter_engraver \override MeasureCounter.direction = #DOWN \override MeasureCounter.font-encoding = #'latin1 \override MeasureCounter.font-shape = #'italic % to control the distance of the Dynamics context from the staff: \override VerticalAxisGroup.nonstaff-relatedstaff-spacing.padding = #2 } \context { \Score \remove "Bar_number_engraver" } } pattern = \repeat unfold 7 { c'4 d' e' f' } \new StaffGroup << \new Staff { \pattern } \new Staff { \pattern } \new Dynamics { \startMeasureCount s1*7 \stopMeasureCount } >>
[ << Repeats ] | [Inizio][Contenuti] | [ Simultaneous notes >> ] |
[ < ] | [ Su : Repeats ] | [ > ] |
Changing the default bar lines
Default bar lines can be changed when re-defined in a score context.
% http://lsr.di.unimi.it/LSR/Item?id=964 %%=> http://lists.gnu.org/archive/html/lilypond-user/2014-03/msg00126.html %%=> http://lilypond.1069038.n5.nabble.com/Changing-the-default-end-repeat-bracket-tc169357.html \layout { \context { \Score %% Changing the defaults from engraver-init.ly measureBarType = #"!" startRepeatBarType = #"[|:" endRepeatBarType = #":|]" doubleRepeatBarType = #":|][|:" } } %% example: { c'1 \repeat volta 2 { \repeat unfold 2 c' } \repeat volta 2 { \repeat unfold 2 c' } \alternative { { c' } { %% v2.18 workaround \once\override Score.VoltaBracket.shorten-pair = #'(1 . -1) c' } } \bar "|." }
[ << Repeats ] | [Inizio][Contenuti] | [ Simultaneous notes >> ] |
[ < ] | [ Su : Repeats ] | [ > ] |
Tremoli attraverso i righi
Dato che \repeat tremolo
si aspetta esattamente due argomenti musicali per
i tremoli di accordi, la nota o l’accordo che cambiano rigo in un tremolo che
attraversa i righi devono essere posti tra parentesi graffe insieme al
comando \change Staff
.
\new PianoStaff << \new Staff = "up" \relative c'' { \key a \major \time 3/8 s4. } \new Staff = "down" \relative c'' { \key a \major \time 3/8 \voiceOne \repeat tremolo 6 { <a e'>32 { \change Staff = "up" \voiceTwo <cis a' dis>32 } } } >>
[ << Repeats ] | [Inizio][Contenuti] | [ Simultaneous notes >> ] |
[ < ] | [ Su : Repeats ] | [ > ] |
Engraving tremolos with floating beams
If a tremolo’s total duration is less than a quarter-note, or exactly a
half-note, or between a half-note and a whole-note, it is normally
typeset with all beams touching the stems. Certain engraving styles
typeset some of these beams as centered floating beams that do not
touch the stems. The number of floating beams in this type of tremolo
is controlled with the 'gap-count
property of the Beam
object, and the size of the gaps between beams and stems is set with
the 'gap
property.
\relative c'' { \repeat tremolo 8 { a32 f } \override Beam.gap-count = #1 \repeat tremolo 8 { a32 f } \override Beam.gap-count = #2 \repeat tremolo 8 { a32 f } \override Beam.gap-count = #3 \repeat tremolo 8 { a32 f } \override Beam.gap-count = #3 \override Beam.gap = #1.33 \repeat tremolo 8 { a32 f } \override Beam.gap = #1 \repeat tremolo 8 { a32 f } \override Beam.gap = #0.67 \repeat tremolo 8 { a32 f } \override Beam.gap = #0.33 \repeat tremolo 8 { a32 f } }
[ << Repeats ] | [Inizio][Contenuti] | [ Simultaneous notes >> ] |
[ < ] | [ Su : Repeats ] | [ > ] |
Ripetizioni con segni di percentuale isolati
Si possono stampare anche segni di percentuale isolati.
makePercent = #(define-music-function (note) (ly:music?) "Make a percent repeat the same length as NOTE." (make-music 'PercentEvent 'length (ly:music-length note))) \relative c'' { \makePercent s1 }
[ << Repeats ] | [Inizio][Contenuti] | [ Simultaneous notes >> ] |
[ < ] | [ Su : Repeats ] | [ > ] |
Measure counter
This snippet provides a workaround for emitting measure counters using transparent percent repeats.
<< \context Voice = "foo" { \clef bass c4 r g r c4 r g r c4 r g r c4 r g r } \context Voice = "foo" { \set countPercentRepeats = ##t \hide PercentRepeat \override PercentRepeatCounter.staff-padding = #1 \repeat percent 4 { s1 } } >>
[ << Repeats ] | [Inizio][Contenuti] | [ Simultaneous notes >> ] |
[ < ] | [ Su : Repeats ] | [ > ] |
Numbering groups of measures
This snippet demonstrates the use of the
Measure_counter_engraver
to number groups of successive
measures. Any stretch of measures may be numbered, whether consisting
of repetitions or not.
The engraver must be added to the appropriate context. Here, a
Staff
context is used; another possibility is a Dynamics
context.
The counter is begun with \startMeasureCount
and ended with
\stopMeasureCount
. Numbering will start by default with
1
, but this behavior may be modified by overriding the
count-from
property.
When a measure extends across a line break, the number will appear twice, the second time in parentheses.
\layout { \context { \Staff \consists #Measure_counter_engraver } } \new Staff { \startMeasureCount \repeat unfold 7 { c'4 d' e' f' } \stopMeasureCount \bar "||" g'4 f' e' d' \override Staff.MeasureCounter.count-from = #2 \startMeasureCount \repeat unfold 5 { g'4 f' e' d' } g'4 f' \bar "" \break e'4 d' \repeat unfold 7 { g'4 f' e' d' } \stopMeasureCount }
[ << Repeats ] | [Inizio][Contenuti] | [ Simultaneous notes >> ] |
[ < ] | [ Su : Repeats ] | [ > ] |
Visibilità del conto della ripetizione con segno percentuale
I contatori della ripetizione con segno percentuale possono essere mostrati a
intervalli regolari impostando la proprietà di contesto repeatCountVisibility
.
\relative c'' { \set countPercentRepeats = ##t \set repeatCountVisibility = #(every-nth-repeat-count-visible 5) \repeat percent 10 { c1 } \break \set repeatCountVisibility = #(every-nth-repeat-count-visible 2) \repeat percent 6 { c1 d1 } }
[ << Repeats ] | [Inizio][Contenuti] | [ Simultaneous notes >> ] |
[ < ] | [ Su : Repeats ] | [ > ] |
Contatore della ripetizione con segno percentuale
Le ripetizioni di misura che hanno più di due ripetizioni possono avere un contatore se si cambia la proprietà opportuna, come mostra questo esempio:
\relative c'' { \set countPercentRepeats = ##t \repeat percent 4 { c1 } }
[ << Repeats ] | [Inizio][Contenuti] | [ Simultaneous notes >> ] |
[ < ] | [ Su : Repeats ] | [ > ] |
Positioning segno and coda (with line break)
If you want to place an exiting segno sign and add text like “D.S. al Coda” next to it where usually the staff lines are you can use this snippet. The coda will resume in a new line. There is a variation documented in this snippet, where the coda will remain on the same line.
{ \relative c'' { c4 c c c c c c c c c c c \repeat segno 2 { c4 c c c c c c c \alternative { \volta 1 { c4 c c c c c c c c c c c % If you don't use \break at Coda, use \noBreak here % and after \bar "" below. \noBreak \section % double bar line \cadenzaOn % pause bar count \stopStaff % remove staff lines % Increasing the unfold counter will expand the staff-free space \repeat unfold 6 { s1 \bar "" } % Place JumpScript where the staff would normally be. \once \override Score.JumpScript.outside-staff-priority = ##f \once \override Score.JumpScript.Y-offset = 0 \startStaff % resume bar count \cadenzaOff % show staff lines again } } } \sectionLabel "Coda" % Show Coda on a new line \break \repeat unfold 8 { c4 c c c } \fine } }
[ << Repeats ] | [Inizio][Contenuti] | [ Simultaneous notes >> ] |
[ < ] | [ Su : Repeats ] | [ > ] |
Impostare la doppia ripetizione predefinita per le volte
Esistono tre diversi stili di doppie ripetizioni per le volte, che si
possono impostare con doubleRepeatBarType
.
\relative c'' { \repeat volta 2 { c1 } \set Score.doubleRepeatBarType = #":..:" \repeat volta 2 { c1 } \set Score.doubleRepeatBarType = #":|.|:" \repeat volta 2 { c1 } \set