Deutschsprachiges LilyPond-Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: Swetom2011 am Donnerstag, 14. März 2019, 11:42

Titel: Verkürzte Triolendarstellung und Zeilenumbruch - gelöst
Beitrag von: Swetom2011 am Donnerstag, 14. März 2019, 11:42
Nach einer längeren Abwesenheit bin ich wieder da, habe inzwischen einen Satelliten ins All gebracht.

Ich habe vor ein Werk, der nur handschriftlich vorlegt, in Lilypond umzusetzen. 3 von 5 Stimmen sind bereits fertig (etwa 70 Seiten). Allerdings habe ich ein Problem bei der Darstellung von Triolen. Eigentlich nicht die ausgeschriebenen Triolen, sondern die ,,platzsparende Version" davon, siehe beifügten Beispiel 1 und 2. Ich nehme an die Frage ist trivial (deshalb kein Beispielcode) aber ich habe nicht Geeignetes gefunden.

In eine Stimme habe ich Problem mit der Zeilenlänge. Grundsätzlich setze ich keine \break ein, sondern lässt Lilypond alles bestimmen. Allerdings, eine Zeile von mehreren Hundert Zeilen in eine Stimme, ist kürzer als die anderen, siehe Beispiel 3. Ich habe noch nicht angefangen alles durchzusuchen, aber vielleicht hat jemanden eine glänzende Idee, wonach ich suchen muss. Ein Beispiel-code ist recht schwierig zu erstellen weil die Stimme von ein Master aufgebaut ist, die dann 6 andere *.ily Files durch \include einbindet.

NB 3 Stimmen sind bereits fertig (Partitur muss ich natürlich auch machen) und von etwa 1000 Notenzeilen ist nur eine einzige Zeile ,,verkürzt".  Die anderen Stimmen benutzen z.T, die gleichen global.ily, def.ily etc. Files.  Die verschieden Stimmen (Master) sind auch absolut identisch aufgebaut.
Titel: Antw:Verkürzte Triolendarstellung und Zeilenumbruch
Beitrag von: Manuela am Donnerstag, 14. März 2019, 12:26
Zitat von: Swetom2011 am Donnerstag, 14. März 2019, 11:42
Nach einer längeren Abwesenheit bin ich wieder da, habe inzwischen einen Satelliten ins All gebracht.

Wow  8)

Gehe ich recht in der Annahme, dass du die Notenhälse mit einem Schrägstrich versehen willst?
Vll. hilft dir das weiter:
\version "2.19.82"

