Re: Font problem on Mac

2023-08-29 Thread David F.


> On Aug 27, 2023, at 11:55 PM, Werner LEMBERG  wrote:
>
>
>>>> I do not think that my Times New Roman font is corrupted.
>>
>> Actually, I think it is: Most likely the font's 'post' table is
>> broken (i.e., it has a wrong PostScript name for glyph 'N').
>> Normally, you won't see the problem at all because most applications
>> access a font's 'cmap' table (i.e., a Unicode input value gets
>> mapped to a glyph index), which seems to be OK for this font.
>
> And indeed, I've found this thread
>
>  https://discussions.apple.com/thread/254519584
>
> which explains nicely the exact cause of your problem.
>
>
>Werner

Thanks! That explains it.

David F.



Re: Pointing Aiken Fa up in partCombine

2022-08-19 Thread David F.

> On Aug 19, 2022, at 11:23 AM, Benjamin Bruce  wrote:
> 
> There may be examples in my older hymnals too, but I wasn't able to find any 
> (this seems to be something that shows up more in modern music).

“Hallelujah, Praise Jehovah” (1899) has doubled Fa's in the treble and bass 
clefs at the beginning of bar 9.  Here’s a scan from a hymnal printed in 1911.  
The Fa is reversed in the treble clef.

https://hymnary.org/hymn/SHCW1911/page/250

> Whatever the consensus on usage may be, I would like to be able to orient 
> doubled Fas either way, according to the usage shown in these examples.

Yes, that sounds reasonable.

David F.



Re: Pointing Aiken Fa up in partCombine

2022-08-18 Thread David F.


> On Aug 18, 2022, at 2:15 PM, Benjamin Bruce  wrote:
> 
> Thanks for digging into this for me. Yes, both cases are necessary for 
> typesetting shape note hymns, as illustrated by the attached scan. I believe 
> the rule for this is that the notehead should be pointed up in the treble 
> clef, and down in the bass clef.


Of the three hymnals that I have that use shaped notes, two do *not* reverse 
the Fa notehead in the treble clef—so Lilypond’s current output matches what 
those two hymnals do.

Since I primarily reference one of these hymnals for the engraving I do with 
Lilypond, I had never seen the behavior that you are describing until you 
pointed it out.

Now I’m wondering how representative those two hymnals are.

David



Re: Change to \rest markup in 2.23

2022-07-23 Thread David F.



> On Jul 20, 2022, at 5:25 AM, Jean Abou Samra  wrote:
> 
> Le 20/07/2022 à 05:57, David F. a écrit :
>> In 2.23, the rest markup command changed from taking a string to taking a 
>> duration.
>> 
>> \version "2.22"
>> \markup \rest #"4.."
>> 
>> \version "2.23"
>> \markup \rest { 4.. }
>> 
>> It would be nice if this change were backward compatible, at least for a 
>> version or two.
> 
> 
> LilyPond's general policy is that backwards-incompatible syntax
> changes are OK as long as a convert-ly rule is provided to update
> input files automatically.
> 
> Well, in this case there is no convert-ly rule ... I'll fix that soon.
> 
> 
>> My primary Lilypond environment is v2.22.2-1 on macOS 10.14.  This is the 
>> environment I use for final “production” of scores.  But I’ve been trying to 
>> do as much development as possible in v2.23 on macOS 10.15.
>> 
>> Unfortunately, the change to the rest markup command makes going back and 
>> forth quite cumbersome.  Would be be possible to make this command take 
>> either a string or duration?
> 
> 
> My answer will be a bit different from Harm's: this sounds like
> an XY problem to me. Why do you want to switch back and forth
> between two LilyPond versions for the same score? Just install
> the same version on both machines. There is no problem with having
> several different versions of LilyPond installed in parallel on
> the same machine, and in Frescobaldi, you can even choose to
> select the LilyPond version from the \version statement (the
> setting is in Edit > Preferences > LilyPond Preferences),
> making this very convenient.
> 


Installing multiple versions of Lilypond isn’t a big deal, per se.  I have 2.22 
and 2.23.10 installed on the macOS 10.14 machine.  I don’t think there is a 
standalone install of v2.22 available for macOS 10.15 and greater, so I think 
I’d have to install MacPorts on the macOS 10.15 machine in order to get 
Lilypond 2.22.  But we can call that a simple annoyance.

The issue, for me, is that I’m trying to be conservative in upgrading to newer 
Lilypond versions.  I have around 100 hymns that get turned into just over 4000 
individual slides.  I can’t realistically inspect each slide after a version 
upgrade, so I’ve been sticking to the Lilypond stable releases for “production” 
generation of my slides.

But, as I said above, I try to do as much development as possible on the latest 
“unstable” version so as to catch problems as soon as possible.  When I first 
moved to version 2.23, I found, for example, that there was an issue with 
handling file paths that contained Unicode characters.  Once I brought the 
issue to the list, Jonas Hahnfeld was able to provide a fix with 2.23.10.

If Lilypond’s policy is as you say, then I might have to reconsider my approach 
to upgrades.  But, likely as not, I’ll just carry on trying to stick with 
stable releases.  I started out on version 2.18 and haven’t really had too much 
trouble switching back and forth between stable and unstable releases.

David F.




Re: Change to \rest markup in 2.23

2022-07-23 Thread David F.



