Hm. In LilyPond direkt geht das nicht; es wird halt nicht mit python, sondern mit scheme erweitert. Und soweit ich weiß, sind die Frescobaldi-python-snippets zum einmaligen Ausführen gedacht (und werden eben auch nur einmal ausgeführt).
Dir bleiben also zwei Optionen:
1. OptionLern Scheme und schreibe eine Musikfunktion. Sieht dann ungefähr so aus:
mySchemeFunction =
#(define-music-function (arg1 arg2 arg3) (typ1? typ2? typ3?)
[…Scheme-Magie…])
{
\mySchemeFunction
}
% oder, je nach dem, was mySchemeFunction zurückgibt auch
\mySchemeFunctionStatt einer expliziten music-function und deren Aufruf kannst du auch direkt einen scheme-Ausdruck hinschreiben wie z. B.
#(ly:music-transpose (ly:make-pitch 0 2 0) #{ c d e #})Dieser hier sollte z. B. den gleichen Effekt haben, als stünde da einfach
{ e fis gis }(bin mir gerade nicht sicher, ob
ly:music-transpose genau so heißt).
Dein Anwendungsfall (vor jedem Kompilieren ausführen) klingt so, als würdest du auf Zeit, Zufall oder andere Dateien zugreifen. All dies ist mit Scheme auch möglich.
2. OptionSchreib ein kleines Programm, welches eine Datei test.pyly einliest, die LilyPond-Code und von dir speziell gekennzeichnete Pythoncodeabschnitte enthält und eine test.ly ausgibt und danach LilyPond damit aufruft. Alles außerhalb der python-Abschnitte wird direkt so wieder ausgegeben, der Inhalt der Abschnitte wird interpretiert (gibt ja bestimmt sowas wie eval in anderen Sprachen auch in python) und dessen Ausgabe ausgegeben. Die Dateien könnten so aussehen:
test.pyly
{
%% BEGIN PYTHON %%
Hier deine Python-Magie
%% END PYTHON %%
}test.ly
{
%% BEGIN PYTHON-OUTPUT %%
c e g b
%% END PYTHON-OUTPUT %%
}Wenn du noch ein bisschen konkreter wirst, was du vorhast, kann dir hier sicher jemand (z. B. ich) sagen, wie einfach das in Scheme umzusetzen ist. Schaden kann es jedenfalls nicht, ein bisschen scheme zu lernen

Aber auch bei der zweiten Option könnte ich dir evtl. ein Stück weit helfen, auch wenn ich kein python kann.