Autor Thema: vergessenes Auflösungszeiche (Fehler in LP?)  (Gelesen 3626 mal)

erich

  • Member
vergessenes Auflösungszeiche (Fehler in LP?)
« am: Samstag, 20. Februar 2016, 09:22 »
Hallo allen

Ich habe in einem kleinen LP-Script versucht einen Fehler zu lokalisieren
 \version "2.18.2"

#(define-public GES     37291/100003)
#(define-public G        8798/100003)

pitch-names =
  #`(
      (ges  . ,(ly:make-pitch -1 4 (- GES)))
      (g    . ,(ly:make-pitch -1 4    G))
    ) 

pitchGlyphs =
  #`(
      (-37291/100003 . "accidentals.flat")        ; Gb
      (  8798/100003 . "") ; G
    )
 
accidentalGlyphs =
  #`(
     (-37291/100003 . "accidentals.natural") ; Gb
     (  8798/100003 . "accidentals.natural") ; G
    )        
 
\layout {
  \context {
    \Score
    \override Accidental.glyph-name-alist           = \pitchGlyphs
    \override AccidentalCautionary.glyph-name-alist = \accidentalGlyphs
}}

#(ly:parser-set-note-names parser pitch-names)

\score {
     \new Voice {\time 2/2 ges'2 g'| ges'2 g'! | ges'2 g'? }
     \layout {}
     \midi {}
}

dieses rendert zu


Wie man sieht, fehlt in den beiden ersten Takten das Auflösungszeichen vor den G's; der dritte Takt zeigt eine nicht ganz korrekte Umgehung.
Jedoch gibt die MIDI-Ausgabe die Töne richtig wieder.

Gruß Erich

fugenkomponist

  • Member
Re: vergessenes Auflösungszeiche (Fehler in LP?)
« Antwort #1 am: Samstag, 20. Februar 2016, 11:25 »
Könntest du einen Bug-Report (auf englisch) erstellen? (siehe Punkt 3 hier) Der Fehler scheint nämlich noch nicht bekannt zu sein.

Edit: Bin mir nicht hundertprozentig sicher, ob man das irgendwie umgehen kann, aber meiner Meinung nach sollte das schon standardmäßig funktionieren, deshalb würd ich es als bug einstufen.
« Letzte Änderung: Samstag, 20. Februar 2016, 13:55 von fugenkomponist »

erich

  • Member
Re: vergessenes Auflösungszeiche (Fehler in LP?)
« Antwort #2 am: Sonntag, 21. Februar 2016, 06:50 »
Ich habe einen bugreport gepostet.
Erich

fugenkomponist

  • Member
Re: vergessenes Auflösungszeiche (Fehler in LP?)
« Antwort #3 am: Sonntag, 21. Februar 2016, 13:13 »
Danke. Ich habe die Bug-Liste abonniert und sag bescheid, wenn sich was ergibt. Laut David Kastrup ist das so gewollt, weil du ja für G kein Vorzeichen ansagst (per ""). Dann wird auch nie eins gesetzt, deswegen hab ich jetzt mal nachgefragt, obs überhaupt ne Möglichkeit gibt, LilyPond etwas anderes als „immer“ und „nie“ beizubringen …

harm6

  • Member
Re: vergessenes Auflösungszeiche (Fehler in LP?)
« Antwort #4 am: Sonntag, 21. Februar 2016, 19:51 »
Der ganze Thead zum bug-report ist nachlesbar:
http://lilypond.1069038.n5.nabble.com/vergessenes-Auflosungszeiche-Fehler-in-LP-td187494.html

David hat natürlich recht.

Allerdings fehlt ihm natürlich der Kontext zum ganzen Projekt "reine und andere Stimmungen" welches hier im Forum an unterschiedlichen Stellen thematisiert wurde.

Ich vermute mal, das Problem sollte man anders angehen.
Aus irgendeinem Grund funktioniert bei mir momentan kein einziges  Program zum abspielen von midis, insoweit kann ich meine Vermutungen leider nicht überprüfen, nichtsdestotrotz hier sind sie:

