Allgemein > Fragen zu Funktionen
Wiederholungsklammer manuell setzen
Arnold:
Hallo xr,
es wird die übergebene »sequentielle Musik« Schritt für Schritt durchgegangen - aber nur in der obersten Ebene - und an den »Markierungen« wird die Liste in Einzellisten unterteilt, um daraus die eingebetteten \repeat volta Strukturen einzufügen.
Dadurch kann später auch \unfoldRepeats angewandt werden, z. Bsp. um Midi zu erzeugen.
Wollte man nur die Grafik, könnte man sich eine Liste der in Handbuch nachzulesenden manuellen Wiederholungszeichen- und Voltenklammern in einer eigenen Datei zusammenstellen (und in jedes neue Projekt mittels \include einbinden). Jedes dort abgelegte Schnipsel enthält alles was an einem "Taktstrich" zu passieren hat, im einfachsten Fall nur die Taktstrichdefinition, meistens Taktstrich- und Volta-Definition zusammen.
Arnold.
xr:
--- Zitat ---Wollte man nur die Grafik, könnte man sich eine Liste der in Handbuch nachzulesenden manuellen Wiederholungszeichen- und Voltenklammern in einer eigenen Datei zusammenstellen (und in jedes neue Projekt mittels \include einbinden). Jedes dort abgelegte Schnipsel enthält alles was an einem "Taktstrich" zu passieren hat, im einfachsten Fall nur die Taktstrichdefinition, meistens Taktstrich- und Volta-Definition zusammen.
--- Ende Zitat ---
Das ist quasi die Antwort. Ich habe nämlich nicht gesehen, dass man eine Voltenklammer auch manuell erzeugen kann. Die Befehle lauten ganz einfach:
\set Score.repeatCommands = #'((volta "2"))
\set Score.repeatCommands = #'((volta #f))
Es ist natürlich ganz einfach, daraus eine Funktion zu basteln.
Vielen Dank,
Xaver
Manuela:
Wieder was gelernt :)
xr:
Da die Funktionen doch nicht so einfach zu erzeugen waren, wie ich behauptet habe - zumindest nicht für mich - poste ich nun doch noch die Lösung:
--- Code: ---Klammer =
#(define-music-function
(parser location num)
(number?)
(define liste '(list (volta "1")) )
(set! nr (integer->char (+ 48 num)) )
(set! nr (make-string 1 nr))
(set-car! (cdr(car (cdr liste))) nr)
#{
\set Score.repeatCommands = # liste
#})
Klammer_aus =
#(define-music-function
(parser location)
()
#{
\set Score.repeatCommands = #'((volta #f))
#})
--- Ende Code ---
Das funktioniert für die Zahlen 1 - 9, für höhere müsste man den Code erweitern.
Gibt es in Scheme eine einfache Funktion, um Integer jeglicher Größe in Strings umzuwandeln?
Manuela:
Ja, gibt es, hier z.B. nachzulesen
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln