Re: [basic question] how to disable text spanners for the lower staff of a PianoStaff

2024-05-10 Thread James Harkins
 On Fri, 10 May 2024 15:07:33 +0800  Mark Knoop  wrote --- 
> Haven't tested, but I think Text_spanner_engraver lives in Voice, rather than 
> Staff. Try removing from the \global Voice, otherwise send a WME.

Ah... indeed. That does take care of it.

  \new PianoStaff \with {
instrumentName = "古筝"
shortInstrumentName = "古筝"
  } <<
\new Staff = "up" << \global \zhengR >>
\new Staff = "down" % \with { \remove Text_spanner_engraver }
<<
  \clef bass
  \new Voice \with { \remove Text_spanner_engraver } { \global }
  \zhengL
>>
  >>

Kieren's solution also works, with a bit less syntax.

Thanks to both!

hjh



[basic question] how to disable text spanners for the lower staff of a PianoStaff

2024-05-09 Thread James Harkins
I've got a piano staff (for guzheng, just notating on two staves), and an 
"accel." text spanner in a \global var.

The accel is printed in both staves of the piano staff.

I'd thought this would hide it from the lower staff:

  \new PianoStaff \with {
instrumentName = "古筝"
shortInstrumentName = "古筝"
  } <<
\new Staff = "up" << \global \zhengR >>
\new Staff = "down" \with { \remove Text_spanner_engraver }
<< \clef bass \global \zhengL >>
  >>

But it still appears.

Some magic incantation I'm missing... can anyone advise? Thanks.

hjh



Re: Suppressing TextSpanner right boundary text at a system break

2018-09-19 Thread James Harkins
 On Thu, 20 Sep 2018 01:17:57 +0800  wrote 
 
> From: foxfanfare
>  
> James Harkins-4 wrote 
> > I have many text spanners with text for both the left and right bounds. 
> >  
> > If a spanner crosses a system break, I would like the right-hand text to 
> > be hidden at the end of the first system. 
>  
> I think you'll have to play with "right-broken" and "left-broken". 
>   \override TextSpanner.bound-details.right-broken.text = ##f 

That's exactly it. Thanks!

Would be useful as a snippet perhaps... this totally eluded me in the manual. I 
tried to find info about bound-details but missed it somehow.

hjh


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


Suppressing TextSpanner right boundary text at a system break

2018-09-19 Thread James Harkins
Apologies if this is a basic question. I've searched but I didn't find the 
answer.

I have many text spanners with text for both the left and right bounds.

If a spanner crosses a system break, I would like the right-hand text to be 
hidden at the end of the first system.

The spanner represents an instruction for computer ensemble performance: at the 
left bound, begin transitioning to the next state; at the right bound, you 
should have arrived but not before.

Currently I'm getting "arrive" printed to the right of the last bar line of the 
system break. The performers should not arrive at this point! The score is 
misleading if it suggests that performers should have arrived at the end of the 
system.

I searched the manual and didn't find it. An LSR search for "spanner" finds a 
technique that is supposed to hide the spanner /line/ after a break (not what I 
want). I haven't found anything about controlling boundary text visibility.

Thanks,
hjh



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


Re: TextSpanner: Change text at automatic line break?

2018-05-24 Thread James Harkins
On May 22, 2018 10:51:12 Kieren MacMillan  
wrote:


You should look at David N's incredible spanner-with-inner-texts (or 
similarly named) — I'm pretty sure it’ll do all that (and more).


Aha -- that just might be the droid I'm looking for. Will search.

Thanks!
James

Sent with AquaMail for Android
http://www.aqua-mail.com




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


Re: TextSpanner: Change text at automatic line break?

2018-05-21 Thread James Harkins
 On Mon, 21 May 2018 19:12:56 +0800 Thomas Morley 
 wrote  
>   \relative c' {
> \override TextSpanner.bound-details.left.text = "abc"
> \override TextSpanner.bound-details.left-broken.text = "foo"
> c1 \startTextSpan
> \repeat unfold 20 { c1 }
> c1\stopTextSpan
>   }
>  
> works here. A typo somewhere? 

Oh, OK, I see -- I have to set the left-broken details before starting the text 
spanner, and those details can't change.

It's possible that I might have a spanner covering three or more systems, where 
the text might need to change twice (or more). So I was setting the left-broken 
details in the middle, hoping it would take effect at the next system break. 
But I guess the object is already created and its properties already 
determined, and there's no going back to modify the current instance (not 
without Scheme anyway, for which I don't have time, and it doesn't matter if I 
notate it this way or another way).

OK, I'll consider another strategy.

Thanks,
James


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


TextSpanner: Change text at automatic line break?

2018-05-21 Thread James Harkins
Hi,

Using a TextSpanner, is there a way to change the text in the middle, so that 
the new text appears at the next system break (whichever bar that is)?

\version "2.19.80"
\language "english"

\relative c' {
  \override TextSpanner.bound-details.left.text = "abc"
  c1 \startTextSpan
  \repeat unfold 20 { c1 }
  c1\stopTextSpan
}

With default settings, LP engraves 11 bars on the first line, putting bar 12 on 
the next. I know I could stop the spanner at the end of bar 11 and start a new 
one on bar 12, but future changes might move the line breaks, so I would rather 
not have to hardcode. I would like to set some property in the middle of the 
spanner and have it take effect at the next automatic system break.

I tried overriding TextSpanner.bound-details.left.text -- no difference on the 
second line.

Same for TextSpanner.bound-details.left-broken.text -- if "left-broken" has a 
text property, it's ignored for rendering.

If it's too hard, I can change the notation style. (It's a score for computer 
ensemble. The text indicates which patch and which variant to play. The variant 
might change in the middle. I'd like the text to change accordingly. If it 
isn't possible, I'll use the spanner only for the patch name, and put the 
variant underneath.)

Thanks,
James


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


Re:Vintage Jazz Chords post in 2011 - Howto get it to display on Fresco?

2017-12-27 Thread James Harkins

> I pasted this into Frescabaldi...

you have to paste it to where lilypond can find it. That is not necessarily 
the font directory of lilypond, but I think that is not a wrong place. 
lilypond does not have frescobaldi in the search path.


As I read the original post, it's quite plausible that the poster pasted 
the LilyPond code into Frescobaldi and expected immediate display of music.


But Frescobaldi, with (AFAIK) default settings, displays nothing until you 
engrave the document (command in the menu labeled "LilyPond").


Daryl's exact words: "there were no error, but it didn't display anything!"

That's exactly what would happen if you put LP code into the editor but 
don't engrave it. (But, if he were engraving an LP document that depends on 
LilyJazz without installing LilyJazz, certainly he would get errors.)


So I think the disconnect may be more basic than any of the replies so far 
have addressed.


Daryl: After pasting the code into Frescobaldi, you need to hit ctrl-m 
(Windows or Linux) or cmd-m (Mac).


hjh


Sent with AquaMail for Android
http://www.aqua-mail.com




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


Re: Required font for simplified Chinese characters?

2017-12-20 Thread James Harkins
 On Sat, 09 Dec 2017 14:23:46 +0800 Andrew Bernard wrote  
> With the release of stable version 2.20 coming out in the forseeable future, 
> and with 2.19.80 being really stable and excellent, could you considering 
> moving up? No crash occurs at 2.19.80, and there are dozens of really good 
> new features in this series, well worth having.

Sorry to come back very late to this thread.

I just tried 2.19.80, and this version *can* render simplified Chinese 
characters. Yes!

BUT... in 2.19, the handling of landscape orientation has changed.

In my v2.18.2 document, I used:

#(set-default-paper-size "a4" 'landscape)

... and I got a document that was wider than it is tall, and I could read the 
notation on screen directly. That's what I wanted.

In 2.19.80, without changing the code, I got a document whose paper is in 
portrait orientation, and whose notation was rotated 90 degrees 
counterclockwise. Staff lines read *upward* (???!) on the screen. Which... for 
reading is... shall we say, difficult.

#(set-default-paper-size "a4landscape") gives me the layout I wanted.

I'm not sure if this is intentional. The manual says "If the symbol 'landscape 
is added to the paper size function, pages will be rotated by 90 degrees, and 
wider line widths will be set accordingly." I am seeing that the page 
*contents* were rotated by 90 degrees and line widths were set accordingly, but 
the page dimensions did not rotate. So it isn't accurate to say that the 
**pages** will be rotated.

Try it yourself:

\version "2.19.80"
#(set-default-paper-size "a4" 'landscape)
\relative c' { c4 d e f g a b c }

Is it a bug, or out-of-date documentation?

I'm fairly sure nobody wants the behavior that is currently documented as the 
first option.

hjh


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


Re: Required font for simplified Chinese characters?

2017-12-08 Thread James Harkins
Thanks to all for the advice.

And, now with a little spare time, I checked the font list:

$ lilypond -dshow-available-fonts 2>&1 | grep 'CJK SC'
family Noto Sans CJK SC
 Noto Sans CJK SC,Noto Sans CJK SC Bold:style=Bold,Regular
... and many other style variants

Unfortunately, the crash persists.

Minimal example:

\version "2.18.2"

\header {
  dedication = \markup {
\override #'(font-name . "Noto Sans CJK SC")  %% doesn't matter if I use 
Mono here or not
"为"
  }
}

{ c'1 }

I also had the thought: "dedication" is in italics, so maybe it's looking for 
an oblique variant that doesn't exist. So I tried ```\normal-text "为"``` but I 
still get the same ghostscript crash.

$ gs --version
9.18

Quite puzzled. My .ly document compiles perfectly, until I add a single Chinese 
character to a string.

hjh


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


Re: Required font for simplified Chinese characters?

2017-12-08 Thread James Harkins

On December 8, 2017 12:33:21 Andrew Bernard  wrote:


Hi James,

What platform are you on?

Do you want simplified or traditional characters?


Oh right, I forgot the OS. I'm on Ubuntu Studio 16.04.

I'm based in mainland China, so, simplified characters.

Btw my messages seem to be delayed pretty regularly -- the last message 
took a day and a half to go out on the list. Which isn't a big problem for 
me, except it looks like I'm not replying quickly :D


Thanks,
hjh

Sent with AquaMail for Android
http://www.aqua-mail.com
___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Required font for simplified Chinese characters?

2017-12-07 Thread James Harkins
I have:

\header {
  dedication = "为星海音乐学院的电脑乐团,2017年秋天"
  .
}

(Roughly, "For the Xinghai Conservatory Fall 2017 Laptop Orchestra" with no 
assurance of absolute correctness in the Chinese.)

I get:

Converting to `./test.pdf'...
warning: `(gs -q -dSAFER -dDEVICEWIDTHPOINTS=595.28 -dDEVICEHEIGHTPOINTS=841.89 
-dCompatibilityLevel=1.4 -dNOPAUSE -dBATCH -r1200 -sDEVICE=pdfwrite 
-sOutputFile=./test.pdf -c.setpdfwrite -ftest.ps)' failed (256)

fatal error: failed files: 
"/media/dlm/7D53-8744/Docs/xinghai/17-18-fall/lork/score/test.ly"

I'm guessing it's looking for a specific CJK (Chinese-Japanese-Korean) font and 
not finding it.

Which one should I install?

I have used Chinese characters in LilyPond before, but this is a new machine. I 
must have missed something while setting it up.

Thanks.
hjh


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


Re:[OT] Linux Users

2017-11-18 Thread James Harkins
FWIW, Emacs org-mode is a really nice way to integrate LaTeX and LilyPond for 
articles.

org-mode exports to LaTeX.

org-babel can automatically run LilyPond source blocks embedded in the org 
document, generating EPS and dropping it seamlessly into the LaTeX document. If 
you wrap the source block in a figure, you get a caption, index number and 
references for free.

hjh


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


Rhythmic clusters (i.e. *not* \makeClusters)

2017-10-28 Thread James Harkins
That other question...

I would like to notate some clusters, but articulated: blocks instead of notes, 
but showing repeated, re-articulated blocks.

\makeClusters doesn't do it. Even if I put a "s"kip in between, it still 
connects them into one massive gesture. Plus, I need rhythmic notation.

Temporarily, I'll use \improvisationOn, but I think that's not right. The idea 
in my mind is to replace the note column with a filled rectangle.

Thanks,
James


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


Re: "Text spanner"-ish thing with text in the middle

2017-10-28 Thread James Harkins
 On Sat, 28 Oct 2017 13:55:49 +0800 Nathan Ho <nat...@snappizz.com> wrote 
 
> On 2017-10-27 21:37, James Harkins wrote: 
> > I couldn't find this quickly: for an unmetered section, I'd like to 
> > indicate duration by tuplet-style brackets, only not a tuplet (no 
> > change to note durations) and with arbitrary text markup in the 
> > middle...
>
> you can hijack an ordinary tuplet by setting the duration ratio to 1/1  
> and modifying the text: 

Nathan? *blinks* Of course there is some overlap between the LilyPond and 
SuperCollider communities ;)

That's a neat trick, to use a tuplet like that -- I'll give it a try. 
Otherwise, Andrew's approach looks good too.

I've got one more question -- separate question, separate thread.

BTW all this is for a new piece that will be premiered in San Diego this coming 
Thursday, on a recital of modern pieces for the khaen. The khaen is a free-reed 
mouth organ from Laos and northeast Thailand. My friend and grad school 
colleague Chris Adler has been playing and writing for the instrument for, oh, 
20 years now.

Thursday, November 2, 7:30 p.m.
USD: University of San Diego
Founders Chapel
5998 Alcala Park, San Diego

