Eingeschobene Stimme kommt nicht in die Tabulatur.

Begonnen von Mjchael, Mittwoch, 1. Dezember 2021, 12:32

« vorheriges - nächstes »

Mjchael


%<score sound="1" raw="1">
\version "2.20.0"
\header {
  title = " Op. 31 Etude No.1 Andante "
  % subtitle = " ... "
  % piece = " ... "
  composer = "Ferdinand Sor (*1778-†1839)"
  % opus = "Op.31"
  % source = "using different sources"
  arranger = "Mjchael"
  copyright = "ccbysa de.wikibooks.org/wiki/Gitarre"
  % footer = " ... "
}

Diskant =  \relative c' {
  \set Staff.midiInstrument = "acoustic guitar (nylon)"
  %Part 1
  \override NoteHead #'color = #red       
  \partial 4
  \repeat volta 2 { g4
    e'2 c4 | g c e | g-4 f-1 d-4 | b2 g4 |
    g2 c4 | c b c |
    %% kurzfristig zweistimmig
    <<
      {
        d2.-4~ | d
      }
      \new Voice {
       \override NoteHead #'color = #green
        %% g4\rest =   1/4 Pause in Höhe g
        g,4\rest g4 g | g4 g g
      }
    >> \break
    %% wieder einstimmigen
    \override NoteHead #'color = #red
    e'2 c4 | g c e | g-3 fis-2 f-1 | d-4 b g | c2 e4 |
    a,-2 d-4 b | c2 e4 | c r4
  }

}

Bass =  \relative c' {
  \override NoteHead #'color = #blue
  \partial 4
  \repeat volta 2 { s4 |
    c,2. | e | d | f-3 | e | e4 d c | b2.-2~ |
    b | c2. | e | d | f-4 | e4 g c, | f2-3 g4 |
    c, e g | <c, e> s4
  }
}

Gitarre = << \Diskant \\ \Bass >>
       
\score {
  <<
    \new Voice  {
      \clef "treble_8" \time 3/4 
      \tempo 4 = 120 \key c \major
      \set Score.tempoHideNote = ##t
      \Gitarre
    }
    \new TabStaff {
        \Gitarre
    }
  >>
  \layout { }
}
\score {
  <<
    \new Voice  {
      \clef "treble_8" \time 3/4 
      \tempo 4 = 120 \key c \major
      \unfoldRepeats \Gitarre
    }
  >>
  \midi { }
}

\paper {
  indent=0\mm
  line-width=180\mm
  oddFooterMarkup=##f
  oddHeaderMarkup=##f
  % bookTitleMarkup=##f
  scoreTitleMarkup=##f
}
%</score


Ergibt:


Das Problem bei Takt 8 und 9 sollte klar sein.
und liegt m Code bei: %% kurzfristig zweistimmig

Wo liegt das Problem?

Als Quick & Dirty Lösung könnte ich den Code in 3 Teile zerlegen und für die Tabausgabe einen eigenen einstimmigen Takt 8 und 9 schreiben. oder gleich die Noten Nochmal schreiben.

Gibt es da eine bessere Lösung


Sollte das Image verschwinden, s. Anhang.
Meine Durchhalteparole:
Das sollst du nicht können!
Das sollst du lernen!

harm6

Du hast die temporary Stimme mittels \new Voice eingeführt, der TabStaff akzeptiert aber grundsätzlich keinen context vom Typ Voice. Deshalb wird die neue Voice (wie üblich) unten angefügt.

Nimm stattdessen den algemeineren Bottom-context und benenne ihn (ansonsten wird er dem bestehenden Bottom-context zugeschlagen), \voiceThree hilft einige Warnungen abzustellen:


%<score sound="1" raw="1">
\version "2.20.0"
\header {
  title = " Op. 31 Etude No.1 Andante "
  % subtitle = " ... "
  % piece = " ... "
  composer = "Ferdinand Sor (*1778-†1839)"
  % opus = "Op.31"
  % source = "using different sources"
  arranger = "Mjchael"
  copyright = "ccbysa de.wikibooks.org/wiki/Gitarre"
  % footer = " ... "
}

Diskant =  \relative c' {
  \set Staff.midiInstrument = "acoustic guitar (nylon)"
  %Part 1
  \override NoteHead #'color = #red       
  \partial 4
  \repeat volta 2 { g4
    e'2 c4 | g c e | g-4 f-1 d-4 | b2 g4 |
    g2 c4 | c b c |
    %% kurzfristig zweistimmig
    <<
      {
        d2.-4~ | d
      }
      \new Bottom = "middle" {
       \override NoteHead #'color = #green
       \voiceThree
        %% g4\rest =   1/4 Pause in Höhe g
        g,4\rest g4 g | g4 g g
      }
    >> \break
    %% wieder einstimmigen
    \override NoteHead #'color = #red
    e'2 c4 | g c e | g-3 fis-2 f-1 | d-4 b g | c2 e4 |
    a,-2 d-4 b | c2 e4 | c r4
  }

}

