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
quot; "A ... B ...")
"\n" 'suffix)
'pre 1 "C" 'post))
A ... C ...
D ... B ...
A ... E ...
A ... C ...
The key here is to use a capturing group for the portion of the string
before "B" that you need to preserve in the substitution.
-- Aaron Hill
ic 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
d 2/2
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
" }
\layout { #(layout-set-staff-size 13) }
}
\score {
\new Staff { \once \transformText \flipIt b'2.^"Lorem" b'4_"ipsum" }
\layout { #(layout-set-staff-size 21) }
}
-- 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 . 40)
loremIpsum }
}
-- Aaron Hill
\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
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
gis^"l
rcing 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
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
\markup "Hidden"
{ \foo }
\assert #'(eq? 0 (length toplevel-scores))
\restoreHandlers
\markup "Visible"
{ \foo }
\assert #'(eq? 2 (length toplevel-scores))
-- Aaron Hill
durations,
underscores, hyphens, and extenders from a lyricmode block to create
a markup block?
See LSR #744 [1].
[1]: http://lsr.di.unimi.it/LSR/Item?id=744
-- Aaron Hill
ep . alteration) back to pitch, the final order is: Bb
Eb Ab F# C# G# D#. This should make sense given the standard convention
of how flats and sharps are arranged.
One question though, Does the key signature affect the midi output?
Yes, Key_performer generates a key signature meta event (FF 59).
-- Aaron Hill
ut the two intervals
are computed relative to the extents of the markup, recalling that
LEFT=DOWN=-1, CENTER=0, RIGHT=UP=1. And of course you can use any
values in-between or outside those as desired.
-- Aaron Hill
space of 5pt, then line thickness is exactly
0.5pt. However, as staff space drops to 4.125pt, line thickness should
only reduce to 0.47pt.
-- Aaron Hill
;foo"
[note] pitch=#, duration=#
Success: compilation successfully completed
-- Aaron Hill
efault font-size is 11pt. Scale to 10pt.
#(magnification->font-size 10/11)
\override VerticalAxisGroup.nonstaff-nonstaff-spacing =
% Default staff space is 5pt. Scale to 12pt.
#'((basic-distance . 12/5) (minimum-distance . 0)
(padding . 0) (stretchability . 0))
}
}
}
-- Aaron Hill
and it still works as expected.
That would be my mistake. I forgot to also set minimum-distance so that
it does not compress. My example works only because there is no
pressure to reduce spacing.
Use the same value for basic-distance and minimum-distance, and it
should work.
-- Aaron Hill
VerticalAxisGroup.nonstaff-nonstaff-spacing =
#(lambda (grob)
(define (pt n)
(* n (ly:output-def-lookup (ly:grob-layout grob) 'pt)))
`((basic-distance . ,(pt 12))
(minimum-distance . ,(pt 12))
(padding . 0) (stretchability . 0)))
-- Aaron Hill
in. But I am hopeful the
above may help you refactor your function into a form that could work.
-- Aaron Hill
.1 0.3 0.5
\mark \default b'4 4 2 4 2. 1
\temporary \bracketify NoteHead #X 0.2 0.5 0.3
\mark \default b'4 4 2 4 2. 1
\revert NoteHead.stencil
\mark \default b'4 4 2 4 2. 1
}
-- Aaron Hill
nsider.
\baz demonstrates working with music as a container for data. This
option is ideal when inputting a variable number of musical things as it
largely resembles other LilyPond syntax.
-- Aaron Hill
,dx ,(* 0.66 delta-y)
,dx ,delta-y)
-- Aaron Hill
-property = #'value
It does not however seem to correct:
variable #'key = #'value
% ...to...
variable.key = #'value
-- Aaron Hill
able midiDrumPitches)
} }
\score {
\drums { \repeat unfold 8 { mb4 mc mc mc } }
\midi { \tempo 4 = 90 }
}
-- Aaron Hill
GHT/UP = 1). This seemed easier to work with than
absolute extents.
-- Aaron Hill
nstrumentName = \foo }
{ \repeat unfold 16 { b'4 4 2 } \bar "|." }
-- Aaron Hill
set properties:
\version "2.20.0"
{
\stemDown
e' -\offset X-offset #0.3
-\offset Y-offset #1.5
_+ \p
e' _1 \p
}
-- Aaron Hill
imes
| \tuplet 4/3 { b'2 b' } % same, but using \tuplet
}
\tuplet and \times differ only on the order of numerator/denominator.
-- Aaron Hill
elative f' {
\key f \major
\omit Score.TimeSignature
\cadenzaOn
f4 a2 bes4 c2 bes4 a2 g4 a2 \lineEnd
a4 a2 g4 bes4( a) g4 f2( e4) f2 \lineEnd
f4 a2 bes4 c2 bes4 a2 g4 a2 \lineEnd
}
}
-- Aaron Hill
t;Text" % shown, green
\print-if-defined ##t #'symA "Text" % shown, red
-- Aaron Hill
d' e' }
\replaceContextChanges #'((down . middle) (up . upper))
\autochange { a4 b d' e' }
\replaceContextChanges #'((down . upper) (up . lower))
\autochange { a4 b d' e' }
} >>
-- Aaron Hill
e I show using a NullVoice so the notes do not appear though you can
still attach lyrics to them for timing.
NOTE: As documented in the Notation Reference, changing associatedVoice
must occur one syllable early to have the desired effect.
-- Aaron Hill
(Re-adding mailing list for visibility...)
On 2020-11-10 12:35 am, Christ van Willegen wrote:
Hi Aaron,
Op ma 9 nov. 2020 23:39 schreef Aaron Hill:
Above I show using a NullVoice so the notes do not appear though you
can
still attach lyrics to them for timing.
NOTE: As documented
3.3)
\repeat tremolo 16 { c32 c' }
}
NOTE: While y¹off-y²off is a valid symbol in Scheme, I renamed it to
something pure ASCII.
Also NOTE: This code is no longer backwards compatible due to the use of
grob-transformer.
-- Aaron Hill
tried would be
useful.
A note is allowed to be the end of one span and the beginning of
another:
\version "2.20.0"
{ b'2 \startTextSpan 4 4 \stopTextSpan \startTextSpan | 4 2.
\stopTextSpan }
-- Aaron Hill
20.0"
baz = #(define-void-function (pitches) (ly:music?)
(format #t "\npitches=~s" (music-pitches pitches)))
\baz a
\baz { b d f }
Parsing...
pitches=(#)
pitches=(# # #)
-- Aaron Hill
it requires the
figures to be input a bottom-up order.
-- Aaron Hill
t;<
{ \time 2/1 \clef bass a1. d2 }
\figuremode {
\override Staff.BassFigureAlignment.stacking-dir = #UP
<[3 5]>4 <[2 4 8]> <[3 5]> <[4 6]> <[3 5]>2
}
-- Aaron Hill
#{ \score { { g'4 a'2. } } #}
#{ \score { { b'4. g'8 a'2 } } #})
\bookpart { $@baz }
#(define (score->markup score)
#{ \markup \score { #score \layout { indent = 0 } } #})
\markup { Lorem ipsum #@(map score->markup baz) dolor sit amet. }
-- Aaron Hill
\consists the Mark_engraver but
with a downward direction.
-- Aaron Hill
Can use \dynamicPair directly in music or to define
%% commonly-used dynamics. Supports make-dynamic-script.
mp-ff = \dynamicPair \mp \ff
{ b'4 _\mp-ff ^\dynamicPair \sp #(make-dynamic-script "zzz") }
-- Aaron Hill
2 }
\addlyrics {
\markup { \bold a \italic b }
\markup { \box c \circle d }
}
-- Aaron Hill
be wrong! =)
Compound meter, perhaps?
\version "2.20.0"
\compressMMRests <<
\new Staff {
\compoundMeter #'(4 3 4)
\repeat unfold 2
{ a'4 4 b'2 a'4 b'2 }
R4*7*14
}
\new Staff {
R4*7*14
\repeat unfold 2
{ b'2 2 a'4 4 4 }
}
-- Aaron Hill
On 2020-11-22 12:14 pm, Kieren MacMillan wrote:
Any thoughts on why this snippet throws an error?
The context is not being kept alive long enough. Change s1 to at least
s1*4:
\new Dynamics \new Container = "piano_dynamics" s1*4
-- Aaron Hill
encil . #f)))
(2 . ((stencil . #f)))
(3 . ((stencil . #f)))
(4 . ((style . dashed-line)
((bound-details left padding) . 2)
((bound-details left arrow) . #t)
(normalized-endpoints . (0 . -1.5)
2^"\"some other tweaks\""
-- Aaron Hill
On 2020-11-02 12:18 pm, Aaron Hill wrote:
#{ \once \override Glissando.after-line-breaking = #proc
<>\glissando #})
You can even simplify that expression using \tweak:
#{ <>-\tweak after-line-breaking #proc \glissando #}
Not sure if \tweak is cheaper than \once \override
On 2020-11-02 12:18 pm, Aaron Hill wrote:
\glissTweak needs to be able to handle using
ly:grob-set-nested-property!:
glissTweak =
#(define-music-function
(parser location lst) (pair?)
(define (proc grob)
(let ((gliss-count (ly:grob-property grob 'glissando-index)))
(for-each
tuplet-number::calc-fraction-text
#{ 8 #})
\tuplet 7/6 {
\tuplet 3/2 4 { e8[ f e] f8[ e f] }
<< f4 { s16 s16 s8 } >>
\tuplet 3/2 { e8 16 }
}
}
Also shown is using \tuplet as an alternative to \times.
-- Aaron Hill
.
[1]: http://lsr.di.unimi.it/LSR/Item?id=1029
-- Aaron Hill
Staff.Clef.extra-spacing-width = #'(-1 . 0)
\clef bass
Seeing as the grace note affects spacing, I added a suitable spacing
modifier.
-- Aaron Hill
On 2020-11-01 2:25 pm, David Rogers wrote:
Aaron Hill writes:
On 2020-10-29 2:35 pm, David Kastrup wrote:
David Nalesnik writes:
Hi Andrew,
On Wed, Oct 28, 2020 at 5:03 PM Andrew Bernard
wrote:
Hi David,
But it would be great in the future to have more and better MIDI
support. I
in the Notation
Reference,
or give me some specifics?
The installation instructions can be found here [1] where you would
obtain the stable release. (Perhaps a helpful link could be added on
the development/unstable pages.)
[1]: http://lilypond.org/unix.html
-- Aaron Hill
On 2020-11-01 5:26 pm, Ralph Palmer wrote:
On Sun, Nov 1, 2020 at 7:31 PM Aaron Hill
wrote:
On 2020-11-01 3:58 pm, Aaron Hill wrote:
> On 2020-11-01 3:41 pm, Ralph Palmer wrote:
>> Hi -
>>
>> I would like to install LilyPond 2.21.80, but I don't know how. I have
>
On 2020-11-01 3:58 pm, Aaron Hill wrote:
On 2020-11-01 3:41 pm, Ralph Palmer wrote:
Hi -
I would like to install LilyPond 2.21.80, but I don't know how. I have
successfully installed earlier versions, but I don't remember how, and
I
can't find instructions.
I'm running Ubuntu 20.4.01 under
er) (number?)
#{ \once \override Score.BarNumber.break-visibility = #all-visible
\set Score.currentBarNumber = #number
\bar "" #})
\markup {
\score { { \initialBarNumber 2 \AB.2 } }
\score { { \initialBarNumber 13 \AB.13 } }
}
-- Aaron Hill
to specify a literal color feels inconsistent and
arbitrarily restrictive.
-- Aaron Hill
and noteblocks?
-- Aaron Hill
to output that
format.
[2]: https://gitlab.com/lilypond/lilypond/-/issues/665
-- Aaron Hill
should not be using -dcrop. Rather, you should be manually removing the
margins themselves within the \paper section. Basically, make the
virtual paper match precisely what you need, obviating the need to use
-dcrop.
-- Aaron Hill
on "2.22.0"
#(let ((orig-proc note-name->string))
(set! note-name->string
(lambda args (string-capitalize (apply orig-proc args)
\new NoteNames {
c dis ees
\set printNotesLanguage = italiano
c dis ees
}
-- Aaron Hill
On 2021-01-15 3:34 am, achar wrote:
Thanks a lot, but it doesn't work.
I don't know why.
If \tweak does not work, you can always fall back to \once \override:
\version "2.18.2"
\new ChordNames
\chordmode {
c \once \override ChordName.color = #red d e
}
-- Aaron Hill
)
(set! duration
(ly:parse-string-expression (ly:parser-clone) duration)))
(note-by-number-markup layout props
(ly:duration-log duration)
(ly:duration-dot-count duration)
dir)))
\markup {
\note { 8. } #DOWN \note "8." #DOWN
\note { \longa*2/3 } #UP \note "\longa*2/3" #UP
}
-- Aaron Hill
On 2021-01-16 11:48 am, Kenneth Wolcott wrote:
Missing 2.20 documentation tarball at http://lilypond.org/all.html
The content is still there:
http://lilypond.org/downloads/binaries/documentation/
-- Aaron Hill
eOrDefault foo { b'1 }
\defineOnce foo { b'4 4 2 }
\valueOrDefault foo { b'1 }
\defineOnce foo { b'8 8 2. }
\foo
}
I included the optional module parameter in the event that users might
need to work outside the current scope.
-- Aaron Hill
On 2021-01-25 5:47 am, Aaron Hill wrote:
On 2021-01-25 5:19 am, John D. Berry wrote:
At one point I happily used TeXShop to do all of my Lilypond work. A
couple of years have passed and I have returned with a new Mac and I
find that I cannot get to this configuration due to an error in
pointer
that the page cannot be
found. Is there another source for the engine that will work for lily
pond in TeXShop?
Is this [1] what you are looking for?
[1]:
https://web.archive.org/web/20141010002739/http://julovi.net/j/?p=76
-- Aaron Hill
=> 1/2
(inexact->exact 1.2)
=> 5404319552844595/4503599627370496
What you need to do is use a combination of rationalize and
inexact->exact:
(rationalize (inexact->exact 1.2) 1/100)
=> 6/5
-- Aaron Hill
ot; as a symbol on its
own without needing to escape to Scheme syntax by writing #'symA. Just
something to keep in mind as I think it results in cleaner usage.
-- Aaron Hill
... = #(list '(volta #f) (list 'volta voltaCont))
3:
... = #`((volta #f) (volta ,voltaCont))
NOTE: The backtick in the third option begins quasi-quoting, which
allows you to "unquote" (using the comma) so you can reference the
defined voltaCont variable.
-- Aaron Hill
ogic that appends a
new dispatch entry.
With that, I was able to use 2.22.0 and compile my original code
otherwise unchanged.
-- Aaron Hill
s
with a smaller outside-staff-priority will sit closer to the staff.
-- Aaron Hill
, semantic
satiation.)
-- Aaron Hill
\relative {
\repeat volta 2 { c''4 d e f | }
\alternative {
{ c2 e | \bar ":|]" }
{ f2 g | }
}
c1
}
P.S. No idea about the nabble stuff... does the archive [1] at
lists.gnu.org have the data you want?
[1]: https://lists.gnu.org/archive/html/lilypond-user/
-- Aaron Hill
understand?
This is one of my utility functions:
forceHyphen = \lyricmode {
\once \override LyricHyphen.minimum-distance = #2
}
You then use it like this:
\lyricmode { And the \forceHyphen white -- robed mar -- tyrs fol -- low,
}
-- Aaron Hill
{
\relative c' { c4 d \markupStencil \squiggle r }
}
-- Aaron Hill
/2019-01/msg00522.html
-- Aaron Hill
hosted
on lilybin [1].
[1]: http://lilybin.com/kq9t97/1
-- Aaron Hill
Text = cat
soloIIText = dog
}
\new Staff <<
\partCombine
\relative c'' { g4 g r r a2 g }
\relative c'' { r4 r a( b) a2 g } >>
\new Staff \with \combineTexts <<
\partCombine
\relative c'' { g4 g r r a2 g }
\relative c'' { r4 r a( b) a2 g } >>
-- Aaron Hill
On 2021-05-10 6:41 pm, Ahanu Banerjee wrote:
Hello,
Can anyone provide a simple way to make a tempo marking like this: "♩=
텞 "
?
You should be able to adapt LSR 574 [1] to achieve that.
[1]: https://lsr.di.unimi.it/LSR/Item?id=574
-- Aaron Hill
s
(cons y y)
{
\override Beam.positions = \flattenPositions #NEAR
g''8 b b c'' a' b'' b'' d'
\override Beam.positions = \flattenPositions #CENTER
g''8 b b c'' a' b'' b'' d'
\override Beam.positions = \flattenPositions #(* 2 FAR)
g''8 b b c'' a' b'' b'' d'
}
-- Aaron Hill
|
}
\alternative {
{
\changeVoltaText "1., 3."
e'4 f' g' |
}
{
d'4 c' b' |
}
{
\changeVoltaText \markup \with-color #red "4."
g'4 a' b' |
}
}
c'1
}
\score {
\test
}
NOTE: I'm using \markup in the final alternative just to
."
e'4 f' g' |
}
{
d'4 c' b' |
}
{
\changeVoltaText \markup \with-color #red "4."
g'4 a' b' |
}
}
c'1
}
\score {
\test
}
-- Aaron Hill
pping. Lyrics
"b" and "c" start at the same time, both waiting until "a" is done.
Note that "d" continues on the second line as it is part of the same
context as "c"; however, "e" does wait until "d" is complete before
resuming lyrics in the original context.
-- Aaron Hill
4. c'8 g4 | a2. \bar "|."
}
\book { \bookOutputSuffix "C" \transpose c c \asdf }
\book { \bookOutputSuffix "Bb" \transpose bes, c \asdf }
\book { \bookOutputSuffix "Eb" \transpose ees c \asdf }
(I might have messed up the actual transpositions, but you should get
the idea.)
-- Aaron Hill
}
\new Lyrics \lyricmode {
\skip 4 | j2 k4 \skip 2.*2 | l4 m2 | n2.
} >>
-- Aaron Hill
music.
LSR 976 [3] implements its own custom engraver to support an arbitrary
number of RehearsalMarks.
[1]: https://lsr.di.unimi.it/LSR/Item?id=202
[2]: https://lsr.di.unimi.it/LSR/Item?id=575
[3]: https://lsr.di.unimi.it/LSR/Item?id=976
-- Aaron Hill
pe (minor key) minor diminished major minor
minor major major
Chord type (harmonic minor key) minor diminished augmented minor
major major diminished
So if you wanted "Am Dm Am E7" then that becomes "1 4 1 5M7" in "A
minor" and "1 4 1 57" in "A harmonic minor".
-- Aaron Hill
r if there
is
another option. Even in this case, if no "a2" is present, it would be
really nice to have the two voices explicit, to avoid confusion.
I would imagine \partCombineApart (or its kin) can help with this.
-- Aaron Hill
(grob-interface engraver grob source)
(add-class-name grob)
\layout { \context { \Score \consists \SvgAddClassName } }
{ \tweak output-attributes #'((class . foo)) b'4 }
-- Aaron Hill
On 2021-07-01 10:44 pm, Aaron Hill wrote:
[...]
Also, here's a minor refactor of \localFontSize better separating some
concerns:
\version "2.22.0"
localFontSize =
#(define-music-function
(font-size music)
(number? ly:music?)
(map (lambda (m)
(ly:music-set-p
t sets an internal state for the part combiner, however
you must use \partCombine to invoke the combiner. Consider:
soprano = { f'4 g'4 a'4 b'4 c''2 }
tenor = { d'4 e' f'' g' a'2 }
\partCombine
{ \partCombineChords \soprano }
{ \stemUp \localFontSize -3 \tenor }
-- Aaron Hill
d \major
\stemDown
( ) fs
}
-- Aaron Hill
want to do something like:
\mark "(" a8 bes \mark ")"
and have the parens aligned on the center of the staff.
Does LSR 902 [1] help?
[1]: https://lsr.di.unimi.it/LSR/Item?id=902
-- Aaron Hill
On 2021-06-30 9:07 pm, Aaron Hill wrote:
On 2021-06-30 9:00 pm, Mark Probert wrote:
Hi.
I've looked through docs and snippets and can't seem to find a way to
place parens around a horizontal group of notes (an "optional"
indicator for leadsheets). I've tried
\parenthesiz
elements of Scheme programming. (Mention the word "lambda" once, and
everyone assumes you are a pure functional zealot.) Regardless, I have
tended to favor a more imperative approach lately, something that is
likely to be more consumable for users of LilyPond.
-- Aaron Hill
SRFI says that alist-delete does not modify the original
structure, only that it might return an alist with a common tail.
And on this point, should LilyPond provide an ly:assoc-set to pair with
ly:assoc-get that avoids potential issues with shared structures?
-- Aaron Hill
On 2021-06-29 1:45 pm, David Kastrup wrote:
Aaron Hill writes:
Hrm... would it be better to explicitly alist-copy the result from
ly:assoc-get? Actually, I guess you could do:
(alist-cons 'class ... (alist-delete 'class attribs))
Either that or not even bother about deleting
"File Name =" $#{ \filename #} }
All the more reason to leave 2.18.2 behind and just focus on the newer
versions of LilyPond.
-- Aaron Hill
801 - 900 of 1246 matches
Mail list logo