Autor Thema: geht es auch genau untereinander? (Viertelnoten ohne Hals)  (Gelesen 3019 mal)

stefanhuglfing

  • Member
geht es auch genau untereinander? (Viertelnoten ohne Hals)
« am: Freitag, 8. März 2013, 08:05 »
Ich möchte mit Noten ohne Notenhals zwei Stimmen (Tenor und Bariton) in eine Zeile schreiben. Wenn ich es mache wie unten, ist die zweite Stimme immer etwas nach  rechts verschoben.


Tenor = \relative c'
{
  \clef "G_8"
  c4 c c c   
}

Bariton = \relative c'
{
  \clef "G_8"
   d,4 e f a
}

Bass = \relative c'
{
  \clef "F"
   a,4 a d d
}

\score
{
 
  <<
    \new Staff  \Tenor \Bariton   
    \new Staff  \Bass
  >>
   
 \layout
 {
  \context
  {
      \Staff
      \remove "Time_signature_engraver"
      \override Stem #'transparent = ##t
  }
 }
}
 

fugenkomponist

  • Member
Re: geht es auch genau untereinander? (Viertelnoten ohne Hals)
« Antwort #1 am: Freitag, 8. März 2013, 10:48 »
Du könntest \partcombine \Tenor \Bariton probieren.
Oder alternativ die Hälse nicht nur transparent machen, sondern ganz entfernen:
\context {
  \Voice
  \remove "Stem_engraver"
}
« Letzte Änderung: Freitag, 8. März 2013, 10:50 von fugenkomponist »

stefanhuglfing

  • Member
geht beides
« Antwort #2 am: Freitag, 8. März 2013, 13:15 »
das geht beides.

Vielen Dank für die schnelle Hilfe!

Be-3

  • Member
Re: geht es auch genau untereinander? (Viertelnoten ohne Hals)
« Antwort #3 am: Freitag, 8. März 2013, 13:41 »
... wobei das radikale Entfernen des Stem_Engravers schon ziemlich das Spacing durcheinanderhagelt... :) Das Beispiel erinnert mich an Zugvögel. :D
Ein guter Kompromiß wäre wohl \override Stem #'stencil = ##f an Stelle von \override Stem #'transparent = ##t, dann nehmen die nicht vorhandenen Hälse auch keinen Platz weg.

Neben \partcombine ginge auch noch \new Staff << \Tenor \\ \Bariton >> und alle "Abarten".

Viele Grüße
Torsten

fugenkomponist

  • Member
Re: geht es auch genau untereinander? (Viertelnoten ohne Hals)
« Antwort #4 am: Freitag, 8. März 2013, 13:52 »
Ach ja, sinnvoller ist natürlich #'stencil = ##f. Hab nicht dran gedacht, dass es soviel kaputt macht, den Engraver wegzulassen ;)

Edit: ich habs grad ausprobiert; #'stencil = ##f führt nicht dazu, dass die Noten direkt übereinander gesetzt werden.
Was aber tut, ist\override Stem #'stencil = ##f
\override NoteColumn #'ignore-collision = ##t
« Letzte Änderung: Freitag, 8. März 2013, 14:01 von fugenkomponist »

Be-3

  • Member
Re: geht es auch genau untereinander? (Viertelnoten ohne Hals)
« Antwort #5 am: Freitag, 8. März 2013, 14:28 »
Edit: ich habs grad ausprobiert; #'stencil = ##f führt nicht dazu, dass die Noten direkt übereinander gesetzt werden.

Hallo fugenkomponist,

stimmt, das allein tut es nicht.
Ursache für die Verschiebung sind aber nicht in erster Linie die Hälse - das "Phänomen" tritt nämlich auch auf, wenn man ganze Noten verwendet, die schon von Natur aus keine Hälse haben.  :o
Stefans ursprüngliche Version
\new Staff \Tenor \Bariton
ist eigentlich die Wurzel des Problems.

Mit \partcombine, wie von Dir vorgeschlagen, oder
\new Staff << \Tenor \\ \Bariton >>
wird die Sache klar, denn da werden die "Stimmenzuordnungen" implizit gesetzt.
Wahlweise kann man das natürlich auch manuell tun mit \voiceOne, \voiceTwo usw., eventuell auch \oneVoice.

Lilypond ist jedenfalls immer für eine Überraschung gut. :D

Viele Grüße
Torsten

harm6

  • Member