Bass =  \relative c' {
  \override NoteHead #'color = #blue
  \partial 4
  \repeat volta 2 { s4 |
    c,2. | e | d | f-3 | e | e4 d c | b2.-2~ |
    b | c2. | e | d | f-4 | e4 g c, | f2-3 g4 |
    c, e g | <c, e> s4
  }
}

Gitarre = << \Diskant \\ \Bass >>
       
\score {
  <<
    \new Voice  {
      \clef "treble_8" \time 3/4
      \tempo 4 = 120 \key c \major
      \set Score.tempoHideNote = ##t
      \Gitarre
    }
    \new TabStaff {
        \Gitarre
    }
  >>
  \layout { }
}
\score {
  <<
    \new Voice  {
      \clef "treble_8" \time 3/4
      \tempo 4 = 120 \key c \major
      \unfoldRepeats \Gitarre
    }
  >>
  \midi { }
}

\paper {
  indent=0\mm
  line-width=180\mm
  oddFooterMarkup=##f
  oddHeaderMarkup=##f
  % bookTitleMarkup=##f
  scoreTitleMarkup=##f
}
%</score


Ein minimal wäre schon besser gewesen, vielleicht wärst Du dann selbst auf die Lösung gekommen oder vielleicht hättest Du auch früher eine Antwort bekommen...


HTH,
  Harm

Mjchael

Erstmal
Danke für die Hilfe!

Wurde hier eingesetzt
Wikiboiks: Notenlesen: Vorarbeiten # Fernando Sor Op.31 Etude No.1 Andante

Was den Schnipsel angeht:
Ich bitte um Nachsicht. Ich tippe die noten gleich in die Wikibooks ein. Das Problem mit der Dreistimmigkeit entdeckte ich erst, als es auftauchte. (Lerning by Doingl.
Dannach verbringe ich stunden damit, die Musterlösung zu finden, und das Problem bei den Tabs herauszufinden.

Wie soll man denn auf die Lösung kommen?
Es mag ja irgendwo dokumentiert sein, aber als Normalsterblicher findet man dieses nicht mittels Navigation und Suche.

Da ich keine Ahnung hatte, wo das Problem war, hatte ich keine Ahnung welches Schnipsel ausreicht. Dazu hätte ich den Fehler kennen müssen...

Dann Arbeite ich momentan am Handy. Mal eben einen funktionierenden Code erstellen, der potentielle Fehlerquellen berücksichtigt ist da nicht ganz so einfach.

Bitte sei mir nicht böse, dass ich den Quellcode nutzte, den ich parat hatte.

Zudem sammle ich den Code für ein spezielles Wikibooks Tutorial inklusive Bugfixes speziell für Wiki-User. Das neue funktionsreichere Plugin gibt es noch nicht so lange. Die Etüde ist ein Paradebeispiel für dieses Problem, zumal sie in zig Klassikgitarrenschulen und gemischten Etüdensammlungen vorkommt.

Wenn das Problem (zumindest aus meiner Sicht) überschaubarer ist, werde ich die Anfrage auf das notwendigste kürzen.

Meine Durchhalteparole:
Das sollst du nicht können!
Das sollst du lernen!

harm6

ZitatDa ich keine Ahnung hatte, wo das Problem war, hatte ich keine Ahnung welches Schnipsel ausreicht. Dazu hätte ich den Fehler kennen müssen...

Ganz klares nein!

Um einen Fehler einzugrenzen, reicht es nach und nach alles auszukommentieren. Es darf nur bleiben was das Problem verursacht.
Im vorliegenden Fall kann man den \header, das \paper und den midi-score direkt eliminieren.
Dann kommen die kleineren Elemente: Farben, \tempo, midiInstrument, \repeat, partial
Du weißt bereits wo das Problem auftritt, also schmeiß alles raus was davor und danach kommt. Den Bass brauchst Du überhaupt nicht.
Reduziere die Takte, tatsächlich brauchst Du nur einen.
Ersetze Noten durch Pausen/Spacer.

Das führt zu:

\version "2.20.0"
\new TabStaff << s1 \new Voice s1 >>


Das nenne ich ein minimal.
Beim letzten Schritt (Pausen/Spacer) würde ich noch mit mir reden lassen.

Aber ansonsten kann das jeder!!! Ohne Kenntnis der Art des Fehlers!!! Ohne irgendwelche Programmierkenntnisse!!!
Na gut, man muß schon wissen wie man auskommentiert, aber hey!

Wenn Du nichts davon machst kann der Eindruck entstehen, daß Du nicht auf Fehlersuche gegangen bist, sondern das Problem den Helfenden vor die Füsse schmeisst, die dann möglicherweise den Eindruck bekommen könnten ihre Zeit sei als weniger wertvoll erachtet worden als Deine eigene.

Bislang habe ich noch nicht von der Problemlösung gesprochen, sondern nur davon das Problem so darzustellen, daß potentielle Helfer direkt loslegen können, ohne erst noch selbst ein solches minimal anfertigen zu müssen.

Nochmal: das ist Deine Aufgabe.

Zumal das Erstellen eines minimal sehr häufig dazu führt, daß Du die Lösung selbst erkennst. Es führt jedenfalls immer zu einem tieferen Verständnis der Abläufe.

Zitat
Wie soll man denn auf die Lösung kommen?
Es mag ja irgendwo dokumentiert sein, aber als Normalsterblicher findet man dieses nicht mittels Navigation und Suche.

Um auf die Lösung zu kommen brauchst Du ein tieferes Verständnis wie LilyPond simultaneous music behandelt. Vor allem in Hinblick darauf wie diese simultaneous music im Staff bzw TabStaff umgesetzt wird.

Eigentlich soll NR 1.5.2 Multiple voices das nötige Rüstzeug dafür liefern.
http://lilypond.org/doc/v2.23/Documentation/notation-big-page#single_002dstaff-polyphony
Aber gerade die Staff/TabStaff-Problematik wird nicht einmal thematisiert.

Insofern habe ich Zweifel, ob Du die Lösung selbst hättest finden können.

Deshalb habe ich einen patch eingereicht, der den relevanten Abschnitt der NR erweitert.
https://gitlab.com/lilypond/lilypond/-/merge_requests/1045
Im Anhang ein Auszug aus dem NR-pdf nach dem patch, schau mal drauf, ob es geholfen hätte.

Im übrigen ist das Erstellen eines patches eine erheblich sinnvollere Nutzung meiner Zeit, als das Erstellen von minimals oder das Formulieren länglicher mails, die diesen Prozess erläutern. ;)

