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/
On 2020-10-05 10:35 am, Matthew Fong wrote:
Hello Aaron,
Thank you for your help. That does make sense to me and works out quite
well -- I don't yet have a grasp how various commands and settings are
actually working in LilyPond. I found another example in the LilyPond
documentation that
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
On 2020-10-07 8:44 am, Matthew Fong wrote:
Hello Aaron,
I did find an issue with your syllable function. It seems to swallow up
dots, that is, if I take your sample code
\syllable { a'\( \melisma c'' b'\tenuto \melismaEnd }
and add a dot, it is ignored. I am playing aroun
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
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
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
) (#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
o use \vcenter. Consider:
\override Score.TimeSignature.stencil =
#(lambda (grob)
(grob-interpret-markup grob #{
\markup {
\musicglyph "timesig.C44"
\vcenter \number 2
} #}))
-- 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
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
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
\\ { 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
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
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
\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
ach, there is no need to mess about with "absolute"
measurements. Staff space units are generally pretty nice to work with
anyway.
-- 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
uot;2.18.2"
\score {
\header { piece = asdf }
{ \time 3/4 a'2 b'4 \bar "|." }
}
-- Aaron Hill
hem and then hiding
the connecting bar.
That's the SystemStartBar.
\layout {
\context {
\Score
\omit SystemStartBar
}
}
-- 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
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
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
them in a function. Though, without parameterization, I would wonder
why you could not just use \book or \bookpart directly.
-- 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
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
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
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
.ly'
Parsing...
value = 123
Success: compilation successfully completed
-- 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
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
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
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
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
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
" #'("|." ".|:" #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
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 "\
he "Trio" section. As to which, that is probably personal
taste.
-- Aaron Hill
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
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
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
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
"Arno Pro Regular," as the font name. Note the intentional trailing
commas there.
-- 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
\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
noteblocks?
-- 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
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
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
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 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
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
((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-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
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
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
hieve.
[1]: http://lsr.di.unimi.it/LSR/Item?id=1029
-- Aaron Hill
e X11 names only.
Not being able to specify a literal color feels inconsistent and
arbitrarily restrictive.
-- 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
>>
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
(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
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
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
%%%
\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
\consists the Mark_engraver but
with a downward direction.
-- 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
it requires the
figures to be input a bottom-up order.
-- 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
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
20.0"
{ a'4 b'2 }
\addlyrics {
\markup { \bold a \italic b }
\markup { \box c \circle d }
}
-- 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
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
rking in. But I am hopeful the
above may help you refactor your function into a form that could work.
-- 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
% 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
On 2020-11-27 2:56 pm, Matthew Fong wrote:
Hello Aaron,
Ah, I didn't dig deeply enough!
https://lilypond.org/doc/v2.20/Documentation/notation/flexible-vertical-spacing-within-systems#within_002dsystem-spacing-properties
https://lilypond.org/doc/v2.20/Documentation/notation/flexible-ver
On 2020-11-27 4:28 pm, Matthew Fong wrote:
Hello Aaron,
With respect to the scale factor of 5 that you are using. Is that
depending
on staff size?
I'm using #(layout-set-staff-size 18) at the moment.
Yes, my comment mentioned the default staff space as 5pt. That is a
20pt staff
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
,(/ dx 3) 0
,dx ,(* 0.66 delta-y)
,dx ,delta-y)
-- Aaron Hill
lMark #Y 0.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
Staff \with { instrumentName = \foo }
{ \repeat unfold 16 { b'4 4 2 } \bar "|." }
-- Aaron Hill
t; % hidden
\print-if-defined #'symA "Text" % shown, green
\print-if-defined ##t #'symA "Text" % shown, red
-- Aaron Hill
On 2020-12-11 12:30 pm, Matthew Fong wrote:
Hello Aaron,
.< Oh boy, that is *simple*. I went off the deep end on this, trying
to
make another variable that would get assigned the color. That clearly
is
not the way Scheme works. The inline conditional is a thing of beauty.
Looks like I n
ext { \Score
drumPitchTable = #(alist->hash-table midiDrumPitches)
} }
\score {
\drums { \repeat unfold 8 { mb4 mc mc mc } }
\midi { \tempo 4 = 90 }
}
-- Aaron Hill
arguments for \clip assume relative coordinates (e.g. LEFT/DOWN =
-1, CENTER = 0, RIGHT/UP = 1). This seemed easier to work with than
absolute extents.
-- Aaron Hill
4 { b'2 b' } % same, but using \times
| \tuplet 4/3 { b'2 b' } % same, but using \tuplet
}
\tuplet and \times differ only on the order of numerator/denominator.
-- Aaron Hill
lower) (up . middle))
\autochange { a4 b d' e' }
\replaceContextChanges #'((down . middle) (up . upper))
\autochange { a4 b d' e' }
\replaceContextChanges #'((down . upper) (up . lower))
\autochange { a4 b d' e' }
} >>
-- Aaron Hill
ffset and Y-offset properties:
\version "2.20.0"
{
\stemDown
e' -\offset X-offset #0.3
-\offset Y-offset #1.5
_+ \p
e' _1 \p
}
-- Aaron Hill
ot;
}
\score {
\relative 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
ons is like \with-dimensions but 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
m (step . 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
=> 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
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
you
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
and strip 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
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
%%%
\version "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
operties (note-by-number-markup)
(if (string? duration)
(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
701 - 800 of 1690 matches
Mail list logo