> From: Cynthia Karl <[email protected]>
> Subject: Re: Rehearsal marks and grace notes at the beginning of bars
>
> > I am wondering if I am missing something about the character of
> > the problem and the solution that makes you recommend the grace
> > note rest approach, rather than tweaking the order of the grace
> > notes and rehearsal mark in the part that actually has them?
>
> Did you not notice what happened to the key signature in my third
> example? Not pretty.
I guess I paid insufficient attention to that.
> What I am recommending is simply what the Notation Manual recommends:
>
> "This can be remedied by inserting grace skips of the
corresponding durations in the other staves.
>
> I think that your solution will not always fix the problem satisfactorily.
Yes, a robust solution would be best.
> HTH.
Very much, thanks.
Accepting that this is an appropriate and expected task to do whenever
writing grace notes (yikes!), this leads me to a more general question: is
there a way to apply such a fix programmatically?
I'll use this as an opportunity to ask for guidance on how to approach
this. Here is how I would approach it, given my current
scheme/lilypond/scheme-in-lilypond (lack of) prowess.
Any suggestions or clarifications would be appreciated.
1) Define a procedure insertSegment, that inserts the specified segment in
the specified music expression at the specified location.
This relies on a few functions, which I suspect must already exist, but
which I am unsure of, so I just made up names:
musicSubString: A function that extracts a segment of a music from one
specified location to another
musicLength: A function for finding out the length of a musical segment
musicConcatenate: A way to concatenate music expressions
insertSegment = #(define-music-function
(parser location originalPart location segment)
(ly:music? % guessing about the data type of a
musical duration
ly:duration? ly:music?)
#{
(define partOne (musicSubString $originalPart 0 $location))
(define partTwo (musicSubString $originalPart $location (musicLength
$originalPart)))
(define fixedPart (musicConcatenate $partOne $segment $partTwo))
% Returning the value
$fixedPart
#})
2) Apply this procedure insertSegment to the various instruments
clarinet = \relative { ... }
trumpet = \relative { ... }
cello = \relative { ... }
graceUpdate = \relative{ \grace s8 }
% Can we include music variables in scheme lists like this?
(define instruments (\clarinet \trumpet \cello))
% Still not sure how to define the location within a music expression.
(define graceLocation 143)
% Apply the procedure to each instrument
(map
(lambda (instrument)
% Can I interweave scheme with use of music functions like this?
% Is this procedure's argument variable local,
% or is it a reference to the actual data being operated on?
% Here, I'm assuming that it is a reference, so this assigment will
"stick"
instrument = \insertSegment instrument { \graceLocation } {
\graceUpdate }
)
instruments
)
Thanks,
David Elaine Alt
415 . 341 .4954 "*Confusion is
highly underrated*"
[email protected]
self-immolation.info
skype: flaming_hakama
Producer ~ Composer ~ Instrumentalist
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user