Autor Thema: Pause R1 in Mensuralnotation (GELÖST)  (Gelesen 4439 mal)

ingmar

  • Member
Pause R1 in Mensuralnotation (GELÖST)
« am: Montag, 23. November 2015, 16:45 »
hallo,

hier ein kurzes Beispiel in Mensuralnotation - ein paar wenige Noten, dann die Pausen. Zur Orientierung habe ich über die Pausen die Längen geschrieben:

\version "2.18.2"
\new MensuralVoice  {
\clef "petrucci-c3"
  \relative c' {
\time 4/4
c2. d4 e2 f2
R1^"??"
r\breve^"breve"
r1^"1/1" r2^"1/2" r4^"1/4" r8^"1/8" s8
R1^"??"
}
}

Noten und Pausen sind gut lesbar und elegant - auch die ganze Pause ("1/1"). Wir die ganze Pause aber nicht durch r1 erzeugt, sondern durch R1, so ist sie plötzlich fett und absolut unpassend, ein grafischer Fremdkörper, der den Gesamteindruck empfindlich stört.

Ich habe den Eindruck, da ist schlicht vergessen worden, dieses Zeichen für MensuralVoice zu definieren, so dass auf den Default-Font zurückgegriffen wird. R1 müsste genauso aussehen wie r1, das wird auch jeder bestätigen, der noch nie Mensuralnotation gesehen hat.

Ein Bug? Wie kann ich den umgehen?


Gruß, danke,
--ingmar
« Letzte Änderung: Donnerstag, 26. November 2015, 23:31 von ingmar »

RobUr

  • Member
Re: Pause R1 in Mensuralnotation
« Antwort #1 am: Montag, 23. November 2015, 18:26 »
Hallo ingmar,

das ist vermutlich deshalb nicht vorgesehen, weil mensurale Musik ja „hintereinander weg“ läuft; Noten und Pausen haben einheitliche Breiten, keine proportionalen.

Genau so störend wie die R1-Pause empfinde ich den Punkt. Ebenso die „blasse“ Erscheinung der Notenköpfe und -hälse. Wenn ich Incipits notiere, helfe ich mir immer mit etwas mehr „Gewicht“ (siehe Layout-Block). Die Ganztaktpausen kannst du per stencil-override beeinflussen:
\version "2.18.2"

\new MensuralVoice  {
\clef "petrucci-c3"
  \relative c' {
\time 4/4
c2. d4 e2 f2
\override MultiMeasureRest.stencil = #ly:text-interface::print
\override MultiMeasureRest.text = \markup {
\musicglyph #"rests.0neomensural"
}
r\breve^"breve"
R1^"R1"
r1^"r1" r2^"r2" r4^"r4" r8^"r8" s8
R1^"R1"
}
}

\layout {
\context {
\MensuralVoice
\override NoteHead.style = #'neomensural
\override Rest.style = #'neomensural
\override NoteHead.font-size = #1.5
\override Stem.thickness = #3.0
}
\context {
\Staff
\override TimeSignature.font-size = #1.125
}
}

Gruß, Robert

ingmar

  • Member
re: Pause R1 in Mensuralnotation
« Antwort #2 am: Montag, 23. November 2015, 18:51 »
Erstmal vielen Dank für die prompte Antwort..! : - )

Zitat
das ist vermutlich deshalb nicht vorgesehen, weil mensurale Musik ja „hintereinander weg“ läuft; Noten und Pausen haben einheitliche Breiten, keine proportionalen.
Klingt im ersten Moment vernünftig. In meinem Fall geht es darum, aus dem gleichen Notentext eine moderne Ausgabe und eine pseudo-historische zu gewinnen. Letztere hat natürlich enge Grenzen, trotzdem kann ich dem typischen Notenbild mit Lilypond meines Wissens viel näher kommen als mit den großen kommerziellen Programmen.

Übrigens sind diese einheitlichen Breiten bei Lilypond nicht vorhanden; hast du eine Idee, wie man auch diesen Effekt erzielen könnte?

Zitat
Genau so störend wie die R1-Pause empfinde ich den Punkt. Ebenso die „blasse“ Erscheinung der Notenköpfe und -hälse.

