Dear Greg,

For the umlaut, as long as you enter the character with umlaut into the file, it should work. for Example, on vim I type <ctrl>-K, then colon (:), then "o", and it enters ö.

For the second question, I found https://lsr.di.unimi.it/LSR/Snippet?id=1008 (also attached to this email) but it unfortunately requires a lot of copy-pasting. If you add "\version "2.21.2"" and then run convert-ly it looks like it still works on 2.25.4.

For the third I hacked together the following, which you can tinker with to your liking

% ----------
\version "2.25.4"

\relative c' {
  c4 d e f | \mark \markup \smaller {\super\combine \draw-line #'(2 . 0) \arrow-head #X #LEFT ##t \rhythm {2 } = \rhythm { 4 } \super\combine \draw-line #'(-2 . 0) \arrow-head #X #RIGHT ##t} g4
}
% ----------

Thanks,
-William

On 5/20/23 22:42, Greg Lindstrom wrote:
Good evening -

Let me start off by saying I'm loving working with lilypond to engrave music. Well Done!!

Questions. How can I do this (an umlaut over the o??)

        image.png

And on tempo markings (the "ca." after the equal sign. I could do it as all text but wanted to know if there's a more "lilypond" way to do it).

        image.png


And as long as I'm asking (and you're still reading). How about this (a half note = a quarter note. I'd be happy to do it without the arrows -- which I think borders on silly -- but I'll give extra credit):

        image.png

Thanks for any help you can provide. I have the Lilypond 2.12 Notation Reference so if you even point me to the section to reference I'll work it out.

Kind Regards,
--greg

--
+ ------------------------------------------- +
|   William Rehwinkel - Oberlin College and   |
|                          Conservatory '24   |
|[email protected]          |
| PGP key:                                    |
|https://ftp.williamrehwinkel.net/pubkey.txt  |
+ ------------------------------------------- +

%%
%  Metronome markup formatter, with more options than the Lilypond
%  default formatter, and changes in sizing (see below).
%  Properties read:
%  - tempoEquationText:    text to be put between note and tempo value(s)
%                          Default: "="
%  - tempoBetweenText:     text to be put between the tempo values. Used
%                          only in ranges of tempo values.
%                          Default: "-"
%  - tempoHideParenthesis: boolean. If true, the parenthesis are hide.
%                          Default: false.
%  - tempoNumberColor:     color. If set, the tempo value will be formatted
%                          to this color.
%                          Default: not set.
%  The size of the text ("Allegro" etc) is a bit larger than Lilypond default.
%  Similarly, the size of the note is smaller than Lilypond default.
%
%  To use this snippet, just \include this file. To revert default
%  Lilypond formatter inside the score:
%  \set Score.metronomeMarkFormatter = #format-metronome-markup
%
%  tested: Version "2.21.2"
%
%  This snippet is based on a snippet by Arnold Theresius. The original
%  snippet create a formatter called  "format-metronome-markup-approx",
%  and the default value to tempoEquationText in that snippet is "≈".
%  I changed back this default to Lilypond default, and added the
%  tempoBetweenText property.
%
%  Original header of the Theresius snippet:
%% http://lsr.di.unimi.it/LSR/Item?id=869

%by: ArnoldTheresius

%tested: Version "2.21.2"


% lilypond 2.14.x:
% Almost copied from .../scm/translation-functions.scm:
% --> added »-approx« to the function names of
%     »format-metronome-markup« and »metronome-markup«
% --> replaced "=" with "≈" (approx. instead of equal)

