Autor Thema: Taktzahl im 1. Takt mit \grace  (Gelesen 3645 mal)

iugin

  • Member
Taktzahl im 1. Takt mit \grace
« am: Montag, 19. August 2013, 16:30 »
Hallo miteinander,

kann mir jemand erklären, wie kann ich die Taktzahl auf dem ersten Takt kriege, wenn das Stück mit \grace oder \acciaccatura beginnt?
Mein Code:
\version "2.16.2"
\language "deutsch"

mel = \relative g' {
  \bar""
  \grace { fis16 } g2
}

\score {
<<
    \set Score.currentBarNumber = #10
    \new Staff { \mel }
>>
}
Wenn ich \grace wegnehme, funktionert alles.
Habe ich etwas übersehen? :)

Danke im voraus für die Hilfe und einen schönen Tag.

Liebe Grüsse

Eugenio

harm6

  • Member
Re: Taktzahl im 1. Takt mit \grace
« Antwort #1 am: Montag, 19. August 2013, 18:13 »
Hallo Eugenio,

versuchsmal mit:

\version "2.16.2"

mel = \relative g' {
  \bar""
  % hier:
  % \set Score.currentBarNumber = #10
  \grace { fis16 } g2
}

\score {
<<
   
    \new Staff { 
        % oder hier:
        \set Score.currentBarNumber = #10
        \mel
    }
>>
}

HTH,
  Harm

harm6

  • Member
Re: Taktzahl im 1. Takt mit \grace
« Antwort #2 am: Montag, 19. August 2013, 19:11 »
Eventuell mußt Du noch
\set Score.barNumberVisibility = #all-bar-numbers-visibleeinfügen, oder
barNumberVisibility = #all-bar-numbers-visibleins layout setzen:
\layout {
  \context {
    \Score
    barNumberVisibility = #all-bar-numbers-visible
  }
}

Gruß,
  Harm

iugin

  • Member
Re: Taktzahl im 1. Takt mit \grace
« Antwort #3 am: Montag, 19. August 2013, 19:31 »
Hallo Harm,

deine 1. Lösung funktioniert prima, danke!
Was ich nicht verstehe ist: ich habe eine Partitur mit vielen \score-Blocks. Die sehen immer gleich aus (ich hatte ein Minimalbeispiel geschickt, nur mit einem Staff), z.B.
\version "2.16.2"
\language "deutsch"

melRH = \relative g' {
  \bar"" 
  \grace { fis16 } g2
}
melLH = \relative g {
\clef "bass"
  \grace { s16 } g2
}

\score {
<<
    \set Score.currentBarNumber = #10
    \new PianoStaff <<
    \new Staff { \melRH }
    \new Staff { \melLH }
    >>
>>
}
Es funktionert eben überall ausser dort wo \grace vorkommt.
Jetzt ist erledigt, ich kann deine Lösung brauchen. Ich frage mich nur, ob es normal ist oder nicht... :)

Danke vielmals und schönen Abend!

Eugenio

harm6

  • Member
Re: Taktzahl im 1. Takt mit \grace
« Antwort #4 am: Montag, 19. August 2013, 22:13 »
Hallo Eugenio,

Zitat
Ich frage mich nur, ob es normal ist oder nicht...

Ich kann Dir Deine Frage nicht wirklich erschöpfend beantworten.

Aber zumindest soviel:
Der befehl \set Score.currentBarNumber = #10 setzt ein context-property.
Der natürliche Ort um ein context-property zu setzen ist \layout oder \with oder \context
Wenn man es außerhalb dieser Umgebungen nutzt, dann meint LilyPond einen neuen score anlegen zu müssen (wegen \set Score ), zumindest jedoch ein paar Andeutungen eines neuen Scores. Ist natürlich nicht was man haben will, es erscheint auch kein neuer, aber es gibt intern ein paar Reste davon.
Es mag auch sein das ein paar Probleme, die sich aus \grace am Anfang ergeben, mit einer Synchronisation der graces in allen anderen Stimmen nicht völlig egalisiert werden.
Wenn man \set Score aber in einem musikalischen Context verwendet, z.B. in einer schon bestehenden Voice hat man dieses Problem nicht.

Ich hoffe mein gesammeltes Halb-Wissen, gepaart mit Infos vom Hören-Sagen hilft ein (kleines) bißchen.

Gruß,
  Harm

iugin

  • Member
Re: Taktzahl im 1. Takt mit \grace
« Antwort #5 am: Dienstag, 20. August 2013, 08:16 »
Hallo Harm,

ja, jetzt verstehe ich!
Das Problem ist dann, dass es obwohl funktionert hat, ist \set Score.currentBarNumber im \score-Block theoretisch falsch. Das hatte ich nicht gecheckt, es macht aber Sinn. :)
Super, danke für die Erklärung!

Ich wünsche dir einen schönen Tag

Ciao!

Eugenio

harm6

  • Member
Re: Taktzahl im 1. Takt mit \grace
« Antwort #6 am: Dienstag, 20. August 2013, 08:59 »
Hallo Eugenio,

Zitat
Das Problem ist dann, dass es obwohl funktionert hat, ist \set Score.currentBarNumber im \score-Block theoretisch falsch.

das ist etwas zu allgemein.
\score ist vor allem eine Funktion, kein Kontext.
Wenn Du aber einen Score-Kontext explizit initiierst, via \new Score, funktioniert es.

Dein Beispiel geringfügig erweitert:
\version "2.16.2"
\language "deutsch"

