property = #'value
% ...to...
\override Thing.property.sub-property = #'value
It does not however seem to correct:
variable #'key = #'value
% ...to...
variable.key = #'value
-- Aaron Hill
\override 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
e 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
% Default 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
ic-descriptions new-descriptions) alist, duration=#
[data] value=3
[note] pitch=#, duration=#
[data] value="foo"
[note] pitch=#, duration=#
Success: compilation successfully completed
-- Aaron Hill
rking in. But I am hopeful the
above may help you refactor your function into a form that could work.
-- Aaron Hill
mitations on what types of
data can appear, but it is certainly an option to consider.
\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
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
20.0"
{ a'4 b'2 }
\addlyrics {
\markup { \bold a \italic b }
\markup { \box c \circle d }
}
-- Aaron Hill
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
x27;text)
} #})
%% 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
it requires the
figures to be input a bottom-up order.
-- Aaron Hill
ff <<
{ \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
\consists the Mark_engraver but
with a downward direction.
-- Aaron Hill
%%%
\version "2.20.0"
baz = #(list #{ \score { { b'1 } } #}
#{ \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
ded music:
\version "2.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
t you have 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
(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 in the
>>
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 in the Notation Reference, changing associatedVoice
must occur one syllable early to have the desired effect.
-- Aaron Hill
holeNoteTremolo #'(-4.4 . 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
e X11 names only.
Not being able to specify a literal color feels inconsistent and
arbitrarily restrictive.
-- Aaron Hill
hieve.
[1]: http://lsr.di.unimi.it/LSR/Item?id=1029
-- Aaron Hill
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
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
((stencil . #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-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
anyone point me to installation instructions 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 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 no
ride Staff.Clef.extra-spacing-width = #'(-1 . 0)
\clef bass
Seeing as the grace note affects spacing, I added a suitable spacing
modifier.
-- Aaron Hill
] filed requesting a
MusicXML backend to LilyPond, which would enable it to output that
format.
[2]: https://gitlab.com/lilypond/lilypond/-/issues/665
-- Aaron Hill
noteblocks?
-- Aaron Hill
\unfoldRepeats, LilyPond cannot obey other
instructions to "da capo" or "dal segno al coda". Users who want the
MIDI to be accurate will have to manually rejuggle their music anyway.
-- Aaron Hill
a centered LyricHyphen
between two LyricTexts. Saying "letz-te" counts as a single LyricText.
\version "2.20.0"
\relative c' {
\autoBeamOff
\set melismaBusyProperties = #'()
r8 f f[ b] b[ c c d] |
}
\addlyrics {
Der letz -- te Sum -- mer war sehr |
}
-- Aaron Hill
"Arno Pro Regular," as the font name. Note the intentional trailing
commas there.
-- Aaron Hill
he logic to look for typed music:
% . . .
guitbarre =
#(define-music-function (barre location str music) (string? ly:music?)
(let ((elts (extract-typed-music music '(rhythmic-event
% . . .
-- Aaron Hill
On 2020-10-26 10:56 pm, Aaron Hill wrote:
On 2020-10-26 10:54 pm, Aaron Hill wrote:
On 2020-10-26 7:37 pm, 98123981293 1293812397123 wrote:
Hi list,
I usually use the following snippet to handle glissandi across hidden
noteheads:
glissandoSkipOn = {
\override NoteColumn.glissando-skip
On 2020-10-26 10:54 pm, Aaron Hill wrote:
On 2020-10-26 7:37 pm, 98123981293 1293812397123 wrote:
Hi list,
I usually use the following snippet to handle glissandi across hidden
noteheads:
glissandoSkipOn = {
\override NoteColumn.glissando-skip = ##t
\hide NoteHead
\override
veto ,(/ dx 3) 0 ,dx ,(* dy 2/3) ,dx ,dy)))
(cons (- lx sx) (- rx sx))
(cons (+ 0.5 (min 0 dy)) (+ 0.5 (max 0 dy))
bendGlissando =
\tweak thickness #2
\tweak stencil #bend-glissando-print
\glissando
{ c''2. \bendGlissando
\once \override NoteColumn.glissando-skip = ##t
e'4 gis'1 }
-- Aaron Hill
he "Trio" section. As to which, that is probably personal
taste.
-- Aaron Hill
On 2020-10-25 6:25 am, Christian Masser wrote:
Aaron Hill schrieb am So., 25. Okt. 2020,
04:38
You have to use a special bar line type when it breaks across a line:
\version "2.20.0"
\paper { indent = 0 line-width = 3\cm ragged-right = ##f }
\markup \bold \typewriter "\
" #'("|." ".|:" #f)
\markup \bold \typewriter "\".|:-|.\""
{ R1 \bar ".|:-|." \break R1 }
As shown in the second example, sometimes you need to define your own
custom type if LilyPond does not provide what you need already.
-- Aaron Hill
ies?
I am wondering if your usage is confusing the Tie_performer, and we need
to get a bug filed to fix that.
-- Aaron Hill
e ties unsupported? It would be a
pity to redo hundreds of pages just for the MIDI version of the score.
Do you have a MWE that shows how you do things? The following works
fine:
\version "2.20.0"
\score{
{ \time 3/4 4 ~ 4 ~ 4
4 }
\layout {} \midi {}
}
-- Aaron Hill
that spacing may be just at a cusp where it could fit to three
systems but LilyPond decides to throw in a fourth system. Thus then the
notes are forced to space further apart to fill the extra system.
Just a thought.
-- Aaron Hill
Number =
#(define-music-function
(number) (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
partName
(if (defined? 'part)
(string-append "S" (number->string part))
""))
Use formatted output instead of manual string conversion/concatenation.
(define partName
(if (defined? 'part)
(format #f "S~d" part)
""))
-- Aaron Hill
rmat #f "S~d" (@ (guile-user) part)))
""))
Interesting. I don't understand the '@' syntax -- been trying to look
it
up but so far to no avail.
https://www.gnu.org/software/guile/docs/docs-1.8/guile-ref/Using-Guile-Modules.html#Using-Guile-Modules
-- Aaron Hill
.ly'
Parsing...
value = 123
Success: compilation successfully completed
-- Aaron Hill
ur 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
ore { \music \layout {} }
\score { \articulate \music \midi {} }
You can use tags to mark things for MIDI only:
\version "2.20.0"
\include "articulate.ly"
music = { c'2\tag #'midi ( d'4 e' f'1 \tag #'midi ) }
\score { \removeWithTag #'(midi) \music \layout {} }
\score { \articulate \music \midi {} }
-- Aaron Hill
ulate it is of course fine.
I'm missing something fundamental.
That's one of the features of \articulate. Absent of instruction to
keep notes legato, it shortens the length of notes to slightly detach
them.
-- Aaron Hill
get (if (pair? key) (car key) key) alist args)))
foo.one.two.three.four = "!"
\markup #(assoc-get* '(one two three four) foo "?")
\markup #(assoc-get* '(one two five six seven) foo "?")
-- Aaron Hill
them in a function. Though, without parameterization, I would wonder
why you could not just use \book or \bookpart directly.
-- Aaron Hill
ymbol->string name)
\score { $music }
} #}))
\book {
\bookOutputSuffix "bookparts"
\aBookPart three { c'8 d' e' fis' g' a' b' c'' }
\aBookPart four { c'8 d' e' f' g' a' bes' c'' }
}
-- Aaron Hill
t;treble_8"
\voices 1,4,2 <<
\classicalGuitarA \\
\classicalGuitarB \\
\classicalGuitarC
>>
}
That's the closest I can get it to match.
NOTE: I am using a newer version of LilyPond that supports the \voices
command.
-- Aaron Hill
uot; hymnAlist "error")
\markup \hymnValue
Jean already covered the bit about quasi-quoting.
But there is no need to do this as you can store values in an alist
using dot syntax in LilyPond:
hymn.id = "643"
hymn.meter = "6 6 11 6 6 11 D"
\markup #(ly:assoc-get 'id hymn "no value")
\markup #(ly:assoc-get 'tune hymn "no value")
\hymn automatically is an alist.
-- Aaron Hill
hem and then hiding
the connecting bar.
That's the SystemStartBar.
\layout {
\context {
\Score
\omit SystemStartBar
}
}
-- Aaron Hill
uot;2.18.2"
\score {
\header { piece = asdf }
{ \time 3/4 a'2 b'4 \bar "|." }
}
-- Aaron Hill
md5 9e62046ed1eda2d79bc70b01c6b20476
sha256 4ee344b2463aa37fcd5ccb6e40e205b94a3b4c7433b0eae340e2855805f80859
Seems something is afoot with your VM. Curious if you get the same
behavior using `curl -O ...` compared to wget.
-- Aaron Hill
ach, there is no need to mess about with "absolute"
measurements. Staff space units are generally pretty nice to work with
anyway.
-- Aaron Hill
\visualizeBounds normal
\abs-translate #(cons (ly:cm 4) 0)
\abs-override #(cons 'line-width (ly:cm 2.5))
\with-color #'(0.2 0.5 0.8)
\visualizeBounds right
}
-- Aaron Hill
he RestCollision behavior seen is a bug
and that bug is resolved at a future time, it is much easier to find and
remove usage of \split or just make \split a dummy function that does
not modify music.
-- Aaron Hill
x27;hufnagel \break
2. r4 \override Staff.Custos.style = #'mensural \break
2. r4^\markup \transparent \draw-line #'(9 . 0) }
The above hack does nothing more than add a fake NoteHead that overlaps
the Custos grob so that the LedgerLineSpanner does its magic.
-- Aaron Hill
\\ { g,4 fis, f, } >>
}
Changing minimum-distance might be your best option to avoid needing to
manually adjust and/or specify the staff-position for rests.
-- Aaron Hill
s in the middle of the measure. It only happens when an alternate
ending doesn't contain a full measure of notes.
Any thoughts? I really appreciate you guys.
Don't you need to \unfoldRepeats when doing MIDI output?
\score {
\new Staff \unfoldRepeats \rightHand
\midi { }
}
-- Aaron Hill
is to zero
will round the values to be exactly on the staff line. Using (* 0.5
dir) would result in a position exactly halfway between staff lines.
Finally, my rationale for (* 3 th dir) is to use the thickness of the
staff lines to help position the tie to be reasonably close to the line.
-- Aaron Hill
havior only reproduces
using the SVG backend.
This is a bug in 2.20.0 and earlier, where \line { "" } does not resolve
to an empty-stencil but rather a point-stencil, so it ends up taking up
space when it should not.
This appears to have been resolved in 2.21.x.
-- Aaron Hill
o use \vcenter. Consider:
\override Score.TimeSignature.stencil =
#(lambda (grob)
(grob-interpret-markup grob #{
\markup {
\musicglyph "timesig.C44"
\vcenter \number 2
} #}))
-- Aaron Hill
) (#props args)> (""
xex=(+inf.0 . -inf.0)
yex=(+inf.0 . -inf.0)
arg=(# ((#line-markup (layout props args)> (" ")) (#props args)> (" "
xex=(0.0 . 0.614579527559055)
yex=(-3.0 . 0.0)
Same output for:
version=(2 19 55)
version=(2 20 0)
version=(2 21 6)
-- Aaron Hill
ent to sample it, you
will have to seek out a good existing SoundFont/SFZ and then modify the
pitch range of the extremal samples to extend them as far as you need.
-- Aaron Hill
options. Note that each articulation has its
own preferred spacing and alignment, so you may need to play around a
bit to find one that matches your needs.
-- Aaron Hill
On 2020-10-07 5:00 pm, Andrew Bernard wrote:
Has anybody written a script to find the highest and lowest notes in a
part or a score etc?
Seems like something the Ambitus_engraver would help with.
In what format do you need the information?
-- Aaron Hill
s so that they would
scale properly and be consistent from measure to measure. Try changing
the "2*4" in the second note group to "2*3" or "2*5" and note how the
entire spacing of the piece is impacted.
-- Aaron Hill
shape might even be better, but since we have
code
out there that uses \shape but is not \shapeII compliant, we can't
really
use \shape.
\reshape ?
-- Aaron Hill
h more flexibility at the cost of no longer automatically
adding \melisma/\melisaEnd nor Slurs. In fact, the example shows a
PhrasingSlur starting in one "syllable" ending in the following.
NOTE: This function does not handle chords properly.
-- Aaron Hill
le { b' } }
\addlyrics { lor -- em i -- psum }
Note that if you wanted the default behavior to be slurred, change the
type predicate from (symbol? #f) to (symbol? 'slurred). Then you can
simply specify any other symbol (such as "unslurred") to opt for the
original \melisma/
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
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
'(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
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
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
oLeft" \new Voice { \PianoLeftMusic }
% . . .
-- 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
." 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
/lilypond/-/issues/4375
[2]:
http://lilypond.org/doc/v2.21/Documentation/notation/writing-rests#index-length-of-multi_002dmeasure-rest
-- Aaron Hill
ill appear *above* them. }
music following
}
%%%%
-- 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
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
(m)
(let ((p (ly:music-property m 'pitch)))
(if (and (ly:pitch? p) (ly:pitch4. }
-- Aaron Hill
amic pp
\override #'(width . 2.8)
\espressivo \dynamic p
\override #'(height . 1.5)
\espressivo \dynamic f
}
}
-- 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
;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
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
4 | f'8 d' c'
\change Staff = lower
a g2
}
-- 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
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
el awkward and
potentially circuitous. Initially, I had no idea what you intended to
do with the information from the \tempo command. Now, it is as if all
you need is a normal MetronomeMark aligned to the end of a TextSpanner.
After all, reusing is preferred to reinventing.
So while you could continue to develop the function above, perhaps time
would be better spent solving the underlying issues that necessitated
creating this function in the first place. Though, that discussion
would likely merit its own thread.
-- 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
401 - 500 of 1246 matches
Mail list logo