slashOn = {
  \override Stem.stencil =
    #(lambda (grob)
       (let* ((x-parent (ly:grob-parent grob X))
              (is-rest? (ly:grob? (ly:grob-object x-parent 'rest))))
         (if is-rest?
             empty-stencil
             (ly:stencil-combine-at-edge
              (ly:stem::print grob)
              Y
              (- (ly:grob-property grob 'direction))
              (grob-interpret-markup grob
                                     (markup #:center-align #:fontsize -1
                                             #:musicglyph "flags.ugrace"))
              -3))))
}

slashOff = {
  \revert Stem.stencil
  \revert Flag.stencil
}

\relative c' {
   \slashOn f4. g2. \slashOff g4.
}
Titel: Antw:Verkürzte Triolendarstellung und Zeilenumbruch
Beitrag von: Swetom2011 am Donnerstag, 14. März 2019, 13:01
Danke, probiere ich heute Abend aus. 

Hört sich vielleicht viel an aber der Musik ist nicht sooooo komplex außer Violine 1 wo es so viele Hilfslinien gibt, dass man zählen muss.  Außerdem, normales vorgedrucktes Notenpapier wurde benutzt und da sind die Abstände nicht groß genug sondern die Zeilen vermischen sich.  Die Violine 1 Spieler sind mäßig begeistert und deswegen habe ich versprochen etwas besseres zu machen.
Titel: Antw:Verkürzte Triolendarstellung und Zeilenumbruch
Beitrag von: Swetom2011 am Donnerstag, 14. März 2019, 13:11
@Manuela

War zu schnell mit mein Antwort. Du hast den Satelliten gemeint, heißt übrigens BepiColombo http://sci.esa.int/bepicolombo/ ist jetzt auf eine 7 Jährige Reise zum Merkur ;D
Titel: Antw:Verkürzte Triolendarstellung und Zeilenumbruch
Beitrag von: Malte am Donnerstag, 14. März 2019, 13:32
Vielleicht ist auch hier was für dich dabei:\version "2.19.82"

\relative {
  \repeat tremolo 3 f'8*2/3
  \repeat tremolo 6 g
  \repeat tremolo 3 a
}

\relative {
  f'4.*2/3:8
  g2.*2/3:
  a4.*2/3:
}

\relative {
  \scaleDurations 2/3 {
    f'4.:8
    g2.:
    a4.:
  }
}

\relative {
  \repeat tremolo 3 \tuplet 3/2 f'8
  \repeat tremolo 6 \tuplet 6/4 g
  \repeat tremolo 3 \tuplet 3/2 a
}

\relative {
  \tuplet 3/2 f'4.:8
  \tuplet 6/4 g2.:
  \tuplet 3/2 a4.:
}
Titel: Antw:Verkürzte Triolendarstellung und Zeilenumbruch
Beitrag von: Manuela am Donnerstag, 14. März 2019, 14:27
Zitat von: Swetom2011 am Donnerstag, 14. März 2019, 13:11
War zu schnell mit mein Antwort. Du hast den Satelliten gemeint, heißt übrigens BepiColombo http://sci.esa.int/bepicolombo/ ist jetzt auf eine 7 Jährige Reise zum Merkur ;D

Da können wir erdgebundenen Wesen nur staunend daneben stehen  ;)

Malte, ich wusste, dass es schon etwas in dieser Richtung gibt, mir ist aber nicht einfallen wie das Ding heißt. Meine Variante ergibt halt zartere Striche.

Zitat von: Swetom2011 am Donnerstag, 14. März 2019, 11:42
In eine Stimme habe ich Problem mit der Zeilenlänge. Grundsätzlich setze ich keine \break ein, sondern lässt Lilypond alles bestimmen. Allerdings, eine Zeile von mehreren Hundert Zeilen in eine Stimme, ist kürzer als die anderen, siehe Beispiel 3. Ich habe noch nicht angefangen alles durchzusuchen, aber vielleicht hat jemanden eine glänzende Idee, wonach ich suchen muss. Ein Beispiel-code ist recht schwierig zu erstellen weil die Stimme von ein Master aufgebaut ist, die dann 6 andere *.ily Files durch \include einbindet.

NB 3 Stimmen sind bereits fertig (Partitur muss ich natürlich auch machen) und von etwa 1000 Notenzeilen ist nur eine einzige Zeile ,,verkürzt".  Die anderen Stimmen benutzen z.T, die gleichen global.ily, def.ily etc. Files.  Die verschieden Stimmen (Master) sind auch absolut identisch aufgebaut.

Wenn am Zeilenende uerklärlicher Platz bleibt, ist meiner Erfahrung nach meist irgendein parallel laufender Context schuld, der keine Noten besitzt, in diesem Fall tippe ich auf die Dynamics, check mal, ob das letzte fz länger ist als es sollte.
Titel: Antw:Verkürzte Triolendarstellung und Zeilenumbruch
Beitrag von: Swetom2011 am Donnerstag, 14. März 2019, 18:59
Zuerst danke für die schnelle Hilfe. Malte's Vorschlag habe ich ausprobiert. Funktioniert perfekt. Die Idee mit eine parallel laufende context ist gut.

In der Tat ist die Stimme zum Teil aufgeteilt (divisi). Diese Binde ich mit \include ein. Schaue ich mich heute Abend an.
Titel: Antw:Verkürzte Triolendarstellung und Zeilenumbruch
Beitrag von: Swetom2011 am Freitag, 15. März 2019, 11:03
Ich habe die parallel laufende Contexte überprüft.  Soweit ich sehen kann, ist nichts drin der zu eine verkürzte Notenzeile führen kann.  Die Suche geht weiter  :'(
Titel: Antw:Verkürzte Triolendarstellung und Zeilenumbruch
Beitrag von: Manuela am Freitag, 15. März 2019, 11:57
Versuch mal, alle Contexte, die im betreffenden Staff vorkommen, einzufärben.

Nachfolgend eine Funktion, mit der du eine Voice komplett einfärben kannst (was in deinem Fall gar nicht notwendig wäre)

\version "2.19.82"

colorGrob =
#(define-music-function (my-grob my-color color-on)
   (symbol? color? boolean?)
   ;; check for the boolean argument
   (if color-on
       ;; either set the color for the grob type
       #{
         \temporary \override #my-grob #'color = #my-color
       #}
       ;; or revert it
       #{
         \revert #my-grob #'color
       #}))


colorGrobs =
#(define-music-function (my-grob-list my-color color-on)
   (symbol-list? color? boolean?)
   (if (null? my-grob-list)
       ;; issue an empty music expression
       #{ #}
       #{
         % color the first grob type of the current list
         \colorGrob #(car my-grob-list) #my-color #color-on
         % recursively call itself with the remainder
         % of the current list.
         \colorGrobs #(cdr my-grob-list) #my-color #color-on
       #}))

allGrobNames =
#(define-scheme-function (parser location)()
   ;; create a list with all grob names from LilyPond
   (map (lambda (gd) (car gd)) all-grob-descriptions))

colorMusic =
#(define-music-function (my-color music)
   (color? ly:music?)
   #{
     \colorGrobs \allGrobNames #my-color ##t
     #music
     \colorGrobs \allGrobNames #my-color ##f
   #})

\relative c'' {
  c4 c c c
  \colorMusic #red  { c c c c }
  c c c c
}


Titel: Antw:Verkürzte Triolendarstellung und Zeilenumbruch
Beitrag von: Swetom2011 am Sonntag, 17. März 2019, 09:34
Werde ich ausprobieren, muss man erst draufkommen. 

Ich meine, hier im Forum gibt es einige die mit Software echt drauf haben.  Es ist ja fast einfacher die Lagerregelung und Navigationssoftware für ein Satelliten zu schreiben, z.B Rosetta (mein vorheriges Satellitenprojekt) 🤔
Titel: Antw:Verkürzte Triolendarstellung und Zeilenumbruch
Beitrag von: Manuela am Sonntag, 17. März 2019, 12:12
Zitat von: Swetom2011 am Sonntag, 17. März 2019, 09:34
Werde ich ausprobieren, muss man erst draufkommen.

Das ist nicht auf meinem Mist gewachsen, sondern stammt aus dem Lilypond-Blog: Music Functions (http://lilypondblog.org/2014/04/music-functions-4-recursion/)

Um einzelne Grobs einzufärben, genügt ein Statement der Form
\override Context.Grob.color = #red z.B.
\override Staff.BarLine.color = #red

The color property (http://lilypond.org/doc/v2.18/Documentation/learning/visibility-and-color-of-objects.en.html#the-color-property)
List of colors (http://lilypond.org/doc/v2.19/Documentation/notation/list-of-colors.en.html)
Titel: Antw:Verkürzte Triolendarstellung und Zeilenumbruch
Beitrag von: Swetom2011 am Donnerstag, 28. März 2019, 16:16
Wie bereits geschrieben, das Problem mit verkürzter Triolendarstellung ist gelöst aber das Problem mit der verkürzten Notenzeile ist noch ungelöst aber der Verursacher ist am mindestens gefunden.

I hatte vergessen, dass ich auf eine Stelle ein \break benutzte um eine Divisistelle mit zwei notenzeilen besser darzustellen. Snippet 1 zeigt, was ich gern haben möchte und Snippet 2 die gleiche Zeile ohne \break.

Etwa 100 Takte später kommt das Problem mit der verkürzte Notenzeile (Snippet 3). Jetzt geht die Suche los. :o
Titel: Antw:Verkürzte Triolendarstellung und Zeilenumbruch - gelöst
Beitrag von: Swetom2011 am Donnerstag, 28. März 2019, 20:23
Es war doch ganz einfach. Zuerst hatte ich \ViIIBreak nur in einen Staff eingebunden. Nachdem ich es auch für das Zweite Staff eingefügt hatte, funktionierte es einwandfrei, siehe Code unten (nicht ausführbar).


   \score {
     \new StaffGroup <<
        \new Staff \ViolinTwoIVOne
                    \globalIV
                    \ViIIBreak
       
        \new Staff \ViolinTwoIVTwo
                    \globalIV
                    \ViIIBreak % hier hatte ich zuerst kein Aufruf von \ViIIBreak
      >>
    }