Gruß,
  Harm


Mjchael

Der Rüffel mit dem Kürzen ist angekommen.
Da ich es nicht deutlich gesagt habe, ich arbeite derzeit notgedrungen nur via Handy. Mir sind da gewisse Grenzen gesetzt. Und es gibt Bugs mit Android-Tastaturen und dem verwendeten SMF. Da spinnt ab und zu mal die virtuelle Tastatur. Soll aber nicht das Thema sein.

In Zukunft wird es nicht mehr vorkommen, das ein Code so groß ist.

Jedoch denke ich, dass dein Codeschnipsel doch etwas zu klein ist, um das Problem einzugrenzen. Es sei den, man weiß vorher, was das Problem ist. Nur dann brauche ich auch nicht mehr zu fragen.


NR 1.5.2 Multiple voices habe ich schon angewendet.
Bei dreistimmigen Stücken taucht das Problem nicht auf. Mit { s1*21 g4 g g s1*17 g4 g g  ... } wollte ich allerdings nicht arbeiten, weil es mir wie mit Kanonen auf Spatzen zu schießen erscheint.

Den Code für vorübergehende polyphone Passagen habe ich ebenda mittels copy&past entnommen. bis auf die anderen Noten und ein paar Leerzeilen müsste der fast 1:1 übereinstimmen.