flute = \relative g' {
  \grace { a'16 } g
}

melRH = \relative g' {
  \bar"" 
  \grace { fis16 } g2
}
melLH = \relative g {
\clef "bass"
  \grace { s16 } g2
}

\score {
  \new Score {
    \set Score.currentBarNumber = #10
      <<
        \new Staff { \flute }
        \new PianoStaff <<
        \new Staff { \melRH }
        \new Staff { \melLH }
        >>
      >>
  }
}

Gruß,
  Harm
« Letzte Änderung: Dienstag, 20. August 2013, 10:46 von harm6 »

iugin

  • Member
Re: Taktzahl im 1. Takt mit \grace
« Antwort #7 am: Mittwoch, 21. August 2013, 10:59 »
Lieber Harm,

danke für die weitere Erklärung.
Ich merke, ich muss die Dokumentation (Kontexte) noch einmal genau anschauen. Da ist anscheinend eine Lücke :)

Liebe Grüsse

Eugenio

harm6

  • Member
Re: Taktzahl im 1. Takt mit \grace
« Antwort #8 am: Mittwoch, 21. August 2013, 13:56 »
Hallo Eugenio,

Zitat
Ich merke, ich muss die Dokumentation (Kontexte) noch einmal genau anschauen. Da ist anscheinend eine Lücke

ich habe mal die gesamte Doku durchsucht.

Mir deucht die Lücke ist eher in der Doku!

"Normale" Doku
In der "normalen" Doku, d.h.: LM, NR, Snippets kommt \new Score genau einmal vor:
http://lilypond.org/doc/v2.17/Documentation/learning/creating-contexts.de.html
Ich zitiere (dt. Übersetzung):
Zitat
Achtung: Der \new Score-Befehl sollte nicht benutzt werden, weil der Partitur-(Score)-Kontext der obersten Ebene normalerweise automatisch erstellt wird, wenn der musikalische Ausdruck innerhalb der score-Umgebung interpretiert wird. Standard-Werte von Kontexteigenschaften, die für einen bestimmten Score gelten sollen, können innerhalb der \layout-Umgebung definiert werden.
Einschränkungen wie "normalerweise" machen mich immer mißtrauisch. ;)

LSR
Im LSR gibt es acht Snippets die \new Score verwenden.
In sechs davon sollte es besser durch \score ersetzt werden.
In zweien wird es benutzt um \with { ... } zu setzen. Hier wäre es sinnvoller die entsprechenden Setzungen ins \layout zu transferieren.

Contributers Guide (CG)
Hier kann man folgendes finden (in Diskussionsansätzen zur Weiterentwicklung der LilyPond-Syntax, "GLISS")
http://lilypond.org/doc/v2.17/Documentation/contributor/specific-gliss-issues
Ich zitere (gibt's nur auf englisch)
Zitat
  • on \score vs. \new Score

    But in the light of a consistent syntax and semantic, I see no reason (from the users POV) to disallow it. After all, the real top-level context is a \book {}, isn’t it, and I don’t see a point in disallowing a \new Score construct just like \new Staff.

    From a syntactical POV, I see the following pros for \new Score: - You can write \with { ... } for every other context but \Score, which (for consistency) should also work with \new Score. - When there’s a \new Foo Bar, there’s also a \context Foo Bar, which makes the same as a parallel instantiation of all Bar’s. - [Quoting Rune from http://www.mail-archive.com/lilypond-devel@gnu.org/msg14713.html "I know that the \score-statement is a syntactical construct, but I think it would be nice to hide this fact from the users. I think we could make the use of score-block much more intuitive if changing the syntax to \new \Score and adding an implicit sequential-statement to the score."
  • Discussion on http://code.google.com/p/lilypond/issues/detail?id=1322 about \new vs. \context.

Doku zum verwandten \context Score
Gibt es nicht!
Einzige Erwähnung von \context Score in der Release-Ankündigung für v2.2 im file Documentation/misc/announce-v2.2.html (ich weiß allerdings im Moment nicht wo man das online findet. Ich habe es in meinem git repository.)
Ich zitiere (auch wenn es hier nicht von besonderem Belang ist)
Zitat
  • Translators and contexts have been split. The result of this internal cleanup is that Score no longer is the top context; Score is contained in the Global context. Consequently, it is possible to tweak Score as follows:

                \context Score \with {
                  ...
                }
     

Zusammenfassung
Die Doku zu \new Score bzw \context Score gibt nicht viel bis gar nichts her.
Die Anmerkungen im CG sind sind nur das: Anmerkungen, Gedanken, Ansätze.

Wenn man diesem link folgt, runter-scrollen bis "Kontexteigenschaften mit \context setzen",  könnte man sogar vermuten, daß man currentBarNumber = ... in \layout setzen kann.

Ich hätte allerdings erwartet, daß jeder Takt BarNumber 10 erhält.

Zu meiner großen Überraschung funktioniert es aber!!
Und scheint mir tatsächlich die eleganteste Lösung zu sein.

\version "2.16.2"

\layout {
  \context {
    \Score
    currentBarNumber = #10
  }
}

\new Staff
\relative c' { \bar "" \repeat unfold 10 { c'1 \break } }
Deine Beispiele, die ja mit \grace anfangen, funktionieren ebenfalls.


Jetzt habe ich was gelernt!! :)


Viele Grüße,
  Harm

P.S. Dokumentation von software ist ein Problem:  :D


« Letzte Änderung: Mittwoch, 21. August 2013, 14:21 von harm6 »