Deine Definition des Tones "g" weicht ab vom 5. Ton der default-Skala, die mittels
(ly:set-default-scale (ly:make-scale #(0 1 2 5/2 7/2 9/2 11/2)))
in lily.scm gesetzt wird.
Eine temperierte Skala.

Insoweit sieht LilyPond eine Alteration, sobald Du "g" schreibst. Das Zeichen für diese Alteration ist von Dir mit "" angegeben, also kein sichtbarer output.

Ich habe versucht das zu überprüfen, indem ich zusätzlich noch ein temperiertes "my-g" eingefügt habe, mit einem ausgefallenen Zeichen für das Auflösezeichen. ;)

\version "2.18.2"

#(define-public GES     37291/100003)
#(define-public G        8798/100003)

pitch-names =
  #`(
      (ges  . ,(ly:make-pitch -1 4 (- GES)))
      (g    . ,(ly:make-pitch -1 4    G))
      (my-g . ,(ly:make-pitch -1 4    0))
    )

pitchGlyphs =
  #`(
      (-37291/100003 . "accidentals.flat")        ; Gb
      (  8798/100003 . "accidentals.natural") ; G
      (0             . "scripts.turn")                       ; my-g
    )
 
accidentalGlyphs =
  #`(
     (-37291/100003 . "accidentals.flat") ; Gb
     (  8798/100003 . "accidentals.natural") ; G
     (0             . "scripts.turn")                ; my-g
    )        
 
\layout {
  \context {
    \Score
    \override Accidental.glyph-name-alist           = \pitchGlyphs
    \override AccidentalCautionary.glyph-name-alist = \accidentalGlyphs
  }
}

#(ly:parser-set-note-names parser pitch-names)

\new Voice { \time 2/2 g'1 ges'2 g'| ges'2 g'! | ges'2 g'? g'1 }

\new Voice { \time 2/2 my-g'1 ges'2 my-g' | ges'2 my-g'! | ges'2 my-g'? my-g'1 }

\new Voice { \time 2/2 g'1 ges'1 my-g' ges'2 my-g' }

Ich denke deshalb Du solltest bei der default-Skala ansetzen, diese verändern, so daß der pitch für "g" wirklich 0 als Alteration ergibt.
Die Versetzungszeichen dann als Abweichung von dieser Skala...


HTH,
  Harm

erich

  • Member
Re: vergessenes Auflösungszeiche (Fehler in LP?)
« Antwort #5 am: Sonntag, 21. Februar 2016, 22:38 »
Hallo Harm,

ich freue mich, dass Du Dir die Sache angesehen hast.

Ich habe versucht, die Einwände gegen mein Vorbringen zu verstehen; ich glaube, es ist eine missbräuchliche Anwendung von LP, die ich intendiere.
Ich definiere meine  reine f-moll-Scala relativ zu der üblichen und möchte dabei, dass sie auf A mit 440 Hz abgestimmt ist. Das A hat bei mit daher eine  Abweichung von 1/100003 Cent also quasi keine. Durch die Verwendung von 100003 im Nenner - einer Primzahl -, vermeide ich eine Kürzung der Brüche und erhalte so die von mir gewählten Werte, auch wenn ich sie mit \displayMusic ausgebe.

Hier nun mein hoffentlich etwas aussagekräftiges Beispiel:
\version "2.18.2"

\paper {
 line-width = 190\mm
}

\header {
 title =   "Impromptu in f-moll"
 subtitle = "D 935-1 (Opus 142 No 1.) Franz Schubert"
}

#(define-public CES     38269/100003)
#(define-public C        7821/100003)
#(define-public DX      36314/100003)
#(define-public D        9776/100003)
#(define-public EX      34359/100003)
#(define-public E         978/100003)
#(define-public FES     39246/100003)
#(define-public F        6843/100003)
#(define-public FIS     52934/100003)
#(define-public GES     37291/100003)
#(define-public G        8798/100003)
#(define-public AX      35337/100003)
#(define-public A           1/100003)
#(define-public BX      44134/100003)
#(define-public B        1957/100003)

pitch-names =
  #`(
      (ces  . ,(ly:make-pitch -1 0 (- CES)))
      (c    . ,(ly:make-pitch -1 0    C))
      (dx   . ,(ly:make-pitch -1 1 (- DX)))
      (d    . ,(ly:make-pitch -1 1    D))
      (ex   . ,(ly:make-pitch -1 2 (- EX)))
      (e    . ,(ly:make-pitch -1 2    E))
      (fes  . ,(ly:make-pitch -1 3 (- FES)))
      (f    . ,(ly:make-pitch -1 3    F))
      (fis  . ,(ly:make-pitch -1 3    FIS))
      (ges  . ,(ly:make-pitch -1 4 (- GES)))
      (g    . ,(ly:make-pitch -1 4    G))
      (ax   . ,(ly:make-pitch -1 5 (- AX)))
      (a    . ,(ly:make-pitch -1 5    A))     
      (bx   . ,(ly:make-pitch -1 6 (- BX)))
      (b    . ,(ly:make-pitch -1 6    B))
    ) 
 
 
