e \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
,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
; 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
s"
\aBookPart three { c'8 d' e' fis' g' a' b' c'' }
\aBookPart four { c'8 d' e' f' g' a' bes' c'' }
}
-- Aaron Hill
in a function. Though, without parameterization, I would wonder
why you could not just use \book or \bookpart directly.
-- 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
ulation 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
u
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
rops 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
\vcenter. Consider:
\override Score.TimeSignature.stencil =
#(lambda (grob)
(grob-interpret-markup grob #{
\markup {
\musicglyph "timesig.C44"
\vcenter \number 2
} #}))
-- 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
Parsing...
value = 123
Success: compilation successfully completed
-- Aaron Hill
#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
(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
e
number-type = #'arabic
orientation = #'landscape
mute-string = #"M"
label-dir = #LEFT
dot-color = #'black
}
-- Aaron Hill
FretBoard.fret-diagram-details.finger-code = #'below-string
}
-- Aaron Hill
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 =
#'straight
'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
}
>>
\layout {}
\midi {
\context {
\Staff
\consists "Dynamic_performer"
}
\context {
\Voice
\remove "Dynamic_performer"
}
}
}
Whether there are any side effects, I do not know.
-- Aaron Hill
#})
{ b'4 \oo NoteHead.color #red g'4 a'2 }
-- Aaron Hill
#}))
\markup \centered-three-lines
\line { a b c }
\line { d e }
\line { f g h }
-- Aaron Hill
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
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 a li
the LSR one doesn't?
Hmm, I wonder if the snippet author meant: #'(0.5 . -inf.0)
-- Aaron Hill
t #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
ed.eps'...
Converting to PNG...
Deleting `tempo-function.cropped.eps'...
Success: compilation successfully completed
-- Aaron Hill
does other
things, so tightening down the interface as you suggest could be overly
restrictive.
The only addition I would recommend would be to add an informative
warning (or error) should the provided music contain more than one
\tempo command as that would be somewhat ambiguous.
-- Aaron Hill
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
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
oLeft" \new Voice { \PianoLeftMusic }
% . . .
-- Aaron Hill
is #text }
}
#}))
\describeTempo \tempo 4 = 50
\describeTempo \tempo "Text" 8. = 60-70
\describeTempo \tempo \markup \bold "Text"
-- Aaron Hill
\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
with the function should the provided
music not be appropriate.
-- Aaron Hill
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
oonTextItem.annotation-balloon = ##f
\balloonGrobText #'Stem #'(3 . 4) \markup { "I'm a Stem" }
d'4
}
-- Aaron Hill
ppear *above* them. }
music following
}
%%%%
-- Aaron Hill
-/issues/4375
[2]:
http://lilypond.org/doc/v2.21/Documentation/notation/writing-rests#index-length-of-multi_002dmeasure-rest
-- Aaron Hill
he 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
." 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
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
and (ly:pitch? p) (ly:pitch4. }
-- Aaron Hill
ssivo \dynamic p
\override #'(height . 1.5)
\espressivo \dynamic f
}
}
-- Aaron Hill
On 2020-05-27 1:02 am, Valentin Villenave wrote:
On 5/27/20, Aaron Hill wrote:
Apologies for hijacking the thread.
No apology needed.
The link you provided worked for me
without needing an account. What level of access are you talking
about?
Is it something a mere mortal like me (i.e
obal
What am i missing?
You will need to bring in the regular expression module:
\version "2.20.0"
#(use-modules (ice-9 regex))
\markup
#(regexp-substitute/global #f
"[ \t]+"
"this is the test"
'pre "-" 'post)
NOTE: I am using \markup above as a simple way to visualize the
resulting string.
-- Aaron Hill
-edition
[5]: https://racket-lang.org/
[6]: https://htdp.org/
-- Aaron Hill
?
-- Aaron Hill
roperly simulate the accel, rall, and
rit instructions.
Otherwise, this whole thing really looks like a job for a custom
engraver/performer.
-- Aaron Hill
ck 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
hange Staff = lower
a g2
}
-- Aaron Hill
dea 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
t;))
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 '=' tempo_range
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
d 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
with \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
" #'("|." ".|:" #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 "\
uot;Trio" section. As to which, that is probably personal
taste.
-- 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
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
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
the input. Alternately, you can use the --output command-line option to
be explicit about the target file or folder.
-- Aaron Hill
om 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 `\tweak positions`
are-tie ~ b'1
}
%%%%
-- Aaron Hill
of \fill-line within oddHeaderMarkup.
-- Aaron Hill
\Foo.1234
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
color = #blue
4
\parenthesize 2
\parenthesize c4
}
\new Staff \voices 1,2 << \soprano \\ \alto >>
-- Aaron Hill
r = #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
o not need to add the
explicit \bar command:
\set Timing.measureLength = #(ly:make-moment (* 1/4 8/7))
-- 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
-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: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))
c1 | 1 | 1 | 1 |
\context ChordNames = "chrdsII"
{ \set chordChanges = ##f }
1 | 1 | 1 | 1 |
}
>>
}
-- Aaron Hill
ot;
#(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
} 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
{ 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
er using
\etc:
foo =
\tweak Accidental.stencil #ly:text-interface::print
\tweak Accidental.text
\markup \smuflglyph "accidentalHalfSharpArrowUp"
\etc
{ <\foo fis' \foo cis''>8 }
-- Aaron Hill
e \override needs to occur before the syllable that precedes
the hyphen.
-- Aaron Hill
ser 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
; "-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
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's a pair
ch 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
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
-st -x2 t -z +bx4 -x"
Let us say you want a list, not a string. Do you want items like "-a
-x3" to become separate elements? Then an additional usage of
string-split could work. Although then you would have a list of lists.
So in that case, you need to append the individual lists into one:
(apply append
(map
(lambda (str)
(string-split
(regexp-substitute/global #f
"(^-[^x]+)(x)" str
'pre 1 " -" 2 'post)
#\sp))
(string-split "-y -ax3 +rx2 -stx2 t -z +bx4 -x" #\sp)))
("-y" "-a" "-x3" "+rx2" "-st" "-x2" "t" "-z" "+bx4" "-x")
-- Aaron Hill
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
I can tell.
-- Aaron Hill
-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
po \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
((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
701 - 800 of 1246 matches
Mail list logo