Deutschsprachiges LilyPond-Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: Manuela am Sonntag, 27. August 2017, 00:17

Titel: Versetzungszeichen in einer Spalte exakt untereinander setzen - wie? (gelöst)
Beitrag von: Manuela am Sonntag, 27. August 2017, 00:17
Hi,

ich beschäftige mich derzeit mit der Griffschrift für steirische Harmonika.
Ich habe ein Snippet aus dem LSR adaptiert

Arrow notation and transposition for quarter tones (http://lsr.di.unimi.it/LSR/Item?id=784)

Mein Code schaut derzeit so aus

\version "2.19.49"

%% http://lsr.di.unimi.it/LSR/Item?id=784


%   Define the alterations as fraction of the equal-tempered whole tone.
% We use an alteration of 0.2 rather than 0.25 of a tone, so that the
% raised natural is a slightly different pitch than the lowered sharp.

#(define-public NATURAL-RAISE  2/10)
#(define-public NATURAL-LOWER -2/10)

% Note names can now be defined to represent these pitches in our
% Lilypond input.  We extend the list of Dutch note names:
arrowedPitchNames =  #`(
                         (ce    . ,(ly:make-pitch -1 0 NATURAL-LOWER))
                         (c     . ,(ly:make-pitch -1 0 NATURAL))
                         (ci    . ,(ly:make-pitch -1 0 NATURAL-RAISE))

                         (de    . ,(ly:make-pitch -1 1 NATURAL-LOWER))
                         (d     . ,(ly:make-pitch -1 1 NATURAL))
                         (di    . ,(ly:make-pitch -1 1 NATURAL-RAISE))

                         (ee    . ,(ly:make-pitch -1 2 NATURAL-LOWER))
                         (e     . ,(ly:make-pitch -1 2 NATURAL))
                         (ei    . ,(ly:make-pitch -1 2 NATURAL-RAISE))

                         (fe    . ,(ly:make-pitch -1 3 NATURAL-LOWER))
                         (f     . ,(ly:make-pitch -1 3 NATURAL))
                         (fi    . ,(ly:make-pitch -1 3 NATURAL-RAISE))

                         (ge    . ,(ly:make-pitch -1 4 NATURAL-LOWER))
                         (g     . ,(ly:make-pitch -1 4 NATURAL))
                         (gi    . ,(ly:make-pitch -1 4 NATURAL-RAISE))

                         (ae    . ,(ly:make-pitch -1 5 NATURAL-LOWER))
                         (a     . ,(ly:make-pitch -1 5 NATURAL))
                         (ai    . ,(ly:make-pitch -1 5 NATURAL-RAISE))

                         (be    . ,(ly:make-pitch -1 6 NATURAL-LOWER))
                         (b     . ,(ly:make-pitch -1 6 NATURAL))
                         (bi    . ,(ly:make-pitch -1 6 NATURAL-RAISE))
                         )

pitchnames = \arrowedPitchNames
#(ly:parser-set-note-names pitchnames)

% The symbols for each alteration
arrowGlyphs = #`(
                  (,NATURAL-RAISE . "noteheads.s2cross")
                  (  0            . "accidentals.natural")
                  (,NATURAL-LOWER . "noteheads.s0harmonic")
                  )
% Transposition could generate pitches with alterations
%  double-sharp-lower (8/10) or double-flat-raise (-8/10)
%  but there are no such symbols in the font, so we substituted
%  the most appropriate symbols.
% If some pitch in your score has no symbol, LilyPond gives a warning.

% The glyph-list needs to be loaded into each object that
%  draws accidentals.
\layout {
  \context {
    \Score
    \override KeySignature.glyph-name-alist = \arrowGlyphs
    \override Accidental.glyph-name-alist = \arrowGlyphs
    \override AccidentalCautionary.glyph-name-alist = \arrowGlyphs
    \override TrillPitchAccidental.glyph-name-alist = \arrowGlyphs
    \override AmbitusAccidental.glyph-name-alist = \arrowGlyphs
  }
}
% MIDI implements microtones as a pitch bend, with one bend per channel.
% These lines below assign one channel to each Voice, in case there are
% multiple voices on a staff, so that each voice can have its correct
% pitch bend.
\midi {
  \context {
    \Staff
    \remove "Staff_performer"
  }
  \context {
    \Voice
    \consists "Staff_performer"
  }
}

%% A short example tune
notes = \relative c'' {
  \key c \major
  \time 2/4
  \accidentalStyle forget
  \omit Staff.Clef
  %\override Accidental.extra-spacing-width = #'(+inf.0 . -inf.0)
  %\override Accidental.extra-spacing-height = #'(+inf.0 . -inf.0)
  < ei ci >8. be16
  q8 < ci bi, >16 q
}

\score {
  <<
    \new Staff \notes
  >>
}


Wenn man Vorlage und Output vergleicht, sieht man, dass die Kreuze bei den Akkorden nicht in einer Spalte untereinander stehen, da Lilypond den Satzregeln für Vorzeichen folgt.

Ich vermute, es gibt bestimmt irgendeinen Parameter, mit dem man die Anordnung in einer Spalte erzwingen kann, leider finde ich die Stelle in der Doku nicht.

Untenstehend die Vorlage und der derzeitige Output
Titel: Antw:Versetzungszeichen in einer Spalte exakt untereinander setzen - wie?
Beitrag von: Malte am Sonntag, 27. August 2017, 09:06
Pack das noch in deinen \layout-Block:
  \context {
    \Voice
    \override Accidental.X-offset = -1.5
  }

Ich hab in letzter Zeit immer wieder festgestellt, wie mächtig X-offset (und Y-offset sowie padding und staff-padding) ist, auch hier keine Ausnahme :)
Titel: Antw:Versetzungszeichen in einer Spalte exakt untereinander setzen - wie?
Beitrag von: Manuela am Sonntag, 27. August 2017, 16:36
Danke Malte, echt super, damit ist mein Problem vollständig gelöst  :)