Probleme beim mehrstimmigen setzen - stemUp\stemDown

Begonnen von mobby83, Dienstag, 6. November 2018, 00:05

« vorheriges - nächstes »

mobby83

Hallo,

ich lese hier im Forum schon eine Weile. Nun habe ich ein Problem und finde die Lösung nicht.

Mein Ziel ist die Ausgabe eines kombinierten Stimmauszugs für kleine und große Trommel. Leider bekomme ich es nicht hin, dass die Notenhälse in die gewünschte Richtung zeigen, damit der Auszug am Ende lesbar ist.

Lösche ich alle Vorschläge, erreiche ich, dass die Hälse in die richtige Richtung zeigen. Das ist allerdings keine Lösung.  :-\

Könnt ihr mir bitte meinen Fehler vor Augen führen und vorzugsweise erklären wie es richtig geht, damit die Lösung nachhaltig ist  :D

Danke!


Code (Auszug) Auswählen

\version "2.18.2"
\include "deutsch.ly"

\header {
  title = "Rhythmus"
}

klTr = \drummode { 
  \time 2/2
  \clef bass
  \grace tommh8 ( sn4.) sn4 sn sn
  \tuplet 3/2 { \acciaccatura tommh8 ( sn4 ) sn4 sn4 } sn2:32
}

grTr = \drummode { 
  \time 2/2
  \clef bass
  grace s8 bd4\ff r4 r2
  r2 r4 bd
}

\score {
  \context DrumStaff = Tr <<
    \set Staff.instrumentName = \markup { "Ryht." }
    \new DrumVoice { \stemUp \klTr }
    \new DrumVoice { \stemDown \grTr }
  >>
}

\score {
  \context DrumStaff = Tr <<
    \set Staff.instrumentName = \markup { "klTr." }
    \new DrumVoice { \stemUp \klTr }
  >>
}

\score {
  \context DrumStaff = Tr <<
    \set Staff.instrumentName = \markup { "grTr." }
    \new DrumVoice { \stemDown \grTr }
  >>
}

harm6

Hallo mobby,

willkommen im Forum.

In Deinem Code fehlt ein backslash:
Zitat
grTr = \drummode {
  \time 2/2
  \clef bass
  \grace s8 bd4\ff r4 r2
  r2 r4 bd
}

Aber ansonsten verstehe ich nicht was das Problem ist.

Sicher, man kann den Code noch optimieren.
instrumentName in \with
\voiceXxx anstatt \stemUp/Down
Aber das würde zumindest im geposteten Beispiel den output nicht verändern.


Insoweit kann ich erstmal nicht weiterhelfen.
Versuche das Problem besser zu beschreiben und/oder Code zu posten der das Problem enthält/sichtbar macht.

Kann natürlich auch sein, daß ich das Problem einfach nicht erkenne, dann stoss mich mit der Nase drauf :)



Gruß,
  Harm

Arnold

Hallo mobby83,

zuerst empfehle ich, wie Harm schon schrieb, \voiceOne und \voiceTwo zu verwenden anstelle von \stemUp und \stemDown, denn dies setzt noch ein paar andere Einstellungen.

Der zweite Punkt ist, daß ein unmittelbar darauf (auf \voiceX) folgender Vorschlag diese Einstellung wieder irritiert - steht auch irgendwo im Handbuch als Bug beschrieben. In diesem Fall füge also das \voiceX nach dem Vorschlag nochmal ein. Um es in Einzelstimmen herausfiltern zu können, kannst Du es mit einem \tag versehen.

Außerdem, \context (z. Bsp. mit DrumStaff) wird (nur) benötigt, um einen vorhandenen Kontext fortzuführen, das erste Mal benutze ich immer \new statt dessen.
Ich habe deine instrumentName-Zuweisungen in den with-Block verfrachtet, damit sie »mit Erscheinen des Kontexts, also des Staffs« schon gesetzt sind, und nicht erst wie in deinem originalen Beispiel nach dem Vorschlag gesetzt werden.

\version "2.18.2"
\include "deutsch.ly"

\header {
  title = "Rhythmus"
}