> On Jul 20, 2022, at 5:13 AM, Thomas Morley  wrote:
> 
> Am Mi., 20. Juli 2022 um 05:58 Uhr schrieb David F. :
>> 
>> In 2.23, the rest markup command changed from taking a string to taking a 
>> duration.
>> 
>> \version "2.22"
>> \markup \rest #"4.."
>> 
>> \version "2.23"
>> \markup \rest { 4.. }
>> 
>> It would be nice if this change were backward compatible, at least for a 
>> version or two.
>> 
>> My primary Lilypond environment is v2.22.2-1 on macOS 10.14.  This is the 
>> environment I use for final “production” of scores.  But I’ve been trying to 
>> do as much development as possible in v2.23 on macOS 10.15.
>> 
>> Unfortunately, the change to the rest markup command makes going back and 
>> forth quite cumbersome.  Would be be possible to make this command take 
>> either a string or duration?
>> 
>> David F.
>> 
>> 
> 
> Well, going back and forth between 2.22.2 and new devel-version only
> works if you don't use devel-features and don't hit internal changes.
> 
> That said, below a coding which makes \rest always take a duration,
> transforming it to a string for 2.22.
> Once you settled with 2.23. simply delete it.
> Disclaimer: it's all a bit clumsy, cheeky and not tested in the wild.
> 
> \version "2.20.0"
> 
> #(begin
>  (define default-make-rest-markup make-rest-markup)
>  (define-markup-command (rest layout props duration) (ly:duration?)
>(let ((version-arg
>(if (string    duration
>(ly:duration->string duration
>(interpret-markup layout props
>  (default-make-rest-markup version-arg)
> 
> \markup \rest { 4.. }
> 
> Cheers,
>  Harm

Thanks Harm.  That seems to do the trick!

David F.




Change to \rest markup in 2.23

2022-07-19 Thread David F.
In 2.23, the rest markup command changed from taking a string to taking a 
duration.

\version "2.22"
\markup \rest #"4.."

\version "2.23"
\markup \rest { 4.. }

It would be nice if this change were backward compatible, at least for a 
version or two.

My primary Lilypond environment is v2.22.2-1 on macOS 10.14.  This is the 
environment I use for final “production” of scores.  But I’ve been trying to do 
as much development as possible in v2.23 on macOS 10.15.

Unfortunately, the change to the rest markup command makes going back and forth 
quite cumbersome.  Would be be possible to make this command take either a 
string or duration?

David F.




Tempo arguments

2022-07-17 Thread David F.
\tempo 4 = 90

How is tempo able to take ‘4 = 90’ as an argument?  Is this hardwired into the 
language or can any function take ‘x = y’ as an argument?

David F.




Re: Error message using AikenHeads with NullVoice

2022-07-07 Thread David F.


> On Jul 7, 2022, at 1:59 AM, Valentin Petzel  wrote:
> 
> A different way to approach the problem would be to also specify something 
> like
> 
> \context {
>  \NullVoice
>  shapeNoteStyles = ##()
> }
> 
> It is still questionable why NullVoice would hickup on simply changing the 
> NoteHead style, so think this is worth creating a bug report.
> 
> Cheers,
> Valentin

Yes, it does seem odd—and avoidable—that NullVoice would have a problem with 
shape notes.

With aikenHeads, there is one note-head shape (the triangle that is not a 
pyramid) that depends on the stem direction.  My assumption is that’s where the 
error is coming from.  But if the note is not being shown at all, that logic 
doesn’t need to be executed.

David F.





Re: Error message using AikenHeads with NullVoice

2022-07-07 Thread David F.



> On Jul 6, 2022, at 12:40 PM, David Wright  wrote:
> 
> On Wed 06 Jul 2022 at 11:56:52 (-0600), David F. wrote:
>> [ … ]
>> The command to use aikenHeads comes from a separate style file that gets 
>> included for each hymn.  But there is an unfortunate interaction between 
>> aikenHeads and NullVoice: Lilypond outputs the following error message:
>> 
>> programming error: must have stem dir for note head
>> continuing, cross fingers
>> 
>> And it outputs a lot of these messages.  I need to find a way to stop 
>> Lilypond from outputting this error.  Any kind of quick fix or hack would be 
>> sufficient.
> 
> $ lilypond source-file.ly |& tee /tmp/complete-errors | grep -v 'programming 
> error: must have stem dir for note head' | grep -v 'continuing, cross fingers'
> 
> Is this hackish enough? The unfiltered errors are available
> for consultation in /tmp/complete-errors. I would need sed
> rather than grep to filter out the second line only when
> preceded by this particular first line.
> 
> Cheers,
> David.

Yes, that would be an option.  I’m already filtering the warning I get from 
setting a custom variable from the command line:

"2>&1 | grep -v '^warning: no such internal option: 
\(aspect-ratio\|style\)$’”

But in this case, I’d be suppressing the error completely.  Which means that, 
in the future, if something I did were to also cause this error, I wouldn’t see 
it.

David F.




Re: Error message using AikenHeads with NullVoice

2022-07-06 Thread David F.


> On Jul 6, 2022, at 1:20 PM, Jean Abou Samra  wrote:
>
> How about changing \Staff into \Voice?
>
> \layout {
> \context {
> \Voice
> \aikenHeads
> }
> }
>
> That way, it won't affect those NullVoice contexts.
>
> Best,
> Jean
>

Perfect.  That does exactly what I wanted.

Thanks!

David F.




Error message using AikenHeads with NullVoice

2022-07-06 Thread David F.
I have a collection of SATB hymns that I would like to engrave using shape 
notes.  The Lilypond files are all structured the same, as seen below—treble 
clef with music and a NullVoice for aligning lyrics, then the lyrics, then the 
bass clef.

%
\version "2.22"
\language “english"

% included from another file
\layout {
\context {
\Staff
\aikenHeads
}
}

\score {
<<
\new Staff <<
% music here
\new NullVoice = "melody" { e'8 fs'8 }
>>
% \new Lyrics \lyricsto "melody" { Ly -- rics }
% bass clef here
>>
\layout {}
}
%

The command to use aikenHeads comes from a separate style file that gets 
included for each hymn.  But there is an unfortunate interaction between 
aikenHeads and NullVoice: Lilypond outputs the following error message:

programming error: must have stem dir for note head
continuing, cross fingers

And it outputs a lot of these messages.  I need to find a way to stop Lilypond 
from outputting this error.  Any kind of quick fix or hack would be sufficient.

One thought I had would be to re-enable regular note heads for the NullVoice:

\new NullVoice = "melody" \with { \unset shapeNoteStyles } { e'8 
fs'8 }

But I couldn’t come up with anything that worked.

Any help or ideas would be greatly appreciated.

David F.


Re: UTF-8 characters in filenames with Lilypond 2.23

2022-05-25 Thread David F.



> On May 25, 2022, at 11:21 AM, Jonas Hahnfeld  wrote:
> 
> On Sat, 2022-05-21 at 15:20 -0600, David F. wrote:
>> System: Intel-based macOS
>> 
>> I make extensive use of UTF-8 characters in the filenames of my Lilypond 
>> files.  This works in Lilypond up through version 2.22.  But Lilypond 2.23 
>> cannot handle UTF-8 characters in filenames.
>> 
>> Filename: tést.ly
>> 
>> \version "2.22"
>> 
>> { c' }
>> 
>> 
>> Under v2.22, this file complies without problem.  With 2.23 (including the 
>> just release 2.23.9) I get the following error:
>> 
>> Starting lilypond 2.23.9 [tést.ly]...
>> warning: cannot find file: `/Users/david/Projects/Lily Scratch/te??st.ly'
>> fatal error: failed files: "/Users/david/Projects/Lily Scratch/te??st.ly"
>> Exited with return code 1.
>> 
>> I thought that this problem had already been reported, but I can’t find any 
>> mention of it now.  So I’m reporting it.
>> 
>> David F.
> 
> Hi David,
> 
> I can indeed reproduce this on macOS, which I think is the critical
> piece of information here. It would just be too boring if all operating
> systems agreed on how to handle filenames with special characters... In
> this case, it might also have to do with the file system because if I
> do 'ls', I also get question marks (but this might also be because I'm
> ssh-ing from Linux...)
> 
> Jonas

Thanks for looking into this Jonas.  As I said in my original message Lilypond 
up to v2.22 handles UTF characters just fine.

David F.




Re: UTF-8 characters in filenames with Lilypond 2.23

2022-05-21 Thread David F .



> On May 21, 2022, at 5:01 PM, Jean Abou Samra  wrote:
> 
> Le 21/05/2022 à 23:20, David F. a écrit :
>> System: Intel-based macOS
>> 
>> I make extensive use of UTF-8 characters in the filenames of my Lilypond 
>> files.  This works in Lilypond up through version 2.22.  But Lilypond 2.23 
>> cannot handle UTF-8 characters in filenames.
>> 
>> Filename: tést.ly
>> 
>> \version "2.22"
>> 
>> { c' }
>> 
>> 
>> Under v2.22, this file complies without problem.  With 2.23 (including the 
>> just release 2.23.9) I get the following error:
>> 
>> Starting lilypond 2.23.9 [tést.ly]...
>> warning: cannot find file: `/Users/david/Projects/Lily Scratch/te??st.ly'
>> fatal error: failed files: "/Users/david/Projects/Lily Scratch/te??st.ly"
>> Exited with return code 1.
>> 
>> I thought that this problem had already been reported, but I can’t find any 
>> mention of it now.  So I’m reporting it.
>> 
>> David F.
> 
> 
> This is actually not an issue with LilyPond, but with Frescobaldi,
> when you have "run LilyPond with English messages" enabled in the
> Preferences. This problem is known for some time already, but
> I didn't see an issue in the Frescobaldi tracker, so I just
> opened one:
> 
> https://github.com/frescobaldi/frescobaldi/issues/1438
> 
> The workaround is to uncheck "Run LilyPond with English messages"
> in Edit > Preferences > LilyPond Preferences.
> 
> Best,
> Jean
> 

No, I get the same error running lilypond from the command line:

$ lilypond --png tést.ly 
GNU LilyPond 2.23.9 (running Guile 2.2)
warning: cannot find file: `t??st.ly'
fatal error: failed files: "t??st.ly”

David F.




UTF-8 characters in filenames with Lilypond 2.23

2022-05-21 Thread David F.
System: Intel-based macOS

I make extensive use of UTF-8 characters in the filenames of my Lilypond files. 
 This works in Lilypond up through version 2.22.  But Lilypond 2.23 cannot 
handle UTF-8 characters in filenames.

Filename: tést.ly

\version "2.22"

{ c' }


Under v2.22, this file complies without problem.  With 2.23 (including the just 
release 2.23.9) I get the following error:

Starting lilypond 2.23.9 [tést.ly]...
warning: cannot find file: `/Users/david/Projects/Lily Scratch/te??st.ly'
fatal error: failed files: "/Users/david/Projects/Lily Scratch/te??st.ly"
Exited with return code 1.

I thought that this problem had already been reported, but I can’t find any 
mention of it now.  So I’m reporting it.

David F.




Re: Manipulating lyrics with a music function

2021-10-09 Thread David F.


On Oct 8, 2021, at 10:33 PM, Aaron Hill  wrote:

> On 2021-10-08 8:24 pm, David F. wrote:
>> macOS 10.14.6, Lilypond 2.22.1
>> The syntax for adding quotes to lyrics is a little cluttered, so I
>> thought I’d whip up a couple of little helper functions to tidy things
>> up.  Two hours later I’m reaching out to the mailing list for help.
>> The example below is failing in two ways.  First, I can’t figure out
>> how to actually interpolate the syllable that is the input to my
>> functions into the output.  Second, the hyphen between the first two
>> syllables is lost.
> 
> Your functions could accept the text as markup.  Also, you should strongly 
> consider using typographer's quotes, which can be input directly as UTF-8 or 
> using character shorthand neither of which requires messing about with 
> escaping:
> 
> 
> \paper { #(include-special-characters) }
> \relative { \time 3/4 e'4 e4. e8 d4 e d c2. }
> \addlyrics { In -- com -- pa -- ra -- ble, said she }
> 
> openQuote = #(define-scheme-function (text) (markup?) #{ \markup \concat { “ 
> #text } #})
> closeQuote = #(define-scheme-function (text) (markup?) #{ \markup \concat { 
> #text ” } #})
> \relative { \time 3/4 e'4 e4. e8 d4 e d c2. }
> \addlyrics { \openQuote In -- com -- pa --  ra -- \closeQuote ble, said she }
> 

Thanks Aaron, that’s great.  Yes, using typographer’s quotes was one of my 
motivations for making the helper functions in the first place.

I did notice that the \markup defeats lyric ties.  It’s not a big deal—that 
combo only occurs once in the songs I have.  But now I’m curious.  What do 
lyric syllables get turned into?  A LyricEvent?  Is it possible to build and 
return a LyricEvent from a function?


openQuote = #(define-scheme-function (text) (markup?) #{ \markup \concat { “ 
#text } #})
closeQuote = #(define-scheme-function (text) (markup?) #{ \markup \concat { 
#text ” } #})
\relative { \time 3/4 e'4 e4. e8 d4 e d c2. }
\addlyrics { \openQuote O~In -- com -- pa --  ra -- \closeQuote ble, said she }


David F.




Manipulating lyrics with a music function

2021-10-08 Thread David F.
macOS 10.14.6, Lilypond 2.22.1

The syntax for adding quotes to lyrics is a little cluttered, so I thought I’d 
whip up a couple of little helper functions to tidy things up.  Two hours later 
I’m reaching out to the mailing list for help.  The example below is failing in 
two ways.  First, I can’t figure out how to actually interpolate the syllable 
that is the input to my functions into the output.  Second, the hyphen between 
the first two syllables is lost.

Help?

David F.

\version "2.22"

\layout {
\context {
\Lyrics
\override LyricHyphen.minimum-distance = #1.0
}
}

openQuote = #(define-music-function (syllable) (ly:music?)
  #{ \lyricmode { "\"In" } #}
  )

closeQuote = #(define-music-function (syllable) (ly:music?)
  #{ \lyricmode { "ble,\"" } #}
  )

\relative { \time 3/4 e'4 e4. e8 d4 e d c2. }
\addlyrics { \openQuote In -- com -- pa --  ra -- \closeQuote ble, said she }




Re: After directory rename, Frescobaldi doesn't show PDF

2020-07-05 Thread David F.


On Jul 5, 2020, at 6:23 PM, Davide Liessi  wrote:

> Il giorno ven 3 lug 2020 alle ore 23:48 David F.  ha scritto:
>> Frescobaldi is having problems with file paths that have question marks and 
>> accented characters.
> 
> It should be solved in current master and v3.1.x branches.
> The fix will appear in future Frescobaldi 3.1.3.
> 
> Best wishes.
> Davide

That’s great!  Thanks!!

David F.




Re: After directory rename, Frescobaldi doesn't show PDF

2020-07-03 Thread David F.


On Jul 3, 2020, at 4:18 PM, Davide Liessi  wrote:

> Dear David,
> 
> Il giorno ven 3 lug 2020 alle ore 23:48 David F.  ha scritto:
>> Frescobaldi is having problems with file paths that have question marks and 
>> accented characters.
> 
> tomorrow I'll test and get back to you.
> 
>> This problem is not present in Frescobaldi 2.20.
> 
> This is interesting.
> 
> Best wishes.
> Davide

Thanks!

David




Re: After directory rename, Frescobaldi doesn't show PDF

2020-07-03 Thread David F.


On Jul 3, 2020, at 3:18 PM, David F.  wrote:

> macOS 10.14.6
> Frescobaldi 3.1.2
> 
> I was working on a song in Frescobaldi.  After renaming the directory that 
> the song is in Frescobaldi no longer shows the PDF for the song after 
> engraving.
> 
> Does Frescobaldi keep track of what PDF file belongs to what input file?  Can 
> that information be flushed?
> 
> I’ve tried to reproduce the problem intentionally, but haven’t had any luck.  
> Any help would be appreciated.
> 
> (Also, I’m posting this to the Lilypond list because none of my message go 
> through on the Frescobaldi list.)
> 
> David
> 

Ok, I’ve narrowed the issue down.  Frescobaldi is having problems with file 
paths that have question marks and accented characters.

Given a file named “song.ly” with just this content:


\version "2.19"

\fixed c' { c d e f }


Frescobaldi shows the PDF after engraving if this file is in either of the 
following directories:

Helló/
Hello?/

But Frescobaldi does not show the PDF if song.ly is in a directory named Helló?/

And yes, I use the fully punctuated song titles as the enclosing directory 
name.  macOS handles it, no problem.  I even use bash scripts to process these 
files without a hiccup.  The following are all examples of directory names I 
use:

¡Gloria! ¡Gloria!/
Bendiciones, ¡Cuántas Tienes Ya!/
Señor, ¿Quién Entrará?/

This problem is not present in Frescobaldi 2.20.

David




After directory rename, Frescobaldi doesn't show PDF

2020-07-03 Thread David F.
macOS 10.14.6
Frescobaldi 3.1.2

I was working on a song in Frescobaldi.  After renaming the directory that the 
song is in Frescobaldi no longer shows the PDF for the song after engraving.

Does Frescobaldi keep track of what PDF file belongs to what input file?  Can 
that information be flushed?

I’ve tried to reproduce the problem intentionally, but haven’t had any luck.  
Any help would be appreciated.

(Also, I’m posting this to the Lilypond list because none of my message go 
through on the Frescobaldi list.)

David




Re: Complex/Large Lilypond projects and build automation

2019-12-07 Thread David F.

On Dec 7, 2019, at 2:35 PM, Jim Duke  wrote:

> I have a large Lilypond project for several hymnals.  The project is 
> organized into a subdirectory structure with each hymn in a separate 
> directory.  For each hymn I produce several products: an 8.5x11 PDF, a 6x9 
> PDF, a set of images formatted for projection at 4x3 and 16x9 aspect ratios, 
> and a set of part dominant MP3’s for use in learning the hymns.  These 
> products are then assembled at a higher level into a comprehensive PDF of the 
> hymnal including front material and index; and a package of the slide images 
> organized to be compatible with a Slide production product used at my church 
> for assembling a song service; as well as assembling metadata files to be 
> uploaded into a website I maintain that provides access to these hymns and 
> provides simple search capabilities and internet access to these products.
>  
> I use Make (that old workhorse) to automate the process; but that has some 
> distinct limitations.  So I was wondering what tools others may be using to 
> aid them in building larger Lilypond projects.  What, if anything, are you 
> using?  How well does that work for you?

Jim, I’m right behind you!  I have a collection of just over 100 hymns that are 
mostly Spanish language, but about 20 of those also have bilingual versions.  
My build system creates proof PDFs, 4x3 and 16x9 slide images and 4x3 and 16x9 
PowerPoint slide decks which get synchronized to a shared Dropbox folder.  I 
started off with make, but switched to gradle because I was already using that 
at work.  I’ve got about 400 lines of Kotlin/gradle code.  I haven’t built any 
hymnals yet, but I plan to.

So far I feel like I’ve gotten further with gradle than I could have with make, 
but lately I’ve found gradle to be more and more annoying.  Both make and 
gradle struggle with 1-to-many and (especially) many-to-1 type build tasks.  
So, for example, taking 8 png files and combining them into one Powerpoint file 
is doable in gradle, but you’re really fighting the build system and 
incremental builds start to fail in certain cases (like when a song goes from 
fitting on 6 slides to taking up 8 slides).  There are other annoyances.

Just a couple of weeks ago, I came across this blog post:
  "The only build system that might someday replace make”
  https://apenwarr.ca/log/20101214

So I intend to dig in to the design of the redo system and see if it can match 
the functionality provided by gradle without the pain and annoyances.

David



Re: Snippet: Using arbitrary markup with LyricHyphen

2019-03-16 Thread David F.


On Mar 16, 2019, at 6:30 AM, Aaron Hill  wrote:

> This whole thing started as a way to automate setting the properties of 
> LyricHyphen based on the current LyricText font.  In my use case, I am 
> preparing music for projection, which requires larger font sizes than typical 
> for print.  The default values for things like length, thickness, and height 
> are not suitable and require manual tweaking.
> 
> What I wanted is a way to measure the size of an actual hyphen in a font and 
> have LyricHyphen's default stencil procedure draw a box accordingly.  
> However, when using ly:stencil-extent against a simple glyph, the results did 
> not reflect only the ink but also included spacing/kerning information for 
> the glyph.  Depending on the font, the effective width of a hyphen might be 
> larger than it actually appears.  The resulting LyricHyphen does not line up 
> with nor properly mimic a real hyphen.
> 
> Now, even if I could solve the detail with glyph outlines and get the right 
> dimensions, there is still a problem that Lyric_hyphen::print uses a rounded 
> box with a hard-coded corner radius for its stencil.  In my case, the radius 
> was too small compared to the actual hyphen in the font I was using, so it 
> looks too "sharp".
> 
> So, what I ended up doing was rewriting the LyricHyphen stencil procedure to 
> use an actual hyphen glyph rather than try to draw something.  And in the 
> noble pursuit of generalization, the following approach supports *any* 
> arbitrary markup.

I’ve been wanting this for quite a while.  Thanks for sharing!!

David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Change stanza formatting

2019-03-10 Thread David F.


On Mar 1, 2019, at 6:21 PM, Aaron Hill  wrote:

> On 2019-03-01 10:20 am, David F. wrote:
>> There’s one small issue that I noticed.  I’m engraving music with
>> simultaneous bilingual lyrics and I’m using the stanza number to print
>> the language name. Since the language name is almost always longer
>> than the first syllable, it is making that first note column wider
>> than it would be without the stanza number. Is there a way to keep the
>> sanza number from influencing the width of the note column?
>> (On the one hand, the extra space isn’t necessarily a big deal.  But
>> the whole reason I want to print the language names on top of the
>> lyrics instead of to the left of them is that I’ve run into cases
>> where the extra text in the stanza number is preventing me from
>> getting everything I want onto the first line of music.)
> 
> Would it work to use abbreviations for the languages?  (e.g. "E:" and "F:" 
> for "English" and "Français".)  Unless your first LyricText is particularly 
> wide, there should be enough room for such an abbreviation as a traditional 
> StanzaNumber without the need to play around with properties.

That’s a great suggestion, but English and French are just what were in the 
snippet I got from the Lilypond manual.  We’re actually singing in English and 
Español.  So I could do “Eng.” and “Esp.”, but I’m worried that abbreviations 
would be more confusing than helpful.

> As an alternative, you could see if right-aligning the StanzaNumbers works 
> for you.  Since this means the LyricTexts and StanzaNumbers share a common 
> right extent, there should be no additional space added before the next 
> syllable:
> 
> 
> \version "2.19.82"
> 
> \layout { \context { \Lyrics
>  \override StanzaNumber.direction = #UP
>  \override StanzaNumber.side-axis = #Y
>  \override StanzaNumber.padding = #0.2
>  \override StanzaNumber.X-offset = #(lambda (grob)
>(define (grob-list-property glst prop)
>  (map (lambda (g) (ly:grob-property g prop)) glst))
>(let* ((sse (ly:grob-object grob 'side-support-elements))
>   (lyrics (cdr (ly:grob-array->list sse)))
>   (lyrics-extents (grob-list-property lyrics 'X-extent))
>   (lyrics-widths (map interval-length lyrics-extents))
>   (lyrics-offsets (grob-list-property lyrics 'X-offset))
>   (lyrics-rights (map + lyrics-offsets lyrics-widths))
>   (lyrics-right (apply max lyrics-rights))
>   (grob-extent (ly:grob-property grob 'X-extent))
>   (grob-width (interval-length grob-extent)))
> (- lyrics-right grob-width)))
> } }
> 
> \new Voice \relative { \time 3/4 g'2 e4 a2 f4 g2. }
> \addlyrics { \set stanza = #"English" Hi, my name is Bert. }
> \addlyrics { \set stanza =  #"Français" Oooh, ché -- ri, je t'aime }
> 
> 
> NOTE: The code above considers all of the LyricTexts in the column, not just 
> the current line.  As a result, there is a consistent right-alignment of the 
> StanzaNumbers based on the widest of the LyricTexts.

I had to add \override StanzaNumber.Y-offset = 
#ly:side-position-interface::y-aligned-side in order for the stanza text to not 
overlap the lyrics.  And I did’t like the way it looked at first.  But it’s 
grown on me.  I’ll probably play with it some more.

> Assuming you want left-alignment without the added space to the right, you 
> will probably have to resort to altering the actual extents of the 
> StanzaNumber:
> 
> 
> \version "2.19.82"
> 
> #(define (interval-max . args) (reduce interval-union empty-interval args))
> #(define ((side-support-property func prop) grob)
>  (let* ((sse (ly:grob-object grob 'side-support-elements))
> (elems (cdr (ly:grob-array->list sse)))
> (props (map (lambda (g) (ly:grob-property g prop)) elems)))
>(apply func props)))
> 
> \layout { \context { \Lyrics
>  \override StanzaNumber.direction = #UP
>  \override StanzaNumber.side-axis = #Y
>  \override StanzaNumber.padding = #0.2
>  \override StanzaNumber.X-offset = #(side-support-property min 'X-offset)
>  \override StanzaNumber.X-extent = #(side-support-property interval-max 
> 'X-extent)
>  \override StanzaNumber.Y-offset = #ly:side-position-interface::y-aligned-side
> } }
> 
> \new Voice \relative { \time 3/4 g'2 c,4 a'2 f4 g2. }
> \addlyrics { \set stanza = #"English" Hi, my name is Bert. }
> \addlyrics { \set stanza =  #"Français" Oooh, ché -- ri, je t'aime }
> 
> 
> But be advised this approach can generate overlapping ink.  In the example 
> above, I lowered the E in the first measure to middle C to demonstrate this.  
> The collision occ

Re: Change stanza formatting

2019-03-01 Thread David F.


On Mar 1, 2019, at 1:04 AM, Aaron Hill  wrote:

> On 2019-02-28 8:53 pm, David F. wrote:
>> Given a line of lyrics with the stanza number in front, how can I move
>> the stanza number (“1.”) so that it is above the first syllable of the
>> lyrics instead of to the left of the lyrics?
>> \version "2.19"
>> \new Voice \relative {
>>\time 3/4 g'2 e4 a2 f4 g2.
>> }
>> \addlyrics {
>>\set stanza = #"1. "
>>Hi, my name is Bert.
>> }
> 
> The above snippet cheats a little because StanzaNumber does not actually 
> support self-alignment-interface, but it is reusing some code to ensure the 
> text is centered to the parent note.
> 
> It would be possible to support alignment to the LyricText with a little 
> extra work.  The following left-aligns the StanzaNumber to the supporting 
> text:
> 
> 
> \version "2.19.82"
> 
> \layout { \context { \Lyrics
>  \override StanzaNumber.direction = #UP
>  \override StanzaNumber.side-axis = #Y
>  \override StanzaNumber.X-offset = #(lambda (grob)
>(let* ((sse (ly:grob-object grob 'side-support-elements))
>   (lyr (car (ly:grob-array->list sse)))
>   (xoff (ly:grob-property lyr 'X-offset)))
>  xoff))
>  \override StanzaNumber.Y-offset = #ly:side-position-interface::y-aligned-side
> } }
> 
> \new Voice \relative { \time 3/4 g'2 e4 a2 f4 g2. }
> \addlyrics { \set stanza = #"1." Hi, my name is Bert. }
> 

Thanks, Aron, that’s exactly what I was looking for.

There’s one small issue that I noticed.  I’m engraving music with simultaneous 
bilingual lyrics and I’m using the stanza number to print the language name. 
Since the language name is almost always longer than the first syllable, it is 
making that first note column wider than it would be without the stanza number. 
Is there a way to keep the sanza number from influencing the width of the note 
column?

(On the one hand, the extra space isn’t necessarily a big deal.  But the whole 
reason I want to print the language names on top of the lyrics instead of to 
the left of them is that I’ve run into cases where the extra text in the stanza 
number is preventing me from getting everything I want onto the first line of 
music.)



\version "2.19"

\layout { \context { \Lyrics
 \override StanzaNumber.direction = #UP
 \override StanzaNumber.side-axis = #Y
 \override StanzaNumber.X-offset = #(lambda (grob)
   (let* ((sse (ly:grob-object grob 'side-support-elements))
  (lyr (car (ly:grob-array->list sse)))
  (xoff (ly:grob-property lyr 'X-offset)))
 xoff))
 \override StanzaNumber.Y-offset = #ly:side-position-interface::y-aligned-side
} }

\new Voice \relative { \time 3/4 g'2 e4 a2 f4 g2. }
\addlyrics { \set stanza = #"English" Hi, my name is Bert. }
\addlyrics { \set stanza =  #"Français" Oh, ché -- ri, je t'aime }



Thanks,
David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Change stanza formatting

2019-02-28 Thread David F.
Given a line of lyrics with the stanza number in front, how can I move the 
stanza number (“1.”) so that it is above the first syllable of the lyrics 
instead of to the left of the lyrics?

\version "2.19"

\new Voice \relative {
\time 3/4 g'2 e4 a2 f4 g2.
}
\addlyrics {
\set stanza = #"1. "
Hi, my name is Bert.
}

Thanks,
David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: systems-per-page and ragged-last-bottom

2019-02-07 Thread David F.


On Feb 7, 2019, at 10:04 AM, Malte Meyn  wrote:

> Hi list,
> 
> IMHO systems-per-page should be ignored on the last page if (and only if) 
> ragged-last-bottom is set to ##t. I think that systems-per-page is used for 
> even spacing and ragged-last-bottom = ##t shows that the user wants an 
> exception to such an even spacing on the last page.

I would very much appreciate this behavior from Lilypond.

David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: set-global-staff-size undoes define fonts

2019-01-27 Thread David F.


On Jan 27, 2019, at 9:09 PM, Martin Neubauer  wrote:

> On 27/01/2019 04:52, David F. wrote:
>> I can specify the font for my score to use with #(define fonts … ), but 
>> calling #(set-global-staff-size) undoes the font definition.
>> 
>> In the snippet below, Times New Roman will be used as the font for the whole 
>> document.  But if line 6 is uncommented, the font reverts to the default of 
>> New Century Schoolbook.  (These fonts are easily distinguished by the letter 
>> Q—hence the title.)
>> 
>> Any suggestion on how I can both set the font to TNR and set the staff size 
>> (in that order)?
> Why do you insist on the order, anyway? If you don't, I think the
> solution would be quite obvious.

Because I engrave hymns in several different styles, e.g. 4:3 slides, 16:9 
slides, hymnal-style, etc.  I have a .ly file with all the base or common 
styles and then I override whatever is appropriate for specific styles.  In 
this case, I want the font to be the same for all styles (so it gets declared 
first).  But slides have a larger text size, so I want to override the font 
size specifically for engraving slides, so it gets declared later.

As a workaround to the trouble I’m having (because there is a bug in either 
Lilypond or my understanding) I’m currently re-declaring the font change after 
I call set-global-staff-size.  Which means I now have duplication in my style 
declarations.

David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: set-global-staff-size undoes define fonts

2019-01-26 Thread David F.


On Jan 26, 2019, at 8:52 PM, David F.  wrote:

> I can specify the font for my score to use with #(define fonts … ), but 
> calling #(set-global-staff-size) undoes the font definition.
> 
> In the snippet below, Times New Roman will be used as the font for the whole 
> document.  But if line 6 is uncommented, the font reverts to the default of 
> New Century Schoolbook.  (These fonts are easily distinguished by the letter 
> Q—hence the title.)
> 
> Any suggestion on how I can both set the font to TNR and set the staff size 
> (in that order)?
> 
> ===
> \version "2.19"
> 
> \paper {
>#(define fonts (make-pango-font-tree "Times New Roman" "" "" 1))
> }
> % #(set-global-staff-size 20)
> 
> \header {
>title = "QQQ"
> }
> 
> \relative c' {
>  c c c c
> }
> ===

Using the new 2.19 syntax for setting fonts has the same problem.  I’m using 
2.19.82 on macOS 10.13.6.

\paper {
#(define fonts (set-global-fonts #:roman "Times New Roman"))
}

David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


set-global-staff-size undoes define fonts

2019-01-26 Thread David F.
I can specify the font for my score to use with #(define fonts … ), but calling 
#(set-global-staff-size) undoes the font definition.

In the snippet below, Times New Roman will be used as the font for the whole 
document.  But if line 6 is uncommented, the font reverts to the default of New 
Century Schoolbook.  (These fonts are easily distinguished by the letter 
Q—hence the title.)

Any suggestion on how I can both set the font to TNR and set the staff size (in 
that order)?

===
\version "2.19"

\paper {
#(define fonts (make-pango-font-tree "Times New Roman" "" "" 1))
}
% #(set-global-staff-size 20)

\header {
title = "QQQ"
}

\relative c' {
  c c c c
}
===

Thanks,
David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Adjusting space in a lyric tie

2019-01-20 Thread David F.


On Jan 20, 2019, at 7:43 AM, Kieren MacMillan  
wrote:

> Hi David,
> 
>> I want to increase the space inside the lyric tie.  So if I have 
>> “some~word”, I’d like to have a little more space between “some” and “word”. 
>>  LyricHyphen.minimum-distance doesn’t do that.
> 
> Ah, yes. Glad you found the answer!
> 
> In your example, I suppose you really need all three tweaks given — otherwise 
> no hyphen appears, which makes the output rather confusing for the 
> reader/singer.

Exactly.  I already had LyricHyphen.minimum-distance set to 1.  Then last night 
I came across LyricSpace.minimum-distance.  All that was left was easing the 
spacing of LyricText.word-space.  The result is much more legible.

Thanks again for your help!
David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Adjusting space in a lyric tie

2019-01-19 Thread David F.


On Jan 19, 2019, at 10:06 PM, Aaron Hill  wrote:

> LyricText.word-space is what you want to adjust.  Note that it doesn't 
> stretch the size of the tie.

Perfect!  Thanks!


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Adjusting space in a lyric tie

2019-01-19 Thread David F.


On Jan 19, 2019, at 8:53 PM, Kieren MacMillan  
wrote:

> Hi David,
> 
>> How do I adjust the space between two syllables/words that are tied?  
>> LyricSpace.minimum-distance works for words that are not tied.
> 
> \override Lyrics.LyricHyphen.minimum-distance = #2
> 
> Hope that helps!

Thanks Kieren, but I wasn’t clear enough in my initial request for help.  I 
want to increase the space inside the lyric tie.  So if I have “some~word”, I’d 
like to have a little more space between “some” and “word”.  
LyricHyphen.minimum-distance doesn’t do that.

David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Adjusting space in a lyric tie

2019-01-19 Thread David F.
How do I adjust the space between two syllables/words that are tied?  
LyricSpace.minimum-distance works for words that are not tied.

Thanks!
David

\version "2.19"

{
c'4 d'4 e'4 f'4
}
\addlyrics {
\override Lyrics.LyricSpace.minimum-distance = #2
Ly -- rics with~some~ly -- ric~ties
}


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Slurs inside a beam

2018-08-12 Thread David F.


On Aug 12, 2018, at 8:24 AM, Thomas Morley  wrote:

> 2018-08-12 3:31 GMT+02:00 Andrew Bernard :
>> Hi David,
>> 
>> One way to do it:
>> 
>> \version "2.19"
>> 
>> {
>>  8. 16
>> }
>> 
>> 
>> From the Changes page:
>> 
>> A new command \=X has been added – where ‘X’ can be any non-negative integer
>> or symbol – so that a specific ‘id’ can be assigned to the start and end of
>> slurs and phrasing slurs.
>> 
>> This is useful when simultaneous slurs are required or if one slur overlaps
>> another or when nesting short slurs within a longer one.
>> 
>> Andrew
>> 
>> 
>> 
>> On Sun, 12 Aug 2018 at 06:31, David F.  wrote:
>>> 
>>> While we’re on the topic of bending slurs to our will, I’d like for
>>> slurred, beamed eighth notes to have the slur printed below or inside the
>>> beam.  This works with a simple ^~ for ties.  How might I accomplish this?
>>> 
> 
> Some background.
> Slurred notes or chords will have their left/right bound set to the
> respective NoteColumn.
> As long as NoteColumns are the bounds, I see no possibility to get
> Slurs "inside" of a Beam (with equal direction for both)
> 
> In-chord Slurs bounds are NoteHeads.
> Thus Andrew's coding above works.
> 
> Another possibility would be to reset bounds for certain Slurs from
> NoteColumn to selected NoteHead:
> 
> #(define (buzz lb rb)
> (lambda (grob)
>  (let* ((left-bound (ly:spanner-bound grob LEFT))
> (left-nhs-array
>   (ly:grob-object left-bound 'note-heads))
> (left-nhs
>   (if (ly:grob-array? left-nhs-array)
>   (sort
> (ly:grob-array->list left-nhs-array)
> (lambda (p q)
>   (ly:pitch (ly:prob-property (ly:grob-property p 'cause) 'pitch)
> (ly:prob-property (ly:grob-property p 'cause) 'pitch
>   '()))
> (right-bound (ly:spanner-bound grob RIGHT))
> (right-nhs-array
>   (ly:grob-object right-bound 'note-heads))
> (right-nhs
>   (if (ly:grob-array? right-nhs-array)
>   (sort
> (ly:grob-array->list right-nhs-array)
> (lambda (p q)
>   (ly:pitch (ly:prob-property (ly:grob-property p 'cause) 'pitch)
> (ly:prob-property (ly:grob-property p 'cause) 'pitch
>   '(
>(ly:spanner-set-bound! grob LEFT (list-ref left-nhs lb))
>(ly:spanner-set-bound! grob RIGHT (list-ref right-nhs rb)
> 
> {
>  8[-\tweak before-line-breaking #(buzz 1 1) ^\=1(_\=2(
>  ]\=1)\=2)
> }
> 
> Making for a different syntax.
> 
> The lower Slur looks nicer, imho
> The upper Slur still needs shaping (with \shape or \shapeII or Aaron's
> coding or whatever)
> 
> Cheers,
>  Harm

Thanks for your explanation, Harm.  But I’m not familiar enough with Lilypond 
internals to completely understand what’s going on here.

In particular, I don’t understand what’s different about beamed notes versus 
non-beamed notes that make this all so tricky.  For example, two slurred 
quarter notes have a perfectly placed slur.  If those two quarter notes were 
beamed just as they are (making them eighth notes, obviously) everything would 
be just fine.

\version "2.19"
{
e'4 ^( a'4 )  % Two slurred quarter notes.  A beam would fit just fine over 
the slur.
e'8 [ ^( a'8 ) ]  % Two beamed eighth notes with the slur above the beam
}

Is there a change in the representation between a quarter note and a beamed 
note that prevents slurred beamed notes from being constructed just like 
slurred quarter notes?

Apologies in advance for my ignorance.

David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Slurs inside a beam

2018-08-11 Thread David F.
While we’re on the topic of bending slurs to our will, I’d like for slurred, 
beamed eighth notes to have the slur printed below or inside the beam.  This 
works with a simple ^~ for ties.  How might I accomplish this? 

\version "2.19"
\language "english"

\new Staff \with { beamExceptions = #'() } << {
 e'8 ~ e'8  % Tie bends down
 e'8 ^~ e'8  % Tie bends up *below* or *inside* the beam

e'8 ( a'8)  % Bends down
e'8 ^( a'8 )  % Bends up *above* or *outside* the beam

\tuplet 3/2 { b'8 ( a'8 ) f'8 }  % Bends down

\tuplet 3/2 { b'8 ^( a'8 ) f'8 }  % Bends up *above* or *outside* the beam
}>>

The behavior I am after can also be seen here:
  https://hymnary.org/hymn/SS4C1956/page/561

Thanks!
David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: keepWithTag for a score

2017-10-01 Thread David F.

On Sep 30, 2017, at 11:52 PM, David Kastrup <d...@gnu.org> wrote:

> "David F." <dav...@gmx.us> writes:
> 
>> Let’s say I have a score:
>> 
>> myScore = \score { … }
>> 
>> After my score is built, I’d like to keep/remove tagged sections from the 
>> music inside my score.
>> 
>> How might I accomplish that?
>> 
>> I’ve already tried to decompose/recompose the score, like so:
>> 
>> \score {
>>  \keepWithTag #’myTag
>>  #(ly:score-music #{ myScore #})
>> }
>> 
>> But I’ve gotten some weird results (like the last system being ragged) and I 
>> don’t really want to throw away the original score because it has stuff like 
>> headers in it.
>> 
>> Any ideas would be greatly appreciated.
> 
> <http://lilypond.org/tiny-examples.html>
> 
> If you want people to help, forcing them to create complete examples of
> their own for demonstration/experimentation is going to make them less
> likely to do so.
> 
> At any rate, you might want to experiment with ly:score-header and
> ly:score-output-defs.  Could be that with newer versions of LilyPond
> $(ly:score-header ...) and $@(ly:score-output-defs ...) work in a score
> definition or can be made to do so.
> 
> -- 
> David Kastrup

My apologies.

David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


keepWithTag for a score

2017-09-30 Thread David F.
Let’s say I have a score:

myScore = \score { … }

After my score is built, I’d like to keep/remove tagged sections from the music 
inside my score.

How might I accomplish that?

I’ve already tried to decompose/recompose the score, like so:

\score {
\keepWithTag #’myTag
#(ly:score-music #{ myScore #})
}

But I’ve gotten some weird results (like the last system being ragged) and I 
don’t really want to throw away the original score because it has stuff like 
headers in it.

Any ideas would be greatly appreciated.

David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Difference between #music and \music?

2017-09-19 Thread David F.
The following code runs without error:


\version "2.19"

#(define-markup-command (myMarkup layout props music)
  (ly:music?)
% Code to generate markup based on music goes here—elided for simplicity
(interpret-markup layout props "myMarkup"))

music = { c'1 }

\markup \myMarkup #music

\ music


However, if I replace #music with \music as the argument to \myMarkup, I get 
the following error:

document.ly:9:19: error: syntax error, unexpected MUSIC_IDENTIFIER, expecting 
LOOKUP_IDENTIFIER or SCM_FUNCTION or SCM_IDENTIFIER or SCM_TOKEN
\markup \myMarkup 
  \music

Can anyone shed some light on the difference between #music and \music?

Thanks,
David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


What is a score?

2017-09-17 Thread David F.
If I have a score,

myScore = \score { … }

and I try to pass it into a function that expects music (ly:music?), I get an 
error:

error: wrong type for argument 2.  Expecting music, found #

So if a score is not a music, what it is it?  Where can I find that object 
described in Lilypond’s documentation?  If I wanted to pass a score into a 
function, how would I specify its type?

And ditto to all of the above for book and bookpart.

Thanks,
David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Variable systems-per-page only on last page?

2017-09-09 Thread David F.
That doesn’t work for me.  (Lilypond 2.19.58)  I’ve got 3 bars at the end of a 
piece that would comfortably fit on a single line, but they are stretched to 
fill two lines.

David

On Sep 9, 2017, at 7:38 PM, Kieren MacMillan  wrote:

> Hi David,
> 
>> Is there a way to tell Lilypond to put 2 systems per page on all pages 
>> except the last—the last page can have one or two systems, depending on 
>> whichever fits best?
> 
> 1. It would be great if there was some consistent way to tell Lilypond to 
> consider the first and last page separately from the rest of the score, for 
> layout purposes — as far as I know, there's no such thing.
> 
> 2. If you use ragged-last-bottom = ##t, then systems-per-page = 2 should do 
> what you want. Does that not work for you?
> 
> Cheers,
> Kieren.
> 
> 
> Kieren MacMillan, composer
> ‣ website: www.kierenmacmillan.info
> ‣ email: i...@kierenmacmillan.info
> 


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Variable systems-per-page only on last page?

2017-09-09 Thread David F.
Is there a way to tell Lilypond to put 2 systems per page on all pages except 
the last—the last page can have one or two systems, depending on whichever fits 
best?

Thanks,
David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Show Key name and first note of song?

2017-09-02 Thread David F.
That is great! Just what I was looking for.

Your patch isn’t extracting the tonic—it always returns ‘C’.  But I always 
explicitly define the key, so your original code works like a charm.

Thanks!

David

On Sep 2, 2017, at 7:25 AM, David Nalesnik <david.nales...@gmail.com> wrote:

> On Sat, Sep 2, 2017 at 8:09 AM, David Nalesnik <david.nales...@gmail.com> 
> wrote:
>> Hi David,
>> 
>> On Sat, Sep 2, 2017 at 12:25 AM, David F. <dav...@gmx.us> wrote:
>>> I have a hymnal that prints the name of the key and the first note the song 
>>> above the treble clef sign of the first staff.  So, for example, if you 
>>> have Amazing Grace in the key of G major, the first note of the soprano 
>>> (melody) part is a D.  That is printed as “G/D”.
>>> 
>>> Can lilypond do that?  I thought I had seen an example of that somewhere, 
>>> but I can’t find it now.
>>> 
>> 
>> I don't know where you saw this on the lists, but attached you'll find
>> a solution.
>> 
> 
> The original code will break if there's no explicit key set.
> 
> Patch:
> 
> #(define-markup-command (firstNoteAndKey layout props mus)
>   (ly:music?)
>   (let* ((keey (extract-named-music mus 'KeyChangeEvent))
>  (tonic
>   (if (ly:music? keey)
>   (ly:music-property (car keey) 'tonic)
>   (ly:make-pitch 0 0)))
>  (notes (extract-named-music mus 'NoteEvent))
>  (first-ne (car notes))
>  (first-pitch (ly:music-property first-ne 'pitch)))
> (interpret-markup layout props
>   (make-concat-markup
>(list
> (format-key first-pitch)
> "/"
> (format-key tonic))


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Show Key name and first note of song?

2017-09-01 Thread David F.
I have a hymnal that prints the name of the key and the first note the song 
above the treble clef sign of the first staff.  So, for example, if you have 
Amazing Grace in the key of G major, the first note of the soprano (melody) 
part is a D.  That is printed as “G/D”.

Can lilypond do that?  I thought I had seen an example of that somewhere, but I 
can’t find it now.

Thanks!
David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Spacing for s4

2016-12-03 Thread David F.

On Dec 3, 2016, at 8:19 AM, Kieren MacMillan  
wrote:

> Right now, I have the syntactic sugar \ignoreH, \ignoreV, and \ignore (both H 
> and V) which I put in front of objects when I want to adjust their effect on 
> spacing — but it would be nice to have a built-in and less verbose way of 
> doing the same thing.

Kieren, how did you implement those functions?

David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: partcombine and tuplet bug (?)

2016-10-22 Thread David F.
I’ve hit this bug as well, but don’t have a workaround for it.  I’ve had to 
manually combine tuplets when voices share a note.  The issue there, besides 
the extra work and the way it muddies the source file, is that the shared note 
will be printed with two note heads and a single stem instead of a single note 
head and two stems.  Your example would look like:

musicC = { \tuplet 3/2 { r4 r 4 } d'2 }
musicD = { \tuplet 3/2 { r4 r 4 } c'2 }
\score { \partcombine \musicC \musicD }

In other places, I’ve been able to replace the tuplet in the second voice with 
s2, but for some reason that doesn’t work with this example.

partcombine similarly chokes on notes that should be beamed when voices share a 
note.  For that case, I can wrap the notes that should be beamed together with 
\partcombineApart … \partcomineAutomatic.  That trick does’t work for tuplets, 
though.

David

On Oct 22, 2016, at 8:44 AM, Kieren MacMillan  wrote:

> Hi all,
> 
> Any ideas why the tuplet isn’t bracketing properly in the following snippet, 
> and/or a workaround?
> 
> %%%  SNIPPET BEGINS
> \version "2.19"
> musicA = { \tuplet 3/2 { r4 r c' } d'2 }
> musicB = { \tuplet 3/2 { r4 r c' ~ } 2 }
> \score { \partcombine \musicA \musicB }
> %%%  SNIPPET ENDS
> 
> Thanks,
> Kieren.
> 
> 
> Kieren MacMillan, composer
> ‣ website: www.kierenmacmillan.info
> ‣ email: i...@kierenmacmillan.info
> 
> 
> ___
> lilypond-user mailing list
> lilypond-user@gnu.org
> https://lists.gnu.org/mailman/listinfo/lilypond-user


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Beaming, partcombine and pickups

2016-09-15 Thread David F.
I have a song in 9/8 time with a pickup of three eighth notes.  I expect 
Lilypond to beam those three eighth notes together, but it does not when I 
combine two voices with partcombine.

Am I doing something wrong?  Is Lilypond doing something wrong?  How might I 
work around this?

Thanks!
David



BeamsPartcombinePickup.ly
Description: Binary data


BeamsPartcombinePickup.pdf
Description: Adobe PDF document
___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Combining voices in American Hymns

2016-09-13 Thread David F.

On Sep 8, 2016, at 8:52 AM, David Wright  wrote:

> There's another "feature" of American hymn books illustrated on
> http://www.hymnary.org/text/amazing_grace_how_sweet_the_sound#pagescans
> which I haven't seen any mention of before, and only noticed recently
> when thumbing my way through a hymnbook during a boring hymn.
> 
> We're used to seeing lyrics left-aligned when under a melisma, but
> centred under the note otherwise. However, some hymnbooks left-align
> the first lyric on each printed line regardless.
> 
> The second hymn from the left, which is a link to
> http://www.hymnary.org/hymn/G32011/page/484
> shows this. I don't want it, but can LP do this automatically?

Ah, yes. It would be nice if Lilypond could be coaxed to do that.

Also, I’ve noticed that hymnals will often place line breaks inside a measure 
when the song begins with a partial measure, such that subsequent lines also 
begin with the same partial measure.  This typically also corresponds to the 
beginning of a poetic line.

For example, in this attached version of Amazing Grace, I’d prefer the first 
line to include first two beats of bar 7 (corresponding to the word “me!” in 
the first verse).

I know I can do this by hand, but it would be great if I could tell Lilypond to 
take an initial partial measure into account when breaking lines.

David



Amazing Grace.pdf
Description: Adobe PDF document
___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Solved Re: Combining voices in American Hymns

2016-09-13 Thread David F.

On Sep 7, 2016, at 10:56 PM, David F. <dav...@gmx.us> wrote:

> Is there a way to combine two voices and print both stems (up and down) when 
> the voices share a note?  \partcombine does not appear to do this by default.

As pointed out by Phil Holmes, \partcombine has been upgraded in 2.19 and now 
does exactly what I want when I use \partcombine #'(1 . 9).  See .ly and .pdf 
attached.

I really wish \partcombine didn’t obliterate the voices it consumes, though.  
Using the NullVoice is simple enough, but I’d rather not have to do it at all.

David



Amazing Grace.ly
Description: Binary data



Amazing Grace.pdf
Description: Adobe PDF document
___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Combining voices in American Hymns

2016-09-13 Thread David F.
On Sep 13, 2016, at 4:14 PM, Rutger Hofman <rut...@cs.vu.nl> wrote:

> On 09/13/2016 11:32 PM, David Wright wrote:
>> On Tue 13 Sep 2016 at 21:56:04 (+0100), J Martin Rushton wrote:
>>> On 12/09/16 19:21, Karlin High wrote:
>>>> On 9/7/2016 11:56 PM, David F. wrote:
>>>>> Is there a way to combine two voices and print both stems (up and down) 
>>>>> when the voices share a note?  \partcombine does not appear to do this by 
>>>>> default.
>>>>> 
>>>>> American SATB hymns are typically engraved with the soprano and alto 
>>>>> voices combined and the tenor and bass voices combined.  If a note in the 
>>>>> soprano voice has the same duration as the note in the alto voice, then 
>>>>> the notes for soprano and alto will share a stem.  If the durations are 
>>>>> different, then there is no sharing.  And if the notes are the same 
>>>>> duration and the same pitch, then the note with have both an up stem and 
>>>>> a down stem.
>>>> 
>>>> You're not alone with difficulties on American-style part combining.
>>>> Another LilyPond user shared some of her work with me, and I'm still
>>>> studying the approach she uses. Below is a small example I'm using for
>>>> experiments. I'm not very familiar with the inner workings of LilyPond;
>>>> maybe someone will take one look and say, "That will mostly work, but
>>>> you will run into problems with such-and-such situations."
>>>> --
>>>> Karlin High
>>>> Missouri, USA
>>> 
> 
> My guess is that \partcombine #'(1 . 9) or \partcombine #'(2 . 9) does what 
> you specify. I attach code for default partcombine and both your options. 
> Beware that stem crossings need to lead to uncombined notes.

Why 9 as the second argument to \partcombine?

David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


New \partcombine in 2.19 Was: Re: Combining voices in American Hymns

2016-09-08 Thread David F.

On Sep 8, 2016, at 2:09 AM, Phil Holmes  wrote:

> Partcombine has been improved in 2.19.  See 
> http://lilypond.org/doc/v2.19/Documentation/notation/multiple-voices#automatic-part-combining

Ah, yes.  That looks very close to what I want.  In fact \partcombine #'(1 . 0) 
appears to do the trick.

But I do not understand what the two new arguments do.  The documentation 
linked above has a paragraph that tries to explain the new arguments, but I 
simply do not understand.  Also, some quick experimentation didn’t shed any 
more light.

\version "2.19"
instrumentOne = \relative {
  c'1 |
  b2 c |
  a4 b c d |
}

instrumentTwo = \relative {
  c'1 |
  c2 c |
  c4 c c c |
}

<<
  % These all generate the same output
  \new Staff \partcombine \instrumentOne \instrumentTwo
  \new Staff \partcombine #'(0 . 0) \instrumentOne \instrumentTwo
  \new Staff \partcombine #'(0 . 1) \instrumentOne \instrumentTwo
  \new Staff \partcombine #'(0 . 2) \instrumentOne \instrumentTwo
  \new Staff \partcombine #'(0 . 3) \instrumentOne \instrumentTwo

  % These all generate the same output
  \new Staff \partcombine #'(1 . 0) \instrumentOne \instrumentTwo
  \new Staff \partcombine #'(1 . 1) \instrumentOne \instrumentTwo
  \new Staff \partcombine #'(1 . 2) \instrumentOne \instrumentTwo
  \new Staff \partcombine #'(1 . 3) \instrumentOne \instrumentTwo
  \new Staff \partcombine #'(2 . 0) \instrumentOne \instrumentTwo
  \new Staff \partcombine #'(2 . 1) \instrumentOne \instrumentTwo
  \new Staff \partcombine #'(2 . 2) \instrumentOne \instrumentTwo
  \new Staff \partcombine #'(2 . 3) \instrumentOne \instrumentTwo
  \new Staff \partcombine #'(3 . 0) \instrumentOne \instrumentTwo
  \new Staff \partcombine #'(3 . 1) \instrumentOne \instrumentTwo
  \new Staff \partcombine #'(3 . 2) \instrumentOne \instrumentTwo
  \new Staff \partcombine #'(3 . 3) \instrumentOne \instrumentTwo
>>

Also, Lilypond 2.19 is 5x to 10x slower on my Mac.

David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Combining voices in American Hymns

2016-09-07 Thread David F .
Is there a way to combine two voices and print both stems (up and down) when 
the voices share a note?  \partcombine does not appear to do this by default.

American SATB hymns are typically engraved with the soprano and alto voices 
combined and the tenor and bass voices combined.  If a note in the soprano 
voice has the same duration as the note in the alto voice, then the notes for 
soprano and alto will share a stem.  If the durations are different, then there 
is no sharing.  And if the notes are the same duration and the same pitch, then 
the note with have both an up stem and a down stem.

For example, on this web page, about 2/3rds of the way down the page, you can 
see several hundred(!) scanned versions of Amazing Grace:

http://www.hymnary.org/text/amazing_grace_how_sweet_the_sound

The Lilypond docs discuss automatic part combining here:

http://lilypond.org/doc/v2.18/Documentation/notation/multiple-voices#automatic-part-combining

But I don’t see anything that would make \partcombine print two stems when 
voices share a note.

I’d appreciate any help.

David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Song layout for overhead projection

2016-08-27 Thread David F.

I have a song transcribed in lilypond notation.  It prints very nicely on one 
page, like you might see in a hymnal.  How do I print that same song so that it 
could be projected on a screen?  E.g. printed in landscape, broken up over 
multiple pages and song verses printed separately and in sequence instead of 
all together.

I’m pretty sure I could manually reconstruct the lilypond song file to achieve 
this, but I wondering if there are any built in capabilities that could achieve 
most or all of what I want.

David


___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Scheme Markups in TextSpanner's #'edge-text

2007-09-03 Thread David F. Place

Hello:

Thanks very much for your help on my last topic.

I have a situation where I would like to have a \markup as the end text 
of a TextSpanner.   I see that I can do it by using the scheme syntax 
for the markup as described in section 8.1.2.   The markup I want is 
correctly engraved using the following normal markup syntax.  I am using 
version 2.10.25.


\markup  {\line {\bold {sehr langsam} \tiny \note #4 #1 = ca 42}}

When I try to translate it to scheme in an obvious way, the engraver 
just leaves out the note altogether.


\override TextSpanner #'edge-text = #(cons rit. (markup #:line (#:bold 
sehr langsam #:tiny #:note 4 1  = ca 42)))


I can't find anywhere in the documentation where the process of 
transcribing \markup into scheme markup is detailed.


I'll be grateful for your help.

Cheers,
David




___
lilypond-user mailing list
lilypond-user@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Scheme Markups in TextSpanner's #'edge-text

2007-09-03 Thread David F. Place


On Sep 3, 2007, at 2:20 PM, Trevor Bača wrote:


Assuming that edge-text is gone, you can read about the convert-ly
script and try running convert-ly on a simple example of the old
edge-text syntax and examine what the new syntax looks like.

Last, here's an example to get you started with the new syntax ...

   \override TextSpanner #'bound-details #'left #'text = \markup {
\fontsize #4 picc. }

... which is good because you can use \markup { } directly instead of
having to translate to the #( )-looking forms.


Hope this helps.



Thanks, Trevor.  That's very helpful.  Bound-details looks like it  
does what I want, but apparently it didn't make it into 2.10.25 where  
#'edge-text still rules.


  ___
(---o---o-o-o---o-o-o(
David F. Place
mailto:[EMAIL PROTECTED]




___
lilypond-user mailing list
lilypond-user@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user


\markup different when used in #'bound-details

2007-09-03 Thread David F. Place

Hi,

As a follow up to my previous message, I'm including a snippet that 
demonstrates that \markup works differently when used in the 
bound-details of a TextSpanner.  I want the right of the TextSpanner to 
look exactly like the first markup.  The note is not engraved.

version = 2.11.32

Cheers,David

\version 2.11.32


\score 
{
\relative c''
{
\textSpannerUp
\override TextSpanner #'bound-details #'left #'text = \markup rit.
\override TextSpanner #'bound-details #'right #'text = \markup \line {\bold 
{sehr langsam} \tiny \note #4 #1 = ca 42}
\time 4/4 c4^\markup \line {\bold {sehr langsam} \tiny \note #4 #1 = ca 42} d 
e f

c d e f c d e f c\startTextSpan d e f c d e f\stopTextSpan c1 c c c  c \bar |.
}
}___
lilypond-user mailing list
lilypond-user@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user


Re: \markup different when used in #'bound-details

2007-09-03 Thread David F. Place


On Sep 3, 2007, at 5:01 PM, Neil Puttock wrote:

t definitely looks like a bug; I'd recommend posting a bug report  
with a minimal example.


Here's a tip for you: you've probably noticed that your note is a  
bit lower than the text. You can improve its base alignment using  
the  \general-align command:


Thanks, Neil, for the message and the tip.  I submitted a bug report.

Cheers, David

  ___
(---o---o-o-o---o-o-o(
David F. Place
mailto:[EMAIL PROTECTED]


___
lilypond-user mailing list
lilypond-user@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user


Re: \once \override works differently on R and r

2007-09-02 Thread David F. Place
Thanks, Graham.  I see the warning in Ch. 8.2.1 about using  
MultiMeasureRestText instead of TextScript to move these markups.   I  
was originally thrown off course, because I was trying to use the  
\translate text markup command described in 8.1.6.  It works on  
TextScript, but is ignored by MultiMeasureRestText.   This seems like  
a bug to me, yes-no?


On Sep 1, 2007, at 10:41 PM, Graham Percival wrote:

Rests and multi-measure rests  are different objects.  For general  
information about this, see chapters 3-5 and 10.  You may also want  
to look at the doc pages for rest (somehwere in ch 6) and multi- 
measure rest (ch 8).


  ___
(---o---o-o-o---o-o-o(
David F. Place
mailto:[EMAIL PROTECTED]




___
lilypond-user mailing list
lilypond-user@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user


Re: \once \override works differently on R and r

2007-09-02 Thread David F. Place
Thanks, Valentin.  I see now that I misunderstood the function of  
\translate.  I used at as the first operator in a markup in order to  
move the whole thing which I now understand is not supposed to work  
as described in the documentation of \raise.   I was confused because  
it did work in one case giving the same results as overriding extra- 
offset.   Clearly, I have a lot to learn about the subtleties of the  
underlying structures of lilypond.


On Sep 2, 2007, at 10:10 AM, Valentin Villenave wrote:


The third one is what I would recommend to print the tempo indication
(you don't have to put it after the rest, because it's aligned with
the barline or the clef).


  ___
(---o---o-o-o---o-o-o(
David F. Place
mailto:[EMAIL PROTECTED]




___
lilypond-user mailing list
lilypond-user@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user


\once \override works differently on R and r

2007-09-01 Thread David F. Place

Hi,

I've had a fairly pleasant outing on my first lilypond project.  Many  
thanks to those who helped me with the Webern accidentals.


Everything was going swimmingly and I was nearly done but for  
tweaking the position of some TextScripts.  Some just wouldn't move.   
Those that were attached to multi-rests ignore the override extra- 
offset commands.  When I changed to r rests, they worked as  
expected.  Of course, that is an unacceptable solution because it  
looks very amateurish.  Is this a known behavior?  It seems like a  
bug to me.


Cheers,
David



showLily.ly
Description: Binary data


  ___
(---o---o-o-o---o-o-o(
David F. Place
mailto:[EMAIL PROTECTED]


___
lilypond-user mailing list
lilypond-user@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user


Webern-style accidentals transposition

2007-08-31 Thread David F. Place

Hello:

I am transcribing Webern's Drei Lieder Op. 25 for alto flute and  
piano.  Though I have studied the documentation, particularly 9.1.1  
Automatic Accidentals, I haven't been able to find what I need.


1.) accidentals before every note (including naturals)

2.) transposition without creating a key signature

Is this possible in Lilypond?  I'm relatively new to it.

Cheers,
David

  ___
(---o---o-o-o---o-o-o(
David F. Place
mailto:[EMAIL PROTECTED]




___
lilypond-user mailing list
lilypond-user@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Webern-style accidentals transposition

2007-08-31 Thread David F. Place

Thanks, Rune.

That does work, but it makes lilypond print a warning for every note.

Cheers, David

  ___
(---o---o-o-o---o-o-o(
David F. Place
mailto:[EMAIL PROTECTED]




___
lilypond-user mailing list
lilypond-user@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user


Re: Webern-style accidentals transposition

2007-08-31 Thread David F. Place


On Aug 31, 2007, at 7:25 PM, Rune Zedeler wrote:

Are you sure that you removed the key_engraver as specified in my  
snippet?


-Rune


I did not.  Now, I have and it works perfectly.

  ___
(---o---o-o-o---o-o-o(
David F. Place
mailto:[EMAIL PROTECTED]




___
lilypond-user mailing list
lilypond-user@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user