Running 2.23.7 on Linux

2022-03-27 Thread Kevin Pye
(OpenSUSE Leap 15.3 to be precise)

So I've downloaded 2.23.7 and untarred into ~/Software/lilypond-2.23.7, created 
a symbolic link from ~/Software/lilypond-2.23.7/bin/lilypond to ~/bin/lilypond, 
and get the following...

> ~/bin/lilypond --version 
GNU LilyPond 2.23.7 (running Guile 2.2) 

Copyright (c) 1996--2022 by 
Han-Wen Nienhuys  
Jan Nieuwenhuizen  
and others. 

This program is free software.  It is covered by the GNU General Public 
License and you are welcome to change it and/or distribute copies of it 
under certain conditions.  Invoke as `lilypond --warranty' for more 
information.

> ~/bin/lilypond x.ly 
GNU LilyPond 2.23.7 (running Guile 2.2) 
Uncaught exception: 
Throw to key misc-error with args ("primitive-load-path" "Unable to find file 
~S in load path" ("ice-9/boot-9") #f)Cannot exit gracefully when init is in 
progress; aborting. 
Aborted (core dumped)

(with the same result whether the file exists or not).

However...

> ~/Software/lilypond-2.23.7/bin/lilypond x.ly 
GNU LilyPond 2.23.7 (running Guile 2.2) 
warning: cannot find file: `x.ly' 
fatal error: failed files: "x.ly"

So it works if run directly from the installation directory, but not via a 
symbolic link.

Any ideas?

Kevin.

Re: Need help with \force-hshift or \shiftO... (off, on, onn, onnn, etc.)

2022-03-27 Thread Kevin Cole
On Sun, Mar 27, 2022 at 5:04 PM Carl Sorensen  wrote:
>
> On Sun, Mar 27, 2022 at 2:01 PM Kevin Cole  wrote:
>>
>> In my more-than-minimal example, the b16 from the first voice gets
>> merged with the b8. from the second voice. When I tried to create a
>> minimum (non-working) example, the two didn't merge. But, what I want
>> below is for the b8. from the first voice to merge with the b8. from
>> the second voice.
>>
>> In other words, it should look like b16 b8. g16 with the b8. in the
>> middle having stems going both directions.  Looking at examples that
>> were over my head, I attempted \override \once \force-hshift in
>> various places, but didn't accomplish anything.
>
>
> Kevin,
>
> If you want the heads to merge, they need to be at the same time step.
>
> I think you are misinterpreting the original music.  The original music has 
> two downstemmed notes (b natural sixteenth plus b natural eighth) at the same 
> time as one upstemmed note (b dotted eighth).
>
> To get the output in the image, just do this:
>
> \version "2.20.0"
> \language "english"
>
> \layout {
>   \autoBeamOff
> }
>
> global = {
>   \key ef \major
>   \time 4/4
> }
>
> melody = {
>   \relative {
> \global
> <<
>   { \voiceOne b'8. }
>   \new Voice
>   { \voiceTwo b16 b8 }
> >>
> \oneVoice
> a8 b8 c4 r8 d8
>   }
> }
>
> \score {
>   \new Staff { \melody }
> }


Ah. I think you're right. And, when I do what you suggested in the
minimal example, it works as described: Your example looks like the
image I sent. But when I inject it into the full score I get the
attached, which still merges the dotted eighth with the sixteenth at
the start of the measure.


Re: Chords from Fretboard Diagrams

2022-03-27 Thread Carl Sorensen
On Sun, Mar 27, 2022 at 4:09 PM Kieren MacMillan <
kie...@kierenmacmillan.info> wrote:

> Hi Valentin,
>
> > this is unrelated to ChordNames. Rather it just remaps chords
> > from \chordmode depending on Fretboards.
>
> I don't know how they interact exactly… Carl: Any comment on whether or
> not there's any intersection between Valentin's work and the GSoC work you
> did/mentored?
>

As far as I know, there is no interaction.

I think Valentin's work takes the pitches from the FretBoards and turns the
pitches in the FretBoards into chords on a regular staff.

Charles's GSOC work was to store the name of the chord such that one knew
what chord name was intended, especially in cases where there may be
alternate chordnames for the same pitches.

Carl


Re: Chords from Fretboard Diagrams

2022-03-27 Thread Kieren MacMillan
Hi Valentin,

> this is unrelated to ChordNames. Rather it just remaps chords 
> from \chordmode depending on Fretboards.

I don't know how they interact exactly… Carl: Any comment on whether or not 
there's any intersection between Valentin's work and the GSoC work you 
did/mentored?

Thanks,
Kieren.


Re: LilyPond 2.23.7 released

2022-03-27 Thread Jonas Hahnfeld via LilyPond user discussion
On Sun, 2022-03-27 at 21:39 +0200, Jonas Hahnfeld via LilyPond user
discussion wrote:
> I think I see where to fix this in Guile 2.2, let me try.

https://gitlab.com/lilypond/lilypond/-/merge_requests/1270 indeed fixes
it.


signature.asc
Description: This is a digitally signed message part


RE: Need help with \force-hshift or \shiftO... (off, on, onn, onnn, etc.)

2022-03-27 Thread Mark Stephen Mrotek
Kevin,

Form what I see, the voices are interchanged.
What is in voiceOne should be voiceTwo and vice versa.
See:
https://lilypond.org/doc/v2.22/Documentation/learning/i_0027m-hearing-voices
 

Mark

-Original Message-
From: lilypond-user [mailto:lilypond-user-bounces+carsonmark=ca.rr@gnu.org] 
On Behalf Of Kevin Cole
Sent: Sunday, March 27, 2022 1:01 PM
To: lilypond-user mailinglist 
Subject: Need help with \force-hshift or \shiftO... (off, on, onn, onnn, etc.)

In my more-than-minimal example, the b16 from the first voice gets merged with 
the b8. from the second voice. When I tried to create a minimum (non-working) 
example, the two didn't merge. But, what I want below is for the b8. from the 
first voice to merge with the b8. from the second voice.

In other words, it should look like b16 b8. g16 with the b8. in the middle 
having stems going both directions.  Looking at examples that were over my 
head, I attempted \override \once \force-hshift in various places, but didn't 
accomplish anything.

%
\version "2.20.0"
\language "english"

\layout {
  \autoBeamOff
}

global = {
  \key ef \major
  \time 4/4
}

melody = {
  \relative {
\global
<<
  { \voiceOne b'16 b8. }
  \new Voice
  { \voiceTwo b8. g16 }
>>
\oneVoice
a8 b8 c4 r8 d8
  }
}

\score {
  \new Staff { \melody }
}
%

P.S. I think I'm interpreting the attached image correctly, but I could be 
wrong about that. In any case, that's what I'm trying to achieve in LilyPond.




Re: Need help with \force-hshift or \shiftO... (off, on, onn, onnn, etc.)

2022-03-27 Thread Carl Sorensen
On Sun, Mar 27, 2022 at 2:01 PM Kevin Cole  wrote:

> In my more-than-minimal example, the b16 from the first voice gets
> merged with the b8. from the second voice. When I tried to create a
> minimum (non-working) example, the two didn't merge. But, what I want
> below is for the b8. from the first voice to merge with the b8. from
> the second voice.
>
> In other words, it should look like b16 b8. g16 with the b8. in the
> middle having stems going both directions.  Looking at examples that
> were over my head, I attempted \override \once \force-hshift in
> various places, but didn't accomplish anything.
>

Kevin,

If you want the heads to merge, they need to be at the same time step.

I think you are misinterpreting the original music.  The original music has
two downstemmed notes (b natural sixteenth plus b natural eighth) at the
same time as one upstemmed note (b dotted eighth).

To get the output in the image, just do this:

\version "2.20.0"
\language "english"

\layout {
  \autoBeamOff
}

global = {
  \key ef \major
  \time 4/4
}

melody = {
  \relative {
\global
<<
  { \voiceOne b'8. }
  \new Voice
  { \voiceTwo b16 b8 }
>>
\oneVoice
a8 b8 c4 r8 d8
  }
}

\score {
  \new Staff { \melody }
}

HOpe this helps,

Carl


Re: Chords from Fretboard Diagrams

2022-03-27 Thread Valentin Petzel
Hi Kieren,

I do not know what GSoC you are refering to (I’m not a Lilypond veteran like 
yourself), but this is unrelated to ChordNames. Rather it just remaps chords 
from \chordmode depending on Fretboards.

Cheers,
Valentin

Am Sonntag, 27. März 2022, 22:14:35 CEST schrieb Kieren MacMillan:
> Hi Valentin,
> 
> > Recently I’ve created a small function to invert chords to match Fretboard
> > Diagrams, which I’d like to share with you all.
> 
> That's really cool!
> 
> Question: Does it take into account (or even need to?) the ChordNames GSoC
> work that was done a few years ago?
> 
> Thanks for this!
> Kieren.
> 
> 
> Kieren MacMillan, composer (he/him/his)
> ‣ website: www.kierenmacmillan.info
> ‣ email: kie...@kierenmacmillan.info



signature.asc
Description: This is a digitally signed message part.


Re: Placing stanza's at repeat

2022-03-27 Thread Carl Sorensen
Hi, Jogchum,

Please use Reply All to keep the messages on the user list.

On Sun, Mar 27, 2022 at 1:00 PM Jogchum Reitsma  wrote:

> Op 27-03-2022 om 20:14 schreef Carl Sorensen:
>
>
>
> On Sun, Mar 27, 2022 at 10:31 AM Jogchum Reitsma 
> wrote:
>
>> Hi,
>>
>> Brahms' Waldesnacht has an intro stanza number one, and after that a
>> twice repeated melody, with stanza's 2 and three.
>>
>>
>>
>> How can I achieves those stanza's to begin at the repeat?
>>
>
> Jogchum,
>
> It would normally be better to reduce your music to a one measure stanza
> and a one measure repeat before posting to the list.  That makes it easier
> for both you and the list members to see what is happening.
>
> Yes, you're right. I already removed al the other voices for this example,
> to keep only soprano, but I see that's still a lot of text...
>
>
> I've changed your code to show how I would do it.
>
> 1) Put stanza 1 music in a separate music variable.
> 2) Put repeat music in a separate music variable.
> 3) Make the soprano part by combining stanza 1 and  the repeat music.
> 4) Put one Voice and one NullVoice in your staff.
> a) The Voice has your soprano notes
> b) The NullVoice has a skip for the stanza 1 and notes from the repeat
> music.
> 5) Add two Lyrics contexts in parallel with the Staff (as part of the
> ChoirStaff)
>   a) The first Lyrics has the text for Verse 1 followed by the text for
> verse2.  It is put to the soprano voice
>   b) The second Lyrics has the text for Verse 3.  It is put to the
> nullvoice, so no lyrics go with the skip.
>
> And it all works out.
>
>
> Hope this is helpful.
>
> This is very helpful, , and it must have cost you some time to work it
> out. Many thanks!
>