pitchGlyphs =
  #`( ; 100003 is a prime number
      (-38269/100003 . "accidentals.flat") ; Cb
      (  7821/100003 . "") ; C
      (-36314/100003 . "accidentals.flat") ; Dx = Db
      (  9776/100003 . "") ; D
      (-45112/100003 . "accidentals.flat") ; Eb
      (-34359/100003 . "accidentals.flat.arrowup") ; Ex = E↑b
      (   978/100003 . "accidentals.natural") ; E
      (-39246/100003 . "accidentals.flat") ; Fb
      (  6843/100003 . "") ; F
      ( 52934/100003 . "accidentals.sharp") ; F#
      (-37291/100003 . "accidentals.flat")        ; Gb
      (  8798/100003 . "") ; G
      (-35337/100003 . "accidentals.flat.arrowup") ; Ax = A↑b
      (-46091/100003 . "accidentals.flat") ; Ab
      (     1/100003 . "") ; A equivalent zu 440 Hz 1/100003 ~ 0
      (-44134/100003 . "accidentals.flat") ; Bx = Bb
      (  1957/100003 . "") ; B
    )
 
accidentalGlyphs =
  #`((  8798/100003 . "accidentals.natural")
     (     1/100003 . "accidentals.natural")
     (  1957/100003 . "accidentals.natural")
     (  6843/100003 . "accidentals.natural")
     (   978/100003 . "accidentals.natural")
     (  9776/100003 . "accidentals.natural")
     (  7821/100003 . "accidentals.natural")
     (-37291/100003 . "accidentals.natural")
    )        
 
\layout {
  \context {
    \Score
    \override Accidental.glyph-name-alist           = \pitchGlyphs
    \override KeySignature.glyph-name-alist         = \pitchGlyphs
    \override AccidentalCautionary.glyph-name-alist = \accidentalGlyphs
    \override AccidentalCautionary.parenthesized = ##f
}}

#(ly:parser-set-note-names parser pitch-names)


\score {
  \new PianoStaff
  <<
     \new Voice { \set Staff.keySignature = #`((6 . ,(- BX)) (5 . ,(- AX)) (2 . ,(- EX)) (1 . ,(- DX))) 
       \times 2/3 {c'16 [f' ax']} c''4~ c''16 bx'16 ax'8.[ bx'16 g'8. ax'16 ]| % 1
       f'8. ges'16 ex'8. f'16 dx'8. ex'16 c'8. dx'16 | % 2
       bx8. c'16 ax8. bx16 ges8. ax 16 f8. g?16| % 3
       e8 r8 <g' bx' dx''>8 r8 r2| % 4
     }
     
    \new Voice { \set Staff.keySignature = #`((6 . ,(- BX)) (5 . ,(- AX)) (2 . ,(- EX)) (1 . ,(- DX)))
        << {\clef "bass"
          <f, ax>2. <g, c>4 | % 1
          ax, a, bx, c | % 2
          dx c <bx, dx> <ax, c>|}\\
         {\clef "bass" \stemDown
            <f,~ c>1 <f,~ f> <f, f>2 s2 |}
       >> % 3
       <g, bx,>8 r <ex g bx dx'>8 r8 r2 | % 4
        }
  >>
 \layout {indent = 0\cm}
 \midi {\tempo 4=100}
}


Der "Fehler" tritt im letzen Ton im dritten Takt auf; ich vermeide ihn durch ein work around
http://www.kielnet.net/home/erich.meyer/Schubert_Beispiel.mp3


Soll ich damit die Kollegen vom LP-Team weiterhin behelligen? Ich habe vor, eine bessere Darstellung auf meiner homepage zu veröffentlichen; vielleicht ist so mein Anliegen besser  zu vermitteln. Es ist ja nicht ganz trivial, was mir da vorschwebt, und scheint nicht im Horizont der Entwickler zu liegen. Das ist nicht verabsetzend gemeint!

Gruß Erich
« Letzte Änderung: Montag, 22. Februar 2016, 00:28 von erich »

