Hallo, liebe Notensatz-Pros,
hier ein Thema zu dem es schon einiges zu finden gibt, zu welchem das, was ich finden konnte, mich aber noch immer nicht ganz zufriedenstellt. Es geht um die Einbindung des wahrscheinlich höchstentwickeltsten System für die Notation von Mikrotonalität und Intonation. Dazu wird eine Font verwendet, die man hier herunterladen kann:
http://www.marcsabat.com (da gibt es auch Hintergrundinfos)
Das System geht von einer pythagoreischen Stimmung aus (in der zwischen fis und ges z.B. ein phythagoreisches Komma liegt.) Alle Abweichungen von den reinen Quinten, (z.B. reine Terzen, Septimen usw.) werden mit zusätzlichen Zeichen beschreiben. Dabei kommt es vor, dass mehrere Vorzeichen vor einer Note zu schreiben sind.
Torsten Anders hat im laufe dieses Threads 2009 eine Lösung entwickelt:
http://lilypond.1069038.n5.nabble.com/Microtonal-Helmholtz-Ellis-notation-in-Lilypond-fine-tuning-td51110.htmlDa gibt es dann ein kleines Problem mit dem vertikalen Spacing und man braucht einen extra Befehl, wenn man Akkorde schreiben will. Ich habe nun versucht auf grundlage des \chord-HE von Anders das Spacing mit Hilfe von Schriftgröße und Laufweite der Vorzeichen ein bisschen herunterzubrechen. Tatsächlich kann ich so ganz bequem mit der selben Funktion auch Akkorde schreiben, mit einem ausführlichen layout-Block ist auch das Spacing zu 95% in Ordnung und bis vor ein paar Tagen war ich mit dieser Lösung vollkommen glücklich:
#(define (modify-accidental note-grob prop-alist)
(let ((accidental (ly:grob-object note-grob 'accidental-grob)))
(if (not (null? accidental))
(for-each
(lambda (x)
(ly:grob-set-property! accidental (car x) (cdr x)))
prop-alist))))
#(define (accidental-text markup)
(lambda (grob)
(modify-accidental grob `((text . ,markup)))))
#(define-markup-command (stringsplit layout props str) (string?)
(cond
((> (string-length str) 2) (interpret-markup layout props
(markup #:halign 0.2 #:wordwrap( (substring str 0 1) (substring str 1 2) (substring str 2 3) ))))
((= (string-length str) 2) (interpret-markup layout props
(markup #:halign -0.2 #:wordwrap( (substring str 0 1) (substring str 1 2) ))))
((= (string-length str) 1) (interpret-markup layout props
(markup #:halign -1 #:wordwrap( (substring str 0 1)))))
))
H = #(define-music-function (parser location marktext mus) (string? ly:music?)
(set! (ly:music-property mus 'tweaks)
(acons 'before-line-breaking (accidental-text (markup
#:override '(word-space . -0.4 )
#:fontsize -2
#:typewriter
(#:stringsplit marktext)
))
(ly:music-property mus 'tweaks)))
mus)
#(set-global-staff-size 20)
\layout { \context { \Score
\override SpacingSpanner #'base-shortest-duration = #(ly:make-moment 1 32)
\override Accidental #'stencil = #ly:text-interface::print
\override Accidental #'text = #'(markup #:typewriter #:fontsize -2 "n")
}}
\paper{ myStaffSize = #20 #(define fonts (make-pango-font-tree "Sans" "Sans" "HE" (/ myStaffSize 20))) }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
{ \H "n" c''! <\H "o" b'! \H "n" d''! > }
{ \H "n" c''! <\H "o" b'! \H "å" d''! > }
Leider reicht aber String als Datentyp zur Bezeichnung des Vorzeichens nicht aus. Man braucht auch Sonderzeichen, z.B. um zwei-Septimal-Kommas-auf/abwärts aus der Font herauszubekommen, muss man å,Å usw. eingeben.
Ich habe mich jetzt angemeldet, weil ich gesehen habe dass vor Jahren einige Diskutanten hier eine sehr gute Lösung für die Variation von der Laufweite von Text gefunden haben, die auch innerhalb von Scheme mit unicode arbeitet. (Ich habe das immer vermisst in Lilypond)
https://liarchiv.joonet.de/index.php?topic=1152.0Genau mit der Laufweite habe ich versucht das Spacing der bis zu drei Vorzeichen in den Griff zu bekommen. Ich dachte, dass man das doch zusammenbasteln können müsste, krieg es aber nicht hin. Ich glaube da ist nur ein ganz kleiner Kniff nötig – aber keine Ahnung.
Vielleicht kann mir jemand hier damit helfen. Vielleicht interessiert sich auch jemand für eine richtig solide Implementation der HE-Accidentals einschließlich Spacing in Akkorden usw.
Ich freue mich sehr über Antwort
Gruß
Kostja