Not too much time; you already had things set up very well to allow the
changes to be made easily.  It's just easier to see the structure if you
have fewer notes and lyrics...

> So I understand the \set associatedVoice isn't usable for this construct.
>
I'm not sure exactly why the \new Voice = "sopra_repeat" doesn't cause the
lyrics to start at the beginning of the repeat.   I'd guess it has to do
with having the \new Voice inside an automatically generated Voice context
(when you put \soprano inside  the Staff, a Voice is created.  And then you
create a new Voice inside that automatically-created Voice, so I assume
things get confused.

I ran a little test to see the differences between using \set
associatedVoice and \lyricsto.  I can make them both work.  See the
attached code.  But not that in both cases, I separate the notes from the
contexts, and I explicitly create my contexts, which I think is good
practice.

HTH,

Carl;
version "2.22.1"

musI = \relative {c'4 d e f}
musII = \relative {g'4 a b c}

lyrI = \lyricmode {\set stanza = "1. " One one one one}
lyrII = \lyricmode {\set stanza = "2. " Two two two two}
lyrIII = \lyricmode {\set stanza = "3. " Three three three three}

\score{
  <<
\new Staff {
  \new Voice = "m1" \musI
  \new Voice = "m2" \musII
 }
   \new Lyrics="lyrOne" {
 \set associatedVoice = "m1"
 {  \lyrI
\lyrII }
   }
   \new Lyrics ="lyrThree" {
 \lyricsto "m2" { \lyrIII}
   }
  >> % end of music
  \layout{}

} % end of score

\score{
  <<
\new Staff <<
  \new Voice = "m1" {\musI \musII}
  \new NullVoice = "m2"  {
#(skip-of-length musI)
\musII
  }
  >>


   \new Lyrics="lyrOne" \lyricsto "m1" {
 { \lyrI
\lyrII }
   }
   \new Lyrics ="lyrThree" {
 \lyricsto "m2" {\set stanza = "3. " \lyrIII}
   }
  >> % end of music
  \layout{}

} % end of score


Re: Chords from Fretboard Diagrams

2022-03-27 Thread Kieren MacMillan
Hi Valentin,

> Recently I’ve created a small function to invert chords to match Fretboard 
> Diagrams, which I’d like to share with you all.

That's really cool!

Question: Does it take into account (or even need to?) the ChordNames GSoC work 
that was done a few years ago?

Thanks for this!
Kieren.


Kieren MacMillan, composer (he/him/his)
‣ website: www.kierenmacmillan.info
‣ email: kie...@kierenmacmillan.info




Need help with \force-hshift or \shiftO... (off, on, onn, onnn, etc.)

2022-03-27 Thread Kevin Cole
In my more-than-minimal example, the b16 from the first voice gets
merged with the b8. from the second voice. When I tried to create a
minimum (non-working) example, the two didn't merge. But, what I want
below is for the b8. from the first voice to merge with the b8. from
the second voice.

In other words, it should look like b16 b8. g16 with the b8. in the
middle having stems going both directions.  Looking at examples that
were over my head, I attempted \override \once \force-hshift in
various places, but didn't accomplish anything.

%
\version "2.20.0"
\language "english"

\layout {
  \autoBeamOff
}

global = {
  \key ef \major
  \time 4/4
}

melody = {
  \relative {
\global
<<
  { \voiceOne b'16 b8. }
  \new Voice
  { \voiceTwo b8. g16 }
>>
\oneVoice
a8 b8 c4 r8 d8
  }
}

\score {
  \new Staff { \melody }
}
%

P.S. I think I'm interpreting the attached image correctly, but I
could be wrong about that. In any case, that's what I'm trying to
achieve in LilyPond.


Re: LilyPond 2.23.7 released

2022-03-27 Thread Jonas Hahnfeld via LilyPond user discussion
On Sun, 2022-03-27 at 17:04 +0200, Jean Abou Samra wrote:
> Ugh, ugh, ugh.
> 
> \version "2.23.7"
> 
> #(display (strftime "%c" (localtime -499092417)))
> #(newline)
> #(display (strftime "%c" (localtime (+ -499092417 (expt 2 31)
> 
> =>
> 
> Tue Mar 9 12:13:03 1954
> 
> Sun Mar 27 16:27:11 2022
> 
> 
> So this is an overflow error. At least on the MingW we use,
> the size of long is apparently 32 bits, which does not suffice
> for time purposes. Jonas, what do you think?

Okay, let me try to sort this out. First off, yes longs are 32 bits
even on 64 bit Windows. Nothing to do with with MinGW though, that's
just the LLP64 ABI chosen by Microsoft (ie, long long and pointer are
64 bits).
However, the timestamp discussed above is 1648391231 which still fits
nicely into signed 32 bits, where the maximum (positive) value is
2147483647 (ie 2 ** 31 - 1). In fact signed 32 bit numbers will serve
us another 16 years before overflowing, the Y2038 issue.
Furthermore, the addition of (expt 2 31) above is wrong, should be
(expt 2 32) because it's the 33rd bit that cannot be represented. Let
me demonstrate at 8 bits where numbers are more easier to look at: A
signed number with 8 bits can range from -128 to +127. If you overflow
on the positive side, +128 is congruent to -128. Similarly if you clamp
256 = 0x100, you get a 0 at 8 bits. In both cases, the difference is
256 = 2 ** 8.

So what is happening here is that Guile stores immediate integers by
converting to a 64 bit number and then shifting two bits to the left.
In our case, this transforms 1648391231 = 0x6240743F into 0x18901D0FC
where the first bit is indeed too large for 32 bit. The error happens
when extracting the integer from this representation where the code
first converts to 32-bit, getting us a 0x8901D0FC and losing the first
bit, and then shifting two bits to the right. Due to sign extension,
the result is 0xE240743F = -499092417.

I think I see where to fix this in Guile 2.2, let me try. (FWIW the
code appears to be reworked in Guile 3.0 and looks correct with respect
to this issue, but we cannot use it because it's too different...)

Jonas


signature.asc
Description: This is a digitally signed message part


Re: LilyPond 2.23.7 released

2022-03-27 Thread Jonas Hahnfeld via LilyPond user discussion
On Sun, 2022-03-27 at 19:47 +0200, Anders Eriksson wrote:
> Just tested with 2.23.6 and there it works!
> 
> One thing that is different between 2.23.6 and 2.23.7 is that in 2.23.6 
> there is a lilypond-windows.exe but not in 2.23.7
> I tried both lilypond-windows.exe and lilypond.exe and both works for 2.23.6
> 
> Also there is an installation program in 2.23.6, but just a zip for 2.23.7

Depends on which version of 2.23.6 you take: The one from lilypond.org
(the installer version) uses Guile 1.8, while the new binaries from
https://gitlab.com/lilypond/lilypond/-/releases/release%252F2.23.6-1
use Guile 2.2 - and they aren't working either.


signature.asc
Description: This is a digitally signed message part


Re: Placing stanza's at repeat

2022-03-27 Thread Carl Sorensen
On Sun, Mar 27, 2022 at 10:31 AM Jogchum Reitsma 
wrote:

> Hi,
>
> Brahms' Waldesnacht has an intro stanza number one, and after that a
> twice repeated melody, with stanza's 2 and three.
>
>
>
> How can I achieves those stanza's to begin at the repeat?
>

Jogchum,

It would normally be better to reduce your music to a one measure stanza
and a one measure repeat before posting to the list.  That makes it easier
for both you and the list members to see what is happening.

I've changed your code to show how I would do it.

1) Put stanza 1 music in a separate music variable.
2) Put repeat music in a separate music variable.
3) Make the soprano part by combining stanza 1 and  the repeat music.
4) Put one Voice and one NullVoice in your staff.
a) The Voice has your soprano notes
b) The NullVoice has a skip for the stanza 1 and notes from the repeat
music.
5) Add two Lyrics contexts in parallel with the Staff (as part of the
ChoirStaff)
  a) The first Lyrics has the text for Verse 1 followed by the text for