My piece is engraved in LilyPond, with electronics in SuperCollider. (I'm only 
cleaning up the notation of the electronic cues now -- the khaen music is 
already in Chris's hands.)

If you live within easy driving distance, this will be well worth the effort.

Thanks!
James


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


"Text spanner"-ish thing with text in the middle

2017-10-27 Thread James Harkins
I couldn't find this quickly: for an unmetered section, I'd like to indicate 
duration by tuplet-style brackets, only not a tuplet (no change to note 
durations) and with arbitrary text markup in the middle, e.g. if a tuplet goes

:- 3 -:

I'd like

:--- 10" ---:

TextSpanner seems to assume text at the beginning or end, but not the middle.

Thanks in advance,
James


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


Re: Piano Left Hand Alone

2017-10-24 Thread James Harkins
It's perhaps one of the confusing things in LilyPond that it engraves only 
the staves that you create. By convention, a piano staff has two staves, 
*but those staves don't exist unless you make them*.


A PianoStaff is a staff group (container for staves) with specific 
properties: left brace, keep-alive-together. By default, it contains zero 
staves. You may create only one staff in it, if you like.


That's different from Sibelius, e.g., which creates two staves for piano by 
default.


Is that the question? It's really not clear... have you tried creating a 
single-staff piano score and run into specific problems? If not, I suspect 
you'll have less difficulty than you may be anticipating.


hjh

Sent with AquaMail for Android
http://www.aqua-mail.com




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


Markup + fermataMarkup over a note?

2017-10-23 Thread James Harkins
Hi all,

In an unmetered section, the soloist has some longish rests that I would like 
to notate this way, e.g.:

9-10"
fermata
full-bar rest (within the staff)

I know how to do the duration as a markup, and I know how to do \fermataMarkup, 
but I don't know how to combine them and center them.

I saw a mailing list post from 2008(!) saying that \fermataMarkup can go into a 
\markup{}, but either that post was mistaken, or the usage might have been 
valid in 2.10 but not anymore in 2.18.

I also looked for the \musicglyph identifier for a fermata, but this seems not 
to be documented in the Notation Reference's page on the Feta font. (Searching 
the page text for "fermata" failed.)

Thanks,
hjh


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


Re: Markup + fermataMarkup over a note?

2017-10-22 Thread James Harkins
> I also looked for the \musicglyph identifier for a fermata, but this seems 
> not to be documented in the Notation Reference's page on the Feta font. 
> (Searching the page text for "fermata" failed.) 

To be more precise, I used Frescobaldi's doc browser search-in-page feature, 
and *this* failed. But it is very clearly there: "scripts.ufermata" -- OK. Now 
I know. Don't use that box in Frescobaldi anymore.

OK, so with that, I solved it.

fermataTest = \markup {
  \center-column {
\bold "9-10\""
\musicglyph #"scripts.ufermata"
  }
}

Sorry for the noise.
hjh


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


Re: Reducing staff numbers in LilyPond

2017-10-17 Thread James Harkins
> On 16 Oct 2017 20:38, "Ken Williams"  wrote: 
> I honestly did not expect this kind of response, and I'm getting it from 
> multiple people.  I asked a technical question and got a whole bunch of 
> "answers" saying I'm stupid to try to achieve that effect.  Except for 
> Kieren hinting that it will probably be difficult, there has been *zero* 
> actual discussion about the technical aspects of it. 
>  
> If LilyPond or its community isn't friendly to people who want to 
> experiment with notation, I guess I'm finding that out pretty quickly. 

John Zorn once said (paraphrasing from memory), "The job of a composer is to 
put something on paper that inspires the people playing it."

I really love this. It reminds us that a musical score is a communication -- a 
relationship. If the score compromises its communication by being unclear -- if 
the players have to divert mental energy into reinterpreting the written 
material -- it takes energy away from inspiration and hurts the performance. 
(Relatedly, composers like Ferneyhough use the difficulty of their notation 
itself to create a relationship where the performers' struggle to realize the 
demand becomes part of the energy of the performance.)

I can see how some of the comments on this thread came across like, "You're 
doing it wrong," and this could seem like hostility toward the idea of 
experimenting with notation. I read it a bit differently. The commenters are 
expressing concern that you may have unpleasant surprises when you get into 
rehearsal. Some expressed this with sarcasm, which usually doesn't come across 
well in e-mail. But I think the motivation is sound: Choose the notation that 
will convey the meaning with the least chance of misunderstanding, at the very 
least saving rehearsal time, and also freeing up the performers to *make music* 
rather than think about notation.

hjh


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


Re: "Creating MIDI Files" doc is wrong

2017-10-15 Thread James Harkins
 On Sun, 15 Oct 2017 18:32:29 +0800 David Kastrup  wrote  
> > Never mind, I see my mistake now. I had extrapolated from \new Staff 
> > and \new Voice to \new Score. LilyPond accepts \new Score 
> > (!). Possible improvement might be to reject that wrong syntax with an 
> > informative error. 
>  
> It isn't wrong syntax.  And there is no way to "extrapolate" since 
> \new Staff or \new Voice don't introduce different syntax from 
> \new Score and there is no \staff or \voice either. 

Wrong choice of word, perhaps... I had been writing a lot of "\new Staff" and 
"\new Voice," and I (incorrectly) extended that pattern up to score level.

It may be valid syntax, but I couldn't find what it's used for, anyway.

> > - Do I just write a number here, or prepend '#' -- 1.0 or #1.0? 
>  
> Prepending works reliably almost anywhere, not prepending works in most 
> places except markup as well.

"... almost anywhere..." ;)

> > - Single or double # for other entities? (#t vs ##t) 
>  
> #t and #f are Scheme expressions (not particularly pretty ones in my 
> book), and if you want to use them from LilyPond, you need to prepend # 
> or $.  Like with _everything_ you use from Scheme inside of LilyPond. 

A-ha. OK, the trouble is that I don't really understand the boundaries between 
LilyPond and Scheme. I'm far enough along to see how music expressions fit 
together in voices and staves (more or less), but for overrides, I can copy and 
edit some commands from the manuals but I don't *really* know what they're made 
of at a deep level.

It helps to know that # means "something from Scheme" and #t and #f are Scheme 
things, and so is 1.0, hence ##f and #1.0, but not ##1.0. Five years of 
intermittent use, and I didn't get it (maybe I still don't)... it may not be 
possible to improve, but it falls a bit short of being self-explanatory ;)

In any case, clearer now, thanks for the explanation.

hjh


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


Re: "Creating MIDI Files" doc is wrong

2017-10-15 Thread James Harkins
 On Sun, 15 Oct 2017 17:39:18 +0800 James Harkins <jamshar...@zoho.com> 
wrote  
> However, the LP version installed from Ubuntu 16.04 packages requires this: 
>  
> \layout { } 
> \midi { } 
> \score { 
>   …music… 
> } 
>  
> \layout{} or \midi{} inside the \score causes a syntax error: 

1. If I write it as specified in the manual, I get a syntax error.

2. If I write it as above, I get no syntax error, and no MIDI file.

Confused.

hjh


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


Re: "Creating MIDI Files" doc is wrong

2017-10-15 Thread James Harkins
> 1. If I write it as specified in the manual, I get a syntax error. 
>  
> 2. If I write it as above, I get no syntax error, and no MIDI file. 

Never mind, I see my mistake now. I had extrapolated from \new Staff and \new 
Voice to \new Score. LilyPond accepts \new Score (!). Possible improvement 
might be to reject that wrong syntax with an informative error.

That mistake is entirely my own fault, of course -- the result of coming back 
to LilyPond after a few years without writing for acoustic instruments and 
trying to be clever. But it does remind me of one of my general gripes with LP: 
the number of subtle syntactic variations. I *always* have to look up:

- Do I just write a number here, or prepend '#' -- 1.0 or #1.0?

- Single or double # for other entities? (#t vs ##t)

- Is it a (list of things), or a '(list of things), or a #'(list of things)?

But, yeah, the present case is my goof.

hjh


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


"Creating MIDI Files" doc is wrong

2017-10-15 Thread James Harkins
I suppose this must have been reported at some point, but, LP 2.18.2 (stable):

http://lilypond.org/doc/v2.18/Documentation/notation/creating-midi-files

```
To create a MIDI output file from a LilyPond file, insert a \midi block inside 
a \score block;

\score {
  …music…
  \layout { }
  \midi { }
}
```

However, the LP version installed from Ubuntu 16.04 packages requires this:

\layout { }
\midi { }
\score {
  …music…
}

\layout{} or \midi{} inside the \score causes a syntax error:

```
Starting lilypond 2.18.2 [climax-test.ly]...
Processing `/home/dlm/share/SC/scd/khaen/tests/climax-test.ly'
Parsing...
/home/dlm/share/SC/scd/khaen/tests/climax-test.ly:90:3: error: syntax error, 
unexpected \layout
  
  \layout {}
/home/dlm/share/SC/scd/khaen/tests/climax-test.ly:4:1: error: errors found, 
ignoring music expression

