Deutsches Lilypond Forum (Archiv)
Allgemein => Fragen zu Funktionen => Thema gestartet von: erich am Mittwoch, 17. Februar 2016, 10:03
-
Hallo allen
Unter http://www.lilypond.org/doc/v2.19/Documentation/snippets-big-page.html (http://www.lilypond.org/doc/v2.19/Documentation/snippets-big-page.html) findet man das Beispiel
\relative {
\set Staff.keyAlterations = #`((6 . ,FLAT)
(5 . ,FLAT)
(3 . ,SHARP))
c'4 d e fis
aes4 bes c2
}
, mit dem man die Vorzeichen für eine Ganztonleiter setzen kann.
Ich wüsste gern, wo die Zuordnung zwischen Benennung (FLAT, SHARP, usw.) und dem ausgegebenen Zeichen vorgenommen wird. Kann mir da einer oder eine weiter helfen.
Ich würde den Mechanismus gerne für Zeichen wie accidentals.flat.arrowup verwenden.
Gruß
Erich
-
In scm/lily-library.scm wird SHARP als 1/2 definert und in scm/output-lib.scm wird 1/2 accidentals.sharp zugeordnet.
-
Hallo allen und Dank an fugenkomponist
Ich habe das Problem weitgehend gelöst bis auf eine Kleinigkeit, die ein Fehler in LP sein könnte.
Als Beispiel habe ich aus F.Schuberts Impromptu in f-moll D935 die ersten vier Takte gewählt und es möglichst kurz gehalten.
\version "2.18.2"
\paper {
line-width = 130\mm
}
\header {
title = "Impromptu in f-moll"
subtitle = "D 935-1 (Opus 142 No 1.) Franz Schubert"
}
#(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 F 6843/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 =
#`(
(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))
(f . ,(ly:make-pitch -1 3 F))
(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 =
#`(
( 2721/100003 . "") ; C
(-36314/100003 . "accidentals.flat") ; Dx
( 9776/100003 . "") ; D
(-45112/100003 . "accidentals.flat") ; Eb
(-34359/100003 . "accidentals.flat.arrowup") ; Ex
( 978/100003 . "accidentals.natural") ; E
( 6843/100003 . "") ; F
(-37291/100003 . "accidentals.flat") ; Gb
( 8798/100003 . "") ; G
(-35337/100003 . "accidentals.flat.arrowup") ; Ax
(-46091/100003 . "accidentals.flat") ; Ab
( 1/100003 . "") ; A
(-44134/100003 . "accidentals.flat") ; Bx
( 1957/100003 . "") ; B
)
accidentalGlyphs =
#`(( 8798/100003 . "accidentals.natural"))
\layout {
\context {
\Score
\override Accidental.glyph-name-alist = \pitchGlyphs
\override KeySignature.glyph-name-alist = \pitchGlyphs
\override AccidentalCautionary.glyph-name-alist = \accidentalGlyphs
}}
#(ly:parser-set-note-names parser pitch-names)
\score {
\new PianoStaff
<<
\new Staff
<<
\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 ]|
f'8. ges'16 ex'8. f'16 dx'8. ex'16 c'8. dx'16 |
\clef "bass" bx8. c'16 ax8. bx16 ges8. ax 16 f8. g?16|
e8 r8 \clef "treble" <g' bx' dx''>8 r8 r2
}
>>
\new Staff
<< \set Staff.keySignature = #`((6 . ,(- BX)) (5 . ,(- AX)) (2 . ,(- EX)) (1 . ,(- DX)))
\new Voice {\voiceThree \clef "bass"
<f, ax>2. <g, c>4 ax, a, bx, c dx c dx c r1|
}
\new Voice {\voiceFour\clef "bass"
<f,~ c>1 <f,~ f> <f, f>2 bx,4 ax,4 |
<g, bx,>8 r8 <e g bx dx'>8 r8 r2
}
>>
>>
\layout {indent = 0\cm}
\midi {\tempo 4=100}
}
(http://www.kielnet.net/home/erich.meyer/D935_1_test.png)
Ich werde hierzu noch Erläuterungen auf meiner Hompage geben. Hier nur soviel:
das in Klammern gesetzte Versetzungszeichen am Ende des dritten Taktes wurde duch ein Fragezeichen nach dem Notennamen erzwungen; ohne diese Erzwingung erscheint kein Auflösungszeichen, was nach meiner Meinung ein Fehler in LP ist.
Gruß Erich
-
Ich habe das Problem weitgehend gelöst bis auf eine Kleinigkeit, die ein Fehler in LP sein könnte.
Welche denn?
Ach ja, mir ist noch etwas aufgefallen: Die Reihenfolge der Vorzeichen ist nicht richtig, es sollte#`((6 . ,(- BX)) (2 . ,(- EX)) (5 . ,(- AX)) (1 . ,(- DX)))heißen, oder?
-
Es geht hier um eine MIDI-Ausgabe in Reiner Stimmung
Hallo allen und Dank an fugenkomponist
Ich habe das Problem weitgehend gelöst bis auf eine Kleinigkeit, die ein Fehler in LP sein könnte.
Als Beispiel habe ich aus F.Schuberts Impromptu in f-moll D935 die ersten vier Takte gewählt und es möglichst kurz gehalten.
\version "2.18.2"
\paper {
line-width = 130\mm
}
\header {
title = "Impromptu in f-moll"
subtitle = "D 935-1 (Opus 142 No 1.) Franz Schubert"
}
#(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 F 6843/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 =
#`(
(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))
(f . ,(ly:make-pitch -1 3 F))
(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 =
#`(
( 2721/100003 . "") ; C
(-36314/100003 . "accidentals.flat") ; Dx
( 9776/100003 . "") ; D
(-45112/100003 . "accidentals.flat") ; Eb
(-34359/100003 . "accidentals.flat.arrowup") ; Ex
( 978/100003 . "accidentals.natural") ; E
( 6843/100003 . "") ; F
(-37291/100003 . "accidentals.flat") ; Gb
( 8798/100003 . "") ; G
(-35337/100003 . "accidentals.flat.arrowup") ; Ax
(-46091/100003 . "accidentals.flat") ; Ab
( 1/100003 . "") ; A
(-44134/100003 . "accidentals.flat") ; Bx
( 1957/100003 . "") ; B
)
accidentalGlyphs =
#`(( 8798/100003 . "accidentals.natural"))
\layout {
\context {
\Score
\override Accidental.glyph-name-alist = \pitchGlyphs
\override KeySignature.glyph-name-alist = \pitchGlyphs
\override AccidentalCautionary.glyph-name-alist = \accidentalGlyphs
}}
#(ly:parser-set-note-names parser pitch-names)
\score {
\new PianoStaff
<<
\new Staff
<<
\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 ]|
f'8. ges'16 ex'8. f'16 dx'8. ex'16 c'8. dx'16 |
\clef "bass" bx8. c'16 ax8. bx16 ges8. ax 16 f8. g?16|
e8 r8 \clef "treble" <g' bx' dx''>8 r8 r2
}
>>
\new Staff
<< \set Staff.keySignature = #`((6 . ,(- BX)) (5 . ,(- AX)) (2 . ,(- EX)) (1 . ,(- DX)))
\new Voice {\voiceThree \clef "bass"
<f, ax>2. <g, c>4 ax, a, bx, c dx c dx c r1|
}
\new Voice {\voiceFour\clef "bass"
<f,~ c>1 <f,~ f> <f, f>2 bx,4 ax,4 |
<g, bx,>8 r8 <e g bx dx'>8 r8 r2
}
>>
>>
\layout {indent = 0\cm}
\midi {\tempo 4=100}
}
(http://www.kielnet.net/home/erich.meyer/D935_1_test.png)
Ich werde hierzu noch Erläuterungen auf meiner Hompage geben. Hier nur soviel:
das in Klammern gesetzte Versetzungszeichen am Ende des dritten Taktes wurde duch ein Fragezeichen nach dem Notennamen erzwungen; ohne diese Erzwingung erscheint kein Auflösungszeichen, was nach meiner Meinung ein Fehler in LP ist.
Gruß Erich
-
[…]
Ich habe das Problem weitgehend gelöst bis auf eine Kleinigkeit, die ein Fehler in LP sein könnte.
[…]
[…]
#(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 =
#`(( 8798/100003 . "accidentals.natural"))
[…]
\override Accidental.glyph-name-alist = \pitchGlyphs
\override KeySignature.glyph-name-alist = \pitchGlyphs
\override AccidentalCautionary.glyph-name-alist = \accidentalGlyphs
[…]
[…]
das in Klammern gesetzte Versetzungszeichen am Ende des dritten Taktes wurde duch ein Fragezeichen nach dem Notennamen erzwungen; ohne diese Erzwingung erscheint kein Auflösungszeichen, was nach meiner Meinung ein Fehler in LP ist.
LilyPond beruft sich da anscheinend auf die Accidental.glyph-name-alist, die an der Stelle G eben nur "" enthält. Klingt erstmal logisch, weil ja ohne vorherige andere Töne vor dem G nichts stehen soll. Es weiß wahrscheinlich sogar, dass es da jetzt ein Vorzeichen setzen müsste (weil ja vorher GES stand), aber nicht, welches, weil G eben kein #(ly:make-pitch … 0) mehr ist. Man müsste LilyPond also irgendwie mitteilen, dass eine Auflösung auch weiter auf das Auflösungszeichen zugreifen soll.
Ach ja: Das Vorzeichen sollte aber nicht in Klammern stehen, weil es ja zwingend ist. Wenn LilyPond es also nicht setzt (wer auch immer dran „schuld“ ist), sollte es „g!“ heißen und nicht „g?“
-
Hallo fugenkomponist
Ach ja: Das Vorzeichen sollte aber nicht in Klammern stehen, weil es ja zwingend ist. Wenn LilyPond es also nicht setzt (wer auch immer dran „schuld“ ist), sollte es „g!“ heißen und nicht „g?“
Hast du das mal selbst ausprobiert? Bei mir funktionierte das Ausrufungszeichen im obigen Beispiel nicht.
Nur nebenbei: die Zeichen vor den Noten heißen Versetzungszeichen und die nach dem Schlüssel sind die Vorzeichen.
Gruß Erich
-
Nein, ich hatte es nicht ausprobiert, habe aber eine einfache Erklärung: ! setzt ein Accidental (wie auch LilyPonds eigene Vorzeichen-Behandlung), ? dagegen ein AccidentalCautionary. Du müsstest also wohl weiter ? verwenden, kannst da aber die Klammern per (\once) \override AccidentalCautionary.parenthesized = ##f ausblenden.
Nur nebenbei: die Zeichen vor den Noten heißen Versetzungszeichen und die nach dem Schlüssel sind die Vorzeichen.
Ja, das hab ich schon mal gehört. Aber im alltäglichen Sprachgebrauch vieler Musiker wird da nicht unterschieden und alle heißen Vorzeichen; ich schließe mich dem an, solange klar ist, was ich meine . Außerdem gibts Leute, die zwischen Generalvorzeichen und Vorzeichen statt Vorzeichen und Versetzungszeichen unterscheiden …
-
Hallo fugenkomponist, ich bin deinem Rat mit \override AccidentalCautionary.parenthesized = ##f gefolgt; das ist zu mindest ein work around.
Danke und Gruß Erich