verse2.  It is put to the soprano voice
  b) The second Lyrics has the text for Verse 3.  It is put to the
nullvoice, so no lyrics go with the skip.

And it all works out.

\version "2.22.1"

\header {
  title = "Waldesnacht"
  subtitle = "(Aus dem Jungbrunnen von Paul Heyse)"
  composer = "Johannes Brahms"
  opus = "62 nr. 3"
}

\paper {
  #(set-paper-size "a4")
}

global = {
  \key d \major
  \numericTimeSignature
  \time 4/4
  \tempo "Etwas langsam"
}

sopranoStanzaOne= \relative c' {
  \global
fis4 \p ^\markup { \italic "dolce" } a e4. fis8
g4 fis e2
e4 a2 b4
cis d a4. g8
fis4. r8 a4 a
a4. g8 g4 g
g4. f8 f4 ^\markup { \italic "cresc" } e
 d4. d8 dis4 dis
e8 r
e'2 e4
e2. cis4
a2. f4
e4. r8 g4.\( \pp g8
g4. g8 fis4. b8
b2 e,4 \) r
a4. \( a8 d,4. g8\)
g1
r2 fis4 \p a
e4. fis8 g4 b
fis4.fis8 b4 d
d4. \f a8 a4. g8
fis4 c'2 \f a4
fis2.(e4~
e) d d2~
d cis d2 \fermata r}