\new Score {
```

$ lilypond --version
GNU LilyPond 2.18.2

hjh


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


Re: Ties between voices?

2017-10-07 Thread James Harkins
 On Sat, 07 Oct 2017 23:15:17 +0800 Thomas Morley 
 wrote  
> > You could do \override TieColumn.positioning-done = ##t, but be aware, 
> > using it means you are now responsible yourself for the Tie's 
> > directions. 
> > You tell LilyPond "Don't bother placing the Ties, I'll do" 
>  
> Though the output is not convincing, imho. 

I think there's not really a good way.

So far, three options:

- LilyPond places ties (normal behavior): Three upper b's, two ties. The first 
tie is up and the second is down. The down-tie passes through a thick chord. I 
lose it visually.

- "positioning-done = ##t": Both upper-b ties go up. The second passes through 
a d note head and it passes under a tie that starts later, both of which are 
ugly, but I can see the tie clearly.

- \laissezVibrer: The \laissezVibrer ties go up and down, but the \repeatTies 
both go down. I could split the b's into one voice and the other chord notes 
into a different voice, but then I have an unpleasant bargain between the b's 
sitting off to the side (and, in my test, LP pushes the b's to the right, 
obscuring the \repeatTie), or smashing them into \oneVoice and then LP doesn't 
arrange the a and b properly.

To my eye, "positioning-done = ##t" is the least objectionable, so I'll go with 
that.

Thanks for all the advice -- I learned *a lot* from this and I'm happy with the 
outcome.

hjh


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


Re: Ties between voices?

2017-10-07 Thread James Harkins
 On Sat, 07 Oct 2017 20:49:31 +0800 Simon Albrecht <simon.albre...@mail.de> 
wrote  
> On 07.10.2017 13:55, James Harkins wrote: 
> > But, it's a  chord where I want the lower tie to go down, and  
> > the upper one to go up...  
>  
> Put the ties inside the chord: 
> <b_~ b'^~> 

Oh... I'm afraid I spoke too soon. The syntax is accepted, but ignored in the 
printed output. I still get two down-ties.

It must be conflict-resolution logic. See the comment: "I remove *either* the a 
or the d from this chord, I get up/down ties."

\new Score {
  \new Staff {
<<
  { \time 4/4 \partial 4 s4 | s4*2 }
  \new Voice = "zeroA03" \relative c' {
\set tieWaitForNote = ##t
4 ~
<b_~ b'^~>1 1
  }
  \context Voice = "zeroA03" \relative c' {
s4
s2.
\hideNotes
% if I remove *either* the a or the d from this chord,
% I get up/down ties from  above
\voiceTwo \tieNeutral 4 ~
\unHideNotes
  }
  % This displays the e-f-a-d notes
  % that are the source of the 4 extra ties.
  % Doesn't matter to  tie behavior
  %\new Voice = "zeroB03" \relative c' {
  %  s4
  %  \voiceTwo \tieNeutral r4 2 ~ 4 %~
  %}
>>
  }
}

hjh


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


Re: Ties between voices?

2017-10-07 Thread James Harkins

On October 7, 2017 20:49:38 Simon Albrecht <simon.albre...@mail.de> wrote:


On 07.10.2017 13:55, James Harkins wrote:

But, it's a  chord where I want the lower tie to go down, and
the upper one to go up...


Put the ties inside the chord:
<b_~ b'^~>


I'm binge watching Rick & Morty season 3, but this blows my mind even more 
than that.


Never dreamed it. :-O

Thanks --
hjh

Sent with AquaMail for Android
http://www.aqua-mail.com




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


Re: Ties between voices?

2017-10-07 Thread James Harkins

On October 7, 2017 14:52:06 Werner LEMBERG  wrote:


Without looking at your example:  Use `_~' and `^~' instead of `~' to
immediately specify a tie's direction.


Crikey, I knew about that for slurs, didn't think of it for ties.

But, it's a  chord where I want the lower tie to go down, and the 
upper one to go up...


I have played with tie-configuration before but I have no idea how it works 
when the tie onsets are staggered.


hjh

Sent with AquaMail for Android
http://www.aqua-mail.com




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


Re: Ties between voices?

2017-10-07 Thread James Harkins
Continuing with this neat "\context Voice" trick -- quite powerful. I see how 
it works: you have two expressions stuffing events into the same Voice context, 
and LP merges them into one timed list and does the best it can to make sense 
out of the tie properties.

I've got one I can't quite get right. I would like the tie from the upper B 
whole note to be up instead of down. It almost looks like it's inferring 
voiceTwo or voiceFour from somewhere, but I've been fiddling with it and I 
can't find it. Even with multiple \tieNeutral commands (which surely must be 
redundant), LP insists on pulling the ties on both B notes down.

Removing zeroB03 and zeroC03: no difference.

Removing \context Voice = "zeroA03" -- the B ties are as I expect, but then I 
don't get the ties on the other notes going into the next bar.

\new Score {
  \new Staff {
<<
  { \time 4/4 \partial 4 s4 | s4*2 }
  \new Voice = "zeroA03" \relative c' {
\set tieWaitForNote = ##t
4 ~
\tieNeutral q1 ~ ) \oneVoice \tieNeutral 1
  }
  \context Voice = "zeroA03" \relative c' {
s4
s2.
\oneVoice \stemDown \tieNeutral
\hideNotes 4 ~
\unHideNotes
  }
  \new Voice = "zeroB03" \relative c' {
s4
\voiceTwo \tieNeutral r4 2 ~ 4 %~
  }
  \new Voice = "zeroC03" \relative c''' {
s4 s1
\voiceThree r8 g4. ~ g2
  }
>>
  }
}

Any suggestions?

(I know it's hard. The instrument spans two octaves, so a single staff is more 
appropriate, and it can play 6-8-note chords easily, with independent 
note-on/off. It's a stretch, even with pen and paper.)

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


Re: Ties between voices?

2017-10-06 Thread James Harkins
A-ha, got it, it was a combination of Harm's trick plus a hidden note:

\new Score {
  \new Staff {
\numericTimeSignature
<<
  \new Voice = "a" \relative c' {
\voiceOne
\set tieWaitForNote = ##t
c16 g' ~ 8 ~ q2. ~
q2 ~ 2
  }
  \context Voice = "a" \relative c' {
s1
s4 \voiceTwo \hideNotes f4 ~ \unHideNotes
  }
  \new Voice = "b" \relative c' {
\voiceTwo
r4 r8 f8
\override Beam.grow-direction = #RIGHT
f16 [ f f f  f f f f ]
\override Beam.grow-direction = #LEFT
f [ f f f ] ~ f4
  }
  \new Voice = "c" \relative c'' {
s1 s2 \voiceOne a8 ( g4. )
  }
>>
  }
}

Thanks, I would never have figured out "\context Voice" by myself.

hjh


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


Re: Ties between voices?

2017-10-05 Thread James Harkins
> Probably: 
>  
> \new Score { 
>   \new Staff { 
> \numericTimeSignature \time 2/4  % barline, so E must be tied 
> << 
> \new Voice = "xy" \relative c' { 
>   \set tieWaitForNote = ##t 
>   2~ 
> } 
> \context Voice = "xy" \relative c' { 
>   s4 \voiceTwo f4 ~ 2 
> } 
> \new Voice { r4 s4 a'8 g'4. } 
> >> 
> \unset tieWaitForNote 
>   } 
> } 

Ah, that's a lovely idea -- but I had oversimplified, and this doesn't quite 
scale up.

\version "2.18.2"
\language "english"

\new Score {
  \new Staff {
\numericTimeSignature
<<
  \new Voice = "a" \relative c' {
\voiceOne
c16 g' ~ 8 ~ q2. ~
\set tieWaitForNote = ##t
q2 ~
  }
  \context Voice = "a" \relative c' {
s4 s8 \voiceTwo f
\override Beam.grow-direction = #RIGHT
f16 [ %{ \override NoteHead.transparent = ##t %} f f f  f f f f ]
\override Beam.grow-direction = #LEFT
f [ f f %{ \revert NoteHead.transparent %} f ] ~ f4 ~ 2
  }
  \new Voice = "b" \relative c' {
\voiceTwo r4 r8 s8 s2 s2 \voiceOne a'8 g4.
  }
>>
\unset tieWaitForNote
  }
}

If you uncomment the transparent note heads, it's a right bloody mess.

I might have to rethink it. Maybe two staves are the only way.

hjh


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


Ties between voices?

2017-10-05 Thread James Harkins
Hi, been away for awhile.

I'm now writing for khaen, a Thai mouth organ. Fascinating instrument. Notation 
is usually single-staff and heavily multi-voiced.

One nut I never cracked in LilyPond: how to tie a note from one Voice to 
another, e.g.

\new Score {
  \new Staff <<
\numericTimeSignature \time 2/4  % barline, so E must be tied
\new Voice \relative c' {
  \voiceOne 2 a8 g4.
}
\new Voice \relative c' {
  \voiceTwo r4 f4 ~ 2
}
  >>
}

I need a tie from the e in 2 (voice 1) to the e in 2 (voice 2).

How to restructure this to make it possible?

Thanks.

hjh


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


TextSpanner + \mark?

2015-07-19 Thread James Harkins
Is there a way to use a textspanner with a \mark?

Rationale: accel. and rit. directions are frequently text spanners, but
in the score, they aren't printed in every part (as \mark items are not
printed in every part). Of course, in the parts, they must appear (as
\mark's do).

Currently (as far as I know), to get this, I have to \tag them and suppress
them from the score.

Is there a better way?

hjh


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


Re: TextSpanner + \mark?

2015-07-19 Thread James Harkins
Simon Albrecht simon.albrecht at mail.de writes:

 Unfortunately no. See 
 https://code.google.com/p/lilypond/issues/detail?id=3176.

I had a feeling that was the answer. :(

It's not a huge deal for my current project, but it's certainly a weakness.

hjh


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


\afterGrace control over stem length

2015-07-07 Thread James Harkins
Hi, I have a couple of \afterGrace's in close proximity. One has normal-looking 
stems on the grace notes (attached, first bar). The other's stems are too long 
(third bar).

I'm not tweaking, overriding or setting anything at that point in the input 
code:

  g4 ~ \ g8 ) af4. ~ (
  af g8 ~ g4 ) r8 \p \afterGrace c8 ( \mp\ { d16 [ e ] }
  f8 \ e ) d16 ( c8. ) \! f,4. r8
  r2 r4 \clef bass \afterGrace d4 \mp _( { df16 [ c ] }
  b4. ) \ g8 ~ g16 f8. c4- ~ \f\

(And, just for fun, I tried moving \clef bass before the r4 -- no effect, as 
I would have expected.)

I'm satisfied to override the stem length, but I'm not finding the answer in 
the manual. Stem overrides seem to be for unbeamed stems. Beam overrides are... 
opaque to say the least.

How do I shorten these stems by 1 or 2 staff spaces? (I know the override needs 
to come inside the { df16 ... } expression.)

Thanks.

hjh

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


Re: \afterGrace control over stem length

2015-07-07 Thread James Harkins
Pierre Perol-Schneider pierre.schneider.paris at gmail.com writes:

 I was not able to reproduce the stem length shown on your picture. Please
be so kind to send compilable example including the version you're using.

That might be awhile... time is short at the moment and I have a feeling
that it won't be an obvious combination of factors causing this behavior.

I'm on 2.18.2. I'll use the positions property.

 Doc's here:
http://www.lilypond.org/doc/v2.18/Documentation/learning/fixing-overlapping-notation#the-positions-property

Ah... thanks. I haven't been over the tweaking section of the learning
manual very thoroughly. That should be my next stop...

hjh


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


Re: Do we really offer the future?

2015-04-22 Thread James Harkins

On April 22, 2015 7:43:10 PM Trevor Daniels t.dani...@treda.co.uk wrote:

Although not well-publicised there is a way of entering multi-voice or 
multi-staff music complete bar by complete bar.  There is a restriction 
that bars must be all the same length, but at least all the notes of a bar 
are entered together and remain close together in the LP source.


See 
http://www.lilypond.org/doc/v2.19/Documentation/notation/multiple-voices#writing-music-in-parallel


Thanks for the tip - I wasn't aware of this. I'm outside on my phone now, 
not ideal for reading the documentation, so I can't comment specifically 
except to guess that it may be impractical for large, complex projects.


Going back to the general topic: I don't think the solution is necessarily 
to extend the LilyPond language. LP is *very* good at what it does. But 
David's comment that LP is a language to organize grobs, rather than 
*principally* a language to organize music, is insightful. Viewed this way, 
it's then unsurprising that LP, in a couple of glaring ways, doesn't always 
mesh with the needs of working musicians.


The fact that LP is so good at what it does means that it's quite likely a 
bad idea to alter its nature fundamentally. But a higher-level 
representation could abstract the details of LP code organization away from 
the user and present a face that supports more musical editing 
capabilities. That's a massive job, of course, but it would also not break 
backward compatibility with existing LP projects.


I'm influenced here by my experience with LaTeX, which I use almost 
exclusively by way of Emacs's org-mode [1]. In org, I make outlines where 
the outline entries are sections or subsections (or Beamer frames), with 
free text and itemized lists inside. Org markup is lighter and friendlier 
than raw LaTeX: *bold* instead of \textbf{bold}, e.g., so I get the 
advantage of improved readability while editing without losing LaTeX's 
superior typesetting. The org exporter converts the outline tree into LaTeX 
and automatically runs the LaTeX executable of your choice. I need to write 
raw LaTeX only for customizing, and a couple of corner cases that org 
doesn't handle easily. It's expletive deleted GREAT!!


For LP, this is pie-in-the-sky dreaming -- I haven't the time or the 
immediate need. And GridLY may supply some of this -- I'm quite interested 
and I'll take a look for my next project. But I think there's no harm in 
admitting that LP is not ideally suited to many practical needs, and 
imagining that abstraction (rather than extension of the core language) is 
a valid solution.


hjh

[1] http://orgmode.org

Sent with AquaMail for Android
http://www.aqua-mail.com





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


Re: Do we really offer the future?

2015-04-22 Thread James Harkins

On April 22, 2015 12:30:18 PM Shane Brandes sh...@grayskies.net wrote:


Lilypond is not a terribly great tool for composition purposes. Not
that I don't use it for that but when I do the whole piece is already
in my head and I am not usually prone to making large changes in
structure. As  noted previously that tends to be a cumbersome process.
Also somewhat cumbersome is adding agogic marks with any rapidity. But
despite these deficiencies, I would not go to another software unless
it demonstrated a truly superior output coupled with a openly
accessible files format.


For myself, I make much the same calculation. But, one subject of this 
conversation is why more people aren't adopting LP, and one reason is 
exactly that it's hard to use as a composition tool.


Even after a few years of using LP, it's still kind of a mindf... erm, 
mind-blower that notes appear close together in the score but they may be 
written in widely separated locations in the LP code. I'm used to 
programming and it's slightly bizarre even to me. For a musician who just 
wants to lay out a nice string arrangement, viola bar 37 is on line 254, 
but cello bar 37 is on line 401??? What I'm saying is not just about 
usability. It's that LP's input structure goes against the way music lives 
in our heads -- meaning that LP's user base can include only those who are 
willing to adapt to an unfamiliar way of thinking for the sake of the 
better output.


hjh


Sent with AquaMail for Android
http://www.aqua-mail.com





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


Re: Do we really offer the future?

2015-04-21 Thread James Harkins
It's a bit of a side topic, but the the thread has touched on
questions of usability, so I think it's related.

I think there's one command in Finale that demonstrates a major obstacle to
widespread adoption of LilyPond: Delete Measure Stack. This is an extremely
common need when editing scores, and raw LilyPond code offers no clean,
easy way to do it.

LP input is structured horizontally, around voices flowing forward in
time. Meanwhile, composers think in terms of chunks of time whose
arrangement is vertical. (I don't intend this to preclude polyphonic
thinking, but even Bach must have struck a whole bar now and again.)

So how do I delete bar 47 from this LP score?

 Well, first you go to your global variable holding rehearsal marks,
tempo marks, special barlines and meter and key changes, and tweak the
number of spacer rests. Then you go into the music expressions for every
part, one by one, and delete the notes for that bar. Frescobaldi's
point-and-click can help you with that, but it doesn't automate the process.

Umm... In Finale, all that takes half a second.

We try to explain this away by saying that LP is an engraving tool,
not a composition tool, but -- if we're really serious about making LP
more attractive to the average user of notation software, this is
too glib. People writing music simply don't think of musical
simultaneity in the same terms that LP does. It *does* take effort to
adapt one's thinking to LP's way, and we shouldn't try to convince
ourselves that this isn't off-putting.

I don't see a way, with LP input as currently defined, to handle this
requirement cleanly. If the LP community were to decide that it's
important, as a way to attract users, I think it would call for a
higher-level musical representation that generates LP code. Denemo is a
step in this direction, though I'm not in a position to evaluate it as I
haven't used it.

Don't get me wrong -- I think LP's rendering engine is amazing, and for me,
it *is* worth the effort to shoehorn my music into LP's format if it means
I can use this fantastic engine. But I can't pretend it isn't any effort,
either.

hjh


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


ChordNames vs. \numericTimeSignature: used to be OK, not now

2015-04-17 Thread James Harkins
*sigh* Most of the time, LilyPond is amazing. Other times...

I have an old document, a lead sheet, following basically the form an excerpt 
[A]. This prints out as I would expect: a single staff with melody, lyrics 
below and chord names above the staff.

I have a new document, following almost exactly the same form, where LP insists 
on printing an extraneous clef and time signature for the chord names context. 
I can get this second document to print correctly by removing 
\numericTimeSignature from the global variable, and moving it into the staff 
proper.

What I don't understand is -- why does [A] work perfectly well, even though the 
chord names context includes \numericTimeSignature I've tried to replicate 
the exact structure in the older document, and I simply can't break it. And I 
can't make the new document behave like the old one.

See [B] for minimal examples.

hjh


[A]

global = {
  \key f \major
  \numericTimeSignature
  \time 4/4
  \tempo Swing 4 = 154
}

\score {
  
\new ChordNames {
  \global
  \chordsVerse etc. etc.
}
\new Staff 
  \global
  {
\notesVerseOne etc. etc.
  }
  \addlyrics { etc. etc. }

  
}

[B]
\version 2.18.2
\language english

globalBroken = { \numericTimeSignature \key f \major }

globalOK = { \key f \major }

changes = \chordmode { f2 d2:m7 g2:m7 c2:7 }

\score {
  \new ChordNames  \globalBroken \changes 
}

\score {
  \new ChordNames  \globalOK \changes 
}

\score {
  \new ChordNames { \globalBroken \changes }
}

\score { 
  \new ChordNames { \globalBroken \changes }
  \new Staff { \globalBroken R1*2 }
 }

\score { 
  \new ChordNames { \globalOK \changes }
% but I don't want a C time sig
% and I don't want two global variables
  \new Staff { \globalOK R1*2 }
 }

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


Re: Jianpu Notation

2015-04-17 Thread James Harkins
Super-User david290 at qq.com writes:

 I am a Java developer and music amateur from China who is familiar
 with both 5-staff notation and Jianpu (aka numberic) notation used for
 all pitched Chinese instruments. I have seen post discussed about
 displaying Jianpu notation in Lilypond years ago, and would like to
 help developing implementation of it. Recently, I have tried to
 implement a small subset of Jianpu on Lilypond, in ugly programming
 style, as attached in this email. I would like to hear more from the
 Lilypond community about how to implement the Jianpu support better.

Hi,

Nice to see work resuming on this :)

Are you aware of Silas Brown's jianpu-ly python script?

http://people.ds.cam.ac.uk/ssb22/mwrhome/jianpu-ly.html

It defines a syntax for (what appears to be) a fairly large subset of
jianpu notation. The python script produces (ugly) LilyPond code to
render the jianpu. That code can be pasted into bigger scores, where it
prints nicely alongside Western notation.

One thing that it doesn't handle -- and this was a pretty serious
limitation when I tried to use it in a project -- is grace notes. If
you started with his work and added grace notes, you would be very far
along the way.

I'm working in Guangzhou, by the way.

hjh



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


Re: Using lilypond examples in an essay or text document

2015-04-04 Thread James Harkins
Org-mode is a pretty remarkable way to do this. You can embed LilyPond source 
code directly into the document's markup. Then, when you export to LaTeX, it 
can compile the LP snippets automatically and insert them into the result.

 begin sample org file
#+PROPERTY: header-args:lilypond :prologue \header{tagline=##f}

#+TITLE: Org-mode, LaTeX, LilyPond
#+DATE: 2015-04-05 Sun
#+AUTHOR: James Harkins

#+LATEX_CLASS: article
#+DATE: \today

If you're into What You See Is What You Mean, org-mode supports LilyPond code 
blocks:

#+BEGIN_SRC lilypond :file demo.eps :exports results
\relative c' { c4 e g e f d b g }
#+END_SRC

And even automatically trims the result!
 end sample org file

The main drawback is that it's ideal for people who already use Emacs, but if 
you don't use Emacs, then you would have to learn Emacs.

hjh



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


Manual gotcha: beatStructure

2015-03-21 Thread James Harkins
I just got slightly confused trying to use beatStructure, and a small edit to 
the manual might help.

\version 2.18.2
\language english

five = {
  \set Timing.beatStructure = #'(3 2)
  \time 5/8
}

seven = {
  \set Timing.beatStructure = #'(3 2 2)
  \time 7/8
}

\new RhythmicStaff {
  % \set Timing.beamExceptions = #'()
  \set Timing.baseMoment = #(ly:make-moment 1/8)
  \seven b8 b b b b b b
  \five b8 b b b b
}

The 7/8 bar shows with flags, not beams.

I think it must be that the variable implicitly creates a separate voice, and 
the beatStructure applies only within the voice. Replacing Timing with 
Staff fixes it.

I don't see it mentioned in the manual that, if you \set Timing.beatStructure, 
this must be in the same context where you write the notes. The manual says 
Beam setting changes can be limited to specific contexts, but it doesn't say 
that they ARE limited to the nearest enclosing context if you follow the syntax 
in most of the examples (using Timing).

hjh



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


Re: Manual gotcha: beatStructure

2015-03-21 Thread James Harkins

On March 22, 2015 12:00:05 AM Trevor Daniels t.dani...@treda.co.uk wrote:

 I think it must be that the variable implicitly creates a separate voice, 
and the beatStructure applies only within the voice.


No, that's not the reason.  The reason is that there is a separate 
beatStructure for each value of the time signature, and changes are applied 
to the time signature that is currently in force.  So \beatStructure in 
\seven amends the beat structure in the default time signature of 4/4 and 
the one in \five amends the beat structure in the then current 7/8, which 
for the short example you give fools you by looking correct.


So reverse the ordering of the \time and the \Timing.beatStructure commands 
and it will do what you expect.


OK, I understand. Thanks for clarifying. I think it's worth mentioning in 
the manual.


Re: Mark's comment about checking the examples -- I've found in the 
SuperCollider community (where much of the documentation is by example 
with spotty, if any, explanatory text) that users are endlessly creative in 
drawing the wrong conclusion about the concepts that an example is supposed 
to show. I've been similarly creative here. ;-p


hjh

Sent with AquaMail for Android
http://www.aqua-mail.com





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


[OT] We need LilyPond office space...

2015-03-04 Thread James Harkins
... if only so that Brian Ferneyhough can visit:

http://www.finalemusic.com/blog/brian-ferneyhough-visits-makemusic/

I can take the rhythmic notation and, using OpenMusic Syntax, port it to 
Finale. I clean it up in Finale...

That last one... I think there's a step that we can make less painful. Hmph.

hjh



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


Multiple spaces disappear in SVG rendering

2015-02-25 Thread James Harkins
Interesting little discrepancy -- I just found that consecutive spaces in 
markup strings render correctly using the PDF backend, but get collapsed down 
to one space in SVG.

I'm documenting a live-coding library, mainly using Emacs org-mode + LaTeX, but 
I threw in a bit of LilyPond to make a figure showing how the text notation of 
rhythm translates into notated rhythms. Laying out the table was pretty easy. I 
didn't want to mess around with trying to find the exact page size by numbers, 
so I rendered to SVG and opened it in Inkscape (since it has an automatic crop 
to contents feature). Then I saw:

Source: \line { 7. \typewriter \--| -  |- --| -\ }

PDF view: 7. --| -  |- --| -

SVG view: 7. --| - |- --| -

Whitespace is significant as a timing placeholder, so this was not acceptable. 
I tried non-breaking spaces; same result. Eventually I worked around it by 
inserting a zero-width space (U+200B) in between two regular spaces.

https://code.google.com/p/lilypond/issues/detail?id=1434 seems related, though 
it says it's for leading and trailing spaces. If in fact it's the same issue, 
probably the description to be updated to mention multiple consecutive spaces 
in the middle of a string.

hjh



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


Re: Demo: Score and parts template

2015-01-14 Thread James Harkins
Johan Vromans jvromans at squirrel.nl writes:

 In fact, this is separation of content and structure. It works for many
 structure-related items but unfortunately not for repeats.
 
 For example, in the following snippet the score looks right, but in the
 midi the repeats are not unfolded. Do you have a solution for that?

Good point. No, I don't have a solution -- except, for the purpose of this
demo, to add a note that \repeat volta structures will have to be included
in the notes variables.

I'm surprised that LP generates correct printed output in this case at all.
At the very least, it's misleading to produce the expected visual result,
but incorrect MIDI, without some sort of warning to the user.

Thanks for the tip --
hjh



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


Re: Score and parts template

2015-01-11 Thread James Harkins

On January 11, 2015 8:06:55 PM Phil Holmes m...@philholmes.net wrote:


So I assume the clarinet in A (which I'd missed) has a lower range than the Bb?


Clarinets in Bb and A have the same written range, extending down to the E 
below middle C. This note sounds as concert D on the Bb clarinet, and 
concert C# on the A clarinet.


 Whilst checking this, I noticed that you have no key sig: think \global 
 should still have a key sig of c \major, and then the clarinet part should 
 have \transpose a, c \global to get its correct signature for the player?


The lack of a key signature is fairly standard practice for contemporary 
music that is not organized around common practice tonality. E.g., the 
opening section of The Rite of Spring has no key signatures for any 
instruments, including the transposing ones. (The score is transposed, and 
later sections that do have key signatures display transposed key 
signatures in the transposing instruments. So the absence of key signatures 
in the first section must be deliberate.)


hjh

Sent with AquaMail for Android
http://www.aqua-mail.com





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


Re: Score and parts template

2015-01-11 Thread James Harkins
Phil Holmes mail at philholmes.net writes:

 I believe that, as a tutorial template, it would be more useful to 
 illustrate how to accommodate key signature indications with transposing 
 instruments, since this remains the norm for most music.

Ah, OK -- that makes perfect sense. It sounded at first like you were
criticizing my notation, when in fact it was about pedagogy. I'll update
that before adding the snippet.

I'll also see what I can do about the headers.

hjh


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


Re: Score and parts template

2015-01-10 Thread James Harkins
From: Phil Holmes

  Since the question came up about organizing LilyPond code for score and 
  parts, I thought I would make a quick demo of what I believe to be the 
  standard way to do it. Somehow I pieced these ideas together from LP code 
  that I found online (Mozart Horn Concerto, as I recall), but I don't 
  remember finding a compact example.
 
 I think this is potentially very useful.  Is the clarinet part an octave 
 low?

No, it's in the correct octave. There's nothing in the clarinet part that goes 
any lower than Brahms went in bar 13 of the clarinet quintet.

 If you can confirm that the clarinet is correct, then I think adding it to 
 the LSR, with a tag of docs and templates would be an excellent idea.

OK! Thanks for the feedback. I'll do that later.

hjh



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


Demo: Score and parts template

2015-01-09 Thread James Harkins
Hi,

Since the question came up about organizing LilyPond code for score and parts, 
I thought I would make a quick demo of what I believe to be the standard way to 
do it. Somehow I pieced these ideas together from LP code that I found online 
(Mozart Horn Concerto, as I recall), but I don't remember finding a compact 
example.

I used a few bars from a recent woodwind trio, because it uses some notational 
features that you would like to be handled automatically -- and which *are* 
handled automatically using these techniques:

- Multi-measure rests
- Meter changes
- Tempo markings (at the top of the score only, and in all parts)
- Clef changes in one part, independent of the others
- Transposing instruments

Comments are in the file, but to summarize briefly:

- A global variable holds any elements that need to be shared across all 
parts. Spacer (s) rests set the number of bars between tempo changes, meter 
or key changes, rehearsal marks, double barlines etc.

- Each instrument has a variable containing notes, rests, dynamics etc. Clef 
changes go into these variables (because they are specific to each part).

- The score creates staves for each instrument and fills them with simultaneous 
music expressions:  \global \instrumentNotes .

- A part is a \score containing one staff, using only the instrument's notes. 
If the part is for a multi-staff instrument, like piano, the \score would hold 
a PianoStaff or StaffGroup.

- \compressFullBarRests in the parts does what you think it should do. 
Multi-measure rests should get broken by rehearsal marks etc. (the global 
things), and that's exactly what happens. I also use the \override because I 
don't like Kirchenpausen.

In the real piece, I have a score.ly file that \include's the global and 
instrument variables, and separate oboe.ly, clarinet.ly etc. files that 
\include only what's needed for each part. For the demo, it's easier to send 
just one ly file but you wouldn't do it that way in real life.

/Theme and Variations/ is released under CC-BY-NC-SA 4.0; please don't steal 
the notes :)

Comments welcome. Hope this is helpful.

hjh

\version 2.18.2
\language english


% global contains meter, key, and tempo changes,
% and any rehearsal marks or markups that need to appear in all parts

global = {
  \numericTimeSignature
  \tempo 2 = 88
  \time 2/2 s1*3
  \tempo \markup { \fontsize #-2 { \note #2 #1 = \note #4. #1 } }
  \time 6/8 s2.
  \tempo \markup { \fontsize #-2 { \note #4. #1 = \note #2 #1 } }
  \time 2/2 s1*2
}


% Just the notes -- no need to copy anything from global

obNotes = \relative c'' {
  R1*3
  e8.\mp\ ( d16 ) f8 ~ ( f16 e ) g8. ( f16\! )
  R1*2
}

% entered in C (I prefer to think in concert pitch)
clNotes = \relative c {
  e4\f d8 ( e f4 ) e8 ( d
  e4 ) cs2 e4
  d8 ( e f4 ) g2
  R2.
  e4\f d8 ( e f4 ) g ~
  g\ f d'4. ( c8\! )
}

bsnNotes = \relative c {
  \clef bass
  r4 bf\f af g
  fs e g f
  af g bf a
  \clef tenor
  g''8\mp\ ( f ) e-. d-. cs4-\!
  \clef bass
  r2 bf,4\f a
  bf\ g a8 ( bf c4\! )
}

\paper {
  left-margin = 1.8\cm
  line-width = 18.2\cm
  right-margin = 1\cm
  ragged-bottom = ##t
  ragged-last-bottom = ##t
}

\header {
  title = Demo: Score and parts organization in LilyPond
  subtitle = \markup { Excerpt from \italic Theme and Variations }
  composer = H. James Harkins
  copyright = Licensed under Creative Commons CC-BY-NC-SA 4.0
  poet = Score in C
}

\score {
  \new StaffGroup 
\new Staff \with {
  instrumentName = Oboe
  shortInstrumentName = Ob.
}
% this expression runs global simultaneously with the oboe notes
 \global \obNotes 

\new Staff \with {
  instrumentName = Clar. in A
  shortInstrumentName = Cl.
}
 \global \clNotes 

\new Staff \with {
  instrumentName = Bassoon
  shortInstrumentName = Bsn.
}
 \global \bsnNotes 
  
  \layout {
% This won't matter for this excerpt,
% but I generally like to French my scores
\context { \Staff \RemoveEmptyStaves }
  }
}

\pageBreak

\markup {
  \column {
\vspace #2
\bold Oboe part
\vspace #1
  }
}

% The part then consists of just a single staff,
% using only the required notes.
% It should be clear in the PDF what \compressFullBarRests does.
% The \override forces the horizontal bar for rests of two bars or more,
% instead of using LilyPond's default Kirchenpausen.
% It's not shown here, but LilyPond will automatically break
% multi-measure rests for key/tempo/meter changes etc. in global.

\score {
  \new Staff 
\global
{
  \compressFullBarRests
  \override MultiMeasureRest.expand-limit = #1
  \obNotes
}
  
}


\markup {
  \column {
\vspace #2
\bold Clarinet in A part
\vspace #1
  }
}


% ... and the \transpose function handles non-C instruments

\score {
  \new Staff  \global \transpose a, c \clNotes 
}


\markup {
  \column {
\vspace #2
\bold Bassoon part
\vspace #1
  }
}

\score {
  \new Staff  \global \bsnNotes

Charpentier /Messe de minuit/ free score

2014-12-25 Thread James Harkins
I went trolling about the web this morning looking for public-domain scores 
of some of the pieces on the Boston Camerata's excellent album /A Baroque 
Christmas/. Most of them are too obscure to have made it onto IMSLP, except 
Marc-Antoine Charpentier's breezy and charming /Messe de minuit sur des 
airs de Noël/. As it happens, this was uploaded only within the last year 
after being typeset in LilyPond by our very own Nicolas Sceaux. !!


Merci beaucoup, Nicolas, for the best Christmas present I got this year: 
the chance to know this minor masterpiece more intimately.


hjh

PS 
http://petrucci.mus.auth.gr/imglnks/usimg/9/94/IMSLP318896-PMLP515693-H9_MesseMinuit.pdf


Sent with AquaMail for Android
http://www.aqua-mail.com



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


Re: menu language of LilyPad

2014-12-22 Thread James Harkins
Jinsong Zhao jszhao at yeah.net writes:

 I am wondering if there is a way to change the menu language (interface) 
 of LilyPad and/or LilyPad-ascii. I prefer English.
 
 I am running Windows 7 under locale: Chinese (Simplified)_People's 
 Republic of China.936. The interface of LilyPad and LilyPad-ascii can't 
 be recognized.
 
 Any suggestions? Thanks in advance.

I have a suggestion: Dump LilyPad and use Frescobaldi instead.

http://www.frescobaldi.org/index.html

IIUC, LilyPad is just a basic editor to get you started. Frescobaldi is a
full-featured code editor for LilyPond. It's like the difference between a
child's tricycle and a Ferrari.

(Frescobaldi's preferences panel definitely has a setting for the interface
language -- I just checked.)

hjh


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


Re: First time Voices user

2014-12-21 Thread James Harkins
 peter at chubb.wattle.id.au writes:

 As an aside, dutch note names and \relative make data entry MUCH
 faster.  See below (part 2).

FWIW, English note names are shorter if you use f for flat and s for 
sharp: cs vs cis is 33% more efficient.

I understand why some prefer the Dutch names, as you can read cis as one 
syllable. I have a repetitive strain injury dating back from college. It's 
manageable, but it does mean that redundant keystrokes are more objectionable 
to me than they would be for most people. (I doubt I could go for long in 
LilyPond without Frescobaldi's excellent autocompletion.) That, and being a 
Yank, lead me to prefer the English names.

hjh



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


Re: Need multiple \mark entries over the same barline

2014-07-30 Thread James Harkins

On Wednesday, July 30, 2014 8:09:21 AM EDT, Thomas Morley wrote:

This looks more like a MetronomeMark


\mark \markup { \fontsize #-2 { \note #4. #1 = \note #2 #1 } }


It should be possible to stack MetronomeMark and RehearsalMark 
in some manner.


A... I had forgotten that \tempo can take a markup, and you can omit 
the note value = bpm part.


~~
\version 2.18.2
\language english

four = { c'4 c' c' c' }

{
 \four
 \override Score.MetronomeMark.self-alignment-X = #CENTER
 \tempo \markup { \fontsize #-2 { \note #4. #1 = \note #2 #1 } }
 \mark \default
 \four
}
~~

So I was creating complication where there is none. Thanks for the 
reminder.


Those LSR snippets are... whew... awfully complicated for such a common use 
case. Fortunately I don't need them here. You guys did have me worried for 
a bit, though...


hjh

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


Re: cadenzaToMusic function, odd behavior causing barcheck failures

2014-07-29 Thread James Harkins
On Jul 29, 2014 7:29 AM, James pkx1...@gmail.com wrote:
 On 29/07/14 04:46, James Harkins wrote:
 Some time ago, a user here gave me a cadenzaToMusic function, which
could stretch rests in non-cadenza parts to match the duration of a
cadenza. (That's because I was having problems with compressing the cadenza
music to fit in a normal-length bar.)

 More for information to the list really@

 Part of the original thread you had it seems was from 2012  - it's only
fair when you say 'sometime ago' as this will make a difference on the
version of LP you were using at the time.

 http://lists.gnu.org/archive/html/lilypond-user/2012-04/msg00125.html I
think is that thread.

 Which seems to imply this was originally written for \version 2.14.x and
you're now using 2.18.x - again just to confirm so that the dev who helped
(Thomas Morely by the looks of it) has a chance

Good point. I just double-checked the source for the 2012 piece. I used
2.15.36 for it. (And thanks for tracking down the old thread -- now I can
give proper credit in the new piece's acknowledgments!)

I also used a modified version of the function, which skips setting the
measureLength, for a 2013 piece that I compiled with 2.16.2.

 In those 'so far' pieces, were they all for LP 2.14.x or was it working
in a case for LP 2.18.2 (i.e. is this the first time you are using 2.18.2
and find it no longer works as expected)?

I had never used it with 2.18.x before -- first try with 2.18, first time
it failed.

It's got to be something with the set Timing.measureLength -- the time
signature engraver puts 6/8 in the right place rhythmically, but the
barlines appear as if the 2/4 bar were actually 3 beats. Will play with it
some more in a little while.

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


Re: cadenzaToMusic function, odd behavior causing barcheck failures

2014-07-29 Thread James Harkins

On Tuesday, July 29, 2014 11:15:50 AM EDT, David Kastrup wrote:

Uh, \unset Timing.measureLength?  I don't think that LilyPond is going
to be happy with an unset measure length.


That makes sense, but does it apply to this case? There's a meter change 
just after the \cadenzaToMusic call; wouldn't that reset the measure length 
to that of the new time signature?


That is, if we have:

someMoment:
\set Timing.measureLength = $clen
music...

someMoment + music's duration:
\unset Timing.measureLength
\time 2/4

Will LilyPond unset the measure length, and then set it to a moment of 1 
2? Or will the unset somehow override what \time is doing? (It seems to be 
more like the latter, by observation, but this makes no sense.)


In any case, I found a solution for my score: instead of stretching rests 
in other parts to match the cadenzas' durations, compress the cadenza notes 
to match the duration of the other parts' rests.


squeezeCadenza =
#(define-music-function (parser location targetDur music)
 (ly:moment? ly:music?)
Adjust the length of `music and the measureLength, to fit the length of
`cadenzaMusic
(let* ((mlen (ly:music-length music))
  (factor (ly:moment-div targetDur mlen))
  (compressed (ly:music-compress music factor)))
 #{
   $compressed
 #}))

Resting part: \cadenzaOn R1 \cadenzaOff

Solo part: \cadenzaOn \squeezeCadenza #(ly:make-moment 1 1) \cadenzaNotes 
\cadenzaOff


... and the subsequent meter changes behave as they should.

hjh

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


Shortest duration by --verbose option?

2014-07-29 Thread James Harkins
http://lilypond.org/doc/v2.18/Documentation/notation/horizontal-spacing-overview 
says:


~~
The most common shortest duration is determined as follows: in every 
measure, the shortest duration is determined. The most common shortest 
duration is taken as the basis for the spacing, with the stipulation that 
this shortest duration should always be equal to or shorter than an 8th 
note. The shortest duration is printed when you run lilypond with the 
‘--verbose’ option.

~~

I have run lilypond with --verbose, but I don't see anything in the output 
that looks like a shortest duration. (See below.)


Am I overlooking something, or is this part of the documentation incorrect?

hjh

Starting lilypond 2.18.2 [trio-score.ly]...
Log level set to 287
Relocation: is absolute: argv0=/home/dlm/lilypond/usr/bin/lilypond
PATH=/home/dlm/lilypond/usr/bin (prepend)
Setting PATH to 
/home/dlm/lilypond/usr/bin:/home/dlm/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/texlive/2013/bin/x86_64-linux
Relocation: compile datadir=, new 
datadir=/home/dlm/lilypond/usr/share/lilypond//current

Relocation: framework_prefix=/home/dlm/lilypond/usr/bin/..
Setting INSTALLER_PREFIX to /home/dlm/lilypond/usr/bin/..
Relocation file: /home/dlm/lilypond/usr/bin/../etc/relocate//gs.reloc
warning: no such directory: 
/home/dlm/lilypond/usr/bin/../share/ghostscript/8.70/fonts for GS_FONTPATH
warning: no such directory: /home/dlm/lilypond/usr/bin/../share/gs/fonts 
for GS_FONTPATH
GS_LIB=/home/dlm/lilypond/usr/bin/../share/ghostscript/8.70/Resource 
(prepend)
Setting GS_LIB to 
/home/dlm/lilypond/usr/bin/../share/ghostscript/8.70/Resource
GS_LIB=/home/dlm/lilypond/usr/bin/../share/ghostscript/8.70/Resource/Init 
(prepend)
Setting GS_LIB to 
/home/dlm/lilypond/usr/bin/../share/ghostscript/8.70/Resource/Init:/home/dlm/lilypond/usr/bin/../share/ghostscript/8.70/Resource
Relocation file: 
/home/dlm/lilypond/usr/bin/../etc/relocate//fontconfig.reloc
Setting FONTCONFIG_FILE to 
/home/dlm/lilypond/usr/bin/../etc/fonts/fonts.conf

Setting FONTCONFIG_PATH to /home/dlm/lilypond/usr/bin/../etc/fonts
Relocation file: /home/dlm/lilypond/usr/bin/../etc/relocate//pango.reloc
Setting PANGO_RC_FILE to /home/dlm/lilypond/usr/bin/../etc/pango/pangorc
Setting PANGO_PREFIX to /home/dlm/lilypond/usr/bin/../
Setting PANGO_MODULE_VERSION to 1.6.0
Relocation file: /home/dlm/lilypond/usr/bin/../etc/relocate//guile.reloc
GUILE_LOAD_PATH=/home/dlm/lilypond/usr/bin/../share/guile/1.8 (prepend)
Setting GUILE_LOAD_PATH to /home/dlm/lilypond/usr/bin/../share/guile/1.8
PATH=/home/dlm/lilypond/usr/bin/../bin (prepend)
Setting PATH to 
/home/dlm/lilypond/usr/bin/../bin:/home/dlm/lilypond/usr/bin:/home/dlm/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/texlive/2013/bin/x86_64-linux

Setting GUILE_MIN_YIELD_1 to 65
Setting GUILE_MIN_YIELD_2 to 65
Setting GUILE_MIN_YIELD_MALLOC to 65
Setting GUILE_INIT_SEGMENT_SIZE_1 to 10485760
Setting GUILE_MAX_SEGMENT_SIZE to 104857600

LILYPOND_DATADIR=/usr/share/lilypond/2.18.2
LOCALEDIR=/usr/share/locale

Effective prefix: /home/dlm/lilypond/usr/share/lilypond/current
FONTCONFIG_FILE=/home/dlm/lilypond/usr/bin/../etc/fonts/fonts.conf
FONTCONFIG_PATH=/home/dlm/lilypond/usr/bin/../etc/fonts
GS_LIB=/home/dlm/lilypond/usr/bin/../share/ghostscript/8.70/Resource/Init:/home/dlm/lilypond/usr/bin/../share/ghostscript/8.70/Resource
GUILE_LOAD_PATH=/home/dlm/lilypond/usr/bin/../share/guile/1.8
PANGO_RC_FILE=/home/dlm/lilypond/usr/bin/../etc/pango/pangorc
PANGO_PREFIX=/home/dlm/lilypond/usr/bin/../
PATH=/home/dlm/lilypond/usr/bin/../bin:/home/dlm/lilypond/usr/bin:/home/dlm/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/texlive/2013/bin/x86_64-linux
[]
Guile 1.8
[/home/dlm/lilypond/usr/share/lilypond/current/scm/lily-library.scm]
[/home/dlm/lilypond/usr/share/lilypond/current/scm/output-lib.scm]
[/home/dlm/lilypond/usr/share/lilypond/current/scm/markup-macros.scm]
[/home/dlm/lilypond/usr/share/lilypond/current/scm/parser-ly-from-scheme.scm]
[/home/dlm/lilypond/usr/share/lilypond/current/scm/file-cache.scm]
[/home/dlm/lilypond/usr/share/lilypond/current/scm/define-event-classes.scm]
[/home/dlm/lilypond/usr/share/lilypond/current/scm/define-music-callbacks.scm]
[/home/dlm/lilypond/usr/share/lilypond/current/scm/define-music-types.scm]
[/home/dlm/lilypond/usr/share/lilypond/current/scm/define-note-names.scm]
[/home/dlm/lilypond/usr/share/lilypond/current/scm/c++.scm]
[/home/dlm/lilypond/usr/share/lilypond/current/scm/chord-entry.scm]
[/home/dlm/lilypond/usr/share/lilypond/current/scm/skyline.scm]
[/home/dlm/lilypond/usr/share/lilypond/current/scm/stencil.scm]
[/home/dlm/lilypond/usr/share/lilypond/current/scm/define-markup-commands.scm]
[/home/dlm/lilypond/usr/share/lilypond/current/scm/markup.scm]

Need multiple \mark entries over the same barline

2014-07-29 Thread James Harkins
In some places, I have a \markup-style mark over the same barline, and at 
the same barline, I also want a rehearsal mark (produced by \mark 
\default). Unfortunately it seems only one \mark is allowed at any given 
moment.


This is a type of markup-style marking I mean:

 \mark \markup { \fontsize #-2 { \note #4. #1 = \note #2 #1 } }

... where you wouldn't want the score to print the duration equivalence 
over every staff, just at the top. And of course rehearsal marks shouldn't 
go over every staff either.


Is there any workaround?

hjh

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


cadenzaToMusic function, odd behavior causing barcheck failures

2014-07-28 Thread James Harkins

Hi,

Some time ago, a user here gave me a cadenzaToMusic function, which could 
stretch rests in non-cadenza parts to match the duration of a cadenza. 
(That's because I was having problems with compressing the cadenza music to 
fit in a normal-length bar.)


I've used it in a couple of pieces and it's worked beautifully so far, but 
failed in the case below. I expect to get:


(whole rest, fermata) | 2/4 R2 | 6/8 (next section)

Instead, I get

(whole rest, fermata) | 2/4 R2 ...

... and here, the 6/8 appears in the middle of the bar. It looks like the 
barlines are calculated as if the 2/4 bar contained three quarters.


The issue doesn't reproduce in two cases:

- If I replace the \cadenzaToMusic in the \score block with rests adding up 
to the right duration, or


- If I put the part with the cadenza notes (with *no* \cadenzaToMusic) in 
the lowest staff. (I can't do that b/c it's a clarinet cadenza and the 
piece also uses bassoon.)


I'm really quite perplexed why this is happening. Can someone take a look?

Thanks,
hjh


\language english
\version 2.18.2

cadenzaToMusic =
#(define-music-function (parser location cadenzaMusic music)
  (ly:music? ly:music?)
  Adjust the length of `music and the measureLength, to fit the length of
`cadenzaMusic
  (let* ((clen (ly:music-length cadenzaMusic))
 (mlen (ly:music-length music))
 (factor (ly:moment-div clen mlen))
 (compressed (ly:music-compress music factor)))
;; (format #t factor : ~a\n factor)
#{
  \set Timing.measureLength = $clen
  $compressed
  \unset Timing.measureLength
#}))

clarCadenzaC = { \cadenzaOn \repeat unfold 31 r8 \cadenzaOff }

globalB = {
 \time 4/4
 \cadenzaOn \cadenzaToMusic \clarCadenzaC s1 \cadenzaOff
 \bar |
 \time 2/4 s2
 \time 6/8 s2.
}

\score { 
 \new Staff 

   \globalB
   \relative c' {
 \cadenzaOn

 % use the following line: barcheck failed, and 6/8 meter is in the 
wrong place

 \cadenzaToMusic \clarCadenzaC r1\fermata

 % use the following line instead (comment the previous one), no 
problem

 %r8 \repeat unfold 15 { r4 }  % = 31 eighth notes

 \cadenzaOff
 R2
 cs8 d e cs4.
   }
 
}


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


Optical spacing -- no more?

2014-07-10 Thread James Harkins
Something I've been wondering about for awhile... lilypond.org boasts of 
optical spacing for notes with alternating up and down stems, but it 
seems this feature has been lost somewhere (or disabled by default). In 
this example, it's quite plain to my eyes that the stems are not equally 
spaced within the bars.


\version 2.18.2
\relative c'' { e4 c, f' d, g' e, a' f, }

Which is correct -- the website, or LP's behavior?

hjh

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


Nifty trick with tags and \shape

2014-06-23 Thread James Harkins
If you ever need the score and a transposed part to have a different slur 
shape in places... this does it :)


Just had to share -- actually I wasn't entirely sure this would work, but 
it's perfect!


hjh

\version 2.18.2
\language english

music = \relative c' {
 \tupletSpan 1*6/8
 \tuplet 4/3 {
   cs4 
   \tag #'scoreOnly { \shape #'((0 . 0) (0 . 0) (0 . 1.2) (0 . -0.5)) Slur 
}
   \tag #'partOnly { \shape #'((-0.5 . 1.5) (0 . 0) (0 . 0) (0 . 1.0)) 
Slur }

   f,! ( d' e cs' b'2 g,4 ) }
 \tupletSpan \default
}

\score {
 \new Staff {
   \time 12/8
   % from score in C
   \keepWithTag #'scoreOnly \music
   \bar ||
   % transposed part with the same slur shape adjustment, VERY ugly
   \keepWithTag #'scoreOnly \transpose a c' \music
   \bar ||
   % fixed
   \keepWithTag #'partOnly \transpose a c' \music
   \bar ||
 }
}

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


Custom accidental style (for cadenza)?

2014-06-16 Thread James Harkins
TL;DR version of the question: How could I define an accidental style that 
behaves mostly like neo-modern, but also avoids repeating accidentals 
within a beamed group?


Full explanation why --

I have a cadenza which, according to Frescobaldi's duration counter, spans 
59 quarter notes. It's in a free-chromatic style, so accidentals are very 
important. Because it's in \cadenzaOn ... \cadenzaOff, accidentals are 
remembered and not repeated basically forever within this stretch of 
time.


If it were a C instrument, it would be easy: I would sprinkle ! 
throughout, wherever I want to see the accidental but it isn't printed by 
default. But it's actually for clarinet in A... so I write the music 
variable in concert pitch, and then use \transpose a c' in the layout file 
for the part. Then, some of the accidentals that had to be forced for the 
score in C end up forcing a natural-sign in the part, which looks dumb.


It turns out that most of the cadenza looks okay if I use neo-modern 
accidental style, *but* there's one exception: fast notes that alternate 
between two pitches. See the example pasted below:


#1 is the appearance I want (first bar is concert pitch, second bar is 
transposed).


#2 illustrates the problem I described above. Forcing the second cs! 
causes a confusing natural sign to be printed.


#3 The default accidental style works, but doesn't scale up nicely to a 
59-beat cadenza (because it will hide an accidental that appeared ten whole 
notes ago).


#4 Neo-modern is acceptable, the third sharp is really terribly fussy.

A nice middle ground between remember accidentals for the whole cadenza 
and remember accidentals only from the immediately preceding note would 
be to remember accidentals within a beamed group. Is there any way to hack 
this up in scheme, say?


Thanks,
hjh

~~ EXAMPLE

\version 2.18.2
\language english

\markup What I'd like

\score {
 \new Staff {
   \time 2/4
   \relative c'' { e8 [ cs ] \tuplet 5/4 { e16 [ cs! e cs e ] } }
   \bar ||
   \transpose a c' \relative c'' { e8 [ cs ] \tuplet 5/4 { e16 [ cs e cs e 
] } }

 }
}

\markup \column {
 \vspace #2
 What I get by using 'transpose' with a music variable: Superfluous 
natural-sign

}

notesA = \relative c'' { e8 [ cs ] \tuplet 5/4 { e16 [ cs! e cs e ] } }

\score {
 \new Staff \relative c'' {
   \time 2/4
   \notesA
   \bar ||
   \transpose a c' \notesA
 }
}

\markup \column {
 \vspace #2
 \wordwrap-string #Default, no big deal here but in a longer cadenza, 
need to force too many accidentals

}

notesB = \relative c'' { e8 [ cs ] \tuplet 5/4 { e16 [ cs e cs e ] } }

\score {
 \new Staff {
   \accidentalStyle Staff.default
   \time 2/4
   \notesB
   \bar ||
   \transpose a c' \notesB
 }
}

\markup \column { \vspace #2 Neo-modern: The last sharp looks a bit silly 
}


\score {
 \new Staff {
   \accidentalStyle Staff.neo-modern
   \time 2/4
   \notesB
   \bar ||
   \transpose a c' \notesB
 }
}


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


Re: Custom accidental style (for cadenza)?

2014-06-16 Thread James Harkins

On Tuesday, June 17, 2014 8:21:10 AM HKT, David Nalesnik wrote:

Here's a variation which incorporates my little discovery :)


This is great! Thanks! I can safely say, it probably would have taken me 
half a year to figure this out on my own...



In the second example, the ! forces the natural.  I don't see that there's
any logic in allowing the function to ignore an explicit directive like
this.  (Though I'm guessing it's there as an artifact from the this is how
I'd like it to look example?)


The ! is there in my second example to illustrate the transposing behavior 
that I didn't want. If I remove it from your test file, then it does just 
what I wanted: the C# displays once per beamed group, and there is no 
unnecessary natural sign for E-nat. in the transposed part.


Thanks again -- I owe you a beer, or some snippets of SuperCollider code, 
or something. (This exchange, incidentally, is one of the reasons why I 
prefer free-as-in-freedom software whenever possible.)


hjh


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


\cadenzaOff resets accidentals too late

2014-06-14 Thread James Harkins

This smells like a bug to me:

\version 2.18.2
\language english

\relative c' {
 \cadenzaOn
 a4 b cs d% accidental is printed
 \cadenzaOff
 \bar || % \time 4/4
 e d cs b% accidental is NOT printed -- huh??
 a b cs d% accidental is printed
}

I'm aware that \cadenzaOn will remember accidentals for the entire duration 
of the cadenza. But, I would expect, when the cadenza ends and metered 
music resumes, that the accidentals in force would be cleared. Any notes in 
the subsequent bar that require accidentals would be printed with 
accidentals, even if the same accidental appeared in the cadenza.


In fact, the accidentals are not cleared until the next bar (second bar 
after the cadenza ends).


If I were writing only for C instruments, I would just work around it by 
forcing the missing accidentals by !. Unfortunately for this case, it's 
an A clarinet part. The accidental is required in the C score, but not 
required for the transposed part. This means that the workaround involves 
tagging notes, so that the score will use cs! and the part, just cs. 
Irritating.


There may be some technical reason for the current behavior, but it means 
that normal input produces incorrect output... so I think, bug.


hjh

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


Slur crossing through accidental

2014-06-12 Thread James Harkins
I am at a complete loss what to do about this slur. It collides with the 
b-flat's accidental in a way that makes it hard to see what the slur is 
supposed to be.


\version 2.18.2
\language english

\relative c {
 \clef bass
 \time 6/8
 bf8 ( d' ) r8
 bf,16 ( bf' ) d ( bf d bf )
}

I tried \override Accidental.avoid-slur = #'inside, but this did nothing. 
I tried shifting the accidental to be closer to the notehead -- \once 
\override Accidental.X-offset = #0.2 -- this does nothing. I tried using 
\shape but didn't find the magic numbers yet.


Suggestions? Thanks.

hjh


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


Re: Slur crossing through accidental

2014-06-12 Thread James Harkins

On Thursday, June 12, 2014 11:16:27 PM HKT, Karol Majewski wrote:

Hi, James

How about:

\override Slur.details.accidental-collision = #1000

?


No difference here:

\version 2.18.2
\language english

\relative c {
 \clef bass
 \time 6/8
 bf8 ( d' ) r8
 \override Accidental.avoid-slur = #'inside
 \override Slur.details.accidental-collision = #1000
 bf,16 ( bf' ) d ( bf d bf )
}

hjh

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


Re: Odp: Slur crossing through accidental

2014-06-12 Thread James Harkins

On Thursday, June 12, 2014 11:22:57 PM HKT, Karol Majewski wrote:

And of course you have to increase region size. So it should be:

\override Slur.details.region-size = #5
\override Slur.details.accidental-collision = #1000


Thanks, all, for the suggestions.

Increasing the slur region ended up pushing the slur rather high. So I 
ended up going back to \shape, and also pushing the accidental closer to 
the notehead (thanks to Malte's suggestion of extra-offset -- somehow I 
thought X-offset would work -- will try to remember extra-offset next 
time).


That gives me something acceptable (attached). The octave slur is perhaps a 
tiny bit flamboyant, but I found in my \shape experiments that a too-flat 
slur ends up looking like some kind of strange line modifying the flat 
symbol, rather than a slur. The slight downward curve at the right-hand end 
makes it much more obviously a slur.


\version 2.18.2
\language english

\relative c {
 \clef bass
 \time 6/8
 bf8 ( d' ) r8
 \shape #'((0 . -0.5) (0 . 1) (0 . 1) (0 . 0.4)) Slur
 bf,16 (
 \once \override Accidental #'extra-offset = #'(0.25 . 0)
 bf' ) d ( bf d bf )
}

Thanks again!
hjh___
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user


Re: SystemStartBracket/Brace

2014-06-09 Thread James Harkins
Matthew Collett m_collett at ihug.co.nz writes:

 
 On 10/06/2014, at 4:28 am, David Kastrup dak at gnu.org wrote:
 
  Please *never* take the mailing list off the cc without announcement.
 
 Please *never* blame ordinary list users for the idiosyncratic behaviour of 
the lilypond-user mailing
 list.  
 
 This is the only list I have ever been on that does not reply to the list by 
default.  So as has been pointed out on
 a number of previous occasions, it is _not_ a matter of someone deliberately 
'tak[ing] the mailing list
 off the cc', but rather one of accidentally forgetting to add it (or for new 
users, being unaware of the need
 to do so).

Here we go again...

Apparently, this list's behavior is correct according official standards, and 
every other list in the world does it wrong merely for the sake of user 
convenience. List members who don't like it are reminded that humans should 
now adapt to the needs of technology, instead of the other way around.

#FlameSuitOn

hjh


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


[bug?] Unnecessary avoid-slur warning

2014-05-19 Thread James Harkins
It appears that LilyPond 2.18.2 prints a warning if a trill pitch occurs 
under a slur, regardless of the chance of collision.


\relative c' {
 % OK
 \pitchedTrill d2\startTrillSpan ~ e d4. r8\stopTrillSpan
 
 % warning: Ignoring grob for slur: TrillPitchAccidental.  avoid-slur not 
set?

 % But the slur is nowhere near colliding with the trill pitch accidental!
 c4 ( \pitchedTrill d4\startTrillSpan e ~ d4. ) r8\stopTrillSpan
}

This fixes it:

 \override TrillPitchAccidental.avoid-slur = #'inside

But shouldn't this be a default? When would you seriously want a trill 
pitch accidental to be outside the slur? Not to mention that it would make 
no sense to put the trill pitch accidental outside, and the trill pitch 
head inside.


Small issue, work-around-able, but seems a bit untidy.

hjh

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


\mark and text spanners?

2014-05-18 Thread James Harkins

Is it possible to use a text spanner in a \mark?

That is, accel... is about tempo, so it makes sense -- as with other 
tempo marks -- to print it just once in the score (especially this score: 3 
players, 3 staves). But it seems this is not possible with a text spanner.


hjh

Sent with AquaMail for Android
http://www.aqua-mail.com



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


articulate.ly: command to start trills on the lower note?

2014-05-18 Thread James Harkins
I was just toying with articulate.ly, to hear some trills, when I noticed 
that it's starting the trill on the upper note. This is appropriate for 
older music but dead wrong for contemporary music. (If not dead wrong, 
then certainly generally wrong.)


How to configure this?

\include articulate.ly

\score {
 \unfoldRepeats \articulate { c'1\trill }
}

hjh

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


Re: articulate.ly: command to start trills on the lower note?

2014-05-18 Thread James Harkins

On Sunday, May 18, 2014 3:38:43 PM HKT, James Harkins wrote:
I was just toying with articulate.ly, to hear some trills, when 
I noticed that it's starting the trill on the upper note. This 
is appropriate for older music but dead wrong for contemporary 
music. (If not dead wrong, then certainly generally wrong.)


Second issue: articulate.ly ignores \pitchedTrill.

This trills Db and E-natural, not Eb.

\include articulate.ly

\score {
 \unfoldRepeats \articulate { \pitchedTrill des'2\startTrillSpan ees 
r2\stopTrillSpan }

}

hjh

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


Beams not drawn after \unHideNotes

2014-05-15 Thread James Harkins
I'm making that exercise for my students now** and found... the first group 
of eighths after \unHideNotes is missing its beam. It omits 8th-note flags, 
and it draws the stems as if it's going to beam them, but... no beam.


** Thanks, Pierre, for reminding me about \hideNotes!

\version 2.18.2
\relative c' {
 \hideNotes \repeat unfold 6 { e8 }
 \unHideNotes
 e8 f8  % beam is not drawn here
 g a g2.
}

If I explicitly beam, it works. But I think I shouldn't have to.

\version 2.18.2
\relative c' {
 \hideNotes \repeat unfold 6 { e8 }
 \unHideNotes
 e8 [ f8 ]
 g a g2.
}

I think I see why... it's trying to beam a group of four 8ths, where the 
first two are hidden. It'd be nicer if LilyPond could detect the situation 
and just Do The Right Thing.


Par for the course today... just about everything I tried to do on the 
computer today required a bug report :(


hjh

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


Re: Beams not drawn after \unHideNotes

2014-05-15 Thread James Harkins

On Thursday, May 15, 2014 8:42:56 PM HKT, James Harkins wrote:
I think I see why... it's trying to beam a group of four 8ths, 
where the first two are hidden. It'd be nicer if LilyPond could 
detect the situation and just Do The Right Thing.


Just occurred to me -- a simple solution would be to have an option whereby 
\hideNotes and \unHideNotes automatically break whatever default beaming is 
being processed at the moment.


hjh

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


Typesetting exercises with blank space

2014-05-10 Thread James Harkins
I want to create an exercise for some beginning composition students, where 
I will provide some short melody fragments sprinkled through a longer 
score. Most measures will be empty, but I want LilyPond to leave enough 
space for the students to write in their own notes. I looked in the 
notation reference at horizontal spacing (which appears to be concerned 
more with note spacing) and breaks (where I found quite a bit about 
allowing extra breaks, which is the opposite of what I want).


I'm sure it's documented, but 1/ my mental map of the LP documentation 
isn't comprehensive enough and 2/ my brain is fried and I simply can't 
think of a reasonable search term for this at the moment.


I could imagine either:

- a setting to force a certain number of bars per system, or

- an override to set the minimum measure width.

Thanks,
hjh


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


Re: frescobaldi vs. org-babel-lilypond

2014-04-28 Thread James Harkins
Steven Arntson steven at stevenarntson.com writes:

 I may be getting in over my head with this question. I'm a new user of
Lilypond,
 transitioning away from Musescore. I've
 been using Frescobaldi a bit, and am impressed with it so far.
 
 However, I see there's an Emacs mode available through org-babel called
 Arrange Mode. I'm a user of Emacs (though far from an expert!), and I
 love the environment.
 
 Does anyone have familiarity with both, who could highlight a few of the
 differences? Frescobaldi has many features I doubt I'll use much (such
 as the Quick Insert menu). Mainly what I like about it is the
 integration of the windows--text entry, music display, lilypond
 messages, and MIDI playback. I wonder if that could be done with a
 dedicated Emacs instance.

I would cast my vote for Frescobaldi, actually.

I went through a phase of trying to do everything in Emacs -- org-mode,
e-mail (Wanderlust), LilyPond-mode, sclang-mode for SuperCollider. Now I use
Emacs only for org-mode -- and by itself, that's a good enough reason to
keep Emacs around. (I'm not kidding -- it's the best organizer/authoring
tool I've ever seen.)

For me, the thing that seals the deal in favor of Frescobaldi is its
syntax-aware autocompletion. It's pretty good at hiding completion options
that are not appropriate in that location -- good enough that, if I expect a
completion menu and one doesn't appear, that's often a red flag to recheck
the syntax.

LilyPond-mode may have grown since I stopped using it, but at the time, its
completion tables left out a lot of valuable keywords, and it provides
basically no on-the-fly assistance with syntax.

Plus, the integrated PDF viewer with point-and-click to jump to the bit of
code responsible for a glyph, and which also highlights the glyph coming
from the text cursor's location, saves HOURS of navigation time. Really,
seriously.

My opinion is that Emacs-purity isn't worth losing the conveniences of
Frescobaldi.

hjh



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


Re: Collision between tuplet bracket and accidental

2014-04-27 Thread James Harkins

On Friday, 25 April 2014 15:59:16 HKT, Pierre Perol-Schneider wrote:

2014-04-25 7:29 GMT+02:00 James Harkins jamshar...@gmail.com:
I have a case (attached) where LilyPond doesn't leave enough space for

an accidental.


Try :

\once\override NoteColumn.X-offset = #1


Perfect, thanks!
hjh

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


Collision between tuplet bracket and accidental

2014-04-24 Thread James Harkins
I have a case (attached) where LilyPond doesn't leave enough space for
an accidental.

This minimal example *almost* reproduces it. There's not an actual
collision here, but the space is uncomfortably small. If anything
forces narrower spacing (as in my full piece), they will crash into
each other.

\relative c {
\cadenzaOn
\tuplet 3/2 { f8 [ d' ] e4 d8 [ e ] } b''!8 g,4
}

How to fix?

(I do need the forced natural sign b/c there are a lot of Bb's in
other registers elsewhere in this passage.)

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


Re: Bach Cello Suite for Bassoon...Typed in LilyPond!!!

2014-04-18 Thread James Harkins
Mark Mathias d8valily at gmail.com writes:

 I also used to be managing editor of a music publisher in the days when 
engraving was done with a re-built Olympia typewriter and hand-drawn slurs.

I would like to nominate this as the single most insane sentence to be posted 
on this mailing list all week. Perhaps all month.

hjh


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


Symbol to indicate an unmetered (cadenza) bar

2014-04-17 Thread James Harkins
I'm writing a piece that will have a few cadenzas. In the cadenza 
pseudo-bars, I want to print some kind of glyph where the time signature 
would normally go, to indicate that this bar is unmetered.


My first thought was a 0, and I found in the manual that I can actually get 
the 0 to appear in the right place like this (using 2.18):


   \once \override Staff.TimeSignature.style = #'single-digit
   \time 0/4
   \cadenzaOn

(Compilable example below, with a further hack.)

But this breaks note spacing. If I change it to \time 1/4, then I get 
reasonable note spacing. \time 0/4 puts the minimum space between note 
heads. In one passage, I'm using two voices with spacer rests to suggest 
something like polyphony from a clarinet, and the minimum-space issue 
completely destroys the spacers.


I can hack around that problem like this, but... wow, that smells as foul 
as 6-month-old milk left out of the fridge...


\version 2.18.0
\language english

\score {
 \new Staff \relative c' {
   cs1 R1\fermataMarkup \bar ||
   \once \override Staff.TimeSignature.style = #'single-digit
   \time 0/4
   \cadenzaOn
   s32
   \once \override Staff.TimeSignature.stencil = ##f
   \time 1/4
   r8 f, ( d' [ e ] ) e'' [ ( cs b ] )
 }
}

Is there a more elegant way?

(Out of curiosity, what glyph would Gould recommend for this case?)

hjh

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


Re: Symbol to indicate an unmetered (cadenza) bar

2014-04-17 Thread James Harkins
On Apr 17, 2014 6:11 PM, David Stephen Grant da...@davidgrant.no wrote:

 Gould recommends a cross together with a tempo marking senza misura.
Kurt Stone however recommends a zero.

Thanks. I had used a zero with a vertical bar through it back in school.

Hm, a choice then:

- Zero: Use a (perhaps dubious) time signature hack, and get perfect
positioning.

- Cross: Figure out how to finagle a markup to go exactly in the middle two
staff spaces and take up just the right amount of space.

The zero sounds easier.

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


Re: Generative music and Algorithmic composition

2014-01-17 Thread James Harkins
Philip Rhoades phil at pricom.com.au writes:

 People,
 
 David took this discussion off-list and then accused me of not having 
 the guts to respond on-list . .

In an ideal world, I'd suppose that if one needs to preface an email with 
grade-school playground ethics, one *might* take that as a sign that it's time 
to walk away.

At this point, I don't care who said what to whom, or who started it, or even 
who is right. Both of you, cool it. This will go on forever if neither of you 
is willing to take the high road first.

 Now if you can't admit those, then (now that we are off the list) what 
 this argument has been about is: dick-swinging

Oh, it's already little more than that. I can think of a few websites where 
I'd go to watch that. The LilyPond mailing list is not high on that list.

hjh


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


Re: Survey: Git (G)UIs

2014-01-06 Thread James Harkins
Urs Liska ul at openlilylib.org writes:

 Hi all Git users,
 
 I'd like to make a survey on how you are working with Git.
 
 Do you use the command line exclusively, or a GUI (which one(s))?
 Or a GUI for certain tasks and the command line for others?

I don't have an opinion on git pedagogy. In my own usage, I use the command 
line for maintenance (managing branches, pull/push etc.) and qgit for 
committing and searching history.

I wouldn't say qgit is especially full-featured, but its commit interface 
makes it very easy to bundle changes to multiple files under one commit. It's 
quicker than git add + git commit. I also find it very helpful to review 
diffs in the preview pane before committing.

(I used to use emacs C-x v commands, but I could never figure out how to stage 
multiple files for one commit. Emacs's git integration seems to work on the 
current file only.)

hjh


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


Re: Weirdness With Fonts and Font Tree Snippet

2014-01-02 Thread James Harkins
Joshua Nichols josh.d.nichols at gmail.com writes:

 
 
 see attached. It was lengthy.

For future reference, probably you needed this, for case-insensitive 
searching.

fc-list | grep -i libertine

hjh


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


Re: [Feature Request] \compressFullBarRests improvement(s)

2013-12-22 Thread James Harkins

On Sunday, December 22, 2013 5:07:11 PM HKT, Simon Bailey wrote:

I also support this request.  Another reason is that in many parts of
percussion instruments, say, there is `tacet' for a very long time,
e.g. from rehearsal number 20 to 76.  A potential new implementation
of \compressFullBarRests (or a variant as suggested by David K.)
should allow compression of everything (including measure changes!)
into a single MM rest to span these two rehearsal numbers.


as a victim of such parts (orchestral bass trombone), this 
shouldn't be the default behavior. I've had such parts, and it 
is REALLY annoying when your part jumps from say mark G to mark 
Q (with 137 bars rest) and the conductor asks for the rehearsal 
to start 3 bars before P. unless you _know_ how many bars P has 
or _exactly_ when you're supposed to come in, such parts are 
useless. 


Note that this is a side suggestion, tangentially related to the main 
request.


The main request is to avoid multi-measure rests that are broken only by a 
bar line and nothing else. It's okay to break a multi-measure rests for a 
double bar line, a key or meter change, or a rehearsal mark. It's really 
questionable to break a multi-measure rest into two when there is no 
notationally evident reason to do so.


| = barline
+ = Multi-measure rest delimiter

| +--- 2 ---+ | 3/4 +--- 2 ---+ |-- this is necessary

| +--- 2 ---+ | +--- 2 ---+ |-- this is pointless

| +--- 4 ---+ |  -- this is the same as the second, but more efficient

For the side request, I totally agree that it shouldn't be the default 
handling. Rests should not be notated such that the duration is ambiguous. 
Tacet al fine would be fine, though.


Just my opinions. I'll defer to experts if I'm wrong.

hjh

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


Re: [Feature Request] \compressFullBarRests improvement(s)

2013-12-22 Thread James Harkins
Kieren MacMillan kieren_macmillan at sympatico.ca writes:

   I don't understand why, if you want a four measure rest you would 
write 2+2.  For the vast majority of cases, if there are 48 bars  between
two rehearsal marks I'm happy to see |=48=| between them.  So, why write
anything but R1*48 in the part in question?
 
 You can write R1*48 in the *part*, but if a shared variable (say, a global
with other changes in it) is simultaneous-ed with it, the R1*48 gets broken
by Lilypond. This is what I'm trying to avoid.
 
 So ultimately you're supporting my argument/request: If one writes R1*48
in a part, one should see a 48-measure MMRs in the output.  =)

