Re: "correct" key for the Clarinet solo from the Mozart Clarinet Concerto, 2nd movement, tanscribed for Piano.

2024-06-27 Thread Adam M. Griggs
I would do it in its original key of D major. I'm a stickler for original
keys when possible.

On Fri, 28 Jun 2024 at 08:50, Kenneth Wolcott 
wrote:

> All she wants is the very short Clarinet solo, not the entire piece,
> transcribed for Piano, in the "correct key"; so I guess that would
> mean writing it in F?
>
> Here's the engraving that I made based on the 8notes transcription
> (attached).
>
> Thanks so much for your help!
>
> Ken
>
> On Thu, Jun 27, 2024 at 4:43 PM Knute Snortum  wrote:
> >
> >
> > On Thu, Jun 27, 2024 at 4:29 PM Kenneth Wolcott <
> kennethwolc...@gmail.com> wrote:
> >>
> >> Hi Knute;
> >>
> >>   Thank you!  (I already knew about IMSLP!) But the 2nd movement is
> >> not in A, I think think it is in D. Does that matter?
> >
> >
> > You're correct.  The second movement is in D.  I don't know if it
> matters -- do you want to change the entire concerto from A to C?  If so, I
> would put the second movement in F.   Up to you.
> >
> >
> > --
> > Knute Snortum
> >
> >
>


Re: Splitting divisi passages in staves

2024-03-26 Thread Adam M. Griggs
Hello, that's all possible.

The Staff.keepAliveInterfaces part is a bit more tricky but I grappled with
it on this mailing list a few months ago:

https://mail.gnu.org/archive/html/lilypond-user/2023-11/msg00063.html

https://mail.gnu.org/archive/html/lilypond-user/2023-11/msg00072.html

Your score and multi-stave parts are separate from one another and so the
layout of each can be handled with entirely different parameters.

\partCombine has a bit of a quirk you need to be aware of: it doesn't work
when invoked mid-expression. This applies to BOTH parts. So, if one part
has a stretch of multimeasure rests, say R1*14, and you want to change the
\partCombine behaviour part-way in, you'll have to split that into, for
example,

R1*6
[\partCombineApart]
R1*8

IMPORTANT:
You are still required to split that multimeasure rest even if you put the
\partCombineApart command in the other contributing part.

Take a look at those links, test things out, and good luck.


On Tue, 26 Mar 2024, 21:31 YTG 1234,  wrote:

> Hello everyone,
>
> I want to set divisi passages (for strings) in the part as separate
> staves, but in the score combined.
>
> I am aware of the \partCombine
> 
> functionality, but I'm not sure that it suits this use case. Precisely:
>
>1. Is there a way to set a minimum length of time for identical notes
>to be merged in unison? That is, only if I have more than one continuous
>bar of unison do I want to actually set the parts as one voice.
>2. Likewise, I don't want the automatic part-combiner to immediately
>say *"SOLO!"* when the other division has a short rest, but rather
>print the rest.
>3. In the parts, how can I set unison passages using only one stave? I
>could make the other empty, but I don't know how that affects the combined
>part.
>4. Not necessary, but could I set (even manually) simpler passages as
>single-staff polyphony in the part, but more complex ones in separate
>staves?
>
> I've taken a look at
> https://lilypond.org/doc/v2.25/Documentation/notation/hiding-staves, and
> it seems useful, but I don't know if it can merge unison properly. Perhaps
> I can use this method in the parts together with \partCombine in the
> shared stave, and in the score only use a shared stave. Would that work?
> Would the Staff.keepAliveInterfaces changes mess with the score in any
> way?
>
> But that still doesn't consider points 1-2 above.
>
> Thanks for any help!
>


Re: Auto-bar number after multi-measure rest

2023-11-20 Thread Adam M. Griggs
That's quite a snippet. Thank you. I'll try it out.

On Tue, 21 Nov 2023, 01:19 Pierre-Luc Gauthier, 
wrote:

