In einer Diskussion zwischen stefanhuglfing und harm6
https://liarchiv.joonet.de/index.php?topic=1719.msg9529#msg9529stieß ich auf den Schnipsel
\version "2.18.2"
Tondauer =
#(
define-music-function (parser location dauer) (integer?)
(
let ((dur (ly:make-duration (ly:intlog2 dauer) 0 1 1)))
(if (< dauer 20) #{ b' $dur #} #{ b'16 #} )
)
)
\Tondauer 20
den ich nicht so richtig verstand.
Die Frage, die sich mir stellte, war:
wenn im obigen Zusammenhang #{ b'16 '#} koorekt ist, warum nicht auch #{ b' $dauer #}?
Jedenfalls führt es zu einem Fehler.
Es gibt zwei korrekte Lösungen
1.
\version "2.18.2"
Tondauer =
#(
define-music-function (parser location dauer) (integer?)
#{ b' $(make-duration dauer #}
)
{\Tondauer 0
\Tondauer 1
\Tondauer 2
\Tondauer 3
\Tondauer 4
\Tondauer 5
\Tondauer 6
\Tondauer 7
\Tondauer 8}
wobei zum letzten Fall die Warnung: "Fähnchen »flags.d8« nicht gefunden" ausgegeben wird

2.
\version "2.18.2"
Tondauer =
#(
define-music-function (parser location dauer) (integer?)
#{ b' $(ly:make-duration (ly:intlog2 dauer)) #}
)
{\Tondauer 1
\Tondauer 2
\Tondauer 3
\Tondauer 4
\Tondauer 5
\Tondauer 6
\Tondauer 7
\Tondauer 8}
