Zitat von: Manuela am Sonntag, 10. Mai 2026, 08:07Jetzt habe ich kurz gedacht, wer soll diese Michaela im Forum sein. Bis mir eingefallen ist, dass ich schon oft versehentlich mit diesem Namen angesprochen worden bin.Oh, entschuldige!! *rotwerd*. Ich bekomme auch immer seltsame Namen, teilweise auch aus meinem Nachname generiert. Und Susanne und Sabine verwechsel ich schon mein ganzes Leben lang (ich zweifle sehr, dass dich das tröstet..).
Zitat von: ingmar am Samstag, 9. Mai 2026, 11:19Da Michaela vor kurzem schon
#(define all-music
;; Collect and list relevant music
(list musicA musicB musicC musicD))
#(define (all-unfolded-music music-list)
;; Unfold all music in MUSIC-LIST
(map unfoldRepeats music-list))
#(define (all-music-lengths-list music-list)
;; Return a list of all lengths of the elements of MUSIC-LIST
;; as a list of moments.
(map ly:music-length (all-unfolded-music music-list)))
#(define (certain-durations-amount music-list duration)
;; Return a list with the amount of multiples of DURATION for each element
;; of MUSIC-LIST
(map
(lambda (l)
(ly:moment-main (ly:moment-div l (ly:duration-length duration))))
(all-music-lengths-list music-list)))
output =
#(define-scheme-function (music-list dur)(list? ly:duration?)
;; Return a formated markup expressing how many multiples of DURATION each
;; element of MUSIC-LIST contains. These element are counted: 1, 2, 3, ...
(let* ((amounts (certain-durations-amount music-list dur)))
#{
\markup
\column
#(map
(lambda (i p)
(format #f "Musik #~a dauert wie ~a Noten der Länge ~a"
i
p
(/ 1 (duration-visual-length dur))))
(iota (length amounts) 1) amounts)
#}))
\markup \output #all-music ##{ 4 #}
Zitat von: harm6 am Samstag, 9. Mai 2026, 14:18Falls Du allerdings Tempoveränderungen wirklich berücksichtigen willst oder auch die Passagen bei denen \unfoldRepeats nicht hinreichend wirkt, so wird es mit Sicherheit erheblich komplexer.

#(define all-music
;; Collect and list relevant music
(list musicA musicB musicC musicD))
#(define (all-unfolded-music music-list)
;; Unfold all music in MUSIC-LIST
(map unfoldRepeats music-list))
#(define (all-music-lengths-list music-list)
;; Return a list of all lengths of the elements of MUSIC-LIST
;; as a list of moments.
(map musicLength (all-unfolded-music music-list)))
#(define (certain-durations-amount music-list duration)
;; Return a list with the amount of multiples of DURATION for each element
;; of MUSIC-LIST
(map
(lambda (l)
(ly:moment-main (/ l (ly:duration->number duration))))
(all-music-lengths-list music-list)))
output =
#(define-scheme-function (music-list dur)(list? ly:duration?)
;; Return a formated markup expressing how many multiples of DURATION each
;; element of MUSIC-LIST contains. These element are counted: 1, 2, 3, ...
(let* ((amounts (certain-durations-amount music-list dur)))
#{
\markup
\column
#(map
(lambda (i p)
(format #f "Musik #~a dauert wie ~a Noten der Länge ~a"
i
p
(/ 1 (ly:duration->number dur))))
(iota (length amounts) 1) amounts)
#}))
\markup \output #all-music ##{ 4 #}
\version "2.24.3"
musicA = \relative { % Length = 48
c'4 d e f g2 g
a4 a a a g1
f4 f f f e2 e
d4 d d d c e g2
f4 f f f e2 e
d4 d d d c1 }
musicB = \relative { % Length = 49
\time 3/4
R2. *2
c'4 c d
b4. c8 d4
e4 e f
e4. d8 c4
d4 c b
c4 c8 d e f
g4 g g
g4. f8 e4
f4 f f
f4. e8 d4
e4 f8 e d c
\time 4/4
e4. f8 g4 r\fermata
\time 3/4
a8 f e4 d
c2 r4
\bar "|." }
musicC = \relative { % Length = 35
\time 4/2
R\breve
r2 d'' d d
es2 r d4 es d c
b8 c b a g4 r8 a b4 r8 d e4 fis
g4 g8 fis g4
}
musicD = \relative { % Length including repetition = 328, without repetition (using alternative 2) = 236
\language "english"
\time 4/2
g'2 b4. c8 d4 e d b
a2 cs d4. d8 d4 d
cs4( d2) cs4 d2 r
b2 c4 d c c b b
a4 a d4. c8 b4 g d'2
r4 a e'4. d8 c4 c b b
c4. b8 a4 g fs2 r
g4 g8 g g2 r g4 c8 c
c4 a b b a2 r
r1 r2 a
g4 a b2 a4 b c2
b1 a2 r
r1 r2 d4 d8 c
b4. a8 g4 g fs2 r
d'4 d8 c b4 b a a g2
r1 e'2 d4 d
d2 cs d2. r4
\repeat volta 2 {
r4 d2 c b a
g2 fs4 fs8( g4) fs8 g2
b4 g a2 g f4 f
e2 g b4 c2( b4)
c2 r4 b a c b cs
d2 r4 d e2 d
d2 r4 d g2. g,4
g2 c e2. e4
d2. d4 c b c c
b4 g a2 r b
a2 g a2. a4
}
\alternative {
{ g2. r4 }
{ g2. g4 a a g f g1\fermata }
}
\bar "||"
}
lengthA = "99" % \length \of \musicA \...
\markup "A – Länge in Vierteln:"
\markup \lengthA
Zitat von: ingmar am Sonntag, 3. Mai 2026, 13:34Zitat von: harm6 am Sonntag, 3. Mai 2026, 12:25Nicht verstanden habe ich allerdings warum der übliche Ambitus nicht hinreichend ist.
Weil er Analyse und Darstellung des Ergebnisses nicht trennt. (Ich hatte dazu hier schon was geschrieben..)
Ich schreibe sehr viel Noten, und manchmal taucht tatsächlich die Frage nach Tonumfängen der Einzelstimmen auf. Aber meine Frage lautet dann selten: "Welchen Tonumfang hat die vierte Stimme in diesem Stück?" Sie lautet häufiger: "Was sind die Tonumfänge der vierten Stimmen aller Einzelsätze in diesem File?" (und in Zukunft vielleicht auch mal "... in diesem Ordner?"). Dazu muss ich dann die Ergebnisse der Einzelanalysen jeder Stimme nicht in diese hineinschreiben, sondern sie irgendwie sammeln und gesondert auflisten.
Danke fürs Interesse!
--ingmar
Zitat von: Manuela am Sonntag, 3. Mai 2026, 12:55Unsereins ist schon froh, wenn er es überhaupt hinkriegt, auch wenn es umständlicher ist als nötig.