erich

  • Member
Re: vergessenes Auflösungszeiche (Fehler in LP?)
« Antwort #6 am: Sonntag, 21. Februar 2016, 22:44 »
Hallo Harm,

ich freue mich, dass Du Dir die Sache angesehen hast.

Ich habe versucht, die Einwände gegen mein Vorbringen zu verstehen; ich glaube, es ist eine missbräuchliche Anwendung von LP, die ich intendiere.
Ich definiere meine  reine f-moll-Scala relativ zu der üblichen und möchte dabei, dass sie auf A mit 440 Hz abgestimmt ist. Das A hat bei mit daher eine  Abweichung von 1/100003 Cent also quasi keine. Durch die Verwendung von 100003 im Nenner - einer Primzahl -, vermeide ich eine Kürzung der Brüche und erhalte so die von mir gewählten Werte, auch wenn ich sie mit \displayMusic ausgebe.

Hier nun mein hoffentlich etwas aussagekräftiges Beispiel:
\version "2.18.2"

\paper {
 line-width = 190\mm
}

\header {
 title =   "Impromptu in f-moll"
 subtitle = "D 935-1 (Opus 142 No 1.) Franz Schubert"
}

#(define-public CES     38269/100003)
#(define-public C        2721/100003)
#(define-public DX      36314/100003)
#(define-public D        9776/100003)
#(define-public EX      34359/100003)
#(define-public E         978/100003)
#(define-public FES     39246/100003)
#(define-public F        6843/100003)
#(define-public FIS     52934/100003)
#(define-public GES     37291/100003)
#(define-public G        8798/100003)
#(define-public AX      35337/100003)
#(define-public A           1/100003)
#(define-public BX      44134/100003)
#(define-public B        1957/100003)

pitch-names =
  #`(
      (ces  . ,(ly:make-pitch -1 0 (- CES)))
      (c    . ,(ly:make-pitch -1 0    C))
      (dx   . ,(ly:make-pitch -1 1 (- DX)))
      (d    . ,(ly:make-pitch -1 1    D))
      (ex   . ,(ly:make-pitch -1 2 (- EX)))
      (e    . ,(ly:make-pitch -1 2    E))
      (fes  . ,(ly:make-pitch -1 3 (- FES)))
      (f    . ,(ly:make-pitch -1 3    F))
      (fis  . ,(ly:make-pitch -1 3    FIS))
      (ges  . ,(ly:make-pitch -1 4 (- GES)))
      (g    . ,(ly:make-pitch -1 4    G))
      (ax   . ,(ly:make-pitch -1 5 (- AX)))
      (a    . ,(ly:make-pitch -1 5    A))     
      (bx   . ,(ly:make-pitch -1 6 (- BX)))
      (b    . ,(ly:make-pitch -1 6    B))
    ) 
 
 
pitchGlyphs =
  #`( ; 100003 is a prime number
      (-49022/100003 . "accidentals.flat") ; Cb
      (  7821/100003 . "") ; C 
      (-47067/100003 . "accidentals.flat") ; Dx
      (  9776/100003 . "") ; D 
      (-55866/100003 . "accidentals.flat") ; Eb
      (-45112/100003 . "accidentals.flat.arrowup") ; Ex
      (   978/100003 . "accidentals.natural") ; E 
      (-50000/100003 . "accidentals.flat") ; Fb
      (  6843/100003 . "") ; F
      ( 63688/100003 . "accidentals.sharp") ; F#
      (-48045/100003 . "accidentals.flat")        ; Gb
      (  8798/100003 . "") ; G
      (-56843/100003 . "accidentals.flat") ; Ab
      (-46090/100003 . "accidentals.flat.arrowup") ; Ax
      (     1/100003 . "") ; A
      (-54888/100003 . "accidentals.flat") ; Bx
    )
 
accidentalGlyphs =
  #`(
      (-49022/100003 . "accidentals.natural") ; Cb 
      (-47067/100003 . "accidentals.natural") ; Dx
      (  9776/100003 . "accidentals.natural") ; D
      (-55866/100003 . "accidentals.natural") ; Eb
      (-45112/100003 . "accidentals.natural") ; Ex
      (   978/100003 . "accidentals.natural") ; E 
      (-50000/100003 . "accidentals.natural") ; Fb
      (  6843/100003 . "accidentals.natural") ; F#
      (-48045/100003 . "accidentals.natural")        ; Gb
      (  8798/100003 . "accidentals.natural") ; G
      (-56843/100003 . "accidentals.natural") ; Ab
      (-46090/100003 . "accidentals.natural") ; Ax
      (     1/100003 . "accidentals.natural") ; A
      (-54888/100003 . "accidentals.natural") ; Bx
    )        
 