Ah, I misunderstood the issue. Indeed:

\new Voice 
  { s1*2 s1*2 }
  { \compressFullBarRests R1*4 }


hjh


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


musicxml2ly bug: Fails on empty work-title / node

2013-12-21 Thread James Harkins

In case anybody is working on musicxml2ly:

I just found that it doesn't handle the case of an XML document where the 
title node exists, but is empty. I've uploaded a zip archive of two 
musicxml documents.


http://ubuntuone.com/0iNRBh17UxPJWlVJikFYVD

** 13-1220-li-xuanyi.xml -- The original file from my student, exported 
from Sibelius on Mac.


$ musicxml2ly 13-1220-li-xuanyi.xml 
musicxml2ly: Reading MusicXML from 13-1220-li-xuanyi.xml ...

Traceback (most recent call last):
 File /usr/local/lilypond/usr/bin/musicxml2ly, line 2984, in ?
   main()
 File /usr/local/lilypond/usr/bin/musicxml2ly, line 2979, in main
   voices = convert (filename, options)
 File /usr/local/lilypond/usr/bin/musicxml2ly, line 2881, in convert
   score_information = extract_score_information (tree)
 File /usr/local/lilypond/usr/bin/musicxml2ly, line 201, in 
extract_score_information

   set_if_exists ('title', movement_title.get_text ())
