Autor Thema: DoubleSlurs wirkt auch auf Einzelnoten  (Gelesen 1080 mal)

Manuela

  • Gast
DoubleSlurs wirkt auch auf Einzelnoten
« am: Donnerstag, 30. März 2017, 21:39 »
In der Doku steht
Zitat
If set, two slurs are created for every slurred note, one above and one below the
chord.

Tatsächlich werden auch für Einzelnoten doppelte Bögen erzeugt, ist das ein bug oder ein feature?

\version "2.19.56"

\relative c'' {
  \set doubleSlurs= ##t
  < c e > ( < d f > )
  e ( f )
}

trulli

  • Gast
Re: DoubleSlurs wirkt auch auf Einzelnoten
« Antwort #1 am: Freitag, 31. März 2017, 08:08 »
Was es so alles gibt...   :D

Doppelbögen an Einzelnoten sind dann sinnvoll, wenn zwei Stimmen als Prime zu einer Note werden. Kommt sicher selten vor - aber es kommt vor. Insofern unterstelle ich hier volle Absicht.

LG

Manuela

  • Gast
Re: DoubleSlurs wirkt auch auf Einzelnoten
« Antwort #2 am: Freitag, 31. März 2017, 08:20 »
Ich hätte es lieber anders gehabt, denn Einzelnoten kann man auch als Akkord schreiben.

fugenkomponist

  • Gast
Re: DoubleSlurs wirkt auch auf Einzelnoten
« Antwort #3 am: Freitag, 31. März 2017, 09:57 »
Für eine Begründung hilft es, mal per \displayMusic in die interne Struktur reinzuschauen. Erstmal nur Einzelnoten und Akkorde ohne Bögen:
\displayMusic { g a <g e> <a f> }
Für die Akkorde werden NoteEvents in EventChords gepackt (übrigens kann man das auch für Einzelnoten leicht erzwingen: <g> <a>).
\displayMusic { g( a) <g e>( <a f>) }
Hier wird in die EventChords noch ein SlurEvent noch mit reingepackt – da das gleiche für die Einzelnoten auch passiert, haben wir hier plötzlich auch EventChords (die zwar nur ein einziges NoteEvent, aber eben auch ein SlurEvent beinhalten).

An diesem Punkt müßte bei doubleSlurs also nicht einfach geschaut werden, ob wir einen Akkord haben (weil Akkorde, aber eben auch Einzelnoten mit Zusätzen gleichermaßen in EventChords gepackt werden), sondern die NoteEvents in jedem EventChord gezählt werden. Die context property doubleSlurs wird aber erst im Slur_engraver ausgewertet, der in der Datei lily/slur-engraver.cc, also in C++ geschrieben ist. Falls man überhaupt noch auf die verursachenden Events zugreifen kann in einem Engraver (weiß ich nicht, kenn mich mit Engravern nicht aus), dann müßte man wohl einen eigenen Engraver (in Scheme?) schreiben und den Slur_engraver durch diesen eigenen ersetzen.

Vielleicht hab ich was grundlegendes übersehen, aber es sieht so aus, als wär da so automagisch erstmal nicht viel zu machen. Ich würd mir hier mit ner Abkürzung behelfen:\version "2.19.56"

nods = \once \set doubleSlurs = ##f

\relative c'' {
  \set doubleSlurs= ##t
  < c e > ( < d f > )
  \nods e ( f )
  e ( f )
}

Manuela

  • Gast
Re: DoubleSlurs wirkt auch auf Einzelnoten
« Antwort #4 am: Freitag, 31. März 2017, 17:45 »
Danke für die Erläuterung, komponist, so tief bin ich nicht in die Materie eingedrungen.

Ich habe das Problem halt gelöst, indem ich die Verdoppelung bei Bedarf ein- bzw. ausschalte. Mich hat es halt nur kalt erwischt, weil ich mit diesem Verhalten nicht gerechnet hatte, und die Doku nicht eindeutig ist.