Re: geht es auch genau untereinander? (Viertelnoten ohne Hals)
« Antwort #6 am: Freitag, 8. März 2013, 21:40 »
Hallo Torsten,

Zitat von: Torsten
das "Phänomen" tritt nämlich auch auf, wenn man ganze Noten verwendet, die schon von Natur aus keine Hälse haben.

Für Lilypond ist das nicht ganz richtig.

Ganze Noten haben einen Notenhals!
X und Y-Länge ist null, einen stencil gibt es dann auch nicht, aber das grob existiert.

Zum Auslesen mag man diesen Code versuchen:

\version "2.16.2"

{
        \override NoteHead #'after-line-breaking =
          #(lambda (grob)
            (let* ((sys (ly:grob-system grob))
                   (stem (ly:grob-object grob 'stem))
                   (all-grobs-array (ly:grob-object sys 'all-elements))
                   (stem-coord (ly:grob-relative-coordinate stem sys X))
                   (stem-X-ext (ly:grob-extent stem sys X))
                   (stem-Y-ext (ly:grob-extent stem sys Y))
                   (stem-length (interval-length stem-X-ext))
                   (stem-width (interval-length stem-Y-ext))
                   (stem-stil (ly:grob-property stem 'stencil)))
            ;(display "\n\nsys:                 \n")(write sys)
            (display "\n\nstem:                \n")(write stem)
            (display "\n\ngrob::is-live? stem: \n")(write (grob::is-live? stem))
            (display "\n\nall-grobs-array:     \n")(write all-grobs-array)
            (display "\n\nstem-coord:          \n")(write stem-coord)
            (display "\n\nstem-X-ext:          \n")(write stem-X-ext)
            (display "\n\nstem-Y-ext:          \n")(write stem-Y-ext)
            (display "\n\nstem-length:         \n")(write stem-length)
            (display "\n\nstem-width:          \n")(write stem-width)
            (display "\n\nstencil?:            \n")(write (ly:stencil? stem-stil))
            (newline)))
        c''1
}

Das Terminal zeigt dann:

Zitat
stem:               
#<Grob Stem >

grob::is-live? stem:
#t

all-grobs-array:     
#<Grob_array#<Grob StaffSymbol > #<Grob LedgerLineSpanner > #<Grob VerticalAlignment > #<Grob VerticalAxisGroup > #<Grob SpacingSpanner > #<Grob SystemStartBar > #<Grob PaperColumn > #<Grob NoteHead > #<Grob NonMusicalPaperColumn > #<Grob Stem > #<Grob StemStub > #<Grob NoteSpacing > #<Grob NoteColumn > #<Grob BreakAlignGroup > #<Grob Item > #<Grob Clef > #<Grob TimeSignature > #<Grob StaffSpacing > #<Grob BreakAlignment > #<Grob LeftEdge > #<Grob BreakAlignGroup > #<Grob BreakAlignGroup > #<Grob BreakAlignGroup > #<Grob NonMusicalPaperColumn > #<Grob Item > #<Grob BarLine > #<Grob StaffSpacing > #<Grob Item > #<Grob BreakAlignment > #<Grob LeftEdge > #<Grob BreakAlignGroup > >

stem-coord:         
18.2258247716535

stem-X-ext:         
(+inf.0 . -inf.0)

stem-Y-ext:         
(+inf.0 . -inf.0)

stem-length:         
0.0

stem-width:         
0.0

stencil?:           
#f

Gruß,
  Harm
« Letzte Änderung: Freitag, 8. März 2013, 23:15 von harm6 »

stefanhuglfing

  • Member
Re: geht es auch genau untereinander? (Viertelnoten ohne Hals)
« Antwort #7 am: Freitag, 15. März 2013, 23:47 »
ich hab mich zu früh gefreut: Ich habe euch nur ein abgespecktes Beispiel an code geliefert. Was ich eigentlich will enthält auch noch Strophentext und durch

\partcombine.....

bzw.

<< \Tenor \\ \Bariton >>

verschwindet der Text.

Aber

\override Stem #'stencil = ##f
\override NoteColumn #'ignore-collision = ##t

erfüllt alle meine Wünsche. Allerdings geht es nur, wenn ich die beiden Oberstimmen bei \new Staff

\new Voice = "melody"  \Tenor  \Bariton

schreibe.
Gut, dass ihr euch noch weiter mit meinem Thema befaqsst habt.