klTr = \drummode { 
  \time 2/2
  \clef bass
  \grace tommh8 ( \tag #'VoiceDir \voiceOne sn4.) sn4 sn sn
  \tuplet 3/2 { \acciaccatura tommh8 ( sn4 ) sn4 sn4 } sn2:32
}

grTr = \drummode { 
  \time 2/2
  \clef bass
  \grace s8 \tag #'VoiceDir \voiceTwo bd4\ff r4 r2
  r2 r4 bd
}

\score {
  \new DrumStaff = Tr \with {
    instrumentName = \markup { "Ryht." }
  } <<
    \new DrumVoice { \voiceOne \klTr }
    \new DrumVoice { \voiceTwo \grTr }
  >>
}

\score {
  \new DrumStaff = Tr \with {
    instrumentName = \markup { "klTr." }
  } \new DrumVoice {
    \removeWithTag #'VoiceDir \klTr
  }
  \header { piece = "Einzelstimme" }
}

\score {
  \new DrumStaff = Tr \with {
    instrumentName = \markup { "grTr." }
  } \new DrumVoice {
    \removeWithTag #'VoiceDir \grTr
  }
  \header { piece = "Einzelstimme" }
}


Arnold.


mobby83

Vielen Dank für die Antworten.
Ich habe es nicht geschafft es zeitnah zu test - nun aber.

Ich habe mal noch etwas hin und her gespielt. An der gezeigten Lösung stört mich nur, dass es von meiner Bisherigen abweicht.

Zum Verdeutlichen meines Problems anbei ein etwas größeres Schnipsel


\version "2.18.2"
\include "deutsch.ly"

\header {
  title = "Rhythmus"
}

klTrA = \drummode {
  \time 2/2
  \acciaccatura { tommh8 } \tag #'VoiceDir \voiceOne sn4. sn4 \acciaccatura { tommh8 } sn4 sn8
}

grTrA = \drummode {
  \time 2/2
  \grace { s8 } \tag #'VoiceDir \voiceTwo bd4\ff \acciaccatura { bd8 } bd4 r2
}

klTrB = \drummode {
  \time 2/2
  sn4. sn4 \acciaccatura { tommh8 } sn4 sn8
}

grTrB = \drummode {
  \time 2/2
  bd4\ff \acciaccatura { bd8 } bd4  r2
}

klTrC = \drummode <<
  {
    \time 2/2
    \acciaccatura { tommh8 } sn4. sn4 \acciaccatura { tommh8 } sn4 sn8
  } \\ {
    \time 2/2
    \grace { s8 } bd4\ff \acciaccatura { bd8 } bd4  r2
  }
>>

\score {
  \new DrumStaff = Tr \with {
      instrumentName = \markup { "Ryht." }
    } <<
    \new DrumVoice { \VoiceOne \klTrA }
    \new DrumVoice { \VoiceTwo \grTrA }
  >>
  \header { piece = "IST: mit Vorschlag, klappt nur mit der genannten Lösung" }
}

\score {
  \new DrumStaff = Tr \with {
      instrumentName = \markup { "Ryht." }
    } <<
    \new DrumVoice { \stemUp \klTrB }
    \new DrumVoice { \stemDown \grTrB }
  >>
  \header { piece = "SOLL: klappt nur ohne 1. Vorschlag" }
}

\score {
  \new DrumStaff = Tr \with {
      instrumentName = \markup { "Ryht." }
    } <<
    \new DrumVoice { \klTrC }
  >>
  \header { piece = "Alternativ: klappt nicht mit Vorschlag" }
}


harm6

Es gibt einen Schreibfehler
    \new DrumVoice { \VoiceOne \klTrA }
    \new DrumVoice { \VoiceTwo \grTrA }
muß
    \new DrumVoice { \voiceOne \klTrA }
    \new DrumVoice { \voiceTwo \grTrA }
heißen.

Aber ansonsten weiß ich immer noch nicht was das Problem ist.
Sicher, manch output ist nicht wie ich ihn haben wollte, aber Du hast bislang versäumt darzustellen welchen output Du denn haben willst. Bitte hole das nach.


-Harm

mobby83

Vielleicht war es nicht deutlich genug gekennzeichnet... Wenn die PDF im letzten Post erzeugt wird, siehst du im zweiten Beispiel was ich mir vorgestellt hatte. (steht nur im Text in der Lilyponddatei)

Die Vorschläge und Bindebögen sollen nicht verschoben sein. Nur die Notenhälse in die entsprechende Richtung zeigen.

harm6

ZitatDie Vorschläge und Bindebögen sollen nicht verschoben sein. Nur die Notenhälse in die entsprechende Richtung zeigen.

Falls ich Dich jetzt richtig verstehe, so willst Du für die Hauptnoten, etc zweier Stimmen, daß sie den Vorgaben folgen, die mit \voiceOne/Two eingestellt werden können. Die grace-music soll aber so ausgeführt werden, daß die Notenhälse immer nach oben zeigen und somit der Slur, von dem Du hier erstmals als Problem sprichst, abwärts zeigt.
Was Du allerdings mit "nicht verschoben" meinst erschließt sich mir nicht.

Also geht es eigentlich darum das Verhalten der grace-music zu beeinflussen, iiuc.

Die grace-music kann lokal und global beinflußt werden. Hier die globale Variante für \acciaccatura, entsprechend könnte, eher sollte, das auch für \grace und \appoggiatura gemacht werden.


startAcciaccaturaMusic =  {
  \temporary \override Stem.direction = #UP
  <>_\startGraceSlur
  \temporary \override Flag.stroke-style = #"grace"
}

stopAcciaccaturaMusic =  {
  \revert Flag.stroke-style
  <>\stopGraceSlur
  \revert Stem.direction
}

I =
  \drummode {
    \time 2/2
    \acciaccatura { tommh8 } sn4. sn4 \acciaccatura { tommh8 } sn4 sn8
  }
 
II =
  \drummode {
    \time 2/2
    \grace { s8 } bd4\ff \acciaccatura { bd8 } bd4 r2
  }

\score {
  <<
    \new DrumStaff \with { instrumentName = "I" } \I
    \new DrumStaff \with { instrumentName = "II" } \II
    \new DrumStaff \with { instrumentName = "I + II combined " }
      <<
        \new DrumVoice { \voiceOne \I }
        \new DrumVoice { \voiceTwo \II }
      >>
  >>
  \layout { indent = 25 }
}


HTH,
  Harm