Niedrigste/höchste Note aus Musik herausfiltern

Begonnen von Manuela, Mittwoch, 5. Juni 2024, 16:40

« vorheriges - nächstes »

Manuela

Möglicherweise gibt es diese Funktion schon irgendwo. Ich habe eine Scheme-Funktion geschrieben, bin aber noch nicht ganz zufrieden, das muss doch eleganter gehen?

\version "2.25.7"
\language "deutsch"

highlow =
#(define-music-function (mus)(ly:music?)
   (let*
    (
      (alle-pitches
       (let loop ((mus mus) (pitches '()))
         (let ((p  (ly:music-property mus 'pitch)))
           (if (ly:pitch? p)
               (cons p pitches)
               (let ((elt (ly:music-property mus 'element)))
                 (fold loop
                   (if (ly:music? elt)
                       (loop elt pitches)
                       pitches)
                   (ly:music-property mus 'elements)))))))
      (alle-sortiert (sort alle-pitches ly:pitch<?))
      (tief (car alle-sortiert))
      (hoch (car (reverse alle-sortiert)))
      )
    (make-music
     'SequentialMusic
     'elements
     (list
      (make-music
       'NoteEvent
       'duration
       (ly:make-duration 2)
       'pitch
       tief)
      (make-music
       'NoteEvent
       'pitch
       hoch
       'duration
       (ly:make-duration 2))))
    ))

mus = { c, d' e' f' a d, }

{
  \clef bass
  \highlow \mus
}
Danke für eure Hilfe
viele Grüße
-- Manuela

Rudi Guggt

Hallo

suchst du den Ambitus, bzw den ambitus_engraver?

Gruß
Rudi

Manuela

Danke für die Antwort. Genau wegen dieses Ambitus-Engravers brauche ich diese Funktion, weil bei einem Auszug aus der Musik der Ambitus nicht korrekt angezeigt wird (klarerweise). Den Ambitus händisch umsetzen ist auch mühsam auf Dauer.
Danke für eure Hilfe
viele Grüße
-- Manuela