\layout {
  \context {
    \Score
    \override Accidental.glyph-name-alist           = \pitchGlyphs
    \override KeySignature.glyph-name-alist         = \pitchGlyphs
    \override AccidentalCautionary.glyph-name-alist = \accidentalGlyphs
    \override AccidentalCautionary.parenthesized = ##f
}}

#(ly:parser-set-note-names parser pitch-names)


\score {
  \new PianoStaff
  <<
     \new Voice { \set Staff.keySignature = #`((6 . ,(- BX)) (5 . ,(- AX)) (2 . ,(- EX)) (1 . ,(- DX))) 
       \times 2/3 {c'16 [f' ax']} c''4~ c''16 bx'16 ax'8.[ bx'16 g'8. ax'16 ]| % 1
       f'8. ges'16 ex'8. f'16 dx'8. ex'16 c'8. dx'16 | % 2
       bx8. c'16 ax8. bx16 ges8. ax 16 f8. g?16| % 3
       e8 r8 <g' bx' dx''>8 r8 r2| % 4
     }
     
    \new Voice { \set Staff.keySignature = #`((6 . ,(- BX)) (5 . ,(- AX)) (2 . ,(- EX)) (1 . ,(- DX)))
        << {\clef "bass"
          <f, ax>2. <g, c>4 | % 1
          ax, a, bx, c | % 2
          dx c <bx, dx> <ax, c>|}\\
         {\clef "bass" \stemDown
            <f,~ c>1 <f,~ f> <f, f>2 s2 |}
       >> % 3
       <g, bx,>8 r <ex g bx dx'>8 r8 r2 | % 4
        }
  >>
 \layout {indent = 0\cm}
 \midi {\tempo 4=100}
}


Der "Fehler" tritt im letzen Ton im dritten Takt auf; ich vermeide ihn durch ein work around
http://www.kielnet.net/home/erich.meyer/Schubert_Beispiel.mp3


Soll ich damit die Kollegen vom LP-Team weiterhin behelligen? Ich habe vor, eine bessere Darstellung auf meiner homepage zu veröffentlichen; vielleicht ist so mein Anliegen besser  zu vermitteln. Es ist ja nicht ganz trivial, was mir da vorschwebt, und scheint nicht im Horizont der Entwickler zu liegen. Das ist nicht verabsetzend gemeint!

Gruß Erich
« Letzte Änderung: Montag, 22. Februar 2016, 10:56 von erich »

Arnold

  • Member
Re: vergessenes Auflösungszeiche (Fehler in LP?)
« Antwort #7 am: Dienstag, 23. Februar 2016, 10:24 »
Hallo,

ich habe mir die Details zwar bisher nicht angesehen, nur etwas die Beschreibungen gelesen, trotzdem möchte ich mein Verständnis dieses Problems mitteilen.

Es soll die reine Stimmung auf einer gleichschebend termperierten Skala dargestellt werden. Dadurch ergeben sich teilweise extrem kleine Abweichungen gegenüber den Skalentönen, z. Bsp. 0,1 Cent.
Der Zielkonflikt entsteht nun, da man mehrere »algebratisch berechnete, minimal unterschiedliche, aber fast gleiche Tonhöhen« gleich darstellen will, und auch in der Darstellung mit dem einen Skalenton gleichsetzen will.

Vielleicht wäre ein brauchbarer Workaround (für den Notendruck, nicht für die Midi-Ausgabe) doch eine MusicMap-Funktion, welche alle Pitches auf den nächstliegenden Vorzeichenschritt (z. Bsp. Viertelton) hinrundet, und den dadurch entstandenen Versatz als \finger vor den Notenkopf setzt.

Arnold.

erich

  • Member
Re: vergessenes Auflösungszeiche (Fehler in LP?)
« Antwort #8 am: Dienstag, 23. Februar 2016, 12:50 »
Hallo Arnold

Die Darstellung auf meiner homepage bedraf einer Überarbeitung; solltest Du Dich auf diese beziehen, könnte es zu Missverständnissen kommen; die Arbeit ist bei mir noch sehr im Fluss.

