Neueste Beiträge

#21
Neue Musik / Antw:Dreieck hinter Noten
Letzter Beitrag von juergen74 - Montag, 20. März 2023, 22:14
... hier noch ein Vorschlag für das Dreieck, mit der script-at-side Funktion von Harm

\version "2.24.0"

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Quelle: https://lilypondforum.de/index.php?msg=5860
#(define script-at-side
   (lambda (grob)
     (let* ((side-axis (ly:grob-property grob 'side-axis)))
       (when (equal? X side-axis)
         (let* ((par-x (ly:grob-parent grob X))
                (par-y (ly:grob-parent grob Y))
                (dir (ly:grob-property grob 'direction))
                (nhd
                 (cond ((grob::has-interface par-x 'note-column-interface)
                        (car
                         (ly:grob-array->list
                          (ly:grob-object par-x 'note-heads))))
                   ((grob::has-interface par-x 'note-head-interface)
                    par-x)
                   ((grob::has-interface par-y 'note-head-interface)
                    par-y)
                   (else (ly:error "Need note-head as parent!"))))
                (nc (ly:grob-parent nhd X))
                (stem (ly:grob-object nc 'stem))
                (nhds (ly:grob-array->list (ly:grob-object nc 'note-heads)))
                (conditional-elts-array
                 (ly:grob-object nc 'conditional-elements #f))
                (conditional-elts
                 (if conditional-elts-array
                     (ly:grob-array->list conditional-elts-array)
                     '()))
                (acc-placement (ly:note-column-accidentals nc))
                (accs
                 (if (ly:grob? acc-placement)
                     (map cadr (ly:grob-object acc-placement 'accidental-grobs))
                     '()))
                (dot-col (ly:note-column-dot-column nc))
                (dots
                 (if (ly:grob? dot-col)
                     (ly:grob-array->list (ly:grob-object dot-col 'dots))
                     '())))

           (ly:grob-set-object! grob 'side-support-elements
             (ly:grob-list->grob-array
              (append
               (list stem)
               conditional-elts
               nhds
               accs
               dots)))

           (ly:grob-set-parent! grob Y nhd)

           (let* ((script-row (ly:grob-object grob 'script-column #f))
                  (script-row-scripts-array
                   (if script-row
                       (ly:grob-object script-row 'scripts #f)
                       #f))
                  (script-row-scripts
                   (if script-row-scripts-array
                       (ly:grob-array->list script-row-scripts-array)
                       '()))
                  (already-offsetted
                   (filter
                    (lambda (sc)
                      (assoc-get
                       'x-offset-done
                       (ly:grob-property sc 'details)))
                    script-row-scripts))
                  (left-done
                   (filter
                    (lambda (sc)
                      (eqv? dir (ly:grob-property sc 'direction)))
                    already-offsetted))
                  (right-done
                   (filter
                    (lambda (sc)
                      (eqv? dir (ly:grob-property sc 'direction)))
                    already-offsetted)))


             (ly:grob-set-object! grob 'side-support-elements
               (ly:grob-list->grob-array
                (append
                 left-done
                 right-done
                 (ly:grob-array->list
                  (ly:grob-object grob 'side-support-elements)))))

             ;; debugging aid
             ;(ly:grob-set-property! grob 'color cyan)
             (ly:grob-set-property! grob 'Y-offset 0)
             (ly:grob-set-nested-property! grob '(details x-offset-done) #t)
             (ly:grob-set-property! grob 'X-offset
               ly:side-position-interface::x-aligned-side)))))))


sideScript =
#(define-event-function (dir mus)(ly:dir? ly:music?)
   #{
     \tweak before-line-breaking #script-at-side
     \tweak side-axis #X
     \tweak direction #dir
     $mus
   #})

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% override stencil
tweakPrall = -\tweak stencil
#(lambda (grob)
   (ly:make-stencil
    '(path 0.1
       ( lineto 0.5 0.5
         lineto 0.5 -0.5
         closepath)
       round
       round
       #t)   
    ; x-extend 
    (cons -0.1 1.5)
    ; y-extend
    (cons 0 1))) \prall

% shortcut
tri =  \sideScript #1 \tweakPrall

% example
{
  f' \tri
  g' \tri
}

Grüße, Jürgen.
#22
Neue Musik / Antw:Dreieck hinter Noten
Letzter Beitrag von juergen74 - Montag, 20. März 2023, 20:42
Hallo Jonas,

einige Beispiele
\version "2.24.0"

% shortcuts
% Nennt man das 'mute' oder 'chuck'?
mute = { \once \override NoteHead.style = #'xcircle }

{
  \parenthesize c'

  \mute d'

  d'^\lheel

  c'^\rheel
}

Aus der Zeichenerklärung werde ich teilweise nicht ganz schlau. Kannst du vielleicht eine kurze Melodie mit Lilypond erzeugen und dann mit Paint o.ä. einzeichnen, wie genau das aussehen soll?

Grüße, Jürgen.
#23
Fragen und Probleme aller Art / Antw:Plazierung von Tempo Anga...
Letzter Beitrag von Swetom2011 - Montag, 20. März 2023, 18:20
I found something which works in https://lilypondforum.de/index.php/topic,1179.msg6261.html#msg6261 but by setting
\override Score.MetronomeMark.self-alignment-X = -0.8

If this the best method, I don't know but I was able to shift the \temp to start above the "C".

#24
Fragen und Probleme aller Art / Volta-Klammer erscheint doppel...
Letzter Beitrag von Radler - Montag, 20. März 2023, 16:49
Hallo liebe LilyPondianer,
bei neueren LilyPond-Versionen (speziell 2.25.1, aber auch schon in den letzten Monaten) erscheint die Volta-Klammer mehrfach.
\remove "Volta_engraver" an Staff und Voice hat keine Wirkung.
Hat jemand eine Idee, woran ich drehen muss?
Grüße und Dank
von Radler
Du darfst diesen Dateianhang nicht ansehen.
#25
Fragen und Probleme aller Art / Antw:Welcher Takt ist auf welc...
Letzter Beitrag von thomas - Montag, 20. März 2023, 16:48
Tut beides wie gewünscht.

Danke.
#26
Gitarre/Laute / Antw:Skala (à la Pentatonik) a...
Letzter Beitrag von juergen74 - Montag, 20. März 2023, 15:47
Hallo,
siehe Notation Reference 2.4 Fret Diagram Markups und NR A12.6 Instrument Specific Markup.

z.B.
\version "2.24.0"

\new Staff{
  c'1^\markup \fret-diagram-terse #"2 4 6;x;o;1 2;3 9;1 5 12;"

  <d a d' f'>1^\markup {
    \fret-diagram-verbose #'(
                              (mute 6)
                              (place-fret 6 2)
                              (place-fret 6 4)
                              (place-fret 6 5)
                              (place-fret 6 8)
                              (mute 5)
                              (open 4)
                              (place-fret 3 2)
                              (place-fret 3 5)
                              (place-fret 2 3)
                              (place-fret 1 1)
                              )
  }
}

Grüße, Jürgen.
#27
Fragen und Probleme aller Art / Antw:Plazierung von Tempo Anga...
Letzter Beitrag von Swetom2011 - Montag, 20. März 2023, 15:43
@Malte
Es ist nicht ganz einfach ein Minimalbeispiel zu machen, weil ich aus etwa 90 Lilypond Dateien die Partitur (A3 Größe) und die 32 Einzelstimmen (A4 Größe) generiere, aber ich werde es versuchen.

Die Datei (global. Ily) oben der das Tempo etc setzt, ist natürlich denkbar einfach, aber bringt alleine wahrscheinlich nichts.

Für mich sieht es so aus, dass die Skalierung auf A3 bzw. A4 etwas damit zu tun hat, weil die A4 Seiten alle ganz ,,normal" aussehen.

Jedenfalls, ich füge die Datei global.ily
als Information bei und versuche ein Minimalbeispiel zu generieren, obwohl ich nicht viel Hoffnung habe, dass ich es schaffe aus 90 Dateien ein aussagekräftiges Beispiel mit wenigen Zeilen zu etablieren.
#28
Fragen und Probleme aller Art / Antw:Plazierung von Tempo Anga...
Letzter Beitrag von Malte - Montag, 20. März 2023, 12:37
Hallo Swetom,

bitte füge den Code nicht als Bild, sondern mit Code-Tags ein, und poste ein Minimalbeispiel. Aus der Ferne kann ich sonst dazu nichts sagen.

Viele Grüße
Malte
#29
Fragen und Probleme aller Art / Plazierung von Tempo Angabe
Letzter Beitrag von Swetom2011 - Montag, 20. März 2023, 08:48
Ich kämpfe etwas mit die Platzierung von die tempo Angabe.  Dazu benutze ich für die Partitur wie auch für die einzelne Instrument Stimmen ein gemeinsamen Lilypond-Datei der unter Anderen \key, \time, \tempo, ,,rehearsal marks", \bar etc. setzt, siehe unten.
Du darfst diesen Dateianhang nicht ansehen.

In den 32 einzelne Stimmen sind, meines Erachtens, die Tempoangabe richtig platziert aber im Partitur etwas zu weit rechts.  Wie kann man das korrigieren?

Bisher habe ich mit self-alignment-X = etc (aus Snippet Repository) versucht, aber es hat nicht gebracht.

Violinstimme
Du darfst diesen Dateianhang nicht ansehen.

Partitur
Du darfst diesen Dateianhang nicht ansehen. 
#30
Fragen und Probleme aller Art / Antw:Welcher Takt ist auf welc...
Letzter Beitrag von harm6 - Samstag, 18. März 2023, 13:10
Hallo Thomas,

die angefragten Zahlen sind natürlich erst erhältlich, nachdem das ganze layout fest gekloppt ist.
Aber es gibt ja `page-post-process' in \paper den man dafür nutzen kann:

\version "2.19.32"

#(define* (get-pages-line-measures layout pages #:optional print-to-file)
  "If @var{print-to-file} is set #t the output is written to a file named like
current one, with attached `-pages-lines-measures.log', otherwise the output is
usually displayed in Terminal"
  (let* ((first-page-number (ly:prob-property (car pages) 'page-number))
         (port #t)
         (lines (map (lambda (page) (ly:prob-property page 'lines)) pages))
         ;; List of systems of each pages
         (page-systems
           (map
             (lambda (line)
               (append-map
                 (lambda (l) (list (ly:prob-property l 'system-grob #f)))
                 line))
             lines))
         ;; Get (NonMusical)PaperColumns per line and page
         (columns-locations
           (map
             (lambda (page-system)
               (map
                 (lambda (systems)
                   (and
                     systems
                     ;; Last column has the same rhythmic location as the first
                     ;; of the new line, we simply drop it.
                     (drop-right
                       (map
                         grob::rhythmic-location
                         ;; TODO safe to assume always a grob-array?
                         (ly:grob-array->list
                           (ly:grob-object systems 'columns)))
                       1)))
                 page-system))
             page-systems))
         ;; Get first/last rhythmic location of each relevant
         ;; (NonMusical)PaperColumn, keep only bar number, drop the moment.
         (line-measures
           (map
             (lambda (col-locs)
               (map
                 (lambda (x)
                   (if (pair? x)
                       (list (caar x) (car (last x)))
                       x))
                 col-locs))
             columns-locations)))

    ;; Write to a log-file if `print-to-file' is true
    (if print-to-file
        (let* ((output-name (ly:parser-output-name))
               (outfilename
                 (format #f "~a-pages-lines-measures.log" output-name)))
          (set! port (open-output-file outfilename))))
    (for-each
      (lambda (i measures)
        (format port "\nOn page ~a:\n" (+ i first-page-number))
          (if (any number-list? measures)
              (for-each
                (lambda (x)
                  (format port "~3tLine from ~a to ~a\n" (car x) (last x)))
                (filter number-list? measures))
              (format port "~3tno measures\n")))
       (iota (length pages) 0 1)
       line-measures)

    (if (output-port? port)
        (close-output-port port))))

\paper {
  %% first-page-number is taken into account
  %first-page-number = 3
  #(define (page-post-process layout pages)
    (get-pages-line-measures layout pages #f))
}

%%%%%%%%%%%%%%%%%%%%%%%
%% EXAMPLES
%%%%%%%%%%%%%%%%%%%%%%%

{
  %\repeat unfold 1000 { c'1 }

  \repeat unfold 32 {c'32}
  \repeat unfold 999 { c'1 }
}

%% Advanced examples:
%{
\header { title = "TITLE" }

\pageBreak

\score {
    \new Staff {
        \repeat unfold 2 {
          \time 4/4 c''1
          \time 3/4 d''2.
          \time 3/8 e''8 8 8
        }
    }
}

\pageBreak

\markup "MARKUP"

\pageBreak

\score {
  \new Staff {
    \repeat unfold 2 {
      \time 4/4 c''1
      \time 3/4 d''2.
      \pageBreak
      \time 3/8 e''8 8 8
    }
  }
}

\score {
  \new Staff {
    \repeat unfold 2 {
      \time 4/4 c''1
      \time 3/4 d''2.
      \time 3/8 e''8 8 8
    }
  }
}
%}

Der Code ist auch angehängt.
Wenn Du in
    (get-pages-line-measures layout pages #f)
#f zu #t änderst bekommst Du `print-bar-numbers-on-page-01-pages-lines-measures.log'

HTH,
  Harm

EDIT: Kleine Code-Korrektur
EDIT: c/p Fehler eliminiert
Du darfst diesen Dateianhang nicht ansehen.