> I've been using this snippet for quite a few years now :
>
> I'm not even sure to whom I stole that.
>
> HTH
>
> \version "2.25.8"
>
> %% define the custom context-property `printMmrRange'
> #(define (define-translator-property symbol type? description)
>(if (not (and (symbol? symbol)
>  (procedure? type?)
>  (string? description)))
>(ly:error "error in call of define-translator-property"))
>(if (not (equal? (object-property symbol 'translation-doc) #f))
>(ly:error (G_ "symbol ~S redefined") symbol))
>
>(set-object-property! symbol 'translation-type? type?)
>(set-object-property! symbol 'translation-doc description)
>symbol)
>
> #(for-each
>   (lambda (x)
> (apply define-translator-property x))
>   `((printMmrRange
>  ,boolean?
>  "Print range of a MultiMeasureRest")))
>
> %% define how to format `start' and `stop'
> %% for `MultiMeasureRestNumber' in the engraver
> %% TODO find a method to set the values for `translate-scaled'
> formatMMRNumber =
> #(define-scheme-function (start stop)(integer? integer?)
>#{
>  \markup
>  \center-column {
>#(number->string (- stop start))
>%% value found by try and error
>\translate-scaled #'(0 . -6.5)
>\with-dimensions #empty-interval #empty-interval
>\halign #CENTER
>\normal-text
>\fontsize #-2
>\line {
>  \concat {
>"("
>#(number->string start)
>".."
>#(number->string (1- stop))
>")"
>  }
>}
>  }
>#})
>
> #(define (mmr-range-engraver context)
>"Print the range of a @code{MultiMeasureRest}, if the context-property
> @code{printMmrRange} is set @code{#t}."
>(let ((print-mmr-nmbr-list '())
>  (mmr-bar-numbr-list '()))
>
>  `((acknowledgers
> (multi-measure-interface
>  .
>  ,(lambda (engraver grob source-engraver)
> (if (eq? (grob::name grob) 'MultiMeasureRestNumber)
> (set! print-mmr-nmbr-list
>   (cons
>(cons
> grob
> (ly:context-property context 'printMmrRange #f))
>print-mmr-nmbr-list)))
> (if (eq? (grob::name grob) 'MultiMeasureRest)
> (begin
>  (set! mmr-bar-numbr-list
>(cons
> (cons
>  grob
>  (ly:context-property context 'currentBarNumber))
> mmr-bar-numbr-list)))
>(finalize
> .
> ,(lambda (trans)
>(for-each
> (lambda (mmr mmr-nmbr)
>   (let ((measure-count (ly:grob-property (car mmr)
> 'measure-count)))
> (if (and (cdr mmr-nmbr) (> measure-count 1))
> (ly:grob-set-property! (car mmr-nmbr) 'text
>   (formatMMRNumber
>(cdr mmr)
>(+ measure-count (cdr mmr)))
> mmr-bar-numbr-list
> print-mmr-nmbr-list)
>(set! print-mmr-nmbr-list '())
>(set! mmr-bar-numbr-list '()))
>
> %%
> %% EXAMPLES
> %%
>
> \layout {
>   \context {
> \Voice
> \consists #mmr-range-engraver
> printMmrRange = ##t
>   }
> }
>
> music = \relative c' {
>   c4 d e f
> }
>
> flute = \new Staff \with {
>   instrumentName = "flute"
> }{
>   \music
>   \compressEmptyMeasures
>   R1*4
>   \music
>   R1*13
>   \music
> }
> oboe = \new Staff \with {
>   instrumentName = "oboe"
> }{
>   \music
>   \compressEmptyMeasures
>   \repeat unfold 4 {
> \music
>   }
>   \music
>   R1*13
>   \music
> }
>
> \score {
>   <<
> \flute
> \oboe
>   >>
>   \layout {}
> }
>
> \score {
>   \flute
>   \layout {}
> }
> \score {
>   \oboe
>   \layout {}
> }
>
> Le dim. 19 nov. 2023, à 23 h 15, Adam M. Griggs
>  a écrit :
> >
> > Hello again list,
> >
> > Is it possible to configure the bar number engraver so that in addition
> to its regular behaviour, whatever that may be defined as*, it will also
> print a bar number after a multi-measure rest?
> >
> > Thank you.
> >
> >
> > * I usually go with
> > \set Score.barNumberVisibility = #(modulo-bar-number-visible 4 1)
> > because I detest counting bars up from the start of the system.
> >
>
>
> --
> Pierre-Luc Gauthier
>


Auto-bar number after multi-measure rest

2023-11-19 Thread Adam M. Griggs
Hello again list,

Is it possible to configure the bar number engraver so that *in addition to*
its regular behaviour, whatever that may be defined as*, it will also print
a bar number after a multi-measure rest?

Thank you.


* I usually go with
\set Score.barNumberVisibility = #(modulo-bar-number-visible 4 1)
because I detest counting bars up from the start of the system.


SOLVED - Re: Divisi staves and the Keep_alive_together_engraver

2023-11-11 Thread Adam M. Griggs
SOLVED

Hello again,

Given that \unset Staff.keepAliveInterfaces would affect the entire
StaffGroup, instead of trying to break out from that limitation, I moved
the Keep_alive_together_engraver to those two internal, mini-StaffGroups,
along with the \partCombine staves.

The final score structure looks like this:

\version "2.25.9"
>
> \layout {
> short-indent = #20
> indent = #30
> \context {
> \Staff
> keepAliveInterfaces = #'()
> }
> }
>
> violinI = {
> \key c \minor
> \repeat unfold 26 { d'4 }
> \once \unset Staff.keepAliveInterfaces
> 2
> \repeat unfold 40 { d'4 }
> }
>
> violinII = {
> \key c \minor
> \repeat unfold 26 { g4 }
> 2
> \repeat unfold 40 { g4 }
> }
>
> celloI = {
> \clef "bass"
> \key c \minor
> \repeat unfold 56 { bes,4 }
> \once \unset Staff.keepAliveInterfaces
> 2
> \repeat unfold 10 { bes,4 }
> }
>
> celloII = {
> \clef "bass"
> \key c \minor
> \repeat unfold 56 { g,4 }
> 2
> \repeat unfold 10 { g,4 }
> }
>
> \new StaffGroup <<
> \new StaffGroup \with {
> systemStartDelimiter = #'SystemStartSquare
> \consists "Keep_alive_together_engraver"
> }
> <<
> \new Staff \with {
> instrumentName = "Violins"
> shortInstrumentName = "Vn I & II"
> %\override VerticalAxisGroup.remove-layer = 2
> } { <>^"remove-layer = 2" \transpose c c \partCombine \violinI
> \violinII }
> \new Staff \with {
> instrumentName = "Violin I"
> shortInstrumentName = "Vn I"
> \RemoveAllEmptyStaves
> %\override VerticalAxisGroup.remove-layer = 1
> } { <>^"remove-layer = 1" \transpose c c \violinI }
> \new Staff \with {
> instrumentName = "Violin II"
> shortInstrumentName = "Vn II"
> \RemoveAllEmptyStaves
> %\override VerticalAxisGroup.remove-layer = 1
> } { <>^"remove-layer = 1" \transpose c c \violinII }
> >>
> \new StaffGroup \with {
> systemStartDelimiter = #'SystemStartSquare
> \consists "Keep_alive_together_engraver"
> }
> <<
> \new Staff \with {
> instrumentName = "Violoncellos"
> shortInstrumentName = "Vc I & II"
> %\override VerticalAxisGroup.remove-layer = 2
> } { <>^"remove-layer = 2" \partCombine \celloI \celloII }
> \new Staff \with {
> instrumentName = "Violoncello I"
> shortInstrumentName = "Vc I"
> \RemoveAllEmptyStaves
> %\override VerticalAxisGroup.remove-layer = 1
>     } { <>^"remove-layer = 1" \celloI }
> \new Staff \with {
> instrumentName = "Violoncello II"
> shortInstrumentName = "Vc II"
> \RemoveAllEmptyStaves
> %\override VerticalAxisGroup.remove-layer = 1
> } { <>^"remove-layer = 1" \celloII }
> >>
> >>
>

 Uncomment the \override VerticalAxisGroup.remove-layer lines and then it
works perfectly.

I hope this solution will be helpful to others.


On Fri, 10 Nov 2023 at 14:43, Adam M. Griggs  wrote:

> Hello list,
>
> https://lilypond.org/doc/v2.25/Documentation/notation/hiding-staves
>
> Is there a way I can get more control over the workings of
> the Keep_alive_together_engraver for the purpose of engraving divisi staves?
>
> Please consider the following, based on the linked example in the
> documentation:
>
> \version "2.25.9"
>>
>> \layout {
>> short-indent = #20
>> indent = #30
>> \context {
>> \Staff
>> keepAliveInterfaces = #'()
>> }
>> }
>>
>> violinI = {
>> \key c \minor
>> \repeat unfold 30 { d'4 }
>> \unset Staff.keepAliveInterfaces
>> 2
>> \repeat unfold 48 { d'4 }
>> }
>>
>> violinII = {
>> \key c \minor
>> \repeat unfold 30 { g4 }
>> 2
>> \repeat unfold 28 { g4 }
>> <> ^\markup \center-column { "unwanted" "violin div. " }
>> \repeat unfold 20 { g4 }
>> }
>>
>> celloI = {
>> \clef "bass"
>> \key c \minor
>> \repeat unfold 60 { bes,4

Divisi staves and the Keep_alive_together_engraver

2023-11-09 Thread Adam M. Griggs
Hello list,

https://lilypond.org/doc/v2.25/Documentation/notation/hiding-staves

Is there a way I can get more control over the workings of
the Keep_alive_together_engraver for the purpose of engraving divisi staves?

Please consider the following, based on the linked example in the
documentation:

\version "2.25.9"
>
> \layout {
> short-indent = #20
> indent = #30
> \context {
> \Staff
> keepAliveInterfaces = #'()
> }
> }
>
> violinI = {
> \key c \minor
> \repeat unfold 30 { d'4 }
> \unset Staff.keepAliveInterfaces
> 2
> \repeat unfold 48 { d'4 }
> }
>
> violinII = {
> \key c \minor
> \repeat unfold 30 { g4 }
> 2
> \repeat unfold 28 { g4 }
> <> ^\markup \center-column { "unwanted" "violin div. " }
> \repeat unfold 20 { g4 }
> }
>
> celloI = {
> \clef "bass"
> \key c \minor
> \repeat unfold 60 { bes,4 }
> \once \unset Staff.keepAliveInterfaces
> 2
> \repeat unfold 18 { bes,4 }
> }
>
> celloII = {
> \clef "bass"
> \key c \minor
> \repeat unfold 28 { g,4 }
> <> ^\markup \center-column { "unwanted" "cello div. " }
> \repeat unfold 32 { g,4 }
> 2
> \repeat unfold 18 { g,4 }
> }
>
> \new StaffGroup \with { \consists Keep_alive_together_engraver } <<
> \new Staff \with {
> instrumentName = "Violins"
> shortInstrumentName = "Vn I & II"
> \override VerticalAxisGroup.remove-layer = 2
> } { \transpose c c \partCombine \violinI \violinII }
> \new StaffGroup \with {
> systemStartDelimiter = #'SystemStartSquare
> }
> <<
> \new Staff \with {
> instrumentName = "Violin I"
> shortInstrumentName = "Vn I"
> \RemoveAllEmptyStaves
> \override VerticalAxisGroup.remove-layer = 1
> } { \transpose c c \violinI }
> \new Staff \with {
> instrumentName = "Violin II"
> shortInstrumentName = "Vn II"
> \RemoveAllEmptyStaves
> \override VerticalAxisGroup.remove-layer = 1
> } { \transpose c c \violinII }
> >>
> \new Staff \with {
> instrumentName = "Violoncellos"
> shortInstrumentName = "Vc I & II"
> \override VerticalAxisGroup.remove-layer = 2
> } { \partCombine \celloI \celloII }
> \new StaffGroup \with {
> systemStartDelimiter = #'SystemStartSquare
> }
> <<
> \new Staff \with {
> instrumentName = "Violoncello I"
> shortInstrumentName = "Vc I"
> \RemoveAllEmptyStaves
> \override VerticalAxisGroup.remove-layer = 1
> } { \celloI }
> \new Staff \with {
> instrumentName = "Violoncello II"
> shortInstrumentName = "Vc II"
> \RemoveAllEmptyStaves
> \override VerticalAxisGroup.remove-layer = 1
> } { \celloII }
> >>
> >>
>

Is there a way I can divisi selected staves rather than the entire
StaffGroup?

Thank you.


Re: Automatic annotation of slide positions/fingerings for brass instruments.

2023-11-01 Thread Adam M. Griggs
Yeah, I came across one of those bass clef, Bb transposed parts a couple of
months ago. Hit the whole trombone section for a six.

I've spent a lot of time delving though pre-Baroque manuscripts, both
handwritten and printed. One upside of this is a working familiarity with
all manner of clefs. Lilypond has me covered!


On Wed, 1 Nov 2023, 05:30 Wols Lists,  wrote:

> On 31/10/2023 01:36, Adam M. Griggs wrote:
> > Your second recommendation is situational. I see you have a *.uk
> > email address. I'm familiar with the British brass band context. I get
> > it—almost everything is transposed for instruments pitched in Bb or Eb,
> > and in the entire ensemble, only bass trombones are notated at concert
> > pitch. At this time, however, I'm operating in a concert band
> > environment, working with both community and school bands. Our trombone,
> > tuba, even euphonium parts are all notated at concert pitch. You are
> > completely correct to suggest it, but it depends on the target audience.
>
> And something else :-) I've only met it once, to the best of my
> knowledge, and I think it was American, I've come across a piece - in
> bass clef - and also in Bb !!!
>
> That was a nightmare until I realised what was going on ! :-)
>
> There's always an exception to every rule !
>
> And over here, I think orchestras are always bass/tenor clef, brass
> bands are always Bb (or tenor clef, especially "brass and reed"), and
> concert/military/wind bands can be either.
>
> I'm lucky, I can read all three clefs, though not tenor very well,
> simply because I rarely see it.
>
> Cheers,
> Wol
>


Re: Automatic annotation of slide positions/fingerings for brass instruments.

2023-10-30 Thread Adam M. Griggs
Hi Wol,

Thank you for your feedback. You have a point in your first suggestion. My
pianist's visualisation of the pitch gamut overrode my trombone experience,
hence the grand staff. If I were to forego it in favour of a single staff,
I'd start with a tenor clef and switch to bass when appropriate. That's a
good idea and I think I'll go with it. Cheers.

Your second recommendation is situational. I see you have a *.uk
email address. I'm familiar with the British brass band context. I get
it—almost everything is transposed for instruments pitched in Bb or Eb, and
in the entire ensemble, only bass trombones are notated at concert pitch.
At this time, however, I'm operating in a concert band environment, working
with both community and school bands. Our trombone, tuba, even euphonium
parts are all notated at concert pitch. You are completely correct to
suggest it, but it depends on the target audience.

I'll definitely draft up a transposed version for when it's appropriate.

On Tue, 31 Oct 2023 at 03:26, Wols Lists  wrote:

> On 29/08/2023 15:35, Adam M. Griggs wrote:
> > Here's a little self-help reference I made a little while back. Maybe it
> > will illustrate your point about different positions for different
> > octaves more clearly than words can.
> >
> > Perhaps something in the tablature code can be adapted to this end.
> >
> Ouch!!!
>
> Just to point out, for those who don't play trombone, you will never (in
> my experience at least, I'm sure people will find counter examples) find
> trombone music with those positions in the treble clef.
>
> Like (I think) all brass instruments, the trombone in treble clef is a
> transposing instrument, and position 1 is a written C, not D.
>
> In this example you need to swap the treble clef for a tenor clef ...
>
> And then redo it for treble clef - your bass clef bottom Bb is written
> as treble clef middle C.
>
> Cheers,
> Wol
>
>
>


Re: \mergeDifferentlyHeadedOn made strange behavior in chord, or it's a bug?

2023-09-24 Thread Adam M. Griggs
Second time sending this, but this time via "Reply all" for the list.
Pardon the spam.

How's this?

\version "2.25.8"

\relative c'' {
  \mergeDifferentlyHeadedOn
  \once \omit Staff.TimeSignature
  <<
{2}
\\
{<
 \tweak duration-log #1
 c e>8[ g' g, g']}
  >>
}

On Mon, 25 Sept 2023 at 10:02, cc0_knight--- via LilyPond user discussion <
lilypond-user@gnu.org> wrote:

> Hi everyone!
> as the code mentioned below, when i try to engraving, the root note of the
> chord are not same as upper note. how to solve this problem?
>
> *the aim:*
>
> *problem:*
>
>
> *code:*
> \relative c'' {
>   \mergeDifferentlyHeadedOn
>   \time 4/8
>   <<
> {2}
> \\
> {8 [g'8]}
>   >>
> }
>
> best regards!
>


Re: Automatic annotation of slide positions/fingerings for brass instruments.

2023-08-29 Thread Adam M. Griggs
Here's a little self-help reference I made a little while back. Maybe it
will illustrate your point about different positions for different octaves
more clearly than words can.

Perhaps something in the tablature code can be adapted to this end.

On Mon, 28 Aug 2023, 21:44 samarutuk,  wrote:

> Sorry, I didn't really specify what exactly I was asking.
> But your answer was right, thanks!
> The final hurdle with your code now is that it doesn't really take pitch
> into account. C3 (c) has a different default slide position on the trombone
> than C4 (c'). So no matter if you notate notes absolute or relative in
> Lilypond, you would always have to use the absolute pitch (also for
> transposing instruments) as basis, so that the assigned slide positions or
> fingerings are correct.
> Here is my slightly modified code to better illustrate what I mean
> regarding pitch and different slide positions. Can Lilypond always use the
> exact pitch to assign slide positions/fingerings to a note?
>
> \version "2.24.2"
>
> #(use-modules (srfi srfi-2))
>
> autoFingerings =
> #(define-music-function (spec music) (ly:music? ly:music?)
>(define (get-fingering ev)
>  (find (music-type-predicate 'fingering-event)
>(ly:music-property ev 'articulations)))
>(define (pitch-key p)
>  (cons (ly:pitch-notename p)
>(ly:pitch-alteration p)))
>(let ((spec-alist
>   (filter-map
>(lambda (ev)
>  (and-let* ((pitch (ly:music-property ev 'pitch #f))
> (fingering (get-fingering ev)))
>(cons (pitch-key pitch)
>  fingering)))
>(extract-typed-music spec 'note-event
>  (for-each
>   (lambda (ev)
> (and-let* ((pitch (ly:music-property ev 'pitch #f))
>((not (get-fingering ev)))
>(fingering (assoc-ref spec-alist (pitch-key pitch
>   (set! (ly:music-property ev 'articulations)
> (cons (music-clone fingering)
>   (ly:music-property ev 'articulations)
>   (extract-typed-music music 'note-event))
>  music))
>
> spec = { bes-1 f-1 fis-5 c,-"q6" e-2 c-6 d-4 c'-3 eis'-\finger \markup
> \normal-text "foo" }
>
> \autoFingerings \spec {\clef "bass" bes,, c, e fis d c c' eis'' }
>
> Thanks in advance
> Andreas
>
> Am 28.08.2023 um 11:59 schrieb Jean Abou Samra:
>
> Hi,
>
> I'm not sure I understand your problem. If I infer your goal from the
> ChatGPT output, you're trying to add a fingering to each note based on its
> pitch. Is that right?
>
> \version "2.24.2"
>
> #(use-modules (srfi srfi-2))
>
> autoFingerings =
> #(define-music-function (spec music) (ly:music? ly:music?)
>(define (get-fingering ev)
>  (find (music-type-predicate 'fingering-event)
>(ly:music-property ev 'articulations)))
>(define (pitch-key p)
>  (cons (ly:pitch-notename p)
>(ly:pitch-alteration p)))
>(let ((spec-alist
>   (filter-map
>(lambda (ev)
>  (and-let* ((pitch (ly:music-property ev 'pitch #f))
> (fingering (get-fingering ev)))
>(cons (pitch-key pitch)
>  fingering)))
>(extract-typed-music spec 'note-event
>  (for-each
>   (lambda (ev)
> (and-let* ((pitch (ly:music-property ev 'pitch #f))
>((not (get-fingering ev)))
>(fingering (assoc-ref spec-alist (pitch-key pitch
>   (set! (ly:music-property ev 'articulations)
> (cons (music-clone fingering)
>   (ly:music-property ev 'articulations)
>   (extract-typed-music music 'note-event))
>  music))
>
>
>
> spec = { c'-1 d'-2 eis'-\finger \markup \normal-text "foo" }
>
> \autoFingerings \spec { d c eis'' }
>
> I can't program and have now tried to put together a suitable function
> with ChatGPT. Unfortunately this does not work. Here is the code ChatGPT
> came up with, maybe it is complete nonsense:
>
> As with typical ChatGPT output, it looks interesting on the surface but
> none of the details makes any sense.
>
> Best,
>
> Jean
>
>
>


trombone_positions.pdf
Description: Adobe PDF document


Endnotes vis-à-vis footnotes

2023-02-13 Thread Adam M. Griggs
Werner's message here on footnote spacing has reminded me of something I
sometimes wish I had in LilyPond: endnotes.

Whereas footnotes are printed at the base of each page, endnotes would
appear in a block at the end of the score by default, with \pageBreak
optional. Also, their appearance could be delayed so as to accommodate
multi-movement works or even whole volumes without interruption.

There could be dozens or even hundreds of endnotes and so, like the ToC,
the endnote block would spill over to subsequent pages gracefully.

I see Urs commented on the possibility in relation to ScholarLY here:
https://lists.gnu.org/archive/html/lilypond-user/2015-11/msg00229.html

Is there any current interest from the LilyPond userbase?


Re: rall. autocalculation function in Scheme

2023-02-06 Thread Adam M. Griggs
Thank you David. Your code is well above my level for now, but it'll be
great study material. Is it for 2.25.x? I haven't quite got it working yet,
but that's probably my fault.

On Mon, 6 Feb 2023 at 23:24, David Kastrup  wrote:

> "Adam M. Griggs"  writes:
>
> > Hello list,
> >
> > I'm trying to create a Scheme function that will automatically calculate
> > and enact a *rall*. as a sequence of \tempo assignments. I am aware of
> the
> > basic *rall*., *rit*., and *accel*. functions in "articulate.ly" but I
> > wanted something I have a little more control over.
>
> What I am using is
>
> tempoChange =
> #(define-music-function (interval endscale thenscale music)
>(ly:duration? scale? (scale? 1) ly:music?)
>   "Make a gradual tempo change over @var{music}, essentially changing
> speed after
> every duration of @var{interval}, approaching a factor of speed of
> @var{endscale}
> compared to the start.  Afterwards, tempo is switched to @var{thenscale}
> of the
> original speed (default 1).  If @var{thenscale} is 0, the speed reached at
> the
> end is just maintained and can be overriden with an explicit @samp{\\tempo}
> command if required."
>(define (scaletempo oldscale newscale)
>  (make-apply-context
>   (lambda (ctx)
> (set! (ly:context-property ctx 'tempoWholesPerMinute)
>  (ly:moment-mul (ly:context-property ctx 'tempoWholesPerMinute)
>  (ly:make-moment (/ newscale oldscale)))
>
>(let* ((muslen (ly:moment-main (ly:music-length music)))
>   (intlen (ly:moment-main (ly:duration-length interval)))
>   (steps (/ muslen intlen))
>   (endfactor (scale->factor endscale))
>   (thenfactor (scale->factor thenscale)))
>  (make-simultaneous-music
>   (list music
> (context-spec-music
>  (make-sequential-music
>   (let loop ((rsteplst (iota (1+ steps) endfactor (/ (- 1
> endfactor) steps)))
>  (res (if (positive? thenfactor)
>   (list (scaletempo endfactor thenfactor))
>   (list
> (if (null? (cdr rsteplst))
> res
> (loop (cdr rsteplst)
>   (cons* (scaletempo (cadr rsteplst) (car
> rsteplst))
>  (make-skip-music (ly:make-duration 0 0
> intlen))
>  res)
>  'Score)
>
>
> Here are some usages in a time track:
>
>   \tag layout {
> \tempo "rall"
> \skip 1*2 |
>   }
>   \tag midi {
> \tempoChange 4 2/3 {
>   \skip 1.
> }
> \tag countin \skip 2
>   }
>
>   \tag layout {
> \tempo "rit."
> \skip 2 |
> \skip 1*2 |
>   }
>   \tag midi {
> \tempoChange 8 ##e0.5 0 {
>   \skip 2 |
>   \skip 1*2 |
> }
>   }
>
> Note that ##e0.5 is the same as #1/2 or #5/10 , namely an exact
> rational, but written with decimal notation.  That can be handy for
> fine-tuning since incrementally tweaking decimal notation tends to be
> more hands-on than tweaking fraction notation.
>
>
> --
> David Kastrup
>


Re: rall. autocalculation function in Scheme

2023-02-06 Thread Adam M. Griggs
Thank you Valentin. This is great. Works perfectly and also instructive for
a relative newbie to Scheme.

On Mon, 6 Feb 2023 at 16:49, Valentin Petzel  wrote:

> Hello Adam,
>
> Using #{ ... #} does not magically register the music or something. A
> scheme
> expression such as (begin ...) will evaluate to the last statement. So
>
> (begin #{ ... #} (enact-tempo-decrease ...))
>
> will simply evaluate to the second part, thus always to #{#}.
>
> What you do in fact need to do is to gather the music created thus into a
> list, most cleanly by using a separate recursion function (so
> (define-music-
> function (...) (...) (define (rec steps) ...) #{ #@(rec steps) #} )) or by
> using
>
> (make-music 'SequentialMusic 'elements (cons #{ ... #} (ly:music-property
> (enact-tempo-decrease ...) 'elements))
>
> But as I already said in my previous response you can do this easier using
> map.
>
> With regards to that version: To handle negative values simply add a
> filter
> call:
>
> myRall =
> #(define-music-function
>   (steps duration)
>   (integer? ly:duration?)
>   (let* ((tempi-list (iota steps 100 -1))
>  (tempi-list (filter (lambda (x) (> x 0)) tempi-list))
>  (tempi-mus (map (lambda (t) #{ \tempo 4 = $t s$duration #}) tempi-
> list)))
> #{ #@tempi-mus #}))
>
> Cheers,
> Valentin
>
> Am Montag, 6. Februar 2023, 07:50:02 CET schrieb Adam M. Griggs:
> > I've given it some more work. The \repeat construct is gone, and the
> > displayed messages indicate that my recursion is working correctly.
> >
> > Metronome marks are not yet printed, however. What am I missing? Also,
> I'm
> > getting a wrong type argument error message when I try to (let*
> > (current-tempo (car tempo-list))). I feel like I'm almost there though.
> >
> > Code attached, and thanks again.
> >
> > On Mon, 6 Feb 2023 at 14:19, Adam M. Griggs 
> wrote:
> > > Hello list,
> > >
> > > I'm trying to create a Scheme function that will automatically
> calculate
> > > and enact a *rall*. as a sequence of \tempo assignments. I am aware of
> > > the basic *rall*., *rit*., and *accel*. functions in "articulate.ly"
> but
> > > I wanted something I have a little more control over.
> > >
> > > I need help, and I don't know if it's just in the implementation
> details
> > > or my overall approach to the problem.
> > >
> > > For now, it's just a *rall*. The algorithm describing the rate of
> > > slowdown is extremely basic but that can be adjusted later.
> > >
> > > My approach so far has been to create a list of values starting at 100
> > > (let's assume percentages of the initial tempo and work that in later)
> and
> > > then have them trickle down. Using #(display ...), I see this is
> working
> > > just fine.
> > >
> > > Clearly my \repeat call isn't appropriate here and I should replace it
> > > with a recursive function call containing just its body (the {\tempo 4
> =
> > > ... \skip ...} part). And I'm sure I'm not really going to get anywhere
> > > with #@tempi-list but I hope it communicates what I'm aiming for. I've
> > > been
> > > playing with this for a few hours but I haven't been able to get the
> parts
> > > to mesh together. I could keep stabbing at it, or ask for help here.
> > >
> > > Code attached, and thank you!
>
>


Re: rall. autocalculation function in Scheme

2023-02-05 Thread Adam M. Griggs
I've given it some more work. The \repeat construct is gone, and the
displayed messages indicate that my recursion is working correctly.

Metronome marks are not yet printed, however. What am I missing? Also, I'm
getting a wrong type argument error message when I try to (let*
(current-tempo (car tempo-list))). I feel like I'm almost there though.

Code attached, and thanks again.

On Mon, 6 Feb 2023 at 14:19, Adam M. Griggs  wrote:

> Hello list,
>
> I'm trying to create a Scheme function that will automatically calculate
> and enact a *rall*. as a sequence of \tempo assignments. I am aware of
> the basic *rall*., *rit*., and *accel*. functions in "articulate.ly" but
> I wanted something I have a little more control over.
>
> I need help, and I don't know if it's just in the implementation details
> or my overall approach to the problem.
>
> For now, it's just a *rall*. The algorithm describing the rate of
> slowdown is extremely basic but that can be adjusted later.
>
> My approach so far has been to create a list of values starting at 100
> (let's assume percentages of the initial tempo and work that in later) and
> then have them trickle down. Using #(display ...), I see this is working
> just fine.
>
> Clearly my \repeat call isn't appropriate here and I should replace it
> with a recursive function call containing just its body (the {\tempo 4 =
> ... \skip ...} part). And I'm sure I'm not really going to get anywhere
> with #@tempi-list but I hope it communicates what I'm aiming for. I've been
> playing with this for a few hours but I haven't been able to get the parts
> to mesh together. I could keep stabbing at it, or ask for help here.
>
> Code attached, and thank you!
>


myRall.ily
Description: Binary data


rall. autocalculation function in Scheme

2023-02-05 Thread Adam M. Griggs
Hello list,

I'm trying to create a Scheme function that will automatically calculate
and enact a *rall*. as a sequence of \tempo assignments. I am aware of the
basic *rall*., *rit*., and *accel*. functions in "articulate.ly" but I
wanted something I have a little more control over.

I need help, and I don't know if it's just in the implementation details or
my overall approach to the problem.

For now, it's just a *rall*. The algorithm describing the rate of slowdown
is extremely basic but that can be adjusted later.

My approach so far has been to create a list of values starting at 100
(let's assume percentages of the initial tempo and work that in later) and
then have them trickle down. Using #(display ...), I see this is working
just fine.

Clearly my \repeat call isn't appropriate here and I should replace it with
a recursive function call containing just its body (the {\tempo 4 = ...
\skip ...} part). And I'm sure I'm not really going to get anywhere with
#@tempi-list but I hope it communicates what I'm aiming for. I've been
playing with this for a few hours but I haven't been able to get the parts
to mesh together. I could keep stabbing at it, or ask for help here.

Code attached, and thank you!


myRall.ily
Description: Binary data


Re: \sustainOff on \alternative

2023-01-06 Thread Adam M. Griggs
Hello, let me quickly ask:

Would that include handling of ties in MIDI output?

On Fri, 6 Jan 2023, 20:24 Lukas-Fabian Moser,  wrote:

> Hi,
> Am 06.01.23 um 07:54 schrieb cc0_knight--- via LilyPond user discussion:
>
> Hi Everyone, Sorry for my english.
> Skip the first pedal stop(Because it's off-topic), when I write like this:
>
> \repeat volta 2 {
>\sustainOn
> }
> \alternative {
>   {  \sustainOff }
>   {  \sustainOff }
> }
>
> (Please always give short and compilable code examples!)
>
> Perhaps something like:
>
> \version "2.24.0"
>
> {
>   \repeat volta 2 \relative {
> r4 e'\sustainOn d c
>   }
>   \alternative {
> {
>   \after 4 \sustainOff b2 r
> }
> {
>   \once\omit Staff.SustainPedal
>   <>\sustainOn
>   \after 4 \sustainOff b2 r
> }
>   }
> }
>
> Of course, in a perfect world, spanners like the sustain pedal would be
> "reset" to their pre-alternative state at the start of each alternative.
> IIRC the world of LilyPond's alternatives handling has gotten much closer
> to perfection thanks to Dan's work over the last few months, but this does
> not seem to have been part of it.
>
> Lukas
>


Three-column Table of Contents

2022-09-05 Thread Adam M. Griggs
Hello list,

Please consider the following:

\version "2.23.12"
>
> \markup
> \center-column
> {
> \huge
> \column {
> \fill-line { "Table of Contents" }
> \null
> }
> \overlay
> {
> \center-column
> {
> \override #'(line-width . 50) \fill-with-pattern #1 #RIGHT . "" ""
> \override #'(line-width . 50) \fill-with-pattern #1 #RIGHT . "" ""
> \override #'(line-width . 50) \fill-with-pattern #1 #RIGHT . "" ""
> \override #'(line-width . 50) \fill-with-pattern #1 #RIGHT . "" ""
> \override #'(line-width . 50) \fill-with-pattern #1 #RIGHT . "" ""
> ". . ."
> ". . ."
> \override #'(line-width . 50) \fill-with-pattern #1 #RIGHT . "" ""
> }
> \line
> {
> \column
> \override #'(thickness . 2)
> \whiteout
> { "Piece I" "Piece I" "Piece II" "Piece II" "Piece II" \null \null "Piece
> XXVI" }
> \hspace #2
> \column
> \override #'(thickness . 2)
> \whiteout
> {
> "SSAA" "SATB" "SSAA" "SATB" "TTBB" \null \null "SSAATTBB"
> }
> \hspace #18
> \right-column
> \override #'(thickness . 2)
> \whiteout
> {
> "2" "8" "14" "22" "30" \null \null "345"
> }
> }
> }
> }


Given this rough mockup of the wanted end result, is it possible for me to
automatically generate such a ToC?

Thank you.


Re: Alternative to Frescobaldi

2022-09-04 Thread Adam M. Griggs
How about Elysium?

http://elysium.thsoft.hu/getting-started

I have never tried it, but it is suggested on the Lilypond website:

http://lilypond.org/easier-editing.html

On Sun, 4 Sep 2022, 17:52 Thomas Morley,  wrote:

> Am So., 4. Sept. 2022 um 08:51 Uhr schrieb Silvain Dupertuis
> :
> >
> > As far as editing music sheet is concerned,Io remember having been using
> jEdit, a text editor written in Java, with a Lilypond extension displaying
> the PDF with links to the Lilypond code like Frescobaldi does it.
> >
> > That was a long time ago, maybe before I even had Frescobaldi, but it
> would be worthwhile exploring...
> >
> > Silvain Dupertuis
>
> I'm still using jEdit, though the LilyPondTool plugin is not
> maintained for a decade:
>
> http://lilypondtool.blogspot.com/2012/09/lilypondtool-2149-release-last-for.html
>
> Personally I don't care about it, though therefore I'd not recommend
> jEdit for starters.
>
> Cheers,
>   Harm
>
>


Re: Multimeasure rest shape and polymeter

2022-07-05 Thread Adam M. Griggs
Thanks Jean. Got them working the way I want.

Cheers!

On Mon, 4 Jul 2022, 22:43 Jean Abou Samra,  wrote:

>
>
> Le 04/07/2022 à 06:20, Adam M. Griggs a écrit :
> > Hello list,
> >
> > \enablePolymeter seems to be messing with multimeasure rests. In
> > particular, MM rests with the shape of a breve rest are being rendered
> > as semibreve MM rests. Please see the following code:
> >
> > \version "2.23.10"
> >
> > music =
> > {
> > \time 2/2
> > R1*3
> > \time 3/1
> > R\breve.*2
> > \time 2/2
> > R1*2
> > }
> >
> > \score
> > {
> > \new Staff
> > <<
> > { \skip 1*3 <> ^ "as expected" }
> > \music
> > \layout {}
> > }
> >
> > \score
> > {
> > \new Staff
> > <<
> > <> ^ "\enablePolymeter"
> > { \skip 1*3 <> ^ "semibreve rests" }
> > \music
> > \layout { \enablePolymeter }
> > }
> >
> > Is there a workaround for this?
> >
> > Thank you.
>
>
> I agree that it's a bug. I've filed
>
> https://gitlab.com/lilypond/lilypond/-/issues/6378
>
> See there for a possible workaround.
>
> Best,
> Jean
>
>


Multimeasure rest shape and polymeter

2022-07-03 Thread Adam M. Griggs
Hello list,

\enablePolymeter seems to be messing with multimeasure rests. In
particular, MM rests with the shape of a breve rest are being rendered
as semibreve MM rests. Please see the following code:

\version "2.23.10"

music =
{
\time 2/2
R1*3
\time 3/1
R\breve.*2
\time 2/2
R1*2
}

\score
{
\new Staff
<<
{ \skip 1*3 <> ^ "as expected" }
\music
>>
\layout {}
}

\score
{
\new Staff
<<
<> ^ "\enablePolymeter"
{ \skip 1*3 <> ^ "semibreve rests" }
\music
>>
\layout { \enablePolymeter }
}

Is there a workaround for this?

Thank you.



Re: MIDI and fermata

2022-06-30 Thread Adam M. Griggs
Sorry, \tag, with a backslash of course.

On Fri, 1 Jul 2022, 13:22 Adam M. Griggs,  wrote:

> I use /tag #'midi { *tempo changes* }.
>
> If you don't want to use tags, you can /omit Score.MetronomeMark to keep
> your score tidy.
>
> On Fri, 1 Jul 2022, 08:56 Mark Probert,  wrote:
>
>> Hi, all.
>>
>> I wondering how people deal with adding a fermata into MIDI output. The
>> most obvious way I can think of is using a cadenza to add some space, but
>> is there a better way?
>>
>> Thanks
>>
>> --
>> -mark.
>>
>


Re: MIDI and fermata

2022-06-30 Thread Adam M. Griggs
I use /tag #'midi { *tempo changes* }.

If you don't want to use tags, you can /omit Score.MetronomeMark to keep
your score tidy.

On Fri, 1 Jul 2022, 08:56 Mark Probert,  wrote:

> Hi, all.
>
> I wondering how people deal with adding a fermata into MIDI output. The
> most obvious way I can think of is using a cadenza to add some space, but
> is there a better way?
>
> Thanks
>
> --
> -mark.
>


Re: L-R reversed mensural flag

2022-06-15 Thread Adam M. Griggs
Cheers Andrew!

Without divulging any of your work's trade secrets, how does that work?
Just Ghostscript?

On Wed, 15 Jun 2022, 13:04 Andrew Bernard, 
wrote:

> I've been away from LilyPond for a few years but my work uses custom
> flags which you can set. You can describe any path and make it for the
> flag. I don't have my example on hand just now, but fear not, this can
> easily be achieved. I'm sure the others will give more detail.
>
> Andrew
>
>
> Adam M. Griggs wrote on 15/06/2022 1:53 PM:
> > Just a quick request today, if I may. What I'd like is a stem-down
> > fusa (mensural-style quaver or eighth-note) with its flag extending to
> > the right instead of the left. A mirror image of the regular engraving.
>
>
>


Re: L-R reversed mensural flag

2022-06-15 Thread Adam M. Griggs
Wonderful! Thank you!

On Wed, 15 Jun 2022, 14:34 Jean Abou Samra,  wrote:

>
>
> Le 15/06/2022 à 05:53, Adam M. Griggs a écrit :
> > Hello list,
> >
> > Just a quick request today, if I may. What I'd like is a stem-down
> > fusa (mensural-style quaver or eighth-note) with its flag extending to
> > the right instead of the left. A mirror image of the regular engraving.
> >
> > I can get close by overriding the flag back into standard style but I
> > want to retain the mensural shape, so that isn't ideal.
> >
> > Thank you!
>
>
> Something like this?
>
> \version "2.22.2"
>
> \new MensuralStaff {
>\override Flag.stencil =
>  #(grob-transformer
>'stencil
>(lambda (grob original)
>  (ly:stencil-scale original -1 1)))
>c''8
> }
>
>
> Best,
> Jean
>
>


L-R reversed mensural flag

2022-06-14 Thread Adam M. Griggs
Hello list,

Just a quick request today, if I may. What I'd like is a stem-down fusa
(mensural-style quaver or eighth-note) with its flag extending to the right
instead of the left. A mirror image of the regular engraving.

I can get close by overriding the flag back into standard style but I want
to retain the mensural shape, so that isn't ideal.

Thank you!


Re: #(layout-set-staff-size) seems to mess with vertical positioning for certain rests

2022-06-11 Thread Adam M. Griggs
Hi Jean,

Understood. Thanks for getting back to me. Glad to see it's a known issue,
even if not a priority right now.

Cheers!

On Sat, 11 Jun 2022, 21:40 Jean Abou Samra,  wrote:

>
>
> Le 09/06/2022 à 14:11, Adam M. Griggs a écrit :
> > For future search findability, I'm correcting the email subject heading.
> >
> > Sorry for the oversight.
>
>
> Sadly, layout-set-staff-size is known to be quite buggy.
>
> https://gitlab.com/lilypond/lilypond/-/issues/6054
>
> (I don't have the time to dig deeper for now, sorry.)
>
> Regards,
> Jean
>
>


#(layout-set-staff-size) seems to mess with vertical positioning for certain rests

2022-06-09 Thread Adam M. Griggs
For future search findability, I'm correcting the email subject heading.

Sorry for the oversight.

On Thu, 9 Jun 2022, 14:46 Adam M. Griggs,  wrote:

> Hello list,
>
> #(layout-set-staff-size) seems to mess with vertical positioning for
> r\longa, r\breve and multimeasure rests. Please see the attached
> not-quite-minimal code sample.
>
> If I adjust the score (book) size via #(set-global-staff-size)
> instead, everything works as expected.
>
> In case I'm missing something obvious, I just wanted to check in here
> before submitting this as a bug.
>
> 
>
> On a related note, the two different methods of changing the staff
> size yield different horizontal spacing. How can I avoid this? I'm
> preparing a single book with scores ranging from six parts to over
> twenty, so I need to alter this on the score level and the results
> aren't ideal.
>


layout-set-staff-size seems to mess with \override Rest.staff-position

2022-06-08 Thread Adam M. Griggs
Hello list,

#(layout-set-staff-size) seems to mess with vertical positioning for
r\longa, r\breve and multimeasure rests. Please see the attached
not-quite-minimal code sample.

If I adjust the score (book) size via #(set-global-staff-size)
instead, everything works as expected.

In case I'm missing something obvious, I just wanted to check in here
before submitting this as a bug.



On a related note, the two different methods of changing the staff
size yield different horizontal spacing. How can I avoid this? I'm
preparing a single book with scores ranging from six parts to over
twenty, so I need to alter this on the score level and the results
aren't ideal.
\version "2.23.9"

%#(set-global-staff-size 12)

notes = \relative d' { \time 2/2 R1*7 r2 d2 f4 e d2 }
incipitNotes =
\relative c'
{
	\time 2/2
	r\longa
	\override Rest.staff-position = #-2
	r\breve
	\override Rest.staff-position = #-4
	r1
	r2
	d2 f4 e d2
}

\score {
	\new Staff \with { instrumentName = "" }
	{
	\incipit { \cadenzaOn \incipitNotes }
	\compressMMRests \notes
	}
	\layout {
		#(layout-set-staff-size 12)
		indent = #44
		incipit-width = #40
	}
}


Re: Openlilylib

2022-05-27 Thread Adam M. Griggs
Welcome back, and thank you.

Having read your account of your situation, and knowing nothing else about
your circumstances or condition, I hope we'll have you around with us for a
good, long while yet.


On Fri, 27 May 2022, 17:27 Andrew Bernard, 
wrote:

> Hello All,
>
> Having had to abandon the Openlilylib (OLL) work I took over from Urs
> Liska, for various reasons, in the meantime I went over to Dorico
> instead of Lilypond for my work. Having spent a lot of money on Dorico
> (AUD$800+) and given it my best shot for more than year, it really falls
> short for the modernist work that I do, dogmatically follows the Gould
> rule book and does not let you override most of that (it's what software
> people call an opinionated program), crashes often with the latest
> release and they cant solve it and just remain silent, and worse, the
> forum which I initially thought helpful is turning out to be quite toxic
> and I get a lot of personal abuse. along with deprecating comments about
> the music I work on. Consequently I have binned Dorico as of yesterday
> and I am coming back to lilypond.
>
> The upshot of that is that I suppose I should revive the OLL work. I'll
> recreate the dedicated server I set up, recreate the Discourse forum for
> discussion, and work on the git repository, then people can
> collaboratively work together again and I can take pull requests and so on.
>
> I stalled initially a couple of years ago when I decided to totally
> refactor the OLL github repostory, but now I think if we open it up
> again as is and I work on that on the background which would be useful.
>
> I'll pay for the server resources out of my own pocket, but provide a
> Paypal link for donations for running costs (server, domain name, etc).
>
> Andrew
>
>
>
>


Re: optical recognition for input

2022-01-17 Thread Adam M. Griggs
I haven't tried building from development branch, but from experience, the
stable branch only works with JRE 11, not "11 or greater."

I use MX Linux and JRE 11 is readily available. Not sure about other
operating systems.

On Tue, 18 Jan 2022, 02:56 James B. Wilkinson,  wrote:

>
>
> > On Jan 15, 2022, at 4:56 AM, Adam M. Griggs 
> wrote:
> >
> > Try Audiveris.
>
> I downloaded the stuff from git but had failure at the build step. I
> looked for a mail group like this one for Audiveris but didn't find
> anything. Can somebody point me to a source of help building Audiveris?
>
> thanks
>
>


Re: optical recognition for input

2022-01-15 Thread Adam M. Griggs
Try Audiveris.

https://github.com/Audiveris/audiveris

The output MusicXML will require cleanup and proofreading. I import it into
MuseScore for an initial editing pass, then export again to MusicXML. This
new file goes into Frescobaldi.

On Sat, 15 Jan 2022, 17:23 James B. Wilkinson,  wrote:

> I'm looking at getting an OCR program to recognize scans in pdf files and
> create MusicXML files representing the contents. I would then use the
> musicxml2ly or perhaps some other script to translate the MusicXML to
> Lilypond files, I imagine that some of you are already doing this, and I
> wonder whether you could give me or point me to some tips as to what
> software to use and how to go about it.
>
> Using MIDI files as the intermediate representation may also be a
> possibility. I'd appreciate hearing about that, too.
>
>
> thanks
>


Re: Dotted \markup \note - tweaking the dot position

2021-12-11 Thread Adam M. Griggs
Thanks a lot!

The /ezscore solution seems a very heavy-handed way to construct a time
signature, but it works. I appreciate having a simpler option though.


On Sat, 11 Dec 2021, 19:31 Lukas-Fabian Moser,  wrote:

> Hi,
> >
> > if https://gitlab.com/lilypond/lilypond/-/merge_requests/1052 gets
> > merged, it will be possible to do:
> >
> > \version "2.23.6"
> >
> > {
> >   \once \override Timing.TimeSignature.stencil =
> >   #(lambda (grob)
> >  (grob-interpret-markup grob
> >   #{
> > \markup
> > \override #'(baseline-skip . 1)
> > \override #`(dots-direction . ,UP)
> > \center-column
> > {
> >   \number 3
> >   \with-dimensions-from \note { 4 } #DOWN
> >   \note { 4. } #DOWN
> > }
> >   #}))
> >   \time 9/8
> >   \repeat unfold 9 c'8
> > }
> >
> The commit has now been merged; hence, the code will (probably) work as
> promised when 2.23.6 is released.
>
> Lukas
>
>


Re: Dotted \markup \note - tweaking the dot position

2021-12-05 Thread Adam M. Griggs
Ew, pardon the mis-titled Ockeghem mass.

It is of course his Missa prolationum.

On Mon, 6 Dec 2021 at 10:31, Adam M. Griggs  wrote:
>
> Thank you Leo!
>
> Having worked through it, I'd like to show you where I was going with this.
>
> Cheers!
>
> On Fri, 3 Dec 2021 at 23:05, Leo Correia de Verdier
>  wrote:
> >
> > Hi Adam!
> >
> > I don’t think you can use \note or \note-by-number any longer when you need 
> > finer control over the output. This snippet can serve as starting point for 
> > more advanced notes and music expressions in markup.
> > https://lsr.di.unimi.it/LSR/Item?id=1029
> >
> > HTH
> > /Leo
> >
> >
> >
> > > 3 dec. 2021 kl. 13:06 skrev Adam M. Griggs :
> > >
> > > I hope you won't mind me bumping this question. It seems to have slipped 
> > > under radar.
> > >
> > > Thank you!
> > >
> > > On Mon, 22 Nov 2021, 11:37 Adam M. Griggs,  wrote:
> > > Hello again,
> > >
> > > I'm working with version 2.23.4.
> > >
> > > Looking at the documentation for \note and \note-by-number
> > > (https://lilypond.org/doc/v2.23/Documentation/notation/music), it
> > > lists style, flag-style and font-size as overridable if I'm reading it
> > > correctly.
> > >
> > > In a dotted \markup \note, a dotted minim for example, is it possible
> > > for me to vertically shift the dot?
> >



Re: Dotted \markup \note - tweaking the dot position

2021-12-03 Thread Adam M. Griggs
I hope you won't mind me bumping this question. It seems to have slipped
under radar.

Thank you!

On Mon, 22 Nov 2021, 11:37 Adam M. Griggs,  wrote:

> Hello again,
>
> I'm working with version 2.23.4.
>
> Looking at the documentation for \note and \note-by-number
> (https://lilypond.org/doc/v2.23/Documentation/notation/music), it
> lists style, flag-style and font-size as overridable if I'm reading it
> correctly.
>
> In a dotted \markup \note, a dotted minim for example, is it possible
> for me to vertically shift the dot?
>


Dotted \markup \note - tweaking the dot position

2021-11-21 Thread Adam M. Griggs
Hello again,

I'm working with version 2.23.4.

Looking at the documentation for \note and \note-by-number
(https://lilypond.org/doc/v2.23/Documentation/notation/music), it
lists style, flag-style and font-size as overridable if I'm reading it
correctly.

In a dotted \markup \note, a dotted minim for example, is it possible
for me to vertically shift the dot?



Re: Displaying 4/2 as cut common

2021-06-23 Thread Adam M. Griggs
I borrowed this from Allen Garvin on IMSLP.

fourTwoCutTime = {
\once \override Staff.TimeSignature #'stencil = #ly:text-interface::print
\once \override Staff.TimeSignature #'text = \markup \musicglyph
#"timesig.C22"
\time 4/2
}

On Thu, 24 Jun 2021 at 10:54, Brent Annable  wrote:

> Hi all,
>
> Just a quick question: is there any way to display a 4/2 time signature as
> cut common? I've tried 4/2, 8/4 and 2/1, but none of them seem to default
> to cut common.
>
> I've had a look around, but there doesn't seem to be a way for me to
> 'force' this behaviour... is there a way? Or do I need to set the time
> signature normally, and then just tell Lilypond to print a different glyph?
> If so, how do I do that?
>
> I would appreciate any help!
>
> Regards,
>
> Brent.
>


Re: Multi-measure rest compression and rehearsal marks

2020-10-19 Thread Adam M. Griggs
Did the trick, thank you very much!

On Mon, 19 Oct 2020, 16:13 Aaron Hill,  wrote:

> On 2020-10-19 12:00 am, Adam Griggs wrote:
> > Hello again,
> >
> > This has me stumped. I've been digging for hours.
> >
> >\version "2.21.7"
> >
> >global = {
> > \skip 1*24
> > \mark \default
> > \skip 1*12
> > \mark \default
> > \skip 1*12
> >}
> >
> >music = \relative c'' {
> > \compressMMRests
> > R1*48
> >}
> >
> >\new Staff << \global \music >>
> >
> >
> > Why does multi-measure rest compression fail after the first rehearsal
> > mark?
>
> That seems like a bug or just a limitation of functionality.  I suspect
> the logic for \compressMMRests tries to compress the R1*48 as much as it
> can but does not split it into multiple such rests.
>
>
> > I also tried:
> >
> >music = \relative c'' {
> > \compressMMRests
> > R1*24
> > R1*12
> > R1*12
> >}
> >
> > No go.
>
> \compressMMRests is a function that operates on music that follows.
> Your usage above only applies to the R1*24.
>
> The solution is to use the function at a more top-level scope.
>
> 
> \version "2.20.0"
>
> global = {
>\skip 1*24
>\mark \default
>\skip 1*12
>\mark \default
>\skip 1*12
> }
>
> music = \compressMMRests {
>R1*24
>R1*12
>R1*12
> }
>
> \new Staff << \global \music >>
> 
>
> -- Aaron Hill
>
>


Request for East Asian emphasis points

2020-09-28 Thread Adam M. Griggs
Hello,

I would like to request an implementation for text emphasis points native
to East Asian scripts.

Please refer to the following:

https://en.wikipedia.org/wiki/Emphasis_point
https://www.w3.org/TR/jlreq/#composition_of_emphasis_dots
^ specific to Japanese usage

I understand that this is a very niche feature, and I hope I'm not asking
too much.

Thank you.