Deutsches Lilypond Forum (Archiv)
Betriebssystemabhängig => Windows => Thema gestartet von: viertel am Sonntag, 2. August 2015, 14:32
-
Hallo
Ich versuche immer, das Protkoll eine ly-Umwandlung sauber zu halten. D.h. jeglichem Fehler sowieso, aber auch jeder Warnung nachgehen und sie zu eliminieren.
Das gelingt mir aber bei der Meldung, die im Titel steht nicht. Ich hatte sie in einer größeren ly-Datei mehrfach, aber auch mit diesem Minibeispiel erscheint sie:
\version "2.18.2"
\header { title = "Programmierfehler" }
Noten = {
\new Staff {
\clef treble
\time 3/4
\key g \major
\tempo 4=120
\relative c' {
fis4(\mf g a)
<d g>2.\> % der Übeltäter
<a c>2.\mf
}
\bar "|."
}
}
Dummy = ##t
\score { \Noten \midi { } }
\header { instrument = "Programmierfehler: Impossible or ambiguous (de)crescendo in MIDI." }
\score { \Noten \layout { } }
Komplette Meldung:
Starte lilypond-windows.exe 2.18.2 [F3.ly]...
»D:/Daten/LilyPond/Oklahoma/F3.ly« wird verarbeitet
Analysieren...
Interpretation der Musik...
Programmierfehler: Impossible or ambiguous (de)crescendo in MIDI.
Fortsetzung, die Daumen drücken
Interpretation der Musik...
Vorverarbeitung der grafischen Elemente...
MIDI-Ausgabe nach »F3.mid«...
Ideale Seitenanzahl wird gefunden...
Musik wird auf eine Seite angepasst...
Systeme erstellen...
Layout nach »F3.ps« ausgeben...
Konvertierung nach »./F3.pdf«...
Kompilation erfolgreich beendet
Erfolgreich abgeschlossen in 5.8".
Die Ausgabe wird wird indes korrekt erzeugt (Daumen drücken hilft also anscheinend).
Muß ich mir da Sorgen machen oder kann ich die Meldung getrost ignorieren?
Gruß vom 1/4
-
Hallo,
Du schreibst ein mf dann decrescendo zu mf.
LilyPond versteht eine bestimmte Lautstärke, dann ein leiser werden hin zur selben Lautstärke.
Ich weiß zwar was gemeint ist aber rein von der Programmierlogik ist es natürlich Blödsinn ;)
Um das log clean zu haben könntest Du folgendes versuchen:
Noten = {
\new Staff {
\clef treble
\time 3/4
\key g \major
\tempo 4=120
\relative c' {
fis4(\mf g a)
<d g>2.*11/12\> s2.*1/12\!
%% oder
%<< <d g>2. { s2\> s8. s16\! } >>
<a c>2.\mf
}
\bar "|."
}
}
HTH,
Harm
P.S. Das ist übrigens kein Windowsproblem, sondern ein generelles.
-
Hallo Harm
Danke für die Antwort.
Musikalisch macht es durchaus Sinn, einen Ton abklingen zu lassen und dann wieder mit einer bestimmten vorgegebenen Laustärke weiterzuspielen. Bei f statt mf tritt der gleiche Fehler auf, bei p ist Ruhe im Karton.
Warum ist Lilypond da irritiert? Weil keine sinnvolle Endlautstärke für das Decrescendo angegeben ist?
Deine Vorschläge lassen den Fehler verschwinden. Sind aber unschöne trickreiche Workarounds.
Mir ist klar, daß das kein Windows, sondern ein genereller Fehler ist.
Aber wo einordnen? Ein Forum für (solche) Fehler sehe ich nicht.
1/4
-
Musikalisch macht es durchaus Sinn, einen Ton abklingen zu lassen und dann wieder mit einer bestimmten vorgegebenen Laustärke weiterzuspielen.
Ja, musikalisch schon. Man muß es aber auch einem Computerprogram "erklären".
Und abklingen bis wohin?
Bei f statt mf tritt der gleiche Fehler auf, bei p ist Ruhe im Karton.
??
Noten = {
\new Staff {
\clef treble
\time 3/4
\key g \major
\tempo 4=120
\relative c' {
fis4(\f g a)
<d g>2.\>
<a c>2.\mf
}
\bar "|."
}
}
Funktioniert bei mir. Nicht aber wenn ich \f durch \p ersetze.
Warum ist Lilypond da irritiert? Weil keine sinnvolle Endlautstärke für das Decrescendo angegeben ist?
Nun, Deine Endlautstärke ist dieselbe wie die Anfangslautstärke, mezzoforte. Wie soll da ein Computerprogramm ein "leiserwerden" gestalten?
Deine Vorschläge lassen den Fehler verschwinden. Sind aber unschöne trickreiche Workarounds.
Denke ich nicht. Du mußt angeben wie das decrescendo ausgeführt werden soll und es muß beendet sein bevor das neue mezzoforte zum tragen kommt.
Das letzte ist nicht nur programmiertechnisch sondern natürlich auch musikalisch selbstverständlich ;)
Mir ist klar, daß das kein Windows, sondern ein genereller Fehler ist.
Aber wo einordnen? Ein Forum für (solche) Fehler sehe ich nicht.
Nein, es ist kein Fehler ;)
Aber ich hätte kein Problem den Thread in "Fragen zu Funktionen" zu sehen.
EDIT:
Der einzige Fehler, den ich hier sehe ist, daß die Warnung als "Programmierfehler" ausgegeben wird.
Das ganze als tatsächliche "Warnung" zu betitlen wäre eher angemessen, imho.