Lilypond displays chords over every bar - lilypond

According to Lilypond's documentation, you can choose to only have chords displayed when they change. I cannot get this behaviour. Here is the snippet:
\new ChordNames {
\chordmode {
d1:7 d1:7
}
}
Here is the alternate snippet:
\new ChordNames {
\chordmode {
d1:7 d:7
}
}
In both cases Lilypond displays the chord names above both bars. This is the same throughout the score. I cannot get it to not display repeat chord names.
Any ideas?

You need to use \set chordChanges = ##t. Try this snippet:
\new ChordNames {
\chordmode {
\set chordChanges = ##t
d1:7 d1:7
}
}

I think you've missed to set chordChanges to true. The example in the LilyPond docs is:
1 harmonies = \chordmode {
2 c1:m c:m \break c:m c:m d
3 }
4 <<
5 \new ChordNames {
6 \set chordChanges = ##t
7 \harmonies
8 }
9 \new Staff {
10 \relative c' { \harmonies }
11 }
12 >>
In this example, line 6 is essential to display chords only on chord changes:
\set chordChanges = ##t
So, you need to add this command to your lilypond source code.

Related

Can I write generic music in Lilypond?

I have the same notes for two instruments (small and big drums: tommh and tomfh).
Is it possible to write a "generic" voice and use that for the two instruments with different notes (tommh and tommfh)?
\version "2.22.1"
\score {
\new StaffGroup <<
\new DrumStaff << \new DrumVoice = "Klein" \drummode { tommh4 tommh4 tommh4 tommh4 } >>
\new DrumStaff << \new DrumVoice = "Gross" \drummode { tomfh4 tomfh4 tomfh4 tomfh4 } >>
>>
}
I want to have something like this:
\version "2.22.1"
generic = \drummode { x4 x4 x4 x4 }
\score {
\new StaffGroup <<
\new DrumStaff << \new DrumVoice = "Klein" \drummode \generic[tommh] >>
\new DrumStaff << \new DrumVoice = "Gross" \drummode \generic[tomfh] >>
>>
}

How to tie notes on different staffs on lilypond

