Dreieck hinter Noten

Begonnen von soloquintett, Freitag, 17. März 2023, 10:47

« vorheriges - nächstes »

soloquintett

Hallo,
Ich möchte gern ein zeitgenössisches Manuskript des Stückes Kaya von Il-Ryun Chung transkribieren. Der Komponist verwendet diverse Sondernotationen welche ich übernehmen möchte.
Die folgenden sind für mich das größte Problem:
1) Dreiecke hinter den Noten (grün im Bild)
2) runde Akzentzeichen über den Noten (orange)
3) eingeklammerte Noten (lila)

Es gibt noch Weitere (siehe Zeichenerklärung), aber ich wäre schon sehr dankbar für eine der aufgelisteten.
Gruß, Jonas


juergen74

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.

juergen74

... 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.

juergen74

... die Bögen kann man auch per tweak zeichnen:

\version "2.24.0"

% override stencil
marcatoToArc = -\tweak stencil
#(lambda (grob)
   (ly:make-stencil
    '(path 0.2
       (
         moveto 0 0.125
         curveto 0.25 -0.25 0.75 -0.25 1 0.125
         )
       round
       round
       #f)
    ; x-extend
    (cons 0 1)
    ; y-extend
    (cons 0 0.5)))   ^\marcato

marcatoToArcInv = -\tweak stencil
#(lambda (grob)
   (ly:make-stencil
    '(path 0.2
       (
         moveto 0 -0.125
         curveto 0.25 0.25 0.75 0.25 1 -0.125
         )
       round
       round
       #f)
    ; x-extend
    (cons 0 1)
    ; y-extend
    (cons 0 0.5)))   ^\marcato

% shortcut
arc =   \marcatoToArc
arcInv = \marcatoToArcInv

% example
{
  c' \arc
  c' \arcInv
  b' \arc
  g' \arc
  d'' \arcInv
}

Grüße, Jürgen.

soloquintett

Danke!

Die Bögen habe ich durch Veränderung der Arpeggio-Bögen realisiert:
Hier hatte ich noch palmMutes für die Dreiecksnoten benutzt. Ich schwanke jetzt zwischen der script-at-side Lösung und jenen. Ich denke ich frage den Komponisten, was er besser findet.

\arpeggioParenthesis
      <\parenthesize cis_\lheel
       \palmMute f'' >4\arpeggio

Ich verlinke mal falls es jemanden interessiert die Partitur:
https://edition-ex-tempore.de/eet.html#Anchor-49424

Im Anhang mein Fortschritt bisher.