Autor Thema: Fingersatz schreiben Syntax  (Gelesen 2784 mal)

Notensatzzweifel

  • Gast
Fingersatz schreiben Syntax
« am: Mittwoch, 20. April 2016, 09:02 »
Also ich habe herausgefunden, wenn ich set fingeringOrientations = #'(left) c4-1 schreibe, die fingeringOrientation ignoriert wird.

Schreibe ich

 set fingeringOrientations = #'(left) <c-1>4

dann wird fingeringOrientation berücksichtigt.

Kann ich es hinbekommen, dass die erste Syntax die fingeringOrientation berücksichtigt? Weil dies wesentlich praktischer für mich wäre.
« Letzte Änderung: Mittwoch, 20. April 2016, 19:29 von Notensatzzweifel »

harm6

  • Gast
Re: FIngersatz schreiben Syntax
« Antwort #1 am: Mittwoch, 20. April 2016, 10:02 »
Zitat
Kann ich es hinbekommen, dass die erste Syntax die fingeringOrientation berücksichtigt? Weil dies wesentlich praktischer für mich wäre.

Nicht nur für Dich.
Aber mit einem Wort: nein.

Gruß,
  Harm

Notensatzzweifel

  • Gast
Re: Fingersatz schreiben Syntax
« Antwort #2 am: Mittwoch, 20. April 2016, 19:32 »
Zitat
Kann ich es hinbekommen, dass die erste Syntax die fingeringOrientation berücksichtigt? Weil dies wesentlich praktischer für mich wäre.

Nicht nur für Dich.
Aber mit einem Wort: nein.

Gruß,
  Harm

Wird wohl öfters gefagt?

Okay dann drehen wir es um. Gibt es einen Trick, dass man die vielen Einzeltöne automatisch in die Akkordschreibweise umformt?

Ich habe zu wenig Ahnung von regulären Ausdrücken. Steckt da eine Möglichkeit?

harm6

  • Gast
Re: Fingersatz schreiben Syntax
« Antwort #3 am: Donnerstag, 21. April 2016, 00:24 »
Zitat
Gibt es einen Trick, dass man die vielen Einzeltöne automatisch in die Akkordschreibweise umformt?

Ja
Siehe:
https://archiv.lilypondforum.de/index.php?topic=2233.msg12443
hilft aber nicht!

Zitat
Ich habe zu wenig Ahnung von regulären Ausdrücken. Steckt da eine Möglichkeit?
Einfach die Syntax zu ändern hilft nicht.

Die Fingersätze für linke/rechte Hand sowie die Saitenangabe sind Teil des 'articulations-music-property in dem natürlich auch tenuto, staccato, etc untergebracht sind.

event-chord-wrap! bzw eventChord überführt alle 'articulations einer Note in die 'elements des event-chord.
Ist auch für ausgesprochene Artikulationen (staccato, etc) logisch aber eben nicht für die Finger- und Saitenangaben.
Hinzu kommt ein kuddelmuddel mit Fingering_Engraver und New_Fingering_Engraver mit unschönen (wenn auch bekannten) Problemen.

Ein workaround wäre event-chord-wrap! die 'articulations sortieren zu lassen und eben Finger- und Saitenangaben beim 'NoteEvent zu lassen.

Ich setz mich mal dran und schau wie weit ich da komme - falls erfolgreich lasse ich es auf der devel-list diskutieren und lade einen patch hoch.
Aber erst nachdem ich die anderen Sachen erledigt um die zu kümmern ich versprochen habe.
Diese sind aber nachrangig gegenüber anderen bei denen ich versprochen habe sie schon vor Wochen erledigt zu haben.
Diese sind aber nachrangig gegenüber anderen bei denen ich versprochen habe sie schon vor Monaten erledigt zu haben.

Falls Du verstehst was ich meine ;)

Gruß,
  Harm


Notensatzzweifel

  • Gast
Re: Fingersatz schreiben Syntax
« Antwort #4 am: Donnerstag, 21. April 2016, 08:36 »
Danke. Die Erklärung übersteigt bei weitem mein Niveau. Wegen mir muss es nicht sein. Ich dachte es gibt etwas einfaches. Letztendlich muss man zu einem Editor greifen der Makros kann. So bald man einen Fingersatz schreiben will, Makro durch Tastaturkürzel  aufrufen.

