y basic unnamed capturing groups, although GNU ERE
does add support for backreferences: /.(.)(.)\2\1/ will match 'xyzzy'.
However, PCRE additionally handles non-capturing groups, named groups,
and many forms of lookarounds and conditionals.
-- Aaron Hill
rator as the car
and the denominator as the cdr.
Alternately, you can use the rational? type predicate so the value is
numeric. However, you will then need to use Scheme syntax for the
input: #1/16 instead of 1/16.
-- Aaron Hill
s1)))
((lambda (s)
(if (string-prefix? "XX" s)
(string-find-replace s "gg" "YY")
s))
"XXssddffgghhjjkkll")
"XXssddffYYhhjjkkll"
Hopefully you can see that in this situation, regexp-substitute/global
becomes the more succinct way to express things:
(regexp-substitute/global #f
"(^XX.*)gg"
"XXssddffgghhjjkkll"
'pre 1 "YY" 'post)
"XXssddffYYhhjjkkll"
-- Aaron Hill
would look identical to the function. In fact, the function would
simply see the integer 1 as input for #4/4. If all that was needed was
to specify a duration, then it might not matter since four quarters is
the same as two halves. However then, David's suggestion of using
ly:duration? would make much more sense.
-- Aaron Hill
On 2020-06-15 5:57 pm, Freeman Gilmore wrote:
Thank you Aaron. :
In order to ask my question, not knowing how to ask, I simplified it
too much. The one or both of the first two below may work but i do
not know how to apply them.
This is a meta problem I have often struggled with. While
" "-x3" "r" "x2" "-st" "-x2" "t")
Several assumptions are being made within the core regular expression
above; but what is important to note is that we are not doing any text
substitution of the original input. Rather, we are using a regular
expression to identify the valid "words" and extract the key parts of
those words. While you can certainly act upon the information right
away, I am showing a way to build a list of strings that should meet
your specification.
-- Aaron Hill
extents are closer to "bounds" than
"size". While the docs are pretty clear about the value being a pair of
numbers, perhaps we should update the extent-related properties to use
"bounds" as opposed to "size".
-- Aaron Hill
On 2020-06-17 5:53 am, David Kastrup wrote:
Aaron Hill writes:
On 2020-06-17 1:35 am, Peter Toye wrote:
Robin,
Thanks. Fair enough. I guessed and experimented and got the result
that I wanted. But I'm not quite sure how I managed it!
A problem I had with minimum-X-extent is that it
{
\tempo \markup{ Allegro \notetest #4 }
c'1
}
#4 is number?. The # signals an escape to Scheme syntax and the 4 is
just an integer.
4 by itself could be parsed as ly:duration?, although you are are within
\markup which might affect the parsing logic.
-- Aaron Hill
t properties to attach a custom unique
identifier to the contexts as they are seen, so it is possible to
discern which context is which even when they are not named.
-- Aaron Hill
an be confused with a style, so you need to add a comma
after the font family.
\version "2.20.0"
{ b'4 -\tweak font-name "Times New Roman," ^"Hello" }
2) When specifying an explicit font-name, things like \italic no longer
work. You must then manually specify the style after the font family.
\version "2.20.0"
{ b'4 -\tweak font-name "Times New Roman, Italic" ^"Hello" }
-- Aaron Hill
On 2020-06-26 3:33 am, Aaron Hill wrote:
On 2020-06-26 3:05 am, Aberforth D - Instrumentals wrote:
Hello,
I have a problem obtaining the correct font for TextScripts. When I
type
the following command:
c4^\markup \italic "legato"
it shows up all right in Frescobaldi but the svg
arkup->string text))
#{ \tweak font-size -2.0
- $text #}
#{ \tweak font-shape #'italic
\tweak font-size -0.1
- $text #}))
{ c'4-. ^\expr "con grazia"
d'4-. _\expr "(she reads the letter)" }
Note in this version I am demonstrating using \paper to set the font
family, so that we can make use of font-shape.
-- Aaron Hill
I can tell.
-- Aaron Hill
1x3"
[2] (a (* b 3) cd -jk (* -DR 2) rtyu -HJK n31 (* n17 4) -n7 (* -n41 3))
NOTE: In both cases above, I stopped short of evaluating the expression,
as there would be a whole host of unbound variables. Assuming a valid
environment, the summation could be computed as easily as:
(primitive-eval (cons '+ expr))
-- Aaron Hill
Sorry. I included the wrong version of the code, before I had
reduced/simplified some of the regular expressions. See changes below:
On 2020-06-27 10:04 pm, Aaron Hill wrote:
-
Broken into individual steps, as you have requested:
(use
{ c''4 }
alto = { a'4 }
tenor = { fis'4 }
bass = { d'4 }
satb = \voices 1,3,4,2 \etc
\satb << \soprano \\ \alto \\ \tenor \\ \bass >>
-- Aaron Hill
outer Voice alive.
Here is an alternate way to view the above:
\version "2.20.0"
{
\new Voice = outer { e'8 g' }
<<
\context Voice = outer { s2 }
\new Voice = inner { a'2 }
>>
\context Voice = outer { b'4 }
}
Hopefully it is more clear that the two Voices are siblings, not
parent-child.
-- Aaron Hill
' {
c1 | 1 | 1 | 1 |
\context ChordNames = "chrdsII"
{ \set chordChanges = ##f }
1 | 1 | 1 | 1 |
}
>>
}
-- Aaron Hill
.0"
#(define-markup-command
(test layout props enclosure content)
(boolean? markup?)
(interpret-markup layout props
(primitive-eval
(list 'markup
(if enclosure #:box #:circle)
content
\markup {
\test ##t box
\test ##f circle
}
-- Aaron Hill
rgument, consider using
\etc:
foo =
\tweak Accidental.stencil #ly:text-interface::print
\tweak Accidental.text
\markup \smuflglyph "accidentalHalfSharpArrowUp"
\etc
{ <\foo fis' \foo cis''>8 }
-- Aaron Hill
cs { lov -- \forceHyphen ing -- kind -- ness }
Note that the \override needs to occur before the syllable that precedes
the hyphen.
-- Aaron Hill
} g' \hline
\asdf \with { symbol = foo baz = 2/3 } g'
While not exactly your original syntax, this does permit a user to
shorthand "\with { symbol = foo }" as simply "foo" providing they do not
need to use the \with block.
-- Aaron Hill
zaOn a4 g \middle b g8[ f] g4_( \final c') \bar "|" }
\fixed c' { \cadenzaOn g4 f8[ d] e4 \middle e g4 a \final g \bar "|" }
This approach allows you to create a template of sorts for individual
notes. Above is an example usage to aid with pointing, supporting the
middle of a phrase and the final tone.
-- Aaron Hill
nough forcing the tie down an entire staff space.
But this results in a slightly larger gap, because there is slightly
less than a staff space difference between the flat and sharp's lower
extent.
-- Aaron Hill
On 2020-07-23 4:38 pm, Aaron Hill wrote:
On 2020-07-23 3:14 pm, Lukas-Fabian Moser wrote:
Hi,
consider:
\version "2.21.0"
\relative {
g'1~ \break
g^"normal tie"
}
\relative {
ges'1~ \break
ges^"low tie"
}
\relative {
gis'1~ \break
wrap { $@loremIpsum $@loremIpsum $@loremIpsum }
}
-- Aaron Hill
On 2020-07-28 10:15 am, David Kastrup wrote:
Aaron Hill writes:
Feels like a hack, but would this help?
\version "2.20.0"
loremIpsum = \markuplist {
\bold { Lorem ipsum } dolor sit amet,
\italic consectetur adipiscing elit.
}
\markup {
\override #'(line-width .
the input. Alternately, you can use the --output command-line option to
be explicit about the target file or folder.
-- Aaron Hill
do not need to add the
explicit \bar command:
\set Timing.measureLength = #(ly:make-moment (* 1/4 8/7))
-- Aaron Hill
234
There are some edge cases where the parser currently does not like the
".key" syntax, but a little escaping seems to do the trick as a
temporary workaround:
\markup \box \column { \FooMCCLLLIV ##{ \Foo.1234 #} }
Just something to consider.
-- Aaron Hill
al to keep it distinct from a slur.
- The tie should be rendered as a \laissezVibrer and \repeatTie
combination.
-- Aaron Hill
On 2020-08-06 6:54 pm, Brian Barker wrote:
At 15:59 06/08/2020 -0700, Aaron Hill wrote:
On 2020-08-06 3:34 pm, Werner LEMBERG wrote:
Look at this example
\relative c' {
\clef "alto" d'2 \tweak positions #'(8 . 4) ~
\clef "treble" d2
}
The `\tw
)))
{
b'1-\tweak Tie.stencil #flare-tie ~ b'1
}
-- Aaron Hill
esize 2
<\parenthesize a, \parenthesize c ees>4
}
alto = \fixed c' {
\override ParenthesesItem.color = #blue
4
\parenthesize 2
\parenthesize c4
}
\new Staff \voices 1,2 << \soprano \\ \alto >>
-- Aaron Hill
tem::print-scaled
}
}
soprano = \fixed c'' {
\override ParenthesesItem.color = #red
\parenthesize dis4
\parenthesize 2
<\parenthesize a, \parenthesize c ees>4
}
alto = \fixed c' {
\override ParenthesesItem.color = #blue
4
\parenthesize 2
\parenthesize c4
}
\new Staff \voices 1,2 << \soprano \\ \alto >>
-- Aaron Hill
lyrics 'elements))
(last (car (take-right elts 1)))
(text (ly:prob-property last 'text)))
(ly:prob-set-property! last 'text
#{ \markup \concat { $text $punct } #})
lyrics))
foo = \lyricmode { foo foo foo }
\new Voice \fixed c' { g8 fis g4 a4. b8 | c'1 }
\addlyrics { \addPunct \foo "," \addPunct \foo "!" }
-- Aaron Hill
On 2020-08-11 1:48 am, Aaron Hill wrote:
(last (car (take-right elts 1)))
And in my haste to reply, I overlooked simplifying the car/take-right 1
to being just a call to the SRFI-1 "last" procedure:
(last (last elts))
Though, I probably should pick a be
On 2020-08-11 1:57 am, Aaron Hill wrote:
On 2020-08-11 1:48 am, Aaron Hill wrote:
(last (car (take-right elts 1)))
And in my haste to reply, I overlooked simplifying the car/take-right
1 to being just a call to the SRFI-1 "last" procedure:
(last (last elts))
nHeaderMarkup's use of \fill-line within oddHeaderMarkup.
-- Aaron Hill
x27;(defined? 'foo)
\markup "Hidden"
{ \foo }
\assert #'(eq? 0 (length toplevel-scores))
\restoreHandlers
\markup "Visible"
{ \foo }
\assert #'(eq? 2 (length toplevel-scores))
-- Aaron Hill
g } }
}
>>
\layout {}
\midi {
\context {
\Staff
\consists "Dynamic_performer"
}
\context {
\Voice
\remove "Dynamic_performer"
}
}
}
Whether there are any side effects, I do not know.
-- Aaron Hill
-path = #value #})
{ b'4 \oo NoteHead.color #red g'4 a'2 }
-- Aaron Hill
nce \overrideII FretBoard.fret-diagram-details
\with {
barre-type = #'none
number-type = #'arabic
orientation = #'landscape
mute-string = #"M"
label-dir = #LEFT
dot-color = #'black
}
-- Aaron Hill
rd.fret-diagram-details.dot-color = #'black
\override FretBoard.fret-diagram-details.finger-code = #'below-string
}
-- Aaron Hill
at overwrites any existing overrides on the
fret-diagram-details property, so it is not quite the same thing.
-- Aaron Hill
On 2020-08-29 6:37 am, David Kastrup wrote:
Aaron Hill writes:
On 2020-08-29 5:23 am, David Kastrup wrote:
Wols Lists writes:
On 29/08/20 05:45, Werner LEMBERG wrote:
\once \override FretBoard.size = #'1.0
\once \override FretBoard.fret-diagram-details.barre-type =
#
#0.5
fret-count = #3
}
d
}
}
\new Voice {
c'1 | c' | c' | d'
}
Is this pushing things too far?
-- Aaron Hill
On 2020-08-29 10:38 am, David Kastrup wrote:
Aaron Hill writes:
Is this pushing things too far?
Well, essentially a similar problem. How do you figure out the
difference between setting something to a context mod, and making a
smart alist modification?
I do not believe there are any
s on its own, which would give it the
information needed to properly crop.
-- Aaron Hill
On 2020-08-30 4:29 am, Aaron Hill wrote:
On 2020-08-30 2:12 am, Claire Meyer wrote:
Those dynamics are all custom dynamic marks that I constructed like :
mydyn = \tweak DynamicText.self-alignment-X #LEFT
#(make-dynamic-script
(markup
#:with-dimensions '(0 . 5) '(0 . 0) #:line
(#:n
t;
#:normal-text "l3"
))
Where l1 is on line 1, l2 is on line 2, and l3 is on line 3. Can
someone
help me ?
You should be able to use \column:
dals = \tweak DynamicText.self-alignment-X #CENTER
#(make-dynamic-script #{ \markup \normal-text \column { 11 12 13 } #})
-- Aaron Hill
ple shows how \vcenter does not quite align the same as the
other option. But again, it might not matter in context so it is worth
trying as it is simpler.
-- Aaron Hill
arg3
} #}))
\markup \centered-three-lines
\line { a b c }
\line { d e }
\line { f g h }
-- Aaron Hill
#(list
(cons 'listeners
(list
(cons 'key-change-event format-event
} { \key g \major g'2 b' | \key aes \major c''2 aes' }
-- Aaron Hill
t-property
(ly:translator-context engraver)
(car (filter translator-property? '(keyAlterations keySignature)))
'())
-- Aaron Hill
\vcenter \teeny \sans x
mzzz = \makeRightOrnament \markup \vcenter \huge \bold zzz
{ f8 -\tweak padding #0.8 -\mx f'4. -\mx
f''16 -\mzzz f'''4.. -\mx }
-- Aaron Hill
On 2020-09-04 11:47 am, Tom Swan wrote:
PS: Output of /usr/local/bin/lilypond is "No such file or directory"
What about "~/bin/lilypond --version"?
-- Aaron Hill
half note,is a fifth lower so there
is no collision, or shouldn't be.
Probably need to use \partcombineApart. Consider:
\version "2.20.0"
{
\time 3/4
\clef bass
\partcombine
{ r4 e2 }
{ \once \partcombineApart a,2. }
}
-- Aaron Hill
super "add4" }
1-\markup { m \super { "add"
#(alteration->text-accidental-markup FLAT) "9" } }
1-\markup { m \super "add9" }
}
addExceptions =
#(append
(sequential-music-to-chord-exceptions addExceptionsMusic #t)
ignatzekExceptions)
music = \chordmode {
\set chordNameExceptions = #addExceptions
c:add2 d:add4 e:add9 f:add11+
c:madd2 d:madd4 e:madd9 f:madd9-
}
<< \new ChordNames \music \new Staff \music >>
-- Aaron Hill
an equivalent
"stroke-dasharray" attribute to the SVG output. Looking at how
\draw-dashed-line works should provide a useful reference.
-- Aaron Hill
On 2020-09-07 1:20 pm, Aaron Hill wrote:
Given a cursory glance, it would seem doable. One would need to
copy/borrow the existing logic for \path and then add a suitable
"setdash" command to the PostScript output and an equivalent
"stroke-dasharray" attribute to the SVG out
On 2020-09-07 4:38 pm, Aaron Hill wrote:
On 2020-09-07 1:20 pm, Aaron Hill wrote:
Given a cursory glance, it would seem doable. One would need to
copy/borrow the existing logic for \path and then add a suitable
"setdash" command to the PostScript output and an equivalent
"s
we can \tweak the
extra-spacing-width of the NoteHead to ask LilyPond to reserve more
space before the note. No such \tweaking is needed for \fx to avoid
collision.
-- Aaron Hill
ruct tricky when
being reused for Dynamics.
Stripping out the VoiceSeparator *might* work:
removeVoiceSeparator =
#(define-music-function (music) (ly:music?)
(define (not-music-separator? m) (not (music-separator? m)))
(music-filter not-music-separator? music))
<< \new Voice \musicI
\new Dynamics \removeVoiceSeparator \musicI >>
Whether this brings about new issues, I could not say.
-- Aaron Hill
On 2020-09-11 3:25 pm, Claire Meyer wrote:
Hi,
I've got a problem with a tie not appearing. My problematic bar is as
follows :
upperHighB = \relative c'' {
d8 bes |
}
Try forcing the Tie downwards:
... ...
-- Aaron Hill
(apply ly:stencil-add (list lp rp
(ly:slur::print grob)
\etc
{ g'4\parenthesizeSlur (
\parenthesizeSlur \( b' c''2 ) |
g'2\parenthesizeSlur ( f'4 e' ) \) }
-- Aaron Hill
e = ##t
right-text = \markup \fontsize #-5 \bold "]"
right-X-align = #LEFT
right-rotate = ##t
}
{ g'4 \parenthesizeSlur (
\bracketSlur _\( b' c''2 ) |
b'4 \arrowSlur ( a' c''2 ) \) }
While this might need some refactoring and could be harboring bugs, it
is a bigger step towards a more generalized system; and I wanted to get
this posted sooner than later.
-- Aaron Hill
d-right = ##f }
\layout { \context { \Score \omit BarNumber } }
{ g'4 \bracketizeSlur _\(
\parenthesizeSlur ^( b' c''2 ) |
b'4 \arrowizeSlur ^( a' c''2 ) \) |
g'2 \bracketizeSlur ^\(
\arrowizeSlur _( b'4 a' ) |
g'2 \parenthesizeSlur _( a'4 c'' ) \) |
g'2 \bracketizeSlur ^\(
\parenthesizeSlur _( b'4 a' ) |
g'2 \arrowizeSlur _( a'4 c'' ) \) |
g'4 \bracketizeSlur _\(
\arrowizeSlur ^( b' c''2 ) |
b'4 \parenthesizeSlur ^( a' c''2 ) \) |
\bar "|." }
-- Aaron Hill
(text .
#f))
Tempo: ((tempo-unit . #) (metronome-count . 60) (text .
"Text"))
Tempo: ((tempo-unit . #f) (metronome-count . #f) (text . "Text"))
Success: compilation successfully completed
-- Aaron Hill
On 2020-09-16 4:13 pm, Aaron Hill wrote:
On 2020-09-16 12:09 pm, Lukas-Fabian Moser wrote:
I'm sure more knowledgeable people will be able to provide more
insightful answers, but for what it's worth: Looking at
lily/parser.yy, I see
tempo_event:
TEMPO steno_duration '
On 2020-09-17 12:08 am, Martín Rincón Botero wrote:
Thank you Aaron for this explanation of the ly:prob-property! I see a
function like *ly:duration->string*, is there any way to "convert"
predicate types like ly:duration and number to markup?
Strings are primitive markup, so you
On 2020-09-17 1:14 am, Lukas-Fabian Moser wrote:
Hi Aaron,
The three forms
* \tempo 4 = 96
* \tempo Crazy 4 = 260-270
* \tempo "Sluggishly slow"
are hardcoded as variants into the parser. My guess is that this
might
be hard (or impossible) to accomplish in a music function.
On 2020-09-17 1:30 am, Aaron Hill wrote:
On 2020-09-17 1:14 am, Lukas-Fabian Moser wrote:
Hi Aaron,
The three forms
* \tempo 4 = 96
* \tempo Crazy 4 = 260-270
* \tempo "Sluggishly slow"
are hardcoded as variants into the parser. My guess is that this
might
be hard (or impo
\stopBend \once \hideNotes $mus}
#}
)
Something like this would allow me to type \addQuarterBend c’8 to just
decorate that note with a bend.
This seems connected to the question posted on Reddit [1] I answered.
[1]: https://www.reddit.com/r/lilypond/comments/iu06jp/
-- Aaron Hill
function should the provided
music not be appropriate.
-- Aaron Hill
On 2020-09-17 4:01 am, Martín Rincón Botero wrote:
Dear Aaron,
thank you very much for your help! After using ly:duration->string for
the
tempo-unit, I'm still missing a way to have the new string tempo-unit
string in "", so that I can display it as a \note in a \markup. H
'4
\once \override BalloonTextItem.annotation-balloon = ##f
\balloonGrobText #'Stem #'(3 . 4) \markup { "I'm a Stem" }
d'4
}
-- Aaron Hill
st handling MIDI tempo manually, that way you can issue as
many \tempo commands as needed to properly simulate the accel, rall, and
rit instructions.
Otherwise, this whole thing really looks like a job for a custom
engraver/performer.
-- Aaron Hill
On 2020-09-18 4:40 am, Martín Rincón Botero wrote:
Thank you very much, Aaron! The \markup \null construction is something
that I will have to study carefully in the next few days to fully grasp
it.
I made some adjustments to the formatting, so that it matches the
default
\tempo formatting of
ery good, especially
since one might want to terminate a span with an invisible \tempo. (See
my example above with \startRitSpan.)
I wonder if the parser's \etc could support defining new functions that
borrow the syntax from built-in ones:
% What we can do today... %
hideTempo = \once \omit Score.MetronomeMark
{ \hideTempo \tempo 4 = 90 }
% What would be nice to do... %
hiddenTempo = {
\once \omit Score.MetronomeMark
\tempo \etc
}
{ \hiddenTempo 4 = 90 }
That might be asking too much.
-- Aaron Hill
!
It is good to have the "non-programmer" perspective. Mind you, I would
argue your use of LilyPond and interest in Scheme means you have already
begun your journey as a programmer. (:
-- Aaron Hill
4 | f'8 d' c'
\change Staff = lower
a g2
}
-- Aaron Hill
s thick scale-x scale-y closed? #f)
stroke)))
{
\override NoteHead.stencil = \tri
\override NoteHead.stem-attachment = #'(1 . 0.7)
e'4 f' g' a'
}
-- Aaron Hill
;2
\tweak non-musical ##f
\tweak X-offset #-2.5
\offset Y-offset #2
\parenthesize
\breathe
c''4 c''
c''2
\tweak ParenthesesItem.extra-offset #'(-2 . 0)
\tweak extra-offset #'(-2 . 0)
\offset Y-offset #2
\parenthesize
\breathe
c''4 c''
}
-- Aaron Hill
pattern))
(,midpoint 1 ,(car end-pattern) ,(cdr end-pattern))) #} )
{ \once \dashHelper PhrasingSlur solid #0.3 dashed g'2\( e''4 d''\)
\once \dashHelper Slur dotted #0.7 solid b'4_( a'8 e' f'2)
\once \dashHelper Tie solid none g'2.~ 4 }
-- Aaron Hill
amic pp
\override #'(width . 2.8)
\espressivo \dynamic p
\override #'(height . 1.5)
\espressivo \dynamic f
}
}
-- Aaron Hill
(m)
(let ((p (ly:music-property m 'pitch)))
(if (and (ly:pitch? p) (ly:pitch4. }
-- Aaron Hill
ere. Why
does my example go wrong, yet the LSR one doesn't?
Hmm, I wonder if the snippet author meant: #'(0.5 . -inf.0)
-- Aaron Hill
c'? Yes, because \\relative says so." b c d }
c b c2
}
Note that I went ahead and defined an OssiaStaff context so that
properties relating to it are not buried within the \ossia function.
Also a little refactoring should make the function's logic a little
easier to follow.
-- Aaron Hill
ill appear *above* them. }
music following
}
-- Aaron Hill
/lilypond/-/issues/4375
[2]:
http://lilypond.org/doc/v2.21/Documentation/notation/writing-rests#index-length-of-multi_002dmeasure-rest
-- Aaron Hill
." between the hands. As
such, I just use TextScripts to implement them. Only in a few cases
have I bothered to instantiate a Dynamics context to vertically align
performance instructions.
I wonder if there is value in having something like \textTempo or
\dynamicTempo that work in a similar fashion to \tempo but produce
TextScripts and DynamicTexts, respectively.
-- Aaron Hill
es of tests and usage
examples.
(I had to include my UTF8 string splitting code in order to handle CJK
characters properly, so you will need to scroll down a bit to get to the
markup command itself.)
-- Aaron Hill\version "2.20.0"
#(define (utf8->utf32 lst)
"Converts
oLeft" \new Voice { \PianoLeftMusic }
% . . .
-- Aaron Hill
On 2020-10-03 5:05 am, Martín Rincón Botero wrote:
Doesn’t it work if you just \set Staff.timeSignatureFraction = 3/2
together with the new time signature?
Alternately, \unset the property when you are done with it.
-- Aaron Hill
timeStencil \markup \vcenter \huge \bold V
\time 5/4
| a'4 b'4. c''8 b' a' b'4
\time 6/8
| a'8 g' fis' gis'4. \bar "|."
}
-- Aaron Hill
'(width . 3) {
mp \hairpin #CRESC
f \override #'(circled-tip . #t)
\hairpin #DECRESC
pp
} #})
{ b'2( \"mpopp" c''16 b' a' b' a'4) }
-- Aaron Hill
ob-set-property! grob 'X-extent
(cons (- (car xext) offset)
(+ (cdr xext) offset)))
#{ \override LyricText.before-line-breaking = #proc #})
{ \time 7/8 a'8[ b' c'' a' b' g' a'] }
\addlyrics {
\enforceMinimumLyricWidth #5
la laa laaa l laaa laa la
}
-- Aaron Hill
clearly demonstrates
the pros and cons.
- Aside from the fact that lying about X-extent is perilous, I am
curious why the \override for LyricText.X-extent occurs within the
\spiritus music variable and not the \spirLyr variable that is already
within the Lyrics context.
-- Aaron Hill
601 - 700 of 1690 matches
Mail list logo