AttributeError: 'NoneType' object has no attribute 'get_text'

** 13-1220-li-xuanyi-finale.xml -- Another version, made by importing the 
original into Finale 2010 and re-exporting to musicxml. This one is fine in 
musicxml2ly, producing a LilyPond file that compiles successfully (apart 
from LilyPond complaining about all the collisions that Finale 
generated...).


A notable difference is that the one from Sibelius includes the following, 
but Finale omits it.


work
 work-title /
/work

If I remove those lines, then musicxml2ly gets past this error... only to 
fail later. So this document (the original) might be a good test case for 
musicxml2ly's error recovery.


I'm on 2.16.2.

Thanks,
hjh

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


Re: musicxml2ly bug: Fails on empty work-title / node

2013-12-21 Thread James Harkins
On Dec 21, 2013 5:56 PM, pls p.l.schm...@gmx.de wrote:

 On 21.12.2013, at 09:14, James Harkins jamshar...@gmail.com wrote:
 I just found that it doesn't handle the case of an XML document where
the title node exists, but is empty. I've uploaded a zip archive of two
musicxml documents.

 we fixed this bug some time ago. See:
https://github.com/Philomelos/lilypond-musicxml2ly-dev.

Thanks for clarifying that.

 These files are not minimal examples and contain loads of faulty xml