Beim Punkt gebe ich dir recht, die drogensüchtige Krakeligkeit der Noten hat aber in meinen Augen schon einen gewissen Charme. Am schönsten wär es, man könnte zwischen mehreren verschiedenen Fonts wechseln. Davon sind wir aber wohl noch etwas entfernt...

Wenn ich also den Punkt passend zu den Notenköpfen etwas verkleinern will, was müsste ich dann tun?

In deinem Code scheint \override MultiMeasureRest.text = \markup { \musicglyph #"rests.0neomensural" } ja den von mir gewünschten Effekt zu erzielen. Aber was macht die Zeile davor, \override MultiMeasureRest.stencil = #ly:text-interface::print?


Herzlichen Dank,
--ingmar

mgd

  • Member
Re: Pause R1 in Mensuralnotation
« Antwort #3 am: Dienstag, 24. November 2015, 00:11 »
Hallo ingmar,

ich bin nicht sicher, ob was ich hierzu zu sagen habe auch für Mensuralnotation gilt, aber zumindest in "normaler" Notation gibt es einen grundsätzlichen Unterschied zwischen Pausen (kleines "r") und Ganztaktpausen (großes "R").

Wie ich es verstehe, sind Pausen musikalische Ereignisse  im Sinne von Noten, wogegen Ganztaktpausen immer den ganzen Takt ausfüllen, weshalb sie für eine Taktart \time m/n immer als R1*m/n geschrieben und im Ergebnis in der Mitte des Taktes
laden. Eine mit r1*m/n geschrieben Pause füllt zwar zeitlich ebenfalls den ganzen Takt aus, wird aber ganz links auf die Zählzeit 1 positioniert. So kannst du in einem 4/4 Takt 2 halbe Pause r2 r2 notieren, wogegen 2 halbe Ganztaktpausen R2 R2 wenig sinnhaft erscheinen (das ist dir wahrscheinlich klar, aber ich wollte sicher sein, dass wir vom Gleichen reden ;)

Insofern scheint mir die semantische Bedeutung einer Ganztaktpause bei Mensuralnotation nicht gegeben zu sein, der einer "normalen" Pause dagegen schon.

Hilft dir das weiter ?

Quintessenz wäre:
Verwende bei Mensuralnotation keine Ganztakpausen :)

Liebe Grüße,
Michael

ingmar

  • Member
re: Pause R1 in Mensuralnotation
« Antwort #4 am: Dienstag, 24. November 2015, 07:48 »
hallo Michael,

was du schreibst, ist einleuchtend und mir prinzipiell auch klar. Vielen Dank für das ausführliche Statement! Genau so würde man es machen, wenn das Ziel einfach wäre, eine optimale Mensuralnotation zu erzeugen. Zu Recht fragst du, warum will dieser Mensch nun unbedingt Ganztaktpausen in einer Umgebung, die Takte nur implizit kennt?

In meinem Fall ist das Erzeugen einer grafisch ansprechenden historischen Notation nur die halbe Wahrheit. Wie an anderer Stelle ausgeführt, ist mein Ziel, aus dem gleichen Notentext sowohl eine moderne als auch eine historische Notation zu erzeugen. Dazu muss ich Kompromisse eingehen.

Die Konsequenz aus dem, was du schreibst, wäre, an den entsprechenden Stellen des Notentextes zwei Versionen vorzusehen und je nach Ziel-Stil die eine oder andere auszuwählen. Also bildhaft gesprochen, in Pseudo-Code:
              <modern:> R1 R1
c4 d2 b4 c1 {                   } r2 f2 e4 d c b...
              <mensural:> r1 r1


Ich müsste mir wieder heraussuchen, wie das ging, aber es ist natürlich grundsätzlich kein Problem. Eine andere Lösung wäre, immer nur r1 zu schreiben und die Pausen in der modernen Fassung künstlich in die Taktmitte zu verschieben. Auch das wird nach meinem Verständnis recht einfach gehen.

