Deutschsprachiges LilyPond-Forum

Allgemeine Fragen und Probleme => Fragen und Probleme aller Art => Thema gestartet von: ingmar am Dienstag, 13. November 2018, 17:01

Titel: Scheme: if #t
Beitrag von: ingmar am Dienstag, 13. November 2018, 17:01
Hi,

wahrscheinlich wieder ein ganz blöder Fehler...! Das erste Beispiel erzeugt den gewünschten Score, das zweite kompiliert anstandslos, macht dann aber gar nix. Was geht da schief?

\version "2.19.64"
music = \relative { c'4 d e f g2 g }
\score { \music }



\version "2.19.64"
music = \relative { c'4 d e f g2 g }
#(if #t
  #{ \score { \music } #}
)



Gruß,
--ingmar
Titel: Antw:Scheme: if #t
Beitrag von: harm6 am Dienstag, 13. November 2018, 21:23
Hallo Ingmar,

das zweite Beispiel gibt ##{ \score { \music } #} zurück. Also ein in guile eingebettete Dateiformat. Guile kann natürlich nichts weiter damit anfangen und LilyPond kriegt es gar nicht zu sehen. Es ist eben kein Funktionsaufruf...

Man muß also LilyPond dazu bewegen sich dieses Dateiformat anzusehen.
(1) mittles 'add-score'

music = \relative { c'4 d e f g2 g }

#(if #t
     (add-score #{ \score { \music } #}))


oder

(2) mittels $ (dann brauchst Du allerdings ein Ereignis, daß LilyPond zeigt wo die Definition von 'music' zu Ende ist. Der Aufruf von 'add-score' erledigt das im ersten Beispiel)

music = \relative { c'4 d e f g2 g }

#(list)

$(if #t
     #{ \score { \music } #})


Vergleiche auch was passiert mit
#"foo" (nix sichtbares)
$"foo" (ein toplevel markup)



HTH,
  Harm
Titel: re: Scheme: if #t
Beitrag von: ingmar am Donnerstag, 15. November 2018, 20:06
achja, mein alter Fehler, den hatten wir schonmal.

Danke!
--ingmar