markup.

... which Finale at least doesn't choke on. Whether Finale's result is
valid or not, I couldn't say. What I can say is that the musicxml2ly result
from the Finale file looked superficially reasonable at a quick glance. The
point being that Finale's error tolerance produces something that is at
least usable, even if awful, where musicxml2ly requires a standard of
correctness that was unfortunately not useful in this case.

I offered the files not as minimal examples for the specific empty title
issue, but as real-world use cases, on the supposition that musicxml2ly
would be more useful if it's better able to recover from flawed input.

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


Re: [Feature Request] \compressFullBarRests improvement(s)

2013-12-21 Thread James Harkins
Kieren MacMillan kieren_macmillan at sympatico.ca writes:

 Hello all,
 
 Consider this snippet:
 
 \version 2.17.97
 
 theMusic = {
   \compressFullBarRests
   R1*2
   R1*2
 }
 
 \score {
   \theMusic
 }
 
 Here’s my request: I would love it if \compressFullBarRests actually did
what it says it does…  ;)

FWIW, I agree with Kieren. If I saw a part with some multimeasure rests
broken for no obvious reason, e.g.

{ \compressFullBarRests \mark \default R1*2 R1*2 \mark \default R1*2 }

I would think the publisher was insane or incompetent. I'm surprised this is
LP's default behavior.