Sorry fot the confused title, i don't know how to write my question in english.
Basically I'm trying to write this on Lilypond,
and until now i managed to get this
How can I tie the notes on the lower staff?
This is the source code of the file
\version "2.20.0"
\language "espanol"
\score{
\new PianoStaff <<
\new Staff = "up" {
\relative do{
\clef G
\time 4/4
\numericTimeSignature
s1
\set tieWaitForNote = ##t
\grace {
\change Staff = "down"
fa,16~ [ re'~ fa~ si~
\change Staff = "up"
re~ fa~ si~ re~ si'~] }
\crossStaff { <re,, fa si re si'>1 }
}
}
\new Staff = "down" {
\relative do,{
\clef F
\time 4/4
\numericTimeSignature
s1
\crossStaff { <fa re' fa si>1 }
}
}
>>
\layout{
\context{
\PianoStaff
\consists #Span_stem_engraver
}
}
}
I'm new in stackoverflow so I can't post pictures.
Thanks for the help.
The Span_stem_engraver is of no help here. This solution adds five hidden grace notes in the "up" staff, tied to the chord. I have rewritten some details from your example for a more standard (and minimal) code.
\score{
\new PianoStaff <<
\new Staff = "up" {
{
\set tieWaitForNote = ##t
\hideNotes
\grace { s16 s s s d'~[ f'~ b'~ d''~ b''~] }
\unHideNotes
<d' f' b' d'' b''>1
}
}
\new Staff = "down" {
{
\clef bass
\set tieWaitForNote = ##t
\grace {
\voiceTwo f,16~ [ d f~ b~
\change Staff = "up"
d' f' b' d'' b'' ] }
\change Staff ="down"
<f, d f b>1
}
}
>>
}
I am not sure if this is the ideal solution, but here is a working example. Basically I removed the ties from the first notes of your grace notes, and I duplicated them in the bottom staff, hid their stems and beams so that only the noteheads show and tied them to the chord. The added chunk in the bottom staff is surrounded by some %%%%%%% so you can spot it more easily.
\version "2.20.0"
\language "espanol"
\score{
\new PianoStaff <<
\new Staff = "up" {
\relative do{
\clef G
\time 4/4
\numericTimeSignature
s1
\set tieWaitForNote = ##t
\grace {
\change Staff = "down"
fa,16 [ re' fa si
\change Staff = "up"
re~ fa~ si~ re~ si'~] }
\crossStaff { <re,, fa si re si'>1 }
}
}
\new Staff = "down" {
\relative do,{
\clef F
\time 4/4
\numericTimeSignature
s1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\set tieWaitForNote = ##t
\grace {
\stemDown
\omit Stem
\omit Beam
fa16~ re'~ fa~ si~ s s s s s
}
\stemNeutral
\undo \omit Stem
\undo \omit Beam
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\crossStaff { <fa, re' fa si>1 }
}
}
>>
\layout{
\context{
\PianoStaff
\consists #Span_stem_engraver
}
}
}

Lilypond score with reverse symbols

I am trying for weeks to to create a line with reverse symbols in Lilypond:
I know it is possible because i found it in a Lilypond generated pdf.
simpler is...
\version "2.18.2"
\include "english.ly"
\bookpart {
\header {
composer="J.S.Bach"
opus = "BWV 1087"}
\markup \large "1. Canon simplex"
\score {
\relative c' {
\key g \major
\clef bass
\time 2/4
r4 \repeat volta 2 {
g fs e d b c d g,4 }
\override TextScript #'extra-offset = #'(20 . 5.84)
s64-\markup{
\scale #'(-1 . 1)
\score {\relative {
\key g \major\clef bass\time 2/4 \global r4 }
}
}
}}}
I think this will do it... is however a lot of hand-adjustments...
\version "2.18.2"
\bookpart {
\header {
composer="J.S.Bach"
opus = "BWV 1087"}
\markup \large "1. Canon simplex"
\score {
\relative c' {
\key g \major
\clef bass
\time 2/4
r4 \repeat volta 2 { g fis e d b c d g, }
s8
\override Staff.BarLine #'stencil = ##f
% gespiegelt
s4
\override TextScript #'extra-offset = #'(-3 . 5.2)
s2-\markup{ %\hspace #10
\column{ % pause
\line{
\scale #'(-1 . 1){
\lower #1.5 \halign #0 \musicglyph #"rests.2"
}
}} \hspace #1
\column{ %clef
\line {
\scale #'(-1 . 1){
\center-column{
\lower #1.3 \musicglyph #"two" \musicglyph #"four"
}
}
}}
\column{ %clef
\line {
\scale #'(-1 . 1){
\musicglyph #"accidentals.sharp"
}
}}
\column{ %clef
\line {
\scale #'(-1 . 1){
\lower #0.2 \musicglyph #"clefs.F"
}
}}
}}}}

Cannot Find Voice

My code compiles, but with errors; It says:
warning: cannot find Voice `chorus'
chorusLyrics = \new Lyrics
\lyricsto "chorus" {
So I've minimized the entire code to just this:
\version "2.19.44"
\language "english"
\header {
title = "debug"
}
signature = {
\time 4/4
\key c \minor
\autoBeamOff
}
chorus = \new Voice = "chorus" \relative c'' {
\signature
<< { g f e f } \\ {e b e c } >>
}
chorusLyrics = \new Lyrics \lyricsto "chorus" {
This is de- bug
}
\score {
<<
\new Staff { \chorus }
\chorusLyrics
>>
}
The lilypond version is correct.
The output does not display the lyrics; I've spent hours trying to figure this out. The docs say you can use multiple voices this way. What am I doing wrong?
Here is a quote from the Learning.pdf document:
Here’s how we split the chords above into two voices and add both the
passing note and a slur: \key g \major % Voice "1" Voice "2" << { g4
fis8( g) a4 g } \\ { d4 d d d } >>
However, if I remove the \\ from between the curly brackets, everything compiles without a single problem - no errors at all.
There are two problems in your example.
First, you are trying to associate a lyric to a polyphonic passage and this is not possible as far as I know.
Second, the structure is not correct, see an example below which compiles fine.
\version "2.19.44"
\language "english"
\header {
title = "debug"
}
signature = {
\time 4/4
\key c \minor
\autoBeamOff
}
upper = \relative c'' {
\signature
g4 f e f
}
lower = \relative c' {
\signature
e4 b e c
}
chorusLyrics = \lyricmode {
This is de- bug
}
\score {
<<
\new Staff <<
\new Voice = "chorus" { \voiceOne \upper }
\new Voice { \voiceTwo \lower }
>>
\new Lyrics \lyricsto "chorus" { \chorusLyrics }
>>
}

LilyPond: markup text next to barline?

I'm working with a score with a ragged-last system, and I'd like to fit a markup column next to the score, thus filling the gap between the final barline and the margin. What are some ways of accomplishing this?
Example:
\paper {
ragged-last = ##t
}
\score {
\new Staff <<
\new Voice = "example" {
c4 d e f | g a b c
\bar "|."
}
>>
}
\markup {
\column {
\line { "Some text I want" }
\line { "next to the score" }
}
}
One way to do this would be to override BarLine stencil so that it will contain your markup:
\version "2.18.2"
barlineMarkup = \markup {
\whiteout
\pad-around #1
\vcenter
\column {
"Some text I want"
"next to the score"
}
}
customBarLine = {
\once \override Staff.BarLine #'stencil =
#(lambda (grob)
(ly:stencil-combine-at-edge
(ly:bar-line::print grob)
X RIGHT
(grob-interpret-markup grob barlineMarkup)
0))
}
{
\override Score.BarLine.layer = 1
c' d' e' c' \customBarLine \bar "|."
}