#(define-public (format-metronome-markup-custom event context)
  (let ((eq-sym-def (ly:context-property context 'tempoEquationText))           
  ; added option
        (bet-sym-def (ly:context-property context 'tempoBetweenText))           
  ; added option
        (hide-paren (eq? #t (ly:context-property context 
'tempoHideParenthesis))) ; added option
        (num-color (ly:context-property context 'tempoNumberColor #f))          
  ; added option
        (hide-note (ly:context-property context 'tempoHideNote #f))
        (text (ly:event-property event 'text))
        (dur (ly:event-property event 'tempo-unit))
        (count (ly:event-property event 'metronome-count)))

    (metronome-markup-custom text dur count hide-note eq-sym-def bet-sym-def 
hide-paren num-color)))

#(define-public (metronome-markup-custom text dur count hide-note eq-sym-def 
bet-sym-def hide-paren col)
  (let* ((note-mark (if (and (not hide-note) (ly:duration? dur))
                        (make-teeny-markup                            ; note 
smaller than Lilypond default
                         (make-note-by-number-markup (ly:duration-log dur)
                                                     (ly:duration-dot-count dur)
                                                     1))
                        #f))
         (count-markup (cond ((number? count)
                              (if (> count 0)
                                  (number->string count)
                                  #f))
                             ((pair? count)
                              (make-concat-markup
                               (list
                                (number->string (car count))
                                (ly:wide-char->utf-8 #x2009)      ; x2009: 
"thin space"
                                (if (string? bet-sym-def)
                                    bet-sym-def
                                    (ly:wide-char->utf-8 #x2013)) ; x2013: "en 
dash"
                                (ly:wide-char->utf-8 #x2009)      ; x2009: 
"thin space"
                                (number->string (cdr count)))))
                             (else #f)))
         (note-markup (if (and (not hide-note) count-markup)
                          (make-concat-markup
                           (list
                            (make-general-align-markup Y DOWN note-mark)
                            " "
                            (if (string? eq-sym-def)
                                eq-sym-def
                                (ly:wide-char->utf-8 #x3d))
                            " "
                            (if (eq? col #f)
                                count-markup
                                (make-with-color-markup col count-markup))))
                          #f))
         (text-markup (if (not (null? text))
                          (make-large-markup (make-bold-markup text)) ; text 
larger than Lilypond default
                          #f)))
    (if text-markup
        (if (and note-markup (not hide-note))
            (make-line-markup (list text-markup
                                (if hide-paren
                                    note-markup
                                    (make-concat-markup
                                     (list "("
                                           note-markup
                                           ")")))))
            (make-line-markup (list text-markup)))
        (if note-markup
            (make-line-markup (list note-markup))
            (make-null-markup)))))

% Avoid errors of not defined properties
#(define (define-translator-property symbol type? description)
  (if (not (and (symbol? symbol)
                (procedure? type?)
                (string? description)))
      (ly:error "error in call of define-translator-property"))
  (if (not (equal? (object-property symbol 'translation-doc) #f))
      (ly:error (_ "symbol ~S redefined") symbol))

  (set-object-property! symbol 'translation-type? type?)
  (set-object-property! symbol 'translation-doc description)
  symbol)

#(for-each
  (lambda (x)
    (apply define-translator-property x))
  `((tempoHideParenthesis
     ,boolean?
     "Hide the parenthesis around the metronome markup with text")
    (tempoEquationText
     ,string?
     "initially ''='' in the metronome markup")
    (tempoBetweenText
     ,string?
     "initially ''-'' in the metronome markup")
    (tempoNumberColor
     ,list?
     "alternate color, in which the tempo value should be displayed")))

% Sets this formatter as default formatter
\layout {
  \context {
    \Score
    metronomeMarkFormatter = #format-metronome-markup-custom
  }
}

%%% END of snippet. Below is an example of use
\paper {
  system-system-spacing.basic-distance = #18
  tagline = ##f
}

%\markup { \null \translate #'( 1 . -3 ) \null } % 2.14.2 LSR problem workaroud

\score {
  \new Staff {
    \tempo 4 = 80
    c'1^" "_"»originally after included this code sample«"
    \tempo "Allegro di Largo" 4 = 84
    c' \break

    \once \set Score.tempoHideParenthesis = ##t
    \set Score.tempoEquationText = "≈"
    \tempo "Allegro di Larghetto" 4 = 88
    c'^" "_"\\once \\set Score.tempoHideParenthesis = ##t"
    \break

    \set Score.tempoEquationText = "= ca."
    \tempo "Allegro lento" 4 = 96
    c'^" "_"\\set Score.tempoEquationText = \"= ca.\""
    \break

    \unset Score.tempoEquationText
    \once \set Score.tempoNumberColor = #red
    \tempo 4 = 108
    c'^" "_"\\unset Score.tempoEquationText   \\set Score.tempoNumberColor = 
#red"
    \break

    \set Score.tempoNumberColor = #blue
    \set Score.tempoEquationText = "="
    \set Score.tempoBetweenText= "~"
    \tempo "Allegro monumentale" 4 = 80-88
    c'^" "_\markup \column { 
            "\\set Score.tempoNumberColor = #blue"
            "\\set Score.tempoEquationText = \"=\""
            "\\set Score.tempoBetweenText= \"~\""
    }
    \break

    \set Score.metronomeMarkFormatter = #format-metronome-markup
    \override TextScript.outside-staff-priority = #1000
    \tempo "Tempo I" 4 = 80
    c'^" "_\markup \column {
      "\\set Score.metronomeMarkFormatter = #format-metronome-markup"
      "(which is LILYPOND's default Metronome Mark Formatter)"
    }

    \bar "|."
  }
  \header {
    piece = \markup \column {
      "»Score.metronomeMarkFormatter = #format-metronome-markup-custom«"
      "is assigned by a layout definition in this example"
      %\null
    }
  }
}

Attachment: OpenPGP_signature
Description: OpenPGP digital signature

Reply via email to