Beides hat aber in jedem Fall den Nachteil, entweder den Originaltext oder dessen moderne Aufbereitung unübersichtlich zu machen. Da der moderne Text aber im Mittelpunkt meiner Arbeit und Zeit stehen muss, möchte ich dies gerne vermeiden, wenn es auch anders geht.

Gruß,
--ingmar

fugenkomponist

  • Member
Re: Pause R1 in Mensuralnotation
« Antwort #5 am: Dienstag, 24. November 2015, 08:06 »
Ich habe leider keine Zeit, mich des Problems anzunehmen. Du schreibst aber was von zwei Versionen im Code. Das geht per \tag:
c4 d2 b4 c1 \tag #'modern { R1*2 } \tag #'mensural { r1 r } r2 f2 e4 d c b
% und dann später mit \removeWithTag oder \keepWithTag das richtige raussuchen

ingmar

  • Member
tag
« Antwort #6 am: Dienstag, 24. November 2015, 09:47 »
Zitat
Du schreibst aber was von zwei Versionen im Code. Das geht per \tag [...] und dann später mit \removeWithTag oder \keepWithTag das richtige raussuchen
ja, genau, das wars! Ich hatte es nicht sofort zur Hand. Danke. In diesem Forum werden einem die Wünsche von den Lippen abgelesen..

Aber, wie gesagt, in meiner speziellen Situation gibt es gute Gründe für RobUrs Ansatz, das Pausenzeichen durch das entsprechende Zeichen aus Neomensural zu ersetzen, so interpretiere ich das jedenfalls. Ich muss damit noch ein wenig experimentieren.

Gruß,
--ingmar

ingmar

  • Member
Pause R1 in Mensuralnotation
« Antwort #7 am: Dienstag, 24. November 2015, 10:39 »
hallo,


leider scheint es ein Problem zu geben, wenn die Stimme - wie so oft - mit einer Pause beginnt.

Hier ein Notenbeispiel, das erst im modernen Satz wiedergegeben wird, dann so, wie ich es mir etwa vorstelle und schließlich so nah wie möglich an dem, was RobUr vorgemacht hat:
\version "2.18.2"

TEXT=\relative c'' {
R1
r2 g4 g
g f8 es d c bes a
bes1
}

\score { % Erster Ausdruck: Modern
\new Voice {
\clef "alto"
\TEXT
}
}