Die Noten stimmen ja, was ich mittels Farben überprüft habe.

  \new Bottom = "middle" {   \voiceThree

DEN Schnipsel habe ich nirgendwo entdeckt. Was bringen mir hier Programmierfähigkeiten, um das Problem bei Tabulaturen auszumachen? Ich gebe zu, ich habe nich erhebliche Lücken, was Lilipond angeht. Aber den Stifel ziehe ich mir nicht an. Die Lösung für das Problem war nicht zu funden, wenn man nicht schon vorher die genaue Ursache und die damit verbundenen Lösung kennt.

Aus meiner Sicht das Problem ebenso bei der Tabulatur liegen können. Und von anderen Programmen mit denen ich Tabulaturen als SVG-Grafik erstellt habe (JavaScript basiert) sind mir einige Ränderungsprobleme bewusst. Und mit verschiedenen Hacks, wie ich doch etwas hinbekommen habe bin ich schon vertraut.

Leider sind Beispiel-Gitarrennoten mit Tabulaturen wo man vordefinierte Templates nutzen kann, im Moment noch sehr dünn gesät. Es mag sie geben, aber sie sind zumindest für mich nicht  über Google oder sonstige Portale wie Mutopia etc. zu finden. Die oben zitierte sehr bekannte Etüde konnte ich in keinem Lilypond-Archiv finden. Ich hege den Verdacht, es hat etwas mit der vorübergehenden polyphonen Passage zu tun hat.

Wie dem auch sei, deine Hilfe wird über kurz oder lang den Wikinutzern zur Verfügung gestellt, und es wird sich hoffentlich bei den Lilipond-Pluggin-Usern verbreiten. Es gibt schon eine rege Zusammenarbeit mit den niederländischen und italienischen Wikibooks, was das gegenseitige Nutzen von Quellen angeht. Also besteht berechtigten Grund zur Hoffnung, dass deine Mühe mit dem zu langen Code letztlich vielen Usern zugute kommen wird.

https://test.wikipedia.org/wiki/User:Mjchael/sandbox#Eingeschobene_Stimme_kommt_nicht_in_die_Tabulatur
Meine Durchhalteparole:
Das sollst du nicht können!
Das sollst du lernen!

harm6

Zitat
Jedoch denke ich, dass dein Codeschnipsel doch etwas zu klein ist, um das Problem einzugrenzen. Es sei den, man weiß vorher, was das Problem ist. Nur dann brauche ich auch nicht mehr zu fragen.

Hier widerspreche ich.
Das Problem ist ja schon im anfänglich geposteten Bild sichtbar: Es erscheint eine neue Voice unter dem TabStaff statt in ihm.
Also geht es dann darum einzugrenzen wodurch das denn verursacht wird.
Mittels des zuletzt beschriebenen Wegs kann man dann zu obigem minimal finden, denn es tut genau das (und sonst nichts):
Es erscheint eine neue Voice unter dem TabStaff statt in ihm.

ZitatDie Noten stimmen ja, was ich mittels Farben überprüft habe.

  \new Bottom = "middle" {   \voiceThree

DEN Schnipsel habe ich nirgendwo entdeckt.

Vielleicht war ich nicht klar genug.
Dieses snippet konntest Du gar nicht finden, denn es gab es bislang nicht. Tatsächlich wird es erst dann in der Doku zugänglich sein, wenn mein patch akzeptiert wird und eine neue release rauskommt (deshalb hatte ich den pdf-Auszug vorab gepostet. Er stellt dar wie es werden soll.)

ZitatDie Lösung für das Problem war nicht zu funden, wenn man nicht schon vorher die genaue Ursache und die damit verbundenen Lösung kennt.

Ja und nein.
In der IR steht das der TabStaff nur TabVoice akzeptiert. Also keine Voice, deshalb der zusätzliche Context unter dem TabStaff.
Das hättest Du eventuell finden können. Allerdings hilft Voice durch TabVoice zu ersetzen natürlich nicht weiter.

Das Problem zu kennen, hilft also nicht immer direkt die Lösung zu erkennen.

Im vorliegenden Fall muss man wissen, wie LilyPond implizite Contexte kreiert.
Beim Staff ist es die Voice, beim TabStaff die TabVoice.
Z.B. werden beim << {...}\\{...}>> -Konstrukt im Staff Voices, aber im TabStaff TabVoices erzeugt.
Sobald Du aber Voice oder TabVoice explizit setzst, klappt es entweder mit dem Staff oder dem TabStaff nicht mehr.

Also muß man einen allgemeinen bottom-context schreiben, um beides möglich zu machen.
Die Bezeichnung dafür, "Bottom", ist allerdings nicht dokumentiert, und kommt nur in den internen ly/scm-files vor.

Das zu finden, zu verstehen und anwenden zu können ist unrealistisch.

Deshalb auch mein patch.

Vielleicht wird dann auch verständlich, daß für
ZitatBei dreistimmigen Stücken taucht das Problem nicht auf.
entscheidend ist, wie die Dreistimmigkeit eingegeben wird:
Sobald Voice oder TabVoice explizit verwendet wird, fliegt es irgendwo aus der Kurve, sobald dieselbe music sowohl im Staff als auch im TabStaff verwendet werden soll.

ZitatWie dem auch sei, deine Hilfe wird über kurz oder lang den Wikinutzern zur Verfügung gestellt, und es wird sich hoffentlich bei den Lilipond-Pluggin-Usern verbreiten. Es gibt schon eine rege Zusammenarbeit mit den niederländischen und italienischen Wikibooks, was das gegenseitige Nutzen von Quellen angeht. Also besteht berechtigten Grund zur Hoffnung, dass deine Mühe mit dem zu langen Code letztlich vielen Usern zugute kommen wird.

Sehr schön.

Tatsächlich war Dein code keine 100 Zeilen lang, ich habe schon files mit 10 000 Zeilen gesehen...
Aber bitte habe auch Du Verständnis, daß Leute die sehr häufig Hilfestellung geben, zunehmend grantig werden, wenn ihnen unnötige Arbeit aufgedrängt wird.
Bedauerlicherweise führt das häufig dazu, daß wir dann irgendwann inaktiv werden.

Gruß,
  Harm



Mjchael

Dein Widerspruch ist mir nicht ganz verständlich. Aber ich vermute, wir reden etwas aneinander vorbei.
ICH wäre nie auf die Idee gekommen, dass dein kurzer Codeschnipsel mein Problem ausreichend beschrieben hätte. Und ICH wäre nicht darauf gekommen es auf den Schnipsel zu reduzieren.

Das ich zu viel des Guten gepostet habe, das bleibt dagegen unbestritten. Es ist halt ein schönes Paradebeispiele für das Problem, weil es für viele Gitarristen die erste Etüde mit Dreistimmigkeit ist. Für Gitarrenlehrer also vermutlich auch die erste, die sie selbst setzen wollen. Aber da es diese Etüde in keinem einschlägigen Portal als Lilipond- Datei gibt (obwohl ich sie in jedem zweiten Klassiklehrbuch oder Etüden-Sammlung finde) vermute ich, dass sich die Gitarristen mit dem gleichen Problem konfrontiert sahen.  ;D

Aber es bleibt dabei:
Danke für deine Hilfe und :) Danke für die Hintergrundinformationen!
Wenn man sich der Skriptsprache mit Codebeispielen nähert, dauert es, bis man in die Geheimnisse einsteigt.

Mit dem Hintergrundwissen weiß ich auch deine Mühe noch mehr zu schätzen, ein Pach für das Problem zu finden.

Du siehst, dass ich die Gitarrennoten gemeinnützig auf den Wikibooks zur Verfügung stelle.
Ich bemühe mich den Code so ordentlich zu schreiben, dass andere Wiki-Nutzer den Code problemlos weiterverwenden. Da neige ich dazu, etwas recht ausführlich zu beschreiben, damit andere ohne Lilypond-Erfahrungen die Beispiele übernehmen können.
Es lag mir fern, die Arbeit unnötig zu verkomplizieren, dass ich gerade die Farben und die Kommentare drin gelassen habe und beschrieben habe wo ich das Problem vermutete.

Ich rechnete  mit einer weitaus komplizierteren Lösung.

Ich bin mal auf die kommenden Realeses gespannt, inwiefern dein Pach Anwendung findet. Bis jedoch dieses für das Wikipedia-Pluggin nutzbar sein wird, vergegen vermutlich Jahre.

Das Beispiel ist übrigens nicht ganz umsonst gewählt. Für Gitarristen ist diese Etüde häufig die allererste, wo ihnen Dreistimmigkeit begegnet.

Also nochmals Danke für deine super Hilfe.



Meine Durchhalteparole:
Das sollst du nicht können!
Das sollst du lernen!

harm6

ZitatDein Widerspruch ist mir nicht ganz verständlich. Aber ich vermute, wir reden etwas aneinander vorbei.

Aber wir können uns sicherlich darauf eingen, daß nicht nur das eigentliche Thema dieses threads besprochen und gelöst ist, sondern auch das minimal-Thema in einiger Ausführlichkeit (wenn auch nicht erschöpfend) behandelt ist.
Mhh...vielleicht doch "erschöpfend", aber in anderem Sinne ... :)

ZitatIch bin mal auf die kommenden Realeses gespannt, inwiefern dein Pach Anwendung findet. Bis jedoch dieses für das Wikipedia-Pluggin nutzbar sein wird, vergegen vermutlich Jahre.

Hier verstehe ich nicht ganz was Du meinst, mein patch ist ein reiner Doc-patch, er beinhaltet ja keine neue Funktionalität. Warum sollte es nach der nächsten release (2.23.6) noch lange dauern?

ZitatDas Beispiel ist übrigens nicht ganz umsonst gewählt. Für Gitarristen ist diese Etüde häufig die allererste, wo ihnen Dreistimmigkeit begegnet.

In meinem Hauptberuf bin ich Gitarrenlehrer, könnte also manches zu diesem Thema sagen. Allerdings wäre das nicht nur für diesen thread sondern für LilyPond generell off-topic.

Gruß,
  Harm