Deutschsprachiges LilyPond-Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: coach@iKhwaya am Sonntag, 17. Mai 2020, 00:08

Titel: \global - Variable redundant??? :: GELÖST
Beitrag von: coach@iKhwaya am Sonntag, 17. Mai 2020, 00:08
Hallo ihr Lilienteichler!


\version "2.21.1"
\paper {
top-margin = 20

}
\include "Ressourcen.ly"

\header {
      title = \markup \column { "Non Rien" \vspace #1 }
      subtitle = \markup \column { "Band part" \vspace #1 }
      opus = \markup \column { "frei nach den 'Poppys'" \vspace #1 }
      copyright = "Copyright 2020 by Robert Dusemund and iKhwaya the Singing Band"
    }

global = {
  \time 4/4
  \key c \major
  \tempo 4=144
}

chordNames =  {
  \global
r1 r1 \FourBarRest \Akk_Refrain
}

rhodes = {

  \global <== redundant oder nicht?

r1 r1\Intro \Intro \Kb_Refrain \Kb_VerseB \Kb_Refrain \Kb_VerseB \Kb_Refrain \Intro \Intro \Kb_Refrain \Kb_Refrain \Outro
}



Das sollte meine Frage eigentlich erklären.

Und am Fuß fand ich noch das:


\layout { }
  \midi { }
  tempo 4= 100 <== widerspricht der Tempo-Angabe unter \global
}

Die Datei wird ohne Fehler kompiliert... ich bin nun etwas verwirrt...
Titel: re: \global - Variable redundant???
Beitrag von: ingmar am Montag, 18. Mai 2020, 15:37
Zitat von: coach@iKhwaya am Sonntag, 17. Mai 2020, 00:08
Das sollte meine Frage eigentlich erklären.
Nö, tuts nicht. Das ist ein Codefragment plus einige unterschwellige, nicht ausgesprochene Vermutungen. Ein Minimalbeispiel ist es jedenfalls nicht.

Was findest du daran verwirrend?

Eine Variable wird definiert, zweimal in einer anderen Definition verwendet. Wie diese beiden anderen Definitionen dann eingesetzt werden, zeigst du uns allerdings nicht.

Werden sie vielleicht zur Erstellung einer Partitur verwendet? Oder auch für Einzelstimmen? Dann wäre es sehr klug, gleiche Tonarten und Taktarten sicherzustellen. Verwendet man sie beide in einer Partitur, ist die mehrfache Angabe aber auch nicht schädlich. Warum sollte sie?

Aber vielleicht haben diese Sätze gar nichts mit deinem Problem zu tun?

--ingmar
Titel: Antw:\global - Variable redundant???
Beitrag von: coach@iKhwaya am Montag, 18. Mai 2020, 19:36
1. ich hab das "Teil" so gefunden.
2. ich wollte zeigen wo ich auf dieses \global gestoßen bin, und das sind etwa 3% vom Code, dachte das sei minimal genug.

Zur Präzision meiner Fragen: Ist dieses \global also was selbstdefiniertes? Ich dachte das sei eine notwendige Systemvariable, und dachte deshalb auch: warum innerhalb des Codes das noch jedes mal neu aufrufen?

Mit freundlichem Gruß
Robert
Titel: re: \global - Variable redundant???
Beitrag von: ingmar am Montag, 18. Mai 2020, 20:02
nein, global ist eine Variable wie jede andere. Viele verwenden diesen Namen gerne; er scheint sich zu einer Art Konvention entwickelt zu haben für die Tempo-, Takt und ähnliche Angaben, die in allen Stimmen gebraucht werden. Ich benutze diesen Namen nie.

Sorry, wenn ich dich da angefahren hab! Aber es war (mir) wirklich nicht nachvollziehbar, wo es bei dir gezuckt hat.

--ingmar
Titel: re: \global - Variable redundant???
Beitrag von: ingmar am Montag, 18. Mai 2020, 20:20
Zitat von: coach@iKhwaya am Montag, 18. Mai 2020, 19:36
ich wollte zeigen wo ich auf dieses \global gestoßen bin, und das sind etwa 3% vom Code, dachte das sei minimal genug.
Nein, das ist kein Minimalbeispiel, wie es hier gefragt ist.
1. Oben gibt es eine Definitionen von paper. Da kann man sich denken, dass die nicht notwendig ist. Sowas ist sofort ein Kandidat fürs Weglassen.
2. Ganz Ähnliches gilt für header.
3. Dann kommt ein \include – das heißt, ein externes File wird eingebunden. Wie sich weiter unten zeigt, werden dort vermutlich Variablen definiert wie \Intro \Kb_Refrain \Kb_VerseB \Outro. Ohne die Definitionen dieser Variablen kann die Sache natürlich nicht kompilieren. An dieser Stelle ist dein File also sozusagen "zu minimal".

Also, wie sieht ein solches Minimalbeispiel aus, wonach hier ständig gefragt wird? Es soll dein Problem in knapper Form zeigen – indem alles Unwichtige weggelassen wird, so dass sich jeder dort sofort zurechtfinden kann, und ohne irgendwelche Seiteneffekte von Details, die mit der Sache nichts zu tun haben. Und: Das Beispiel soll kompilieren! Sonst muss ja jeder, der sich damit beschäftigt, erstmal versuchen, den Fehler zu finden. Und jeder einzelne deiner Helfer wieder von Neuem.


Gruß,
--ingmar
Titel: Antw:\global - Variable redundant???
Beitrag von: Manuela am Dienstag, 19. Mai 2020, 08:14
global = {
  \time 4/4
  \key c \major
  \tempo 4=144
}


ist m.E. kein besonders guter Stil. Warum? Es werden mehrere Definitionsbereiche vermischt.

\key c \major (http://lilypond.org/doc/v2.20/Documentation/internals/keysignature) und \time 4/4 (http://lilypond.org/doc/v2.20/Documentation/internals/timesignature) betreffen den Context Staff (http://lilypond.org/doc/v2.20/Documentation/internals/staff), während \tempo 4=144 (http://lilypond.org/doc/v2.20/Documentation/internals/metronomemark) im Context Score (http://lilypond.org/doc/v2.20/Documentation/internals/score) beheimatet ist.

M.M. nach sollten Variable, die Objekte enthalten, die in unterschiedlichen Contexten beheimatet sind, nicht mehrfach verwendet werden. Es ist zwar kein Fehler, kann jedoch zur Verwirrung führen.

Leider taucht diese unsägliche \global Variable immer wieder in der Dokumentation auf, außerdem stiftet der Name zustätzlich Verwirrung, weil Neulinge aufgrund des Namens glauben, es handelt sich um eine Lilypond-systemweite Definition.
Titel: Antw:\global - Variable redundant???
Beitrag von: Arnold am Dienstag, 19. Mai 2020, 08:38
Hallo coach@iKhawaya,

ich habe zwar noch nicht die Version 2.21.1 bei mir installiert, aber dein »Minimalbeispiel« könnte ich sicher nicht kompilieren!

Aber jetzt noch Antworten auf das, was Du möglicherweise fragst:

Arnold

P.S. Wenn Du dich durch das Erstellen eines Minimalbeispiels mit dem Problem auseinandersetzt, also viele Varianten ausprobierst um die Problemstelle einzukreisen, dann wirst Du auch häufig die Lösung selbst finden.
Titel: Antw:\global - Variable redundant???
Beitrag von: ingmar am Dienstag, 19. Mai 2020, 08:47
Zitat von: Manuela am Dienstag, 19. Mai 2020, 08:14
M.M. nach sollten Variable, die Objekte enthalten, die in unterschiedlichen Contexten beheimatet sind, nicht mehrfach verwendet werden. Es ist zwar kein Fehler, kann jedoch zur Verwirrung führen.

Da bin ich sofort dabei! Vorschlag (ich mache es ähnlich, aber im Detail natürlich doch anders...): Definiere \staffglobals und \scoreglobals.

Gruß an alle,
--ingmar
Titel: Antw:\global - Variable redundant???
Beitrag von: Manuela am Dienstag, 19. Mai 2020, 08:55
Zitat von: ingmar am Dienstag, 19. Mai 2020, 08:47
Definiere \staffglobals und \scoreglobals.

Hmm, diese Definitionen könnte man dann gleich in einen \layout Abschnitt schreiben und spart sich damit das Einfügen der Variablennamen.

Womit sich wieder einmal zeigt, viele Wege führen nach Rom  ;)
Titel: Antw:\global - Variable redundant???
Beitrag von: coach@iKhwaya am Dienstag, 19. Mai 2020, 10:16
Danke Leute, ich weiß dann bescheid! Minimalbeispiele ohne verwirrende Verwirrungen .. boaaah "Mühsam ernährt sich das Eichhörnchen..." ;) ;D
Titel: re: \global - Variable redundant???
Beitrag von: ingmar am Dienstag, 19. Mai 2020, 10:31
Zitat von: coach@iKhwaya am Dienstag, 19. Mai 2020, 10:16
boaaah "Mühsam ernährt sich das Eichhörnchen..." ;) ;D

Ja, jeder hier kennt das Problem und versteht das. Aber – darauf hatte oben auch Arnold hingewiesen – du wirst sehen: In vielen Fällen klären sich deine Fragen schon von selbst beim Erstellen des Minimalbeispiels. Dann hast du sicher etwas dazugelernt. Das ist wichtiger und besser als die schnelle Lösung, indem man andere für sich arbeiten lässt.

--ingmar