\score { % Zweiter Ausdruck: Änderung der Brevis-Pause in \with "versteckt":
\new MensuralVoice \with {
\override MultiMeasureRest.stencil = #ly:text-interface::print
\override MultiMeasureRest.text = \markup { \musicglyph #"rests.0neomensural" }
} {
\clef "petrucci-c3"
\TEXT
}
}

\score { % Dritter Ausdruck, möglichst genau nach RobUrs Original:
\new MensuralVoice {
\override MultiMeasureRest.stencil = #ly:text-interface::print
\override MultiMeasureRest.text = \markup { \musicglyph #"rests.0neomensural" }
\clef "petrucci-c3"
\TEXT
}
\layout {
\context {
\MensuralVoice
\override NoteHead.style = #'neomensural
\override Rest.style = #'neomensural
\override NoteHead.font-size = #1.5
\override Stem.thickness = #3.0
}
\context {
\Staff
\override TimeSignature.font-size = #1.125
}
}
}
Im zweiten und dritten System ist die R1-Pause auf den ersten Blick gar nicht zu sehen!

Wenn man sehr genau hinschaut, erkennt man, dass sie VOR den Schlüssel verschoben wurde.

Was kann man da machen?


Gruß, Danke,
--ingmar

harm6

  • Member
Re: Pause R1 in Mensuralnotation
« Antwort #8 am: Dienstag, 24. November 2015, 22:14 »
Zitat von: ingmar
In deinem Code scheint \override MultiMeasureRest.text = \markup { \musicglyph #"rests.0neomensural" } ja den von mir gewünschten Effekt zu erzielen. Aber was macht die Zeile davor, \override MultiMeasureRest.stencil = #ly:text-interface::print?r

\override MultiMeasureRest.stencil = #ly:text-interface::print
wechselt das interface mit dem der stencil für die MMR produziert wird (default ist ly:multi-measure-rest::print)
Nun ist das 'text-property zugänglich (war es vorher nicht) und man kann mit einfacheren markup-commands den gewünschten output erstellen.
Das funktioniert allerdings nur auf einem sehr direkten Weg. Falls komplexere Sachverhalte berechnet werden müssen ist diese Methode unzulänglich und man muß tiefer in die Internals eintauchen und eingreifen.
So ist es eigentlich auch in der NR beschrieben
http://www.lilypond.org/doc/v2.19/Documentation/notation/modifying-stencils.de.html
Beide Befehle müssen also zusammen gesetzt werden.


Zitat von: ingmar
leider scheint es ein Problem zu geben, wenn die Stimme - wie so oft - mit einer Pause beginnt.
Es gibt in der Tat ein Problem hier, das hat aber nichts mit der Pause am Anfang zu tun (unten mehr).
Tatsächlich würde mich interessieren welche Probleme mit Pausen bei Dir aufgetreten sind.
Kannnst Du die mal referieren?

Das eigentliche Problem ist, daß die MMR ein spanner ist. Wenn man den stencil eines spanners überschreibt, wird der neue stencil rechts vom Referenzpunkt gesetzt.
Siehe auch dieses Beispiel für Ties:
\score {
  {
    c''1~
    \break
    c''
  }
  \layout {
    %% the spanner-override:
    \override Tie.stencil = #ly:text-interface::print
    \override Tie.text = \markup { \musicglyph #"rests.0neomensural" }
    %% better viewing:
    line-width = 20
    indent = 0
    \override Tie.color = #red
    \override Tie.font-size = #2
  }
}
Wenn man das nicht will, so muß man selbst dafür Sorge tragen, daß der neue stencil wieder "gespannt" wird. Das ist eigentlich immer ziemlich aufwendig. Aber bei MMRs ist es mir noch nie zufrieden stellend gelungen. Es muß da noch Faktoren/Summanden geben, die mir bislang entgangen sind. Du kannst ja mal hier im Forum suchen, es gab schon einige Versuche...

Aber eigentlich möchte ich mich Michael anschließen:
Zitat von: mgd
Verwende bei Mensuralnotation keine Ganztakpausen
Es ist wider die Musik der Zeit.

Allerdings verstehe ich Dein Bestreben aus einer Variablen heraus alte und neue Notation zu erstellen.
Dazu zwei Vorschläge

(1)
Laß die MMR im default-Stil, aber setze die font-size herab, z.B.:
\tweak font-size #-6 R1*2

oder (2)
Wandle die MMR im MensuralStaff in eine einfache Pause um. Zu diesem Zweck:
\version "2.19.32"

TEXT=\relative c'' {
R1
r2 g4 g
g f8 es d c bes a
bes1
}

mmr-to-rest =
#(define-music-function (mus)(ly:music?)
  (music-map
    (lambda (m)
      (if (eq? (ly:music-property  m 'name) 'MultiMeasureRestMusic)
          (let ((new-m
                  (make-music
                    'RestEvent
                    'duration
                    (ly:music-property  m 'duration))))
            (set! (ly:music-property new-m 'tweaks)
              (acons 'font-size 0
                (ly:music-property new-m 'tweaks)))
            new-m)
          m))
    mus))
   
\score {
  \new MensuralVoice {
    \clef "petrucci-c3"
    \mmr-to-rest
    \TEXT
  }
  \layout {
    \context {
      \MensuralVoice
      \override NoteHead.style = #'neomensural
      \override Rest.style = #'neomensural
      \override NoteHead.font-size = #1.5
      \override Stem.thickness = #3.0
    }
    \context {
      \Staff
      \override TimeSignature.font-size = #1.125
    }
  }
}

Falls Dir die Pause noch nicht dick genug ist dann ändere in der Zeile
              (acons 'font-size 0
die null zu einem Wert Deiner Wahl.
Allerdings ist die einfache Pause natürlich nicht zentriert. Wie schon gesagt in mensuraler Notation ist das sowieso nicht üblich gewesen. Ansonsten müßtest Du manuell nachhelfen - ob man eine automatisierte procedure anwenden kann hab ich bis jetzt nicht geprüft. Sowohl David Nalesnik als auch meine Wenigkeit haben da mal was gemacht, schau mal in die Archive, oder hab ich das auch hier schon mal gepostet...?



HTH,
  Harm

EDIT:
Version im zweiten Code-Beispiel korrigiert
« Letzte Änderung: Mittwoch, 25. November 2015, 22:52 von harm6 »

ingmar

  • Member
Pause R1 in Mensuralnotation
« Antwort #9 am: Mittwoch, 25. November 2015, 22:31 »
Hm.

\tweak font-size #-6 R1*2 hat bei mir keinerlei Effekt. Irgendwas daran mach ich offenbar falsch. Beispiel - beide Tweaks (ich hab in meiner Verzweiflung mehrere ausprobiert) scheinen nix zu bewirken:
\version "2.18.2"

\relative c'' {
\tweak font-size #-6 R1
\tweak thick-thickness  #100 R1
r2 g4 g
g f8 es d c bes a
g1
}

Dein zweites Beispiel kompiliert nicht ("Wrong number of arguments").

Zitat
Harm: Tatsächlich würde mich interessieren welche Probleme mit Pausen bei Dir aufgetreten sind.
Kannnst Du die mal referieren?

Würd ich sehr gerne, wenn es mich oder andere weiterbringt. Ist aber schwer im Nachhinein zu sagen, man probiert viel unsystematisch hin und her, ohne genau zu wissen, was man da eigentlich tut. Meist waren die R1-Pausen abschließend unverändert oder gar nicht sichtbar - dass hier die Pause nach vorne verschoben wurde, habe ich erst beim Posten fürs Forum bemerkt. Ich stocher selber viel zu sehr im Dunkeln rum, als dass ich das Gefühl hätte, qualifizierten Input für weitere Erkenntnisse liefern zu können. Schade, aber es ist wirklich für den Außenstehenden nicht leicht, hier das zu liefern, was dem Insider die Erleuchtung bringen könnte.

--ingmar


harm6

  • Member
Re: Pause R1 in Mensuralnotation
« Antwort #10 am: Mittwoch, 25. November 2015, 22:51 »
Zitat von: ingmar
Hm.

[...]
Irgendwas daran mach ich offenbar falsch.
[...]
Dein zweites Beispiel kompiliert nicht ("Wrong number of arguments").
[...]

Der Fehler liegt ganz allein bei mir. Ich habe 2.19-code benutzt ohne die Version zu ändern. Das wird im post oben per EDIT geändert.

Anstatt des \tweak verwende
\once \override MultiMeasureRest.font-size = #-6

Für das andere Beispiel:
\version "2.18.2"

TEXT=\relative c'' {
R1
r2 g4 g
g f8 es d c bes a
bes1
}

mmr-to-rest =
#(define-music-function (parser location mus)(ly:music?)
  (music-map
    (lambda (m)
      (if (eq? (ly:music-property  m 'name) 'MultiMeasureRestMusic)
          (let ((new-m
                  (make-music
                    'RestEvent
                    'duration
                    (ly:music-property  m 'duration))))
            (set! (ly:music-property new-m 'tweaks)
              (acons 'font-size 0
                (ly:music-property new-m 'tweaks)))
            new-m)
          m))
    mus))
   
\score {
  \new MensuralVoice {
    \clef "petrucci-c3"
    \mmr-to-rest
    \TEXT
  }
  \layout {
    \context {
      \MensuralVoice
      \override NoteHead.style = #'neomensural
      \override Rest.style = #'neomensural
      \override NoteHead.font-size = #1.5
      \override Stem.thickness = #3.0
    }
    \context {
      \Staff
      \override TimeSignature.font-size = #1.125
    }
  }
}

Sorry,
  Harm

ingmar

  • Member
Re: Pause R1 in Mensuralnotation
« Antwort #11 am: Donnerstag, 26. November 2015, 23:30 »
Zitat
Anstatt des \tweak verwende \once \override MultiMeasureRest.font-size = #-6

So funktionierts, so werd ichs ertsmal machen - danke!

--ingmar