hjh


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


Re: [Feature Request] \compressFullBarRests improvement(s)

2013-12-21 Thread James Harkins
James Harkins jamshark70 at gmail.com writes:

 FWIW, I agree with Kieren. If I saw a part with some multimeasure rests
 broken for no obvious reason, e.g.
 
 { \compressFullBarRests \mark \default R1*2 R1*2 \mark \default R1*2 }
 
 I would think the publisher was insane or incompetent. I'm surprised this is
 LP's default behavior.

Hm, no, that example looks OK because of the older-style rest format.

*This* looks nuts to me, and I don't recall every seeing anything like this
in any part that I played from in wind bands in high school and college...
why not just |--- 4 ---|?

{ \compressFullBarRests \override MultiMeasureRest #'expand-limit = #1 \mark
\default R1*2 R1*2 \mark \default R1*2 }

hjh


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


MIDI output: Possible to change PPQ?

2013-12-21 Thread James Harkins
I was just searching, without success, for a way to change the number of 
pulses-per-quarter in MIDI output. The default, 384, handles double 
divisions and triplets, but quintuplets are inexact. I would rather use 480 
for this particular file.


The section in the notation reference on the \midi mentions that it may 
include a \tempo statement, and \context blocks. Web searching wasn't 
helpful either, so I suppose I'm stuck with 384.