harm6

  • Gast
Re: Fingersatz schreiben Syntax
« Antwort #5 am: Donnerstag, 21. April 2016, 23:04 »
%% needs:
\version "2.19.36"

#(define-public (polite-event-chord-wrap! music)
  "Wrap isolated rhythmic events and non-postevent events in
@var{music} inside of an @code{EventChord}. 
Events of type @code{FingeringEvent}, @code{StrokeFingerEvent} and
@code{StringNumberEvent} stay in the @code{'articulations} of the rhythmic
event.  Chord repeats @samp{q} are expanded using the default settings of the
parser."
  (map-some-music
   (lambda (m)
     (cond ((music-is-of-type? m 'event-chord)
            (if (pair? (ly:music-property m 'articulations))
                (begin
                  (set! (ly:music-property m 'elements)
                        (append (ly:music-property m 'elements)
                                (ly:music-property m 'articulations)))
                  (set! (ly:music-property m 'articulations) '())))
            m)
           ((music-is-of-type? m 'rhythmic-event)
            (let* ((arts (ly:music-property m 'articulations))
                   (splitted-arts
                     (call-with-values
                       (lambda ()
                         (partition
                           (lambda (x)
                             (or (music-is-of-type? x 'fingering-event)
                                 (music-is-of-type? x 'stroke-finger-event)
                                 (music-is-of-type? x 'string-number-event)))
                           arts))
                       (lambda (a b) (list a b)))))
              (if (pair? arts)
                  (set! (ly:music-property m 'articulations)
                        (car splitted-arts)))
              (make-event-chord (cons m (last splitted-arts)))))
           (else #f)))
   (expand-repeat-notes!
    (expand-repeat-chords!
     (cons 'rhythmic-event
           (ly:parser-lookup '$chord-repeat-events))
     music))))
     
politeEventChords =
#(define-music-function (music) (ly:music?)
   (_i "Compatibility function wrapping @code{EventChord} around
isolated rhythmic events occuring since version 2.15.28, after
expanding repeat chords @samp{q}.  Possible events of type
@code{FingeringEvent}, @code{StrokeFingerEvent} and
@code{StringNumberEvent} remain in the @code{'articulations} of the rhythmic
event.")
   (polite-event-chord-wrap! music))
     
 
\layout {
  \context {
    \Voice
    fingeringOrientations = #'(left)
    strokeFingerOrientations = #'(up)
    stringNumberOrientations = #'(right)
  }
}

\politeEventChords { c''2-1\2 -\rightHandFinger #2  ^"xy"-- }

Notensatzzweifel

  • Gast
Re: Fingersatz schreiben Syntax
« Antwort #6 am: Mittwoch, 27. April 2016, 12:28 »
Danke. Auf den ersten Blick weit aus mehr als genial.

Notensatzzweifel

  • Gast
Re: Fingersatz schreiben Syntax
« Antwort #7 am: Mittwoch, 4. Mai 2016, 13:57 »
Ich habe gerade einen musicXML-Import aus MuseScore ausprobiert. Eingeklammert und gejauchzt.

Deine verwendete Syntax im Beispiel ist ja c2-1. Beim Musicxml-Import aus MuseScore entsteht ein Freizeichen zwischen Note und Fingersatz. Also c2 -1. Was aber nicht stört.

Für Leute, die viele Akkorde in ihren Noten haben, gibt es einen Wermutstropfen.

MuseScore macht daraus <d fis>8  -3 -2. Dann stehen die Fingersätze am Halsende.


harm6

  • Gast
Re: Fingersatz schreiben Syntax
« Antwort #8 am: Donnerstag, 5. Mai 2016, 13:58 »
Wie codiert MuseScore denn
\relative c' { <c-3 e-2 g c-1> }
d.h. g ohne jeglichen Fingersatz?

Man könnte ja eine Funktion schreiben, die
\relative c' { <c e g c> -3 -2 -0 -1 }
zu
\relative c' { <c-3 e-2 g-0 c-1> }
konvertiert, aber falls mittendrin eine Note überhaupt keinen Fingersatz hat, kann die Zuordnung nicht eindeutig erfolgen.