It seems the `fermata` attribute would cause tempo change in MIDI output, however when combined with changing tempo in `def-score`, the restored level is the last value in the `:tempo` list, which I guess is a bug. the problem can be demonstrated by the following code snippet:
(setf ns
'((q a4b4d5fs5cs6 mp arp e b5 e5 q fs4g4b4d5a5 arp
d5)
(q c3g3d4e4b4 arp h. a5b5d6 #|fermata|#) ;; uncomment this
((leg e b2 fs3 s a3 e d4 s_h e4)) ;; the tempo starts here will be whichever is the last
((leg e b2 fs3 s a3 e d4 s_h e4)) ;; in the `:tempo' list, which is 164
((leg e d4fs4a4 mf marc d4 e4 cs4e4gs4 marc
cs4 e4 d4fs4cs5 marc d4 leg))
((leg e e4 d4fs4a4 marc d4 e4
cs4e4gs4 marc cs4 d4fs4cs5 marc d4))))
(def-score score
(:key-signature '(d major)
:time-signature '(4 4)
:tempo '((q :rit 74 70 1/32 :bars 2)
(70 2)
(164 3)
)
:layout (list '(:treble notes))
)
(notes :omn ns))
My current version is 2.2.26652.