Was hat es mit den geringen Abweichungen der Skalentöne auf sich und warum das überhaupt:

Ich verwende LP ingewisserweise missbräuchlich; daher rühren einige Komplikationen.

LP verwendet die Alterationen, um die Versetzungszeichen zu bestimmen und zwar werden diese für alle Tonstufen (gemeint sind Notenlinien und Zwischenräume) einheitlich festgelegt. Eine Alteration von 1/2 führt dann immer zu einem # als Versetzungszeichen.

Ich verwende aber die Alterationen auch zu einer differierenden Stimmung; die Alterationen haben daher zwei Bedeutungen gleichzeitig; es kann vorkommen, dass eine Alteration in meinem Sinne nicht notwendigerweise immer das gleiche Versetzungszeichen zur Folge haben soll. Um hier eine Unterscheidung treffen zu können, wähle ich 100003 (Primzahl!!!) als Nenner für die Brüche und erhalte dadurch eine "übertriebene" Genauigkeit für die Tonhöhen; es macht also nichts, wenn ich die Zähler der Brüche in der letzten Stelle variiere und so unterschiedliche Versetzungszeichen ausfiltern kann.

Um mir das Leben beim Notenschreiben in LP zu erleichtern, nutze ich Vorzeichen: die Töne, beispielsweise E↓# (um ein syntonisches Komma erniedrigt und um einen Halbton erhöt), erhalten dann einen einfachen Tonnamen beispielsweise ex; alle Tonnamen für Töne mit Vorzeichen erhalten dieses x; ich muss mir daher weder neue Tonnamen ausdenken noch mir solche merken.

Die Reine Stimmung muss in der Darstellung nicht direkt zum Ausdruck kommen; ich meine, die Verwendung von Vorzeichen hat sich in der musikalischen Praxis sehr bewährt und sollte beibehalten werden. Mir geht es vornehmlich darum, Musik in Reiner Stimmung setzen  und als MIDI-Ausgabe rendern zu können.

Gruß Erich

Arnold

  • Member
Re: vergessenes Auflösungszeiche (Fehler in LP?)
« Antwort #9 am: Dienstag, 23. Februar 2016, 15:56 »
Hallo Erich,

so einigermaßen bin ich wohl doch auf der richtigen Fährte.

So könnte das Music-Schnipsel Musik = \new PianoStaff << ... (oder andere Konstrukte) die allgemeine Definition der "musikalischen Ereignisse" sein.

Die visuelle Darstellung (PDF, Notenschrift), beispielsweise auf Vierteltöne reduziert, könnte dann so erzeugt werden:
\score  {
  \roundPitchesToNextQuartertone \Musik
  \layout {}
}
Mit einer relativ einfachen (noch zu erstellenden) MusicMap-Funktion roundPitchesToNextQuartertone.

Und für Midi dann z. Bsp.:
\score  {
  \articulate \unfoldRepeats \Musik
  \midi {}
}
Also ohne die Piches zurechtzustutzen.

Arnold


erich

  • Member
Re: vergessenes Auflösungszeiche (Fehler in LP?)
« Antwort #10 am: Dienstag, 23. Februar 2016, 22:43 »
Hallo Arnold,

mir scheint, als glaubst Du, Du könntest ein herkömmliches LP-Noten-Script nehmen und darauf eine \roundPitchesToNextQuartertone-Funktion loslassen.
Hast Du dabei bedacht, dass diese Funktion zugleich eine harmonische Analyse beinhalten muss? In Reiner Stimmung unterscheidet sich Dur von der Mollvariante in einem Ton um das syntonische Komma; die Funktion muss also einen Wechsel von Dur zu Moll erkennen, aber auch sonst einen Wechsel der Tonart, die ja nicht immer durch einen Vorzeichenwechsel explizit angezeigt wird. Mit andern Worten, die Information, die ein herkömmliches LP-Noten-Script beinhaltet, ist nur theoretisch ausreichend.
Der Name Deiner Funktion lässt jedoch darauf schließen, dass Du gar nicht zu einer Reinen Stimmung kommen willst; dann sieht natürlich alles anders aus.

Gruß Erich

P.S. Sollte Dich die Komma-Problematik etwas genauer interessieren, so kannst Du Dir auf meiner homepage dieses https://meyerich.pythonanywhere.com/Reine_Stimmung/default/snippet/13 dazu ansehen.
« Letzte Änderung: Dienstag, 23. Februar 2016, 22:59 von erich »