How hard would it be to add something like \midipulses 4 = 480? (Is it 
something I could figure out by poking around in the source code?)


hjh

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


Re: A thought on Windows Experience

2013-12-09 Thread James Harkins

On Monday, December 9, 2013 4:52:08 PM HKT, David Kastrup wrote:

James Harkins jamshar...@gmail.com writes:


Carl's two-column approach is pretty much what I had in
mind. Although, he suggests this would be only a slight improvement. I
think it could be more than that. Suppose we introduce the downloads
with a couple of paragraphs across the top:

~~
IMPORTANT: A complete working environment for LilyPond consists of two
components: LilyPond itself, and a music editor. If you have installed
only one of these, then you're not experiencing LilyPond's full power.


That's nonsensical.  You'll be experiencing LilyPond's full power if and
only if you have LilyPond itself installed.


tongue in cheek
That's splitting hairs, isn't it? If you install only an editor, you'll get 
0% of LilyPond's power. This is, indeed, less than full power. My wording 
underestimates the severity of failing to install LilyPond, but one would 
hope (of all possible details to omit) that this might go without saying.

/tongue in cheek


LilyPond is a _command_ _line_ application translating files written in
LilyPond's music description language [see text input] into complete
scores.  It does _not_ constitute a work environment.  What you will be
working with for entering your scores is either a text editor of your
choice, or a tool specialized for creating LilyPond files.


Sure, that sounds good.


Denemo: this is a GUI application for writing music scores that uses
LilyPond internally for creating its output.


I think this is too much to ask people to read on the download page. The 
download page should be as simple as possible and direct people toward the 
resources they need. Much more than that, and you get into TL;DR territory. 
Linking directly from the proposed editors section of the download page 
to the Easier editing page would be more appropriate, I think.


What we want users to get is the idea that they will need *some* editor, 
which the download page can do in a compact way. Providing a brain-dead 
easy can't miss it link to profiles of the various editors, and links 
directly to the Denemo and Frescobaldi homepages, would be enough.


hjh

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


Re: A thought on Windows Experience

2013-12-08 Thread James Harkins
Mark Stephen Mrotek carsonmark at ca.rr.com writes:

 The Lilypond website presents “Manuals” that when clicked displays a page
that starts with “Text Input … Read this first.”
 That hot link goes to a page that has a section titled “Easier editing
environments.” A hot link takes one to a list including Frescobaldi.
 I cannot conceive of anything more straight forward.

I can. New users are likely to start with a download. So, the downloads page
could include a section that explains what it means to download only
LilyPond. Here is the most straightforward place to point to
Frescobaldi/Denemo/etc.

OK, the download page has a link to Text input (which people are likely to
ignore, because they're on this page looking for files to download -- if it
doesn't look like an installer, it won't draw attention):

~~
Note: LilyPond is a text-based music engraver; it is more similar to a
programming language than a graphical score editing program. Before
downloading LilyPond, please read about our Text input.
~~

Downloads -- Text input -- Easier editing *if* they read the page carefully.

Sorry, but two or three hops is not the most straightforward path.

hjh


PS:

Thick Prince to Blackadder: I say, I can't think of anything I could do
with a woman that I couldn't do with you.

Blackadder: I cannot conceive.


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


RE: A thought on Windows Experience

2013-12-08 Thread James Harkins
On Dec 9, 2013 11:52 AM, Mark Stephen Mrotek carsonm...@ca.rr.com wrote:

 Mr. Harkins,

 Two or three hops are not too much for anyone that reads and follows
directions.

Then you have more faith than I in general usage patterns on the internet.
(As in, you still think people read and follow directions online.)

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


Re: A thought on Windows Experience

2013-12-08 Thread James Harkins

On Monday, December 9, 2013 12:02:31 PM HKT, James Harkins wrote:
On Dec 9, 2013 11:52 AM, Mark Stephen Mrotek carsonm...@ca.rr.com 

wrote:


Mr. Harkins,

Two or three hops are not too much for anyone that reads and follows

directions.

Then you have more faith than I in general usage patterns on the 

internet.

(As in, you still think people read and follow directions online.)


Hm, actually, I take that back.

The more relevant point is that it takes time to build up a mental map of 
information on a website or in a reference book. When you've already looked 
around lilypond.org for some time (once in a while over a period of a 
couple of years, say), it seems quite obvious to reach the easier editing 
page by way of two other clicks. If you're coming to the site for the first 
time, even in just those two clicks, there are plenty of places to go 
astray.


 - Download page (assuming someone actually wants to try it, this is
   where she will go next)
   - The eye goes immediately to the logos for operating
 systems. That's normal -- usually, when you're downloading
 software, you're focused on finding the file for your OS.
   - Before downloading LilyPond, please read about our Text input.
 Clear enough to follow -- but, there's an assumption here that
 the reader will have an inkling of how crucial this page
 is. Without that intuition, I think it's fairly easy to skip
 this link.

 - Text input page
   - Easier editing is one of some 10 links in the navigation
 bars. Unlikely to draw attention here.
   - Text input's focus is on the input format. It doesn't give a
 potential user a clear picture of the system architecture, in
 which the editor is one program and the compiler is another (not
 even in the Easier editing environments section of text). Even
 a careful reader couldn't be blamed for coming away from this
 without a clear understanding of how important it is to have a
 good editor for LP code.

My flippant response makes it sound like any reasonably intelligent person 
would find the right information fairly quickly, casting the problem in 
terms of user carelessness. That was a misstatement. My point is that 
reasonably intelligent, reasonably careful readers can visit lilypond.org 
and get from it no strong feeling for the importance of downloading a 
dedicated editor *in addition to* LilyPond itself.


I answer a lot of questions on the SuperCollider mailing list -- a LOT of 
questions. Often the answers involve See * in the documentation. At 
some points, I would get frustrated with this... Why can't people find 
this information? Aren't they reading the help pages? Then I realized, 
it's not that it all -- it's just that there are so many help pages that 
nobody can get intimately familiar with them quickly. I have something like 
a 10 year head start over new SC users in that regard. That's a valuable 
resource on my part, but not a failing on their part.


Anyway, back to the thread topic: If Windows users get scared off by the 
fact that double-clicking LilyPond.exe does not present a working 
environment, and if they expect that result from double-clicking 
LilyPond.exe, then they aren't getting sufficient information about the 
structure of the working environment from lilypond.org. A minor redesign of 
the Download page would help a lot with that.


Carl's two-column approach is pretty much what I had in mind. Although, he 
suggests this would be only a slight improvement. I think it could be more 
than that. Suppose we introduce the downloads with a couple of paragraphs 
across the top:


~~
IMPORTANT: A complete working environment for LilyPond consists of two 
components: LilyPond itself, and a music editor. If you have installed only 
one of these, then you're not experiencing LilyPond's full power.


NEW USERS: After installing LilyPond for your operating system, review the 
editors in the right-hand column and install one of them. Use the editor as 
your primary LilyPond interface.

~~

hjh

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


Re: LilyPond Website Work (was: A thought on Windows Experience)

2013-12-06 Thread James Harkins
A side comment, picking up on a comment in the Windows experience thread:

I hope the new site will avoid any hooks to Google analytics or other APIs. 
I'm behind the Great Firewall of China, and I see frequently how Google 
dependencies cause page loading times to balloon, while the browser waits for 
blocked connections to time out.

This is one of the rare times when I can complain about that problem *before* 
the problem gets built into yet another website :-)

hjh


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


Another time model (related to the usability thread)

2013-12-02 Thread James Harkins
Picking up on a comment of Kieren's, which I think doesn't need to hijack
David's financial support thread...

I find LilyPond's model of time to be the most inconvenient aspect of the
input format -- so inconvenient that it alone may be enough to drive people
away.

Time is represented exclusively in terms of Inter-Onset Intervals. This is
great for streams of events, but perfectly wretched for multiple streams
that must coordinate.

Example: Suppose I'm writing an orchestral piece with, oh, 40 staves. The
music changes meter every 2 or 3 bars. One extended passage is a duet
between two soloists; all other players rest.

If I (wisely) use a global variable to coordinate the meter changes, I have
to write the metrical structure in spacer rests. For the parts, I have to
a/ write scheme to convert spacers to full-bar rests, after extracting only
the segment of the global variable corresponding to the required bars, or
b/ replicate the metric structure in dozens of staves, simply replacing s
with R. (IIRC there's also some finagling involved in full-bar rests for
meters like 5/8.)

Now let's say that we don't live in a perfect world and I didn't write
everything in perfect form on paper before engraving. Then I decide that
one 2/4 bar should actually be 3/4. So now I have to change s2 to s2. in
the global variable AND I have to change some representation of time
(whether a literal R or a scheme function invocation) in EVERY part. These
are likely to be in separate include files, making it a time-consuming and
fragile operation (leaving aside the inevitable arithmetic errors that
result when counting beats over frequent meter changes).

This is in sharp contrast to Finale, where a full-bar rest is simply a bar
with nothing in it. Change the meter for the measure stack, and the
full-bar rests adjust automatically. And I haven't even mentioned inserting
or deleting bars, which is trivial in Finale.

In some ways, this is a worst-case scenario for LilyPond's input format.
It's also a completely realistic scenario for new-music composers working
with large ensembles, and LilyPond handles it embarrassingly poorly. It
drove me batty when I was working on a /trio/. I can't imagine dealing with
this in an orchestral score. (Unless there's some magic trick I don't know
about, which is entirely possible.)

It may be that LilyPond code is too low-level an abstraction for this use
case, and that a kind of meta-code is what's needed. I guess Denemo is a
step in that direction.

I don't have a concrete proposal, but in the context of recent discussions,
I thought this is worth pointing out as an area which a convert from Finale
or Sibelius is likely to run into and think, But that's... insane (likely
inserting various obscenities in place of the ellipsis).

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


Re: promoting LilyPond

2013-12-02 Thread James Harkins
David Kastrup dak at gnu.org writes:

 LilyPond's strengths are what it is able to do automatically:
 transpositions, partial partitures, catering to different page formats,
 fast adaption to different orchestras...  Your score is _malleable_.

LilyPond excels at *vertical* malleability, but it's nearly disastrous when it 
comes to horizontal malleability, as I recently opined in another thread. 
Changes to metrical structure, and adding/deleting bars, are difficult, if not 
excruciating. I would argue that these tasks are at least as common, if not 
more common, then the ones you mention here.

hjh


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


Re: Another time model (related to the usability thread)

2013-12-02 Thread James Harkins
Keith OHara k-ohara5a5a at oco.net writes:

 Of course specifying time in terms of durations is more convenient
 than specifying absolute time, or we would need to change every
 following note when we insert a few measures. 

Assuming that durations and absolute time are the only two options. I'm
not making that assumption. I don't know what the solution would look like
(yet), but I think any solution would involve a higher-level representation
than LilyPond code currently expresses well.

 It does come up often that we want to say 
   full-measure-rest until the next key-change
 or
   skip until the next rehearsal mark
 or sometimes even
   drone D until the double-bar
 If we had an easy way to enter a duration of until-X, then ability to
 place the next note X comes naturally.  Sometimes 'X' is the end of
 the entire piece.  Would that ease the difficulties mentioned above ?

It might, if such a function would conform the full-bar rests to the time
signatures (which may be in another parallel expression). This still depends
on some external marker. If it could handle something like ... until the
next rehearsal mark - 4 bars, that could help somewhat, but it wouldn't
help every case. Suppose I need to insert a bar, 2 bars before that
rehearsal mark. Then I have to change the function invocation to next
rehearsal mark - 5 bars. Error prone. Basically the only way is to do as
much as you can by hand, compile the PDF, and then track down the mistakes.

 LilyPond has a bunch functions of trying to help
   #(skip-of-lenngth #(mmrest-of-length
   \barNumberCheck\D
   \pushToTag 
 but none seem to do the job simply (and it took me quite a while to 
 remember what they were called closely enough in order to look them up
 in the manual.)
 
 LilyPond does some similar things for us already.  For example we
 usually enter rehearsal marks just once in some \global variable, that
 we include in  parallel  with the variables that contain the music,
 and LilyPond will split a R1*32 rest into segments to print those marks
 correctly in the parts. 

If you insert a bar, you'd have to change R1*32 to R1*33 by hand. Or, if you
change the 10th out of the 32 bars into a 3/4 measure, I believe you would
then have to change R1*32 to R1*9 R2. R1*22 -- highly error prone.

The skip- and mmrest-of-length functions would be slightly less error prone
for the second case, as (I suppose) you would just have to subtract one beat
from the given length. Still, there is no automatic way to change the
duration of a passage of music and have full-bar rests adjusts
automatically. (Obviously, voices that have events in them would need manual
intervention.)

~~

As I see it, the main problem is that there is no reliable way in LilyPond
to know the absolute time of any music expression. Within a music
expression, you know the time relative to the start of the expression. But
you can use the same music variable at 2, 3 or 10 different absolute time
points -- and you can make another score using the same variable (in an
include file) that places the variable at time points that are different
from the first score. Inserting a bar at m25 in one score, and inserting a
different bar at m33 of the second score, would make a complete hash out of
the variable's source code in the include file.

The level of complexity involved to ask Frescobaldi or another editor to do
this is nightmarish to consider. The editor would have to divide --
automatically -- variables into sub-variables, and somehow associate the
automatically-generated variables with one and only one score. I don't think
it's worth it (assuming it's even possible -- and I have serious doubts
about that).

That's why I said I think LilyPond's input structure might be too low-level
for this use case. The LilyPond language is clumsy at expressing this
macro-level of bar-and-meter structure -- clumsy, because it requires
redundancy in the manual input. And I'm not sure that it's worth messing
around with the LP language itself, because it expresses the information
required to engrave a score quite well. It doesn't express the information
required to /edit/ the score conveniently. If there were an alternate input
language that /does/ express editing information more straightforwardly,
this language could write LP code for engraving -- similar to the way that
FAUST (Functional AUdio STream language) expresses DSP algorithms at a high
level and writes C++ for them, or Emacs/org-mode exports its own markup
syntax to LaTeX, HTML, Markdown etc.

hjh


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


  1   2   3   >