sopranoRepeat = \relative c' {
fis4  \p ^\markup { \italic "dolce" } a e4. fis8
g4 fis e2
e4 a2 b4
cis d a4. g8
fis4. r8 a4 a
a4. g8 g4 \p g
g4. f8 f4 ^\markup { \italic "cresc" } e
d4. d8 dis4 dis
e8 r e'2 e4
e2. cis4
a2. f4
e4. r8 g4. \pp \( g8
d4. g8 fis4. b8
b2 e,4 \) r
a4. \( a8 d,4. g8 \)
g1
r2 fis4 \p a
e4. fis8 g4 b
fis4. fis8
b4 d
d4. \f a8 a4. g8
fis4 c'2 \f a4
fis2.( e4~
e) d d2~
d cis
d \fermata r
}

soprano = \relative c' {
  \sopranoStanzaOne
  \repeat volta 2 \sopranoRepeat
}

alto = \relative c' {
  \global


}

tenor = \relative c' {
  \global

}

bass = \relative c {
  \global

}

sopranoVerseOne = \lyricmode {
  \set stanza = "1."
Wal -- des -- nacht, du wun -- der -- küh -- le,
die ich tan -- send Ma -- le grüß;
nach dem lau -- ten Walt -- ge -- wüh -- le,
o, wie is dein Rau -- schen süß,
o, wie is dein Rau -- schen süß!
Trau -- me -- risch die mü -- den Glie -- der
erg ich weich ins Moos,
und mir ist, als würd ich wie -- der
all der ir -- ren Qua -- len los,
all der ir -- ren Qua -- len los.
}

sopranoVerseTwo = \lyricmode {
  \set stanza = "2."
Fer -nes Flö -- ten -- lied,
}

sopranoVerseThree = \lyricmode {
  \set stanza = "3."
In den heim -- lich
}

\score {
  \new ChoirStaff <<
  \override Score.BarNumber #'break-visibility = #end-of-line-invisible
\new Staff \with {
  midiInstrument = "choir aahs"
  instrumentName = "Soprano"
  shortInstrumentName = "S."
} <<
  \new Voice = "sopVoice" {\soprano }
  \new NullVoice = "sopStanzaThree" {
#(skip-of-length sopranoStanzaOne)
\sopranoRepeat
  }
>>% end of Staff Material
\new Lyrics \lyricsto "sopVoice" {\sopranoVerseOne \sopranoVerseTwo}
\new Lyrics \lyricsto "sopStanzaThree" {\sopranoVerseThree}

  >> %end of ChorStaff
  \layout { }

}

Hope this is helpful.

Carl


Re: LilyPond 2.23.7 released

2022-03-27 Thread Anders Eriksson



Just tested with 2.23.6 and there it works!

One thing that is different between 2.23.6 and 2.23.7 is that in 2.23.6 
there is a lilypond-windows.exe but not in 2.23.7

I tried both lilypond-windows.exe and lilypond.exe and both works for 2.23.6

Also there is an installation program in 2.23.6, but just a zip for 2.23.7

// Anders



Placing stanza's at repeat

2022-03-27 Thread Jogchum Reitsma

Hi,

Brahms' Waldesnacht has an intro stanza number one, and after that a 
twice repeated melody, with stanza's 2 and three.


I tried to do that by making a new voice on the  repeat, and associating 
the second and third stanza's with that voice.


But stanza's 2 and three appear at the first melody part, so this 
construct does not work


How can I achieves those stanza's to begin at the repeat?

with kind regards, and thanks in advance, Jogchum
\version "2.23.3"

\header {
  title = "Waldesnacht"
  subtitle = "(Aus dem Jungbrunnen von Paul Heyse)"
  composer = "Johannes Brahms"
  opus = "62 nr. 3"
}

\paper {
  #(set-paper-size "a4")
}

global = {
  \key d \major
  \numericTimeSignature
  \time 4/4
  \tempo "Etwas langsam"
}

soprano = \relative c' {
  \global
fis4 \p ^\markup { \italic "dolce" } a e4. fis8
g4 fis e2
e4 a2 b4
cis d a4. g8
fis4. r8 a4 a
a4. g8 g4 g
g4. f8 f4 ^\markup { \italic "cresc" } e
 d4. d8 dis4 dis
e8 r
e'2 e4
e2. cis4
a2. f4
e4. r8 g4.\( \pp g8
g4. g8 fis4. b8
b2 e,4 \) r
a4. \( a8 d,4. g8\)
g1
r2 fis4 \p a
e4. fis8 g4 b
fis4.fis8 b4 d
d4. \f a8 a4. g8
fis4 c'2 \f a4
fis2.(e4~
e) d d2~
d cis d2 \fermata r
\repeat volta 2
  { \new Voice = "sopra_repeat"
{  fis4  \p ^\markup { \italic "dolce" } a e4. fis8
g4 fis e2
e4 a2 b4
cis d a4. g8
fis4. r8 a4 a
a4. g8 g4 \p g
g4. f8 f4 ^\markup { \italic "cresc" } e
d4. d8 dis4 dis
e8 r e'2 e4
e2. cis4
a2. f4
e4. r8 g4. \pp \( g8
d4. g8 fis4. b8
b2 e,4 \) r
a4. \( a8 d,4. g8 \)
g1
r2 fis4 \p a
e4. fis8 g4 b
fis4. fis8
b4 d
d4. \f a8 a4. g8
fis4 c'2 \f a4
fis2.( e4~
e) d d2~
d cis
d \fermata r
}
  }
}

alto = \relative c' {
  \global


}

tenor = \relative c' {
  \global

}

bass = \relative c {
  \global

}

sopranoVerseOne = \lyricmode {
  \set stanza = "1."
Wal -- des -- nacht, du wun -- der -- küh -- le,
die ich tan -- send Ma -- le grüß;
nach dem lau -- ten Walt -- ge -- wüh -- le,
o, wie is dein Rau -- schen süß,
o, wie is dein Rau -- schen süß!
Trau -- me -- risch die mü -- den Glie -- der
erg ich weich ins Moos,
und mir ist, als würd ich wie -- der
all der ir -- ren Qua -- len los,
all der ir -- ren Qua -- len los.
}

sopranoVerseTwo = \lyricmode {
  \set stanza = "2."
  \set associatedVoice = "sopra_repeat"
Fer -nes Flö -- ten -- lied,
}

sopranoVerseThree = \lyricmode {
  \set stanza = "3."
  \set associatedVoice = "sopra_repeat"
In den heim -- lich
}

\score {
  \new ChoirStaff <<
  \override Score.BarNumber #'break-visibility = #end-of-line-invisible
\new Staff \with {
  midiInstrument = "choir aahs"
  instrumentName = "Soprano"
  shortInstrumentName = "S."
} { \soprano }
\addlyrics { \sopranoVerseOne }
\addlyrics { \sopranoVerseTwo }
\addlyrics { \sopranoVerseThree }

  >>
  \layout { }

}





Chords from Fretboard Diagrams

2022-03-27 Thread Valentin Petzel
Hello Ponders!

Recently I’ve created a small function to invert chords to match Fretboard 
Diagrams, which I’d like to share with you all.