Arnold

  • Member
Re: vergessenes Auflösungszeiche (Fehler in LP?)
« Antwort #11 am: Mittwoch, 24. Februar 2016, 09:26 »
Hallo Erich,

mein Gedanke ist, daß die Musik-Definition mehr oder minder exakt in reiner Stimmung ist. Da der Logarithmus (zur Basis 2) einer Bruchzahl (außer Zweierpotenzen mit ganzahligem, auch negativem Exponenten) nie eine Bruchzahl ergibt, wird immer ein winziger Rundungsfehler bleiben, der sich aufaddieren kann.

Nur für den Notensatz (PDF), nicht für die MIDI-Ausgabe, dachte ich an eine Funktion, welche die "Tonhöhen" zurechtrundet. Natürlich wäre das Runden zum nächsten Viertelton ein so grobes (wenn auch gleichmäßiges) Raster, daß viele (wenn nicht alle) Kommata glattgebügelt würden.

In deinem Beispiel sah ich für das Symbol accidentals.flat.arrowup die Delta-Pitch-Definitionen -45112/100003 und -46090/100003 . Da würde ich z. Bsp. das Symbol nur für den Mittelwert -45601/100003 definieren, und mit der MusicMap-Funktion dann alles im Bereich plus/minus 500/100003 von diesem Versatz (ca. plus/minus 1 cent) auf den Anzeige-Nominalwert -45601/100003 setzen.

Arnold.

erich

  • Member
Re: vergessenes Auflösungszeiche (Fehler in LP?)
« Antwort #12 am: Mittwoch, 24. Februar 2016, 11:02 »
Hallo Arnold

Zitat
mein Gedanke ist, daß die Musik-Definition mehr oder minder exakt in reiner Stimmung ist.

das verstehe ich nicht! Musik-Definition ist für mich eine Frage der Formulierungungsmöglichkeiten im LP-Script; Stimmung ist dagegen doch eine Frage der Interpretation durch LP.

Gruß Erich

Arnold

  • Member
Re: vergessenes Auflösungszeiche (Fehler in LP?)
« Antwort #13 am: Mittwoch, 24. Februar 2016, 12:44 »
Hallo Erich.

Mit Musik = <<
  \new Staff \with {
    ...
  } {
    ...
  }
  ...
>>
wird letzlich erst einmal eine Datenstruktur angelegt. Die Music-Events darin beschreiben das musikalische Geschehen.

Anschließend wird mittles\score {
  \Musik
  \midi {}
}
dieses interpretiert, von den Performern im Lilypond ausgewertet und als MIDI-Datei ausgegeben.

Dabei muß \Musik nicht unbearbeitet bleiben. Das bekannte \unfoldRepeats erzeugt eine Kopie von der angegebenen Music-Event-Datenstruktur, bei der alle repeat volta, repeat percent, repeat tremolo durch repeat unfold ersetzt wurden.

Bis heute nicht üblich (außer z. Bsp. bei meiner Akkordeon-Baß-Schreibweise) ist es, auch MusicMap-Funktionen für die PDF-Ausgabe vorzuschalten, also in etwa \score {
   \roundPitchesForMyLayout \Musik
   \layout {}
}

Im konkreten Fall enthielte also \Musik alle notwendigen Informationen, während für die PDF-Erzeugung diese Datenstruktur nochmal "vereinfacht" wird, damit die Engraver besser damit zurechtkommen.

Arnold.

erich

  • Member
Re: vergessenes Auflösungszeiche (Fehler in LP?)
« Antwort #14 am: Mittwoch, 24. Februar 2016, 14:00 »
Hallo Arnold

Zitat
Im konkreten Fall enthielte also \Musik alle notwendigen Informationen, während für die PDF-Erzeugung diese Datenstruktur nochmal "vereinfacht" wird, damit die Engraver besser damit zurechtkommen.

Aber dazu müssen doch die Beschreibungsmittel zuvor erweitert worden sein; ein "normales" LP-Script enthält doch nicht genügend explizite Information. Ich sage explizit im Wissen, dass man auch Programme entwickeln könnte, die eine musikalische Analyse eines Stückes leistet. Das liegt aber außerhalb der sinnvollen Erweiterungsmöglichkeiten von LP.

Gruß Erich