Hallo,
um dafür zu sorgen, dass eine Tempo-Änderung nur für die MIDI-Erzeugung sichtbar ist, habe ich mich an das entsprechende Code-Beispiel gehalten und benutze :
...
\set Score.tempoHideNote = ##t
\tempo 4 = 96
...
Was mich allerdings völlig irritiert: wenn ich im Script danach - wie es eigentlich gute Praxis ist - das Sonderverhalten wieder zurückzusetzen will a la :
...
\set Score.tempoHideNote = ##t
\tempo 4 = 96
\unset Score.tempoHideNote
...
wird die Tempo-Angabe nicht mehr unsichtbar gemacht .
Beispiel zum Ausprobieren:
\version "2.18.0"
\header {
texidoc = "
To change the tempo in MIDI output without printing anything, make the
metronome mark invisible.
"
doctitle = "Changing the tempo without a metronome mark"
}
\score {
\new Staff \relative c' {
\set Score.tempoHideNote = ##t
\tempo 4 = 160
% wenn folgende Zeile aktiviert wird, funktioniert "tempoHideNote = ##t" nicht
% \unset Score.tempoHideNote
c4 e g b
c4 b d c
\set Score.tempoHideNote = ##f
\tempo 4 = 96
d,4 fis a cis
d4 cis e d
}
\layout { }
\midi { }
}
Reinhard
Hallo Reinhard,
kein bug.
Vielmehr setzt Du zwei Befehle zum selben context-property für denselben context zur selben Zeit. Siehe den terminal-output von:
#(define display-current-moment
#{
\applyContext
#(lambda (ctx) (format #t "\ncurr-mmt: ~a" (ly:context-current-moment ctx)))
#})
{
\display-current-moment
\set Score.tempoHideNote = ##t
\display-current-moment
\tempo 4 = 96
\display-current-moment
\unset Score.tempoHideNote
}
Sie widersprechen sich, also wird einer mißachtet. Für gewöhnlich gewinnt der letzte.
Ich denke Du willst eher
\once \set Score.tempoHideNote = ##t
Ich bin mir aber nicht sicher, ob das in 2.18. schon verläßlich arbeitet.
Falls nicht setzt das \unset einfach etwas später.
Gruß,
Harm
Danke !
Gruß,
Reinhard