Cheers,
Valentin#(define (normalize pitch)
   (if (>= (ly:pitch-alteration pitch) 1)
   (normalize (ly:pitch-transpose pitch (ly:make-pitch 0 1 -1)))
   (if (<= (ly:pitch-alteration pitch) -1)
   (normalize (ly:pitch-transpose pitch (ly:make-pitch 0 -1 1/2)))
   pitch)))

#(define (semitones->pitch st chord)
   (if (null? chord)
   (normalize (ly:make-pitch 0 0 (/ st 2)))
   (if (eqv? 0
 (modulo (-
  st
  (ly:pitch-semitones (car chord)))
 12))
   (let* ((ref-pitch (ly:make-pitch 0
(ly:pitch-notename (car chord))
(ly:pitch-alteration (car chord
  (ref-st (ly:pitch-semitones ref-pitch))
  (st-diff (- st ref-st)))
 (ly:make-pitch (/ st-diff 12)
(ly:pitch-notename (car chord))
(ly:pitch-alteration (car chord
   (semitones->pitch st (cdr chord)

#(define (defn-to-frets defn)
   (if (null? defn)
   defn
   (let ((string (cadar defn))
 (fret (cond ((eqv? (caar defn) 'open) 0)
 ((eqv? (caar defn) 'place-fret) (caddar defn))
 (else #f
 (if fret
   (cons (cons string fret) (defn-to-frets (cdr defn)))
   (defn-to-frets (cdr defn))

translateToChords =
#(define-music-function (fretboard-table tuning music) (hash-table? list? ly:music?)
   (define (iter music)
 (let ((elts (ly:music-property music 'elements))
   (elt (ly:music-property music 'element)))
   (if (music-is-of-type? music 'event-chord)
   (let* ((pitches (event-chord-pitches music))
  (hash-key (cons tuning pitches))
  (defn (hash-ref fretboard-table hash-key #f))
  (dparts (if defn (defn-to-frets defn)))
  (notes (event-chord-notes music))
  (dur (if (not (null? notes)) (ly:music-property (car notes) 'duration
 (if defn
 (let* ((notes (map
(lambda (def)
  (let* ((sno (car def))
 (rpi (list-ref tuning (1- sno)))
 (fret-no (cdr def))
 (root-st (ly:pitch-semitones rpi))
 (pitch (semitones->pitch (+ root-st fret-no)
  pitches)))
(if (< fret-no 0)
#f
(make-music 'NoteEvent
'pitch pitch
'duration dur
'articulations
(list (make-music
'StringNumberEvent
'string-number
sno
'tweaks
'((stencil . #f
dparts)))
   (ly:music-set-property! music 'elements
   (filter (lambda (x) x) notes)
   (begin
(if (not (null? elt))
(iter elt))
(for-each iter elts)
   (iter music)
   music)
 
 
\include "predefined-ukulele-fretboards.ly"

chordmusic = \relative {
  \chordmode {
g4 c a:m f
  }
}
<<
  \new ChordNames {
\chordmusic
  }
  \new FretBoards \with {
stringTunings = #ukulele-tuning
  } {
\chordmusic
  }
  \new Staff {
\translateToChords #default-fret-table #ukulele-tuning \chordmusic
  }
  \new TabStaff \with {
stringTunings = #ukulele-tuning
  } {
\translateToChords #default-fret-table #ukulele-tuning \chordmusic
  }
>>

signature.asc
Description: This is a digitally signed message part.


Re: LilyPond 2.23.7 released

2022-03-27 Thread Jean Abou Samra




Le 27/03/2022 à 16:28, Michael Gerdau a écrit :

Can you compile this test file and report back?

\version "2.23.7"

#(debug-enable 'backtrace)

#(display (current-time))
#(newline)

#(display (localtime (current-time)))
#(newline)

#(display (strftime "%d.%m.%Y" (localtime (current-time
#(newline)


Yields:
Starte lilypond.exe 2.23.7 [Ohne Titel]...
»C:/Users/mgd/AppData/Local/Temp/frescobaldi-o7oy9q4g/tmpbiiy5m9i/document.ly« 
wird verarbeitet

Analysieren...
C:/Users/mgd/AppData/Local/Temp/frescobaldi-o7oy9q4g/tmpbiiy5m9i/document.ly:8:2: 
Fehler: GUILE signalisierte einen Fehler für den hier beginnenden 
Ausdruck

#
 (display (localtime (current-time)))

Invalid argument
C:/Users/mgd/AppData/Local/Temp/frescobaldi-o7oy9q4g/tmpbiiy5m9i/document.ly:11:2: 
Fehler: GUILE signalisierte einen Fehler für den hier beginnenden 
Ausdruck

#
 (display (strftime "%d.%m.%Y" (localtime (current-time

Invalid argument
-499092417


Kompilation erfolgreich beendet
Erfolgreich abgeschlossen in 0.5".




Ugh, ugh, ugh.

\version "2.23.7"

#(display (strftime "%c" (localtime -499092417)))
#(newline)
#(display (strftime "%c" (localtime (+ -499092417 (expt 2 31)

=>

Tue Mar 9 12:13:03 1954

Sun Mar 27 16:27:11 2022


So this is an overflow error. At least on the MingW we use,
the size of long is apparently 32 bits, which does not suffice
for time purposes. Jonas, what do you think?

Jean




Re: Should \partial accept music instead of duration?

2022-03-27 Thread David Kastrup
Jean Abou Samra  writes:

> Le 27/03/2022 à 16:23, David Kastrup a écrit :
>> It doesn't share the same music objects for different notes since $(...)
>> makes a ly:music-deep-copy anyway that will deduplicate the elements of
>> SequentialMusic while copying them. The intermediate expression is
>> indeed not fit for every use, but the final deep copy fixes that.
>
>
> Ah, yes, correct. I always forget about that twist of $ as I
> only use it for more immediate (lexer) evaluation and not for
> copies. Thanks for the reminder.

Well, it makes $xxx and \xxx behave identically.  And \xxx needs to copy
since music functions are allowed to change their arguments.

The meaning of $ was actually introduced after a pretty thorough
redesign where I think the bulk might have happened with

commit fecc5999e224304e9d54e48bc7a92cdbb123cd35
Author: David Kastrup 
Date:   Sun Nov 6 19:15:27 2011 +0100

Let #{ ... #} pass its $ handling to environment cloning

Includes convertrules.py rules for dealing with #{ ... #} and for
removing uses of ly:export

in version 2.15.18.  You don't really want to know (or explain) what
meaning $ had before that change.  Or #{ ... #}.  Or the
interdependency.

-- 
David Kastrup



Re: LilyPond 2.23.7 released

2022-03-27 Thread Anders Eriksson




On 2022-03-27 16:28, Michael Gerdau wrote:

Can you compile this test file and report back?

\version "2.23.7"

#(debug-enable 'backtrace)

#(display (current-time))
#(newline)

#(display (localtime (current-time)))
#(newline)

#(display (strftime "%d.%m.%Y" (localtime (current-time
#(newline)


Yields:
Starte lilypond.exe 2.23.7 [Ohne Titel]...
»C:/Users/mgd/AppData/Local/Temp/frescobaldi-o7oy9q4g/tmpbiiy5m9i/document.ly« 
wird verarbeitet

Analysieren...
C:/Users/mgd/AppData/Local/Temp/frescobaldi-o7oy9q4g/tmpbiiy5m9i/document.ly:8:2: 
Fehler: GUILE signalisierte einen Fehler für den hier beginnenden 
Ausdruck

#
 (display (localtime (current-time)))

Invalid argument
C:/Users/mgd/AppData/Local/Temp/frescobaldi-o7oy9q4g/tmpbiiy5m9i/document.ly:11:2: 
Fehler: GUILE signalisierte einen Fehler für den hier beginnenden 
Ausdruck

#
 (display (strftime "%d.%m.%Y" (localtime (current-time

Invalid argument
-499092417



I get the same error. Win 10 English US

// Anders



Re: LilyPond 2.23.7 released

2022-03-27 Thread Michael Gerdau

Can you compile this test file and report back?

\version "2.23.7"

#(debug-enable 'backtrace)

#(display (current-time))
#(newline)

#(display (localtime (current-time)))
#(newline)

#(display (strftime "%d.%m.%Y" (localtime (current-time
#(newline)


Yields:
Starte lilypond.exe 2.23.7 [Ohne Titel]...
»C:/Users/mgd/AppData/Local/Temp/frescobaldi-o7oy9q4g/tmpbiiy5m9i/document.ly« 
wird verarbeitet

Analysieren...
C:/Users/mgd/AppData/Local/Temp/frescobaldi-o7oy9q4g/tmpbiiy5m9i/document.ly:8:2: 
Fehler: GUILE signalisierte einen Fehler für den hier beginnenden Ausdruck

#
 (display (localtime (current-time)))

Invalid argument
C:/Users/mgd/AppData/Local/Temp/frescobaldi-o7oy9q4g/tmpbiiy5m9i/document.ly:11:2: 
Fehler: GUILE signalisierte einen Fehler für den hier beginnenden Ausdruck

#
 (display (strftime "%d.%m.%Y" (localtime (current-time

Invalid argument
-499092417


Kompilation erfolgreich beendet
Erfolgreich abgeschlossen in 0.5".

Kind regards,
Michael
--
 Michael Gerdau   email: m...@qata.de
 GPG-keys available on request or at public keyserver



Re: Should \partial accept music instead of duration?

2022-03-27 Thread Jean Abou Samra

Le 27/03/2022 à 16:23, David Kastrup a écrit :

It doesn't share the same music objects for different notes since $(...)
makes a ly:music-deep-copy anyway that will deduplicate the elements of
SequentialMusic while copying them. The intermediate expression is
indeed not fit for every use, but the final deep copy fixes that.



Ah, yes, correct. I always forget about that twist of $ as I
only use it for more immediate (lexer) evaluation and not for
copies. Thanks for the reminder.




Re: Should \partial accept music instead of duration?

2022-03-27 Thread David Kastrup
Jean Abou Samra  writes:

> Le 26/03/2022 à 03:23, Kieren MacMillan a écrit :
>> Hope that makes it clearer?
>
>
> Yes, I understand better, thanks. I'd just suggest changing your
> snippet to
>
> \version "2.23.7"
>
> $(let ((notes (ly:music-property #{  d'> #} 'elements)))
>     (make-sequential-music
>  (map (lambda (x) (ly:music-deep-copy (list-ref notes (random
> (length notes)
>   (iota 400
>
>
> with the essential change being the insertion of a
> ly:music-deep-copy so it does not share the same music
> objects for different notes, which could go wrong with
> the application of some music functions.

It doesn't share the same music objects for different notes since $(...)
makes a ly:music-deep-copy anyway that will deduplicate the elements of
SequentialMusic while copying them.  The intermediate expression is
indeed not fit for every use, but the final deep copy fixes that.

-- 
David Kastrup



Re: Should \partial accept music instead of duration?

2022-03-27 Thread Kieren MacMillan
Hi Jean,

> Yes, I understand better, thanks.

I can give you uncountable examples of "sugar" being more powerful than just 
about anything else that's visible in Lilypond. [We all know that sugar isn't 
as powerful as the amazing code underneath… but for the purposes of 
Lily-vangelizing, it's the input code that makes the most obvious and immediate 
impact on newbies.]

A really big case is stylesheets: when I show people that changing the one line 
(e.g.)

\include "musical/pianoconductor.ily"

to

\include "pub/HalLeonard.ily"

makes the same code/content file appear like two totally different 
publications, you should see the look of awe and envy on the faces of Finale / 
Sibelius / Dorico users.  ;)

> I'd just suggest changing your snippet

I figured you'd have an improvement.
This isn't actually my snippet… but thanks for the tweak!

Best,
Kieren.


Re: Should \partial accept music instead of duration?

2022-03-27 Thread Jean Abou Samra

Le 26/03/2022 à 03:23, Kieren MacMillan a écrit :

Hope that makes it clearer?



Yes, I understand better, thanks. I'd just suggest changing your
snippet to

\version "2.23.7"

$(let ((notes (ly:music-property #{ d'> #} 'elements)))

    (make-sequential-music
 (map (lambda (x) (ly:music-deep-copy (list-ref notes (random 
(length notes)

  (iota 400


with the essential change being the insertion of a
ly:music-deep-copy so it does not share the same music
objects for different notes, which could go wrong with
the application of some music functions.

Cheers,
Jean





Re: LilyPond 2.23.7 released

2022-03-27 Thread Jean Abou Samra




Le 27/03/2022 à 13:31, Michael Gerdau a écrit :

Hi List,

We are happy to announce the release of LilyPond 2.23.7. This is 
termed > a development release, but these are usually reliable. If 
you want 
to> use the current stable version of LilyPond, we recommend using 
the> 2.22.2 version.> [snip]



Please test this release and let us know about
problems that you encounter.


%% start
\version "2.23.7"

date = #(strftime "%d.%m.%Y" (localtime (current-time)))
%% end

gives me:
3:9: Fehler: GUILE signalisierte einen Fehler für den hier beginnenden 
Ausdruck

date = #
    (strftime "%d.%m.%Y" (localtime (current-time)))

Invalid argument

Shouldn't this work or has the syntax changed?

Kind regards,
Michael



Can you compile this test file and report back?

\version "2.23.7"

#(debug-enable 'backtrace)

#(display (current-time))
#(newline)

#(display (localtime (current-time)))
#(newline)

#(display (strftime "%d.%m.%Y" (localtime (current-time
#(newline)


Thanks,
Jean




Re: LilyPond 2.23.7 released

2022-03-27 Thread Michael Gerdau

%% start
\version "2.23.7"

date = #(strftime "%d.%m.%Y" (localtime (current-time)))
%% end

gives me:
3:9: Fehler: GUILE signalisierte einen Fehler für den hier beginnenden
Ausdruck
date = #
  (strftime "%d.%m.%Y" (localtime (current-time)))

Invalid argument

Shouldn't this work or has the syntax changed?


This example works completely fine for me (on Linux). Where are you
testing this, on Linux, macOS, or Windows?


Sorry, forgot to mention I've tested that on Windows 11, German locale.

On the same machine using 2.23.5 (the 32 bit version using guile 1.8) it 
works w/o noticeable problems.


Kind regards,
Michael
--
 Michael Gerdau   email: m...@qata.de
 GPG-keys available on request or at public keyserver



Re: LilyPond 2.23.7 released

2022-03-27 Thread David Kastrup
Jonas Hahnfeld via LilyPond user discussion 
writes:

> Am Sonntag, dem 27.03.2022 um 13:31 +0200 schrieb Michael Gerdau:
>> %% start
>> \version "2.23.7"
>> 
>> date = #(strftime "%d.%m.%Y" (localtime (current-time)))
>> %% end
>> 
>> gives me:
>> 3:9: Fehler: GUILE signalisierte einen Fehler für den hier beginnenden 
>> Ausdruck
>> date = #
>>  (strftime "%d.%m.%Y" (localtime (current-time)))
>> 
>> Invalid argument
>> 
>> Shouldn't this work or has the syntax changed?
>
> This example works completely fine for me (on Linux). Where are you
> testing this, on Linux, macOS, or Windows?

This is very likely also quite locale-dependent.

-- 
David Kastrup



Re: LilyPond 2.23.7 released

2022-03-27 Thread Jonas Hahnfeld via LilyPond user discussion
Am Sonntag, dem 27.03.2022 um 13:31 +0200 schrieb Michael Gerdau:
> %% start
> \version "2.23.7"
> 
> date = #(strftime "%d.%m.%Y" (localtime (current-time)))
> %% end
> 
> gives me:
> 3:9: Fehler: GUILE signalisierte einen Fehler für den hier beginnenden 
> Ausdruck
> date = #
>  (strftime "%d.%m.%Y" (localtime (current-time)))
> 
> Invalid argument
> 
> Shouldn't this work or has the syntax changed?

This example works completely fine for me (on Linux). Where are you
testing this, on Linux, macOS, or Windows?

Jonas


signature.asc
Description: This is a digitally signed message part


Re: LilyPond 2.23.7 released

2022-03-27 Thread Michael Gerdau

Hi List,

We are happy to announce the release of LilyPond 2.23.7. This is termed > a development release, but these are usually reliable. If you want 
to> use the current stable version of LilyPond, we recommend using the> 
2.22.2 version.> [snip]



Please test this release and let us know about
problems that you encounter.


%% start
\version "2.23.7"

date = #(strftime "%d.%m.%Y" (localtime (current-time)))
%% end

gives me:
3:9: Fehler: GUILE signalisierte einen Fehler für den hier beginnenden 
Ausdruck

date = #
(strftime "%d.%m.%Y" (localtime (current-time)))

Invalid argument

Shouldn't this work or has the syntax changed?

Kind regards,
Michael
--
 Michael Gerdau   email: m...@qata.de
 GPG-keys available on request or at public keyserver



Re: Trouble hiding NullVoice

2022-03-27 Thread Lukas-Fabian Moser

Hi Samanth,

(Please keep the list in your replies, so future readers can follow the 
discussion.)


When I put in the \new Staff, it does indeed prevent the nullVoice 
from producing a staff ... however the chords now appear in the wrong 
line ... almost as if they are being put above where the NullVoice 
score would have been.


It's easier to define the "correct" order of contexts once and for all, 
so I took the liberty of re-organizing your score a bit.


While doing , I noticed something else that I missed before: If you 
enter the durations of your Lyrics words explicitly, you do not need a 
(Null)Voice to align the lyrics to. There are two fundamentally 
different ways of writing Lyrics in LilyPond:


- with explicit lengths (as you did: "When8. I16" etc.)
- without explicit lengths, but aligned to a Voice or NullVoice

So one can reduce to:

% When I'm Sixty Four - Bass Song Sheet
\version "2.22.2"
\language english

\header {
  title = "When I'm Sixty Four"
  subtitle = Bass
  composer = "McCartney/Lennon"
}

% Setup variables for Chords, Notes, Rhythm and Lyrics
introChords = \chordmode {
  c1 c1 f2 g2 |
  c1 c1 c1 |
}

verseChords = \chordmode {
  c1 c1 c1 g1:7 |
}

introNotes = \relative c, {
  c4 r4 g4 r4 |
  c4 r4 g4 r4 |
  f4 r4 g4 r4 |
  \break
  c4 g4 c4 r4 |
  c4 r4 g4 r8 a16 b16 |
  c4 r4 g4 r4 |
  \bar "||"
  \break
}

verseNotes = \relative c, {
  c4 r4 g4 r4 |
  c4 r4 g4 r4 |
  c4 r4 g4 r4 |
  g4 r4 d'4\3 r4 |
  \break
}

verseOneLyrics = \lyricmode
{
  \set stanza = "1. "
  When8. I16 get4 old4 -- er4
  losing4 my4 hair2
  Many4 years4 from4 now4 "___"1
}

<<
  \new ChordNames {
    \introChords
    \verseChords
  }
  \new Staff \with {
    \easyHeadsOn
    \clef "bass_8"
  } {
    \introNotes
    \verseNotes
  }
  \new Lyrics {
    #(skip-of-length introNotes)
    \verseOneLyrics
  }
>>

But it's often easier to actually use a (Null)Voice for this, since that 
way we don't have to clutter the lyrics with durations. The way I'd 
personally do it would be (as I often need the actual melody as well, I 
went ahead and entered it with pitches - but these might also be omitted):


% When I'm Sixty Four - Bass Song Sheet
\version "2.22.2"
\language english

\header {
  title = "When I'm Sixty Four"
  subtitle = Bass
  composer = "McCartney/Lennon"
}

% Setup variables for Chords, Notes, Rhythm and Lyrics
introChords = \chordmode {
  c1 c1 f2 g2 |
  c1 c1 c1 |
}

verseChords = \chordmode {
  c1 c1 c1 g1:7 |
}

introNotes = \relative c, {
  c4 r4 g4 r4 |
  c4 r4 g4 r4 |
  f4 r4 g4 r4 |
  \break
  c4 g4 c4 r4 |
  c4 r4 g4 r8 a16 b16 |
  c4 r4 g4 r4 |
  \bar "||"
  \break
}

verseNotes = \relative c, {
  c4 r4 g4 r4 |
  c4 r4 g4 r4 |
  c4 r4 g4 r4 |
  g4 r4 d'4\3 r4 |
  \break
}

melody = \relative {
  R1*6
  e'8 ds e8 g4. e4 % If we're not interested in the pitches, we can 
simply write 8 8 8 4. 4 etc.

  g8 a g c4. r4
  c8 e4. c4 a8 d8~
  d2 r
}

verseOneLyrics = \lyricmode
{
  \set stanza = "1. "
  When I get old -- er
  lo -- sing my hair
  Ma -- ny years from now __
}

<<
  \new ChordNames {
    \introChords
    \verseChords
  }
  \new Staff \with {
    \easyHeadsOn
    \clef "bass_8"
  }
  <<
    {
  \introNotes
  \verseNotes
    }
    \new NullVoice = mel \melody
  >>
  \new Lyrics \lyricsto mel {
    \verseOneLyrics
  }
>>

\new StaffGroup <<
  \new ChordNames {
    \introChords
    \verseChords
  }
  \new Staff \with { \autoBeamOff }
  \new Voice = "mel" \melody
  \new Lyrics \lyricsto mel {
    \verseOneLyrics
  }
  \new Staff \with {
    \easyHeadsOn
    \clef "bass_8"
  }
  {
    \introNotes
    \verseNotes
  }
>>

As you can see, this way one can generate different versions of the 
score from the same variables, which is one of the main strengths of 
LilyPond.


For the construct

\new Voice = someName { ... }
\new Lyrics \lyricsTo someName { ... }

there is the shorthand

\new Voice { ... } \addlyrics { ... }

but in my experience this is only really helpful in the simplest of use 
cases, so I didn't use it here.


Lukas




Re: Trouble hiding NullVoice

2022-03-27 Thread Lukas-Fabian Moser

Hi Samanth(a),


I'm producing a bassline score, with chords, notes and lyrics.

As the bassline notes are ... sparse, I'm trying to use a NullVoice to 
hold the rhythm and aligning the lyrics to that (I gather this is an 
approach used by others)


Despite much googling/reading of docs/internals/snippets/etc I'm 
totally failing to prevent a staff appearing for the NullVoice.


I'm fairly new to Lilypond and am still trying to wrap my head around 
contexts/grobs/etc and would be grateful for any advice as to how to 
resolve this issue.


I've attached a cutdown .ly and the pdf it produces.


Don't worry, it'll all become clear soon enough. And you hit a 
comparatively subtle point: Since you're not creating a Staff context 
explicitly, you're relying on LilyPond to create staves automatically, 
and it seems a new Voice (or NullVoice) causes a new Staff to be created.


Replacing your

\score {
  {
...

by

\score {
  \new Staff {
...

already does the trick.

In general, I would not recommend adding multiple sections of 
simultaneous music << ... >> one after another to make up a piece. Most 
often, it's more convenient to construct a _complete_ bass music 
variable (which of course may be comprised of multiple sections defined 
independently), similarly for the other voices, and then combine them in 
a << ... >> expression.


So (pseudocode), I prefer

\score {
  <<
    \new Staff \firstInstrument
    \new Staff \secondInstrument
  >>
}

with

firstInstrument = {
  \firstInstrumentIntro
  \firstInstrumentVerse
}

etc.

Lukas




Trouble hiding NullVoice

2022-03-27 Thread Samantha Margerison
Hi all!

I'm producing a bassline score, with chords, notes and lyrics.

As the bassline notes are ... sparse, I'm trying to use a NullVoice to hold
the rhythm and aligning the lyrics to that (I gather this is an approach
used by others)

Despite much googling/reading of docs/internals/snippets/etc I'm totally
failing to prevent a staff appearing for the NullVoice.

I'm fairly new to Lilypond and am still trying to wrap my head around
contexts/grobs/etc and would be grateful for any advice as to how to
resolve this issue.

I've attached a cutdown .ly and the pdf it produces.

Kind regards,
Smanth

[image: Mailtrack]

Sender
notified by
Mailtrack

03/27/22,
09:20:29 AM


minimum-demo.ly
Description: Binary data


minimum-demo.pdf
Description: Adobe PDF document


Re: LilyPond 2.23.7 released

2022-03-27 Thread Jonas Hahnfeld via LilyPond user discussion
Am Sonntag, dem 27.03.2022 um 09:02 +0200 schrieb Jean Abou Samra:
> You can make a symlink in ~/bin/ if you want the command to be invoked
> as 'lilypond'.

Note that this depends on your distributions, not everyone has ~/bin/
in their PATH.


signature.asc
Description: This is a digitally signed message part


Re: Question about new stable version

2022-03-27 Thread Jean Abou Samra




Le 27/03/2022 à 09:14, Rip _Mus a écrit :

Thanks for the reply!
It is just my curiosity.
I wonder what new features the new stable version might contain.
Of course I know this is a users mailing list, I asked why maybe 
someone could know more than me


All of them are listed here:

http://lilypond.org/doc/v2.23/Documentation/changes/index.html

Best,
Jean





Re: Question about new stable version

2022-03-27 Thread Rip _Mus
Thanks for the reply!
It is just my curiosity.
I wonder what new features the new stable version might contain.
Of course I know this is a users mailing list, I asked why maybe someone
could know more than me

Il dom 27 mar 2022, 09:04 Jean Abou Samra  ha scritto:

> Le 27/03/2022 à 08:43, Rip _Mus a écrit :
> > Hello everyone,
> > what are the forecasts for the release of a new stable version? Do you
> > know if it will be 2.24 directly or there will be some intermediate
> > updates of 2.22?
>
>
> I don't know and don't think anybody knows, but if there are
> updates of 2.22, they will contain bug fixes, not new features,
> compared to previous versions of the 2.22 series. Development
> happens in the 2.23 line and will eventually result in a 2.24.0
> version. Why the question?
>
> Jean
>
>


Re: Question about new stable version

2022-03-27 Thread Jean Abou Samra

Le 27/03/2022 à 08:43, Rip _Mus a écrit :

Hello everyone,
what are the forecasts for the release of a new stable version? Do you 
know if it will be 2.24 directly or there will be some intermediate 
updates of 2.22?



I don't know and don't think anybody knows, but if there are
updates of 2.22, they will contain bug fixes, not new features,
compared to previous versions of the 2.22 series. Development
happens in the 2.23 line and will eventually result in a 2.24.0
version. Why the question?

Jean




Re: LilyPond 2.23.7 released

2022-03-27 Thread Jean Abou Samra




Le 27/03/2022 à 01:14, Paul Scott a écrit :

I just downloaded the Linux version from from Lily web site and got a tar.gz 
version instead of the .sh version I expected.  Is this a change or  a mistake?


A change. These are static binaries. There is no installation needed. 
Just unpack them somewhere and use the executable /.../bin/lilypond. You 
can make a symlink in ~/bin/ if you want the command to be invoked as 
'lilypond'.


Jean



Question about new stable version

2022-03-27 Thread Rip _Mus
Hello everyone,
what are the forecasts for the release of a new stable version? Do you know
if it will be 2.24 directly or there will be some intermediate updates of
2.22?

Thank you

Rip_mus