[Top][Contents] |
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 | 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 | 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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Top ] | [ Up : Top ] | [ Un ambitus per voce > ] |
Pitches
[ << Pitches ] | [Top][Contents] | [ Rhythms >> ] |
[ < Pitches ] | [ Up : Pitches ] | [ Aggiungere un segno di ottava a una sola voce > ] |
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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Un ambitus per voce ] | [ Up : Pitches ] | [ Teste di nota Aiken variante sottile > ] |
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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Aggiungere un segno di ottava a una sola voce ] | [ Up : Pitches ] | [ Altering the length of beamed stems > ] |
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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Teste di nota Aiken variante sottile ] | [ Up : Pitches ] | [ Ambitus > ] |
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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Altering the length of beamed stems ] | [ Up : Pitches ] | [ Ambitus dopo armatura di chiave > ] |
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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Ambitus ] | [ Up : Pitches ] | [ Ambitus su più voci > ] |
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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Ambitus dopo armatura di chiave ] | [ Up : Pitches ] | [ Applicazione degli stili delle teste di nota in base al grado della scala > ] |
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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Ambitus su più voci ] | [ Up : Pitches ] | [ Cambiare automaticamente la direzione del gambo della nota centrale in base alla melodia > ] |
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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Applicazione degli stili delle teste di nota in base al grado della scala ] | [ Up : Pitches ] | [ Changing ottava text > ] |
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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Cambiare automaticamente la direzione del gambo della nota centrale in base alla melodia ] | [ Up : Pitches ] | [ Modifica dell’intervallo dell’ambitus > ] |
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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Changing ottava text ] | [ Up : Pitches ] | [ Changing the interval of lines on the stave > ] |
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'' } \paper { tagline = ##f }
[ << Pitches ] | [Top][Contents] | [ Rhythms >> ] |
[ < Modifica dell’intervallo dell’ambitus ] | [ Up : Pitches ] | [ Clefs can be transposed by arbitrary amounts > ] |
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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Changing the interval of lines on the stave ] | [ Up : Pitches ] | [ Coloring notes depending on their pitch > ] |
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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Clefs can be transposed by arbitrary amounts ] | [ Up : Pitches ] | [ Creating a sequence of notes on various 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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Coloring notes depending on their pitch ] | [ Up : Pitches ] | [ Creating custom key signatures > ] |
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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Creating a sequence of notes on various pitches ] | [ Up : Pitches ] | [ Direction of merged ’fa’ shape note heads > ] |
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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Creating custom key signatures ] | [ Up : Pitches ] | [ Force a cancellation natural before accidentals > ] |
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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Direction of merged ’fa’ shape note heads ] | [ Up : Pitches ] | [ Forcing a clef symbol to be displayed > ] |
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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Force a cancellation natural before accidentals ] | [ Up : Pitches ] | [ Generating random notes > ] |
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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Forcing a clef symbol to be displayed ] | [ Up : Pitches ] | [ Nascondere le alterazioni delle note con legatura di valore > ] |
Generating random notes
This Scheme-based snippet generates random notes. Use as
\randomNotes
n
from
to
dur
to generate n random notes between pitches from and to, with duration dur.
randomNotes = #(define-music-function (n from to dur) (integer? ly:pitch? ly:pitch? ly:duration?) (let ((from-step (ly:pitch-steps from)) (to-step (ly:pitch-steps to))) (make-sequential-music (map (lambda (_) (let* ((step (+ from-step (random (- to-step from-step)))) (pitch (ly:make-pitch 0 step 0))) #{ $pitch $dur #})) (iota n))))) \randomNotes 24 c' g'' 8
[ << Pitches ] | [Top][Contents] | [ Rhythms >> ] |
[ < Generating random notes ] | [ Up : Pitches ] | [ Keep change clefs full sized > ] |
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 } \paper { tagline = ##f }
[ << Pitches ] | [Top][Contents] | [ Rhythms >> ] |
[ < Nascondere le alterazioni delle note con legatura di valore ] | [ Up : Pitches ] | [ Esempio di makam > ] |
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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Keep change clefs full sized ] | [ Up : Pitches ] | [ Modificare l’inclinazione dell’estensore dell’ottava > ] |
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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Esempio di makam ] | [ Up : Pitches ] | [ Armature di chiave non tradizionali > ] |
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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Modificare l’inclinazione dell’estensore dell’ottava ] | [ Up : Pitches ] | [ Numeri dentro le teste di nota > ] |
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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Armature di chiave non tradizionali ] | [ Up : Pitches ] | [ Modello per orchestra, coro e pianoforte > ] |
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) \paper { tagline = ##f } \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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Numeri dentro le teste di nota ] | [ Up : Pitches ] | [ Impedire l’inserimento automatico dei bequadri supplementari > ] |
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 } \header { tagline = ##f } 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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Modello per orchestra, coro e pianoforte ] | [ Up : Pitches ] | [ Impedire l’inserimento dei segni di bequadro quando cambia l’armatura di chiave > ] |
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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Impedire l’inserimento automatico dei bequadri supplementari ] | [ Up : Pitches ] | [ Quoting another voice with transposition > ] |
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 }
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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Quoting another voice with transposition ] | [ Up : Pitches ] | [ Trasposizione delle altezze con numero minimo di alterazioni > ] |
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. Each list describes
the default order of prefatory matter at the end, in the middle, and at
the beginning of a line, respectively. We are only interested in
changing the behaviour in the middle of a line.
If you look up the definition of break-align-orders
in
LilyPond’s Internal Reference (see the
BreakAlignment
grob), you get the following order in the second element:
... staff-bar key-cancellation key-signature ...
We want to change that, moving key-cancellation
before
staff-bar
. To make this happen we use the
grob-transformer
function, which gives us access to the original
vector as the second argument of the lambda function, here called
orig (we don’t need the first argument,
grob). We return a new vector, with unchanged first and
last elements. For the middle element, we first remove
key-cancellation
from the list, then adding it again before
staff-bar
.
#(define (insert-before where what lst) (cond ((null? lst) ; If the list is empty, (list what)) ; return a single-element list. ((eq? where (car lst)) ; If we find symbol `where`, (cons what lst)) ; insert `what` before curr. position. (else ; Otherwise keep building the list by (cons (car lst) ; adding the current element and ; recursing with the next element. (insert-before where what (cdr lst)))))) cancellationFirst = \override Score.BreakAlignment.break-align-orders = #(grob-transformer 'break-align-orders (lambda (grob orig) (let* ((middle (vector-ref orig 1)) (middle (delq 'key-cancellation middle)) (middle (insert-before 'staff-bar 'key-cancellation middle))) (vector ;; end of line (vector-ref orig 0) ;; middle of line middle ;; beginning of line (vector-ref orig 2))))) music = { \key es \major d'1 \bar "||" \key a \major d'1 } { <>^\markup "default" \music } { <>^\markup "cancellation first" \cancellationFirst \music } \paper { tagline = ##f }
[ << Pitches ] | [Top][Contents] | [ Rhythms >> ] |
[ < Separating key cancellations from key signature changes ] | [ Up : Pitches ] | [ Turkish Makam example > ] |
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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Trasposizione delle altezze con numero minimo di alterazioni ] | [ Up : Pitches ] | [ Modifiche manuali della proprietà della chiave > ] |
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 ] | [Top][Contents] | [ Rhythms >> ] |
[ < Turkish Makam example ] | [ Up : Pitches ] | [ Using autochange with more than one voice > ] |
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 } \paper { tagline = ##f }
[ << Pitches ] | [Top][Contents] | [ Rhythms >> ] |
[ < Modifiche manuali della proprietà della chiave ] | [ Up : 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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Using autochange with more than one voice ] | [ Up : Top ] | [ Adding beams, slurs, ties etc. when using tuplet and non-tuplet rhythms > ] |
Rhythms
[ << Rhythms ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Rhythms ] | [ Up : Rhythms ] | [ Adding drum parts > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Adding beams, slurs, ties etc. when using tuplet and non-tuplet rhythms ] | [ Up : Rhythms ] | [ Adjusting grace note spacing > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Adding drum parts ] | [ Up : Rhythms ] | [ Allineare i numeri di battuta > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Adjusting grace note spacing ] | [ Up : Rhythms ] | [ Note brevi alternative > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Allineare i numeri di battuta ] | [ Up : Rhythms ] | [ Appoggiatura or grace note before a bar line > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Note brevi alternative ] | [ Up : Rhythms ] | [ Automatic beam subdivisions > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Appoggiatura or grace note before a bar line ] | [ Up : Rhythms ] | [ Automatically change durations > ] |
Automatic beam subdivisions
Beams can be subdivided automatically. By setting the property
subdivideBeams
, beams are subdivided whenever possible. The
intervals and depth of subdivision can be limited with properties
minimumBeamSubdivisionInterval
and
maximumBeamSubdivisionInterval
respectively.
\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 \once \set minimumBeamSubdivisionInterval = \musicLength 8 b32^"minimumBeamSubdivisionInterval 1 8"[ a g f c' b a g] \once \set maximumBeamSubdivisionInterval = \musicLength 16 b32^"maximumBeamSubdivisionInterval 1 16"[ a g f c' b a g] } }
[ << Rhythms ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Automatic beam subdivisions ] | [ Up : Rhythms ] | [ Estremità delle travature nel contesto Score > ] |
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 tagline = ##f } music = \relative c'' { a1 b2 c4 d8 r } { \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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Automatically change durations ] | [ Up : Rhythms ] | [ Beam nibs > ] |
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.beatBase = #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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Estremità delle travature nel contesto Score ] | [ Up : Rhythms ] | [ Travature che attraversano le interruzioni di linea > ] |
Beam nibs
Beam nibs at the start and end of beams together with beams attached to
solitary notes that look like flat flags are possible with a
combination of stemLeftBeamCount
, stemRightBeamCount
, and
paired []
beam indicators.
For imitating right-pointing flat flags on lone notes, use paired
[]
beam indicators and set stemLeftBeamCount
to
zero. For imitating left-pointing flat flags on lone notes, set
stemRightBeamCount
to zero instead (line one).
For right-pointing nibs at the end of a run of beamed notes, set
stemRightBeamCount
to a positive value. For left-pointing nibs
at the start of a run of beamed notes, set stemLeftBeamCount
instead (line two).
Sometimes it may make sense for a lone note surrounded by rests to
carry both a left- and right-pointing nib. Do this with paired
[]
beam indicators alone (line three).
Note that \set stemLeftBeamCount
is always equivalent to
\once \set
. In other words, the beam count settings are not
“sticky”, so the pair of nibs attached to the lone 16th note in the
last example has nothing to do with the \set
command for the
beam before.
\score { << \new RhythmicStaff { \set stemLeftBeamCount = 0 c16[] r8. r8. \set stemRightBeamCount = 0 16[] } \new RhythmicStaff { 16 16 \set stemRightBeamCount = 2 16 r r \set stemLeftBeamCount = 2 16 16 16 } \new RhythmicStaff { 16 16 \set stemRightBeamCount = 2 16 r16 16[] r16 \set stemLeftBeamCount = 2 16 16 } >> }
[ << Rhythms ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Beam nibs ] | [ Up : Rhythms ] | [ Modificare la distanza delle travature angolari > ] |
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 } \paper { tagline = ##f }
[ << Rhythms ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Travature che attraversano le interruzioni di linea ] | [ Up : Rhythms ] | [ Modificare la forma delle pause multiple > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Modificare la distanza delle travature angolari ] | [ Up : Rhythms ] | [ Modifica del numero di punti di aumentazione per nota > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Modificare la forma delle pause multiple ] | [ Up : Rhythms ] | [ Modificare il tempo senza mostrare l’indicazione metronomica > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Modifica del numero di punti di aumentazione per nota ] | [ Up : Rhythms ] | [ Modifica del numero del gruppo irregolare > ] |
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 { } }
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Modifica del numero del gruppo irregolare ] | [ Up : Rhythms ] | [ Notazione per canti e salmi > ] |
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 = \musicLength 1*6/5 b8 b b b b b \time 2/4 \set Timing.measureLength = \musicLength 1*4/5 b4 b } } \new Staff { \clef bass \time 2/4 c2 d e f } >>
[ << Rhythms ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Changing time signatures inside a polymetric section using \scaleDurations ] | [ Up : Rhythms ] | [ Compound time signatures > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Notazione per canti e salmi ] | [ Up : Rhythms ] | [ Segni per la conduzione, segni di raggruppamento della misura > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Compound time signatures ] | [ Up : Rhythms ] | [ Consistently left-aligned bar numbers > ] |
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 beatBase
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 | \time 3,3,2 4/4 \set Timing.beatBase = #1/8 f4 d8 f4 d8 g4 } \layout { \context { \Staff \consists "Measure_grouping_engraver" } } }
Consistently left-aligned bar numbers
When left-aligning bar numbers, overlapping problems may occur with staff brackets.
The snippet solves this by keeping the first bar number right-aligned that follows a line break.
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 } \paper { tagline = ##f }
[ << Rhythms ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Consistently left-aligned bar numbers ] | [ Up : Rhythms ] | [ Cow and ride bell example > ] |
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 } } \paper { tagline = ##f }
[ << Rhythms ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Controllare la visibilità della parentesi del gruppo irregolare ] | [ Up : Rhythms ] | [ Creare indicazioni metronomiche in modalità testuale > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Cow and ride bell example ] | [ Up : Rhythms ] | [ Disegnare manualmente le legature di valore > ] |
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. } #UP " = " \smaller \general-align #Y #DOWN \note { 8 } #UP ) } } c1 c4 c' c,2 }
[ << Rhythms ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Creare indicazioni metronomiche in modalità testuale ] | [ Up : Rhythms ] | [ Engraving tremolos with floating beams > ] |
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' { <>^"default" g'1 ^~ g <>^"0" \once \override Tie.staff-position = 0 g1 ^~ g <>^"0.0" \once \override Tie.staff-position = 0.0 g1 ^~ g <>^"reset" \revert Tie.staff-position g1 ^~ g } \relative c' { \override TextScript.outside-staff-priority = ##f \override TextScript.padding = 0 <>^"default" <c e g>1~ <c e g> <>^"0, -2, -4" \override TieColumn.tie-configuration = #'((0 . 1) (-2 . 1) (-4 . 1)) <c e g>1~ <c e g> <>^"0.0, -2.0, -4.0" \override TieColumn.tie-configuration = #'((0.0 . 1) (-2.0 . 1) (-4.0 . 1)) <c e g>1~ <c e g> <>^"reset" \override TieColumn.tie-configuration = ##f <c e g>1~ <c e g> } \paper { tagline = ##f }
[ << Rhythms ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Disegnare manualmente le legature di valore ] | [ Up : Rhythms ] | [ Inserire vari gruppi irregolari usando una sola volta il comando \tuplet > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Engraving tremolos with floating beams ] | [ Up : Rhythms ] | [ Forcing rehearsal marks to start from a given letter or number > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Inserire vari gruppi irregolari usando una sola volta il comando \tuplet ] | [ Up : Rhythms ] | [ Generating custom flags > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Forcing rehearsal marks to start from a given letter or number ] | [ Up : Rhythms ] | [ Ritmi di accompagnamento per chitarra > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Generating custom flags ] | [ Up : Rhythms ] | [ Heavily customized polymetric time signatures > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Ritmi di accompagnamento per chitarra ] | [ Up : Rhythms ] | [ High and Low woodblock example > ] |
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 } \paper { tagline = ##f }
[ << Rhythms ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Heavily customized polymetric time signatures ] | [ Up : Rhythms ] | [ Making an object invisible with the ’transparent property > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < High and Low woodblock example ] | [ Up : Rhythms ] | [ Legature di portamento con complesse strutture di tratteggio > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Making an object invisible with the ’transparent property ] | [ Up : Rhythms ] | [ Manually controlling beam positions > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Legature di portamento con complesse strutture di tratteggio ] | [ Up : Rhythms ] | [ Merging multi-measure rests in a polyphonic part > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Manually controlling beam positions ] | [ Up : Rhythms ] | [ Modifying tuplet bracket length > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Merging multi-measure rests in a polyphonic part ] | [ Up : Rhythms ] | [ Spostare le note puntate in polifonia > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Modifying tuplet bracket length ] | [ Up : Rhythms ] | [ Regolazione della lunghezza delle pause multiple > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Spostare le note puntate in polifonia ] | [ Up : Rhythms ] | [ Testo a margine delle pause multiple > ] |
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 } \paper { tagline = ##f }
[ << Rhythms ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Regolazione della lunghezza delle pause multiple ] | [ Up : Rhythms ] | [ Numeri non predefiniti per i gruppi irregolari > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Testo a margine delle pause multiple ] | [ Up : Rhythms ] | [ Numbering single measure rests > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Numeri non predefiniti per i gruppi irregolari ] | [ Up : Rhythms ] | [ Partcombine and \autoBeamOff > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Numbering single measure rests ] | [ Up : Rhythms ] | [ Percussion example > ] |
Partcombine and \autoBeamOff
The function of \autoBeamOff
when used with
\partCombine
can be difficult to understand. It may be
preferable to use
\set Staff.autoBeaming = ##f
instead to ensure that auto-beaming is turned off for the entire staff. Use this at a spot in your score where no beam generated by the auto-beamer is still active.
Internally, \partCombine
works with four voices – stem up
single, stem down single, combined, and solo. In order to use
\autoBeamOff
to stop all auto-beaming when used with
\partCombine
, it is necessary to use four calls to
\autoBeamOff
.
{ % \set Staff.autoBeaming = ##f % turns off all auto-beaming \partCombine { \autoBeamOff % applies to split up-stems \repeat unfold 4 a'16 % \autoBeamOff % applies to combined stems \repeat unfold 4 a'8 \repeat unfold 4 a'16 % \autoBeamOff % applies to solo \repeat unfold 4 a'16 r4 } { % \autoBeamOff % applies to split down-stems \repeat unfold 4 f'8 \repeat unfold 8 f'16 | r4 \repeat unfold 4 a'16 } }
[ << Rhythms ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Partcombine and \autoBeamOff ] | [ Up : Rhythms ] | [ Consentire l’interruzione del rigo all’interno di gruppi irregolari con travature > ] |
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))) \paper { tagline = ##f } 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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Percussion example ] | [ Up : Rhythms ] | [ Positioning grace note beams at the height of normal note beams > ] |
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.
\paper { tagline = ##f } \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 }
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Positioning grace note beams at the height of normal note beams ] | [ Up : Rhythms ] | [ Posizionamento delle pause multiple > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Posizionare gli abbellimenti con dello spazio fluttuante ] | [ Up : Rhythms ] | [ Positioning opposing fermatas on a bar line > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Posizionamento delle pause multiple ] | [ Up : Rhythms ] | [ Preventing final mark from removing final tuplet > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Positioning opposing fermatas on a bar line ] | [ Up : Rhythms ] | [ Mostrare i numeri di battuta a intervalli regolari > ] |
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. \paper { tagline = ##f } \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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Preventing final mark from removing final tuplet ] | [ Up : Rhythms ] | [ Printing bar numbers for broken measures > ] |
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 } \paper { tagline = ##f }
[ << Rhythms ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Mostrare i numeri di battuta a intervalli regolari ] | [ Up : Rhythms ] | [ Numeri di battuta racchiusi in rettangoli o cerchi > ] |
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 } \paper { tagline = ##f }
[ << Rhythms ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Printing bar numbers for broken measures ] | [ Up : Rhythms ] | [ Printing bar numbers using modulo-bar-number-visible > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Numeri di battuta racchiusi in rettangoli o cerchi ] | [ Up : Rhythms ] | [ Stampare i numeri di battuta a intervalli regolari variabili > ] |
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 } \paper { tagline = ##f }
[ << Rhythms ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Printing bar numbers using modulo-bar-number-visible ] | [ Up : Rhythms ] | [ Posizionare il metronomo e i numeri di chiamata sotto il rigo > ] |
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 } \paper { tagline = ##f }
[ << Rhythms ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Stampare i numeri di battuta a intervalli regolari variabili ] | [ Up : Rhythms ] | [ Printing music with different time signatures > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Posizionare il metronomo e i numeri di chiamata sotto il rigo ] | [ Up : Rhythms ] | [ Mostrare il numero di battuta nella prima misura > ] |
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
Default_barline_engraver
and Timing_translator
are 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 tagline = ##f } 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 = \musicLength 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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Printing music with different time signatures ] | [ Up : Rhythms ] | [ Printing tuplet brackets on the note head side > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Mostrare il numero di battuta nella prima misura ] | [ Up : Rhythms ] | [ Ridefinire le impostazioni predefinite globali degli abbellimenti > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Printing tuplet brackets on the note head side ] | [ Up : Rhythms ] | [ Togliere i numeri di battuta da uno spartito > ] |
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 }
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 } \paper { tagline = ##f }
[ << Rhythms ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Togliere i numeri di battuta da uno spartito ] | [ Up : Rhythms ] | [ Stili di pausa > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Removing connecting bar lines on StaffGroup, PianoStaff, or GrandStaff ] | [ Up : Rhythms ] | [ Reverting default beam endings > ] |
Stili di pausa
Esistono vari stili di pausa.
restsA = { r\maxima r\longa r\breve r1 r2 r4 r8 r16 s32 s64 s128 s256 s512 s1024 s1024 } restsB = { r\maxima r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 r256 r512 r1024 s1024 } \new Staff \relative c { \omit Score.TimeSignature \cadenzaOn \override Staff.Rest.style = #'mensural <>^\markup \typewriter { mensural } \restsA \bar "" \break \override Staff.Rest.style = #'neomensural <>^\markup \typewriter { neomensural } \restsA \bar "" \break \override Staff.Rest.style = #'classical <>^\markup \typewriter { classical } \restsB \bar "" \break \override Staff.Rest.style = #'z <>^\markup \typewriter { z-style } \restsB \bar "" \break \override Staff.Rest.style = #'default <>^\markup \typewriter { default } \restsB \bar "" \break } \paper { indent = 0 tagline = ##f }
[ << Rhythms ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Stili di pausa ] | [ Up : Rhythms ] | [ Rhythmic slashes > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Reverting default beam endings ] | [ Up : Rhythms ] | [ Skips in lyric mode > ] |
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.
startPat = { \improvisationOn \omit Stem } stopPat = { \improvisationOff \undo \omit Stem } \new Voice \with { \consists Pitch_squash_engraver } { c'4 d' e' f' | \startPat 4 4 4 4 | \stopPat f'4 e' d' c' }
[ << Rhythms ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Rhythmic slashes ] | [ Up : Rhythms ] | [ Skips in lyric mode (2) > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Skips in lyric mode ] | [ Up : Rhythms ] | [ Stemlets > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Skips in lyric mode (2) ] | [ Up : Rhythms ] | [ Travatura che segue strettamente il battito > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Stemlets ] | [ Up : Rhythms ] | [ Suddividere le travature > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Travatura che segue strettamente il battito ] | [ Up : Rhythms ] | [ Tam-tam example > ] |
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 beatBase
, 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 beatBase
, 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 beatBase
cambia, anche
beatStructure
deve essere modificato per accordarsi con
beatBase
:
\relative c'' { c32[ c c c c c c c] \set subdivideBeams = ##t c32[ c c c c c c c] % Set minimum beam subdivision interval to 1/8 just for this beam \once \set minimumBeamSubdivisionInterval = \musicLength 8 c32[ c c c c c c c] % Set maximum beam subdivision interval to 1/16 just for this beam \once \set maximumBeamSubdivisionInterval = \musicLength 16 c32[ c c c c c c c] % Set maximum beam subdivision interval to 3/8 just for this beam \once \set maximumBeamSubdivisionInterval = \musicLength 8*3 [ \repeat unfold 16 c64 ] r2. % Set maximum beam subdivision interval to 1/64 to limit subdivision depth, % despite not being metrically correct \once \set minimumBeamSubdivisionInterval = \musicLength 32 \once \set maximumBeamSubdivisionInterval = \musicLength 64 [ \repeat unfold 32 c128 ] r2. % Shorten beam by 1/32 c32[ c c c c c c] r32 % Shorten beam by 3/32 c32[ c c c c] r16. % Respect the incomplete beams of the previous two examples \set respectIncompleteBeams = ##t c32[ c c c c c c] r32 % no visual change here as last two stems are exempt from this % special rule c32[ c c c c] r16. }
[ << Rhythms ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Suddividere le travature ] | [ Up : Rhythms ] | [ Tambourine example > ] |
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 } \paper { tagline = ##f }
[ << Rhythms ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Tam-tam example ] | [ Up : Rhythms ] | [ Three-sided box > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Tambourine example ] | [ Up : Rhythms ] | [ Time signature in brackets > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Three-sided box ] | [ Up : Rhythms ] | [ Time signature in parentheses > ] |
Time signature in brackets
The time signature can be enclosed within brackets.
\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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Time signature in brackets ] | [ Up : Rhythms ] | [ Indicazione di tempo che mostra solo il numeratore (invece della frazione) > ] |
Time signature in parentheses
Enclose the time signature in parentheses.
\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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Time signature in parentheses ] | [ Up : Rhythms ] | [ Modificare l’aspetto degli abbellimenti di un intero brano > ] |
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-number
,
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-number
) 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-number \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-number style only for the next time signature \once \override Staff.TimeSignature.style = #'single-number \time 5/4 c4 c c c c \time 2/4 c4 c }
[ << Rhythms ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Indicazione di tempo che mostra solo il numeratore (invece della frazione) ] | [ Up : Rhythms ] | [ User defined time signatures > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Modificare l’aspetto degli abbellimenti di un intero brano ] | [ Up : Rhythms ] | [ Using alternative flag styles > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < User defined time signatures ] | [ Up : Rhythms ] | [ Usare il gambo barrato degli abbellimenti con le teste normali > ] |
Using alternative flag styles
Alternative shapes for flags on eighth and shorter notes can be displayed by
overriding the stencil
property of Flag
. LilyPond provides
the following functions: modern-straight-flag
,
old-straight-flag
, and flat-flag
. Use \revert
to
restore the default shape.
To get stacked (i.e., vertically more compact) flags, call the command
\flagStyleStacked
, which can be reset with
\flagStyleDefault
.
Overriding the Flag
stencil does not change how flag elements are
positioned vertically. This is especially noticeable for flat flags:
LilyPond doesn’t dynamically adjust the vertical gaps between flag elements
in the same way as it does for beams. A possible solution to harmonize the
appearance is to replace flat flags with half beams, as shown in the second
staff; however, this can’t be done automatically. In the code of this
snippet, such half beams are entered with @
as a prefix, for example
@c8
.
Be aware that half beams are not Flag
grobs. This means in
particular that modifying Flag
properties won’t have any effect on
them (you have to use Beam
properties instead), and properties for
their associated Stem
grob will also behave beam-like.
"@" = #(define-music-function (music) (ly:music?) #{ \set stemLeftBeamCount = 0 $music [] #}) testnotes = { \autoBeamOff c8 d16 e''32 f64 \acciaccatura { g,,,8 } a128 b } \relative c' { \override TextScript.staff-padding = 6 \time 1/4 <>^"default" \testnotes \override Flag.stencil = #modern-straight-flag <>_"modern straight" \testnotes \override Flag.stencil = #old-straight-flag <>^"old straight" \testnotes \override Flag.stencil = #flat-flag <>_"flat" \testnotes \revert Flag.stencil \flagStyleStacked <>^"stacked" \testnotes \flagStyleDefault <>_"default" \testnotes } \relative c' { \time 3/4 \override Flag.stencil = #flat-flag <>^"flat" c8 c[ c] d16 d[ d] e''32 e[ e] f64 f[ f] \acciaccatura { g,,,8 } a128 a[ a a a a] <>^"beam-like" @c8 c[ c] @d16 d[ d] @e''32 e[ e] @f64 f[ f] \acciaccatura { g,,,8 } @a128 a[ a a a a] } \layout { indent = 0 \context { \Score \override NonMusicalPaperColumn.line-break-permission = ##f } }
[ << Rhythms ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Using alternative flag styles ] | [ Up : Rhythms ] | [ Usare le legature di valore con un arpeggio > ] |
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 ] | [Top][Contents] | [ Expressive marks >> ] |
[ < Usare il gambo barrato degli abbellimenti con le teste normali ] | [ Up : 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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Usare le legature di valore con un arpeggio ] | [ Up : Top ] | [ Adding beams, slurs, ties etc. when using tuplet and non-tuplet rhythms > ] |
Expressive marks
[ << Expressive marks ] | [Top][Contents] | [ Repeats >> ] |
[ < Expressive marks ] | [ Up : Expressive marks ] | [ Adding parentheses around an expressive mark or chordal note > ] |
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.\) }
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 ParenthesesItem
.
\relative c' { c2-\parenthesize -> \override Parentheses.padding = #0.1 \override Parentheses.font-size = #-4 <d \parenthesize f a>2 }
[ << Expressive marks ] | [Top][Contents] | [ Repeats >> ] |
[ < Adding parentheses around an expressive mark or chordal note ] | [ Up : Expressive marks ] | [ Adjusting slur positions vertically > ] |
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 | }
Adjusting slur positions vertically
Using \override Slur.positions
it is possible to set the
vertical position of the start and end points of a slur to absolute
values (or rather, forcing LilyPond’s slur algorithm to consider these
values as desired). In many cases, this means a lot of trial and error
until good values are found. You probably have tried the
\offset
command next just to find out that it doesn’t work for
slurs, emitting a warning instead.
The code in this snippet allows you to tweak the vertical start and end
positions by specifying relative changes, similar to
\offset
.
Syntax: \offsetPositions #'(dy1 . dy2)
offsetPositions = #(define-music-function (offsets) (number-pair?) #{ \once \override Slur.control-points = #(lambda (grob) (match-let ((((_ . y1) _ _ (_ . y2)) (ly:slur::calc-control-points grob)) ((off1 . off2) offsets)) (set! (ly:grob-property grob 'positions) (cons (+ y1 off1) (+ y2 off2))) (ly:slur::calc-control-points grob))) #}) \relative c'' { c4(^"default" c, d2) \offsetPositions #'(0 . 1) c'4(^"(0 . 1)" c, d2) \offsetPositions #'(0 . 2) c'4(^"(0 . 2)" c, d2) \bar "||" g4(^"default" a d'2) \offsetPositions #'(1 . 0) g,,4(^"(1 . 0)" a d'2) \offsetPositions #'(2 . 0) g,,4(^"(2 . 0)" a d'2) }
[ << Expressive marks ] | [Top][Contents] | [ Repeats >> ] |
[ < Adjusting slur positions vertically ] | [ Up : Expressive marks ] | [ Allineare le estremità delle forcelle alle direzioni di NoteColumn > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Cambiare la forma dei portamenti indeterminati verso il basso o verso l’alto ] | [ Up : Expressive marks ] | [ Note brevi alternative > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Allineare le estremità delle forcelle alle direzioni di NoteColumn ] | [ Up : Expressive marks ] | [ Asymmetric slurs > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Note brevi alternative ] | [ Up : Expressive marks ] | [ Breathing signs > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Asymmetric slurs ] | [ Up : Expressive marks ] | [ Broken Crescendo Hairpin > ] |
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.uupbow" } 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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Breathing signs ] | [ Up : Expressive marks ] | [ Caesura ("railtracks") with fermata > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Broken Crescendo Hairpin ] | [ Up : Expressive marks ] | [ Center text below hairpin dynamics > ] |
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 breath mark back to normal \revert BreathingSign.text c2. \breathe c4 \bar "|." }
[ << Expressive marks ] | [Top][Contents] | [ Repeats >> ] |
[ < Caesura ("railtracks") with fermata ] | [ Up : Expressive marks ] | [ Cambiare gli stili del testo e degli estensori per le dinamiche testuali > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Center text below hairpin dynamics ] | [ Up : Expressive marks ] | [ Changing the appearance of a slur from solid to dotted or dashed > ] |
Cambiare gli stili del testo e degli estensori 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 }
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) }
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Cambiare il simbolo del segno di respiro ] | [ Up : Expressive marks ] | [ Combining dynamics with markup texts > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Modifica del numero di punti di aumentazione per nota ] | [ Up : Expressive marks ] | [ Glissando contemporaneo > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Combining dynamics with markup texts ] | [ Up : Expressive marks ] | [ Controlling spanner visibility after a line break > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Glissando contemporaneo ] | [ Up : Expressive marks ] | [ Controllo dell’ordine verticale degli script > ] |
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 tagline = ##f } \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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Controlling spanner visibility after a line break ] | [ Up : Expressive marks ] | [ Creare un gruppetto ritardato > ] |
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 } \set fingeringOrientations = #'(up) <c-2 a-1>2 <a-1 c\tweak script-priority -100 -2>2 }
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Creare un gruppetto ritardato ] | [ Up : Expressive marks ] | [ Creare degli arpeggi che attraversano il rigo del pianoforte > ] |
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 } >> }
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Creare degli arpeggi che attraversano il rigo del pianoforte ] | [ Up : Expressive marks ] | [ Creating double-digit fingerings > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Creare degli arpeggi che attraversano i righi in altri contesti ] | [ Up : Expressive marks ] | [ Creating "real" parenthesized dynamics > ] |
Creating double-digit fingerings
Creating fingerings larger than 5 is possible.
\relative c' { c1-10 c1-50 c1-36 c1-29 }
[ << Expressive marks ] | [Top][Contents] | [ Repeats >> ] |
[ < Creating double-digit fingerings ] | [ Up : Expressive marks ] | [ Creating slurs across voices > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Creating "real" parenthesized dynamics ] | [ Up : Expressive marks ] | [ Creating text spanners > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Creating slurs across voices ] | [ Up : Expressive marks ] | [ Estensore testuale della dinamica personalizzato > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Creating text spanners ] | [ Up : Expressive marks ] | [ Estensore testuale della dinamica > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Estensore testuale della dinamica personalizzato ] | [ Up : Expressive marks ] | [ Glissandi can skip grobs > ] |
Estensore testuale della dinamica
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Estensore testuale della dinamica ] | [ Up : Expressive marks ] | [ Hairpins with different line styles > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Glissandi can skip grobs ] | [ Up : Expressive marks ] | [ Nascondere la linea di estensione per le dinamiche testuali > ] |
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\! }
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Nascondere la linea di estensione per le dinamiche testuali ] | [ Up : Expressive marks ] | [ Inserire una cesura > ] |
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 tagline = ##f } % 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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Horizontally aligning custom dynamics (e.g. "sempre pp", "piu f", "subito p") ] | [ Up : Expressive marks ] | [ Laissez vibrer ties > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Inserire una cesura ] | [ Up : Expressive marks ] | [ Line arrows > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Laissez vibrer ties ] | [ Up : Expressive marks ] | [ Legature di portamento con complesse strutture di tratteggio > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Line arrows ] | [ Up : Expressive marks ] | [ Modificare i valori predefiniti per le abbreviazioni delle articolazioni > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Legature di portamento con complesse strutture di tratteggio ] | [ Up : Expressive marks ] | [ Moving slur positions vertically > ] |
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
:
\paper { tagline = ##f } \relative c'' { c1-+ } dashPlus = \trill \relative c'' { c1-+ }
[ << Expressive marks ] | [Top][Contents] | [ Repeats >> ] |
[ < Modificare i valori predefiniti per le abbreviazioni delle articolazioni ] | [ Up : Expressive marks ] | [ Spostare le estremità delle forcelle > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Moving slur positions vertically ] | [ Up : Expressive marks ] | [ Positioning arpeggios > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Spostare le estremità delle forcelle ] | [ Up : Expressive marks ] | [ Posizionare il testo a margine dentro le legature di portamento > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Positioning arpeggios ] | [ Up : Expressive marks ] | [ Stampare le forcelle in vari stili > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Posizionare il testo a margine dentro le legature di portamento ] | [ Up : Expressive marks ] | [ Forcelle con notazione al niente > ] |
Stampare le forcelle in vari stili
Il segno di dinamica della forcella può avere diversi stili
\paper { tagline = ##f } \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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Stampare le forcelle in vari stili ] | [ Up : Expressive marks ] | [ Posizionare il metronomo e i numeri di chiamata sotto il rigo > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Forcelle con notazione al niente ] | [ Up : Expressive marks ] | [ Impostare il comportamento delle forcelle sulle stanghette > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Posizionare il metronomo e i numeri di chiamata sotto il rigo ] | [ Up : Expressive marks ] | [ Impostare la lunghezza minima delle forcelle > ] |
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\! }
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Impostare la lunghezza minima delle forcelle ] | [ Up : Expressive marks ] | [ Snap-pizzicato or Bartok pizzicato > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Showing the same articulation above and below a note or chord ] | [ Up : Expressive marks ] | [ Usare un segno di spunta come simbolo di respiro > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Snap-pizzicato or Bartok pizzicato ] | [ Up : Expressive marks ] | [ Usare arpeggioBracket per rendere i divisi più visibili > ] |
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 }
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Usare arpeggioBracket per rendere i divisi più visibili ] | [ Up : Expressive marks ] | [ Uso della proprietà whiteout > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Uso delle doppie legature di portamento per gli accordi legati ] | [ Up : Expressive marks ] | [ Vertical line as a baroque articulation mark > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Uso della proprietà whiteout ] | [ Up : Expressive marks ] | [ Vertically aligning dynamics across multiple notes > ] |
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 ] | [Top][Contents] | [ Repeats >> ] |
[ < Vertical line as a baroque articulation mark ] | [ Up : 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 ] | [Top][Contents] | [ Simultaneous notes >> ] |
[ < Vertically aligning dynamics across multiple notes ] | [ Up : Top ] | [ Aggiungere le parentesi delle volte a altri righi > ] |
Repeats
[ << Repeats ] | [Top][Contents] | [ Simultaneous notes >> ] |
[ < Repeats ] | [ Up : Repeats ] | [ Centered measure numbers > ] |
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 ] | [Top][Contents] | [ Simultaneous notes >> ] |
[ < Aggiungere le parentesi delle volte a altri righi ] | [ Up : Repeats ] | [ Changing the default bar lines > ] |
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 ] | [Top][Contents] | [ Simultaneous notes >> ] |
[ < Centered measure numbers ] | [ Up : Repeats ] | [ Controlling the appearance of tremolo slashes > ] |
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 ] | [Top][Contents] | [ Simultaneous notes >> ] |
[ < Changing the default bar lines ] | [ Up : Repeats ] | [ Tremoli attraverso i righi > ] |
Controlling the appearance of tremolo slashes
Using various properties of the StemTremolo
grob it is possible
to control the appearance of tremolo slashes.
- Property
slope
sets the slope for tremolo slashes. - Property
shape
determines whether tremolo slashes look like rectangles (valuerectangle
) or like very small beams (valuebeam-like
). - Property
style
sets both the slope and the shape depending on whether the note has flags, beams, or only a plain stem. This is in contrast to the previous two properties, which change the slope and shape unconditionally. There are two styles defined.-
default
: slashes for down-stem flags are longer and more sloped than slashes for up-stem flags; slashes on beamed notes have a rectangular shape and are parallel to the beam. -
constant
: all slashes are beam-like and have the same slope except for down-stem flags.
-
music = { a''4:32 a': e''8: \noBeam e': a'':[ a':] f':[ g':] d':[ d':] } \new Staff { <>^\markup "default" \music } \new Staff { <>^\markup \typewriter "style = #'constant" \override StemTremolo.style = #'constant \music } \new Staff { <>^\markup \typewriter "shape = #'rectangle" \override StemTremolo.shape = #'rectangle \music } \new Staff { <>^\markup \typewriter "shape = #'beam-like" \override StemTremolo.shape = #'beam-like \music } \new Staff { <>^\markup \typewriter "slope = -0.2" \override StemTremolo.slope = -0.2 \music } \paper { indent = 0 tagline = ##f }
[ << Repeats ] | [Top][Contents] | [ Simultaneous notes >> ] |
[ < Controlling the appearance of tremolo slashes ] | [ Up : Repeats ] | [ Engraving tremolos with floating beams > ] |
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 ] | [Top][Contents] | [ Simultaneous notes >> ] |
[ < Tremoli attraverso i righi ] | [ Up : Repeats ] | [ Ripetizioni con segni di percentuale isolati > ] |
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 ] | [Top][Contents] | [ Simultaneous notes >> ] |
[ < Engraving tremolos with floating beams ] | [ Up : Repeats ] | [ Measure counter > ] |
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 ] | [Top][Contents] | [ Simultaneous notes >> ] |
[ < Ripetizioni con segni di percentuale isolati ] | [ Up : Repeats ] | [ Numbering groups of measures > ] |
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 ] | [Top][Contents] | [ Simultaneous notes >> ] |
[ < Measure counter ] | [ Up : Repeats ] | [ Visibilità del conto della ripetizione con segno percentuale > ] |
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 } \paper { tagline = ##f }
[ << Repeats ] | [Top][Contents] | [ Simultaneous notes >> ] |
[ < Numbering groups of measures ] | [< |