Ambitus per Hand setzen - geht das?

Begonnen von Manuela, Freitag, 12. Mai 2023, 20:59

« vorheriges - nächstes »

Manuela

Der Ambitus-Engraver zeigt automatisch die höchste und tiefste Note an.

Mit extract-music hole ich einen Teil eines Musikausdrucks heraus, möchte trotzdem den gesamten Tonumfang angezeigt bekommen. Dazu müsste ich den Ambitus händisch setzen können, geht das? Wenn ja, wie?

\version "2.25.4"
\language "deutsch"

\new Voice \with
{ \consists Ambitus_engraver }
\relative {
  \override AmbitusNoteHead.staff-position = #4  %% funktioniert ja wohl nicht
  c'4 d e c' d }
Danke für eure Hilfe
viele Grüße
-- Manuela

Rudi Guggt

Hallo

wenn du irgendwo den Platz für unsichtbare Noten hast, könntest du mit \hideNotes entsprechende Noten einfügen und ausblenden. Sie werden vom Ambitus-Engraver beachtet, benötigen aber trotzdem ihren Raum.

Gruß
Rudi

Manuela

Danke für die Idee, Rudi. Das erfordert leider einigen Extra-Aufwand, den ich mir gerne sparen möchte.
Danke für eure Hilfe
viele Grüße
-- Manuela

Rudi Guggt

Hallo

wenn man den Ambitus-Engraver in eine zweite unsichtbare Stimme nimmt, dann ist das Problem verschwunden, das die unsichtbaren Noten Platz einnehmen.

Oder welchen Aufwand meinst du?

Gruß
Rudi

juergen74

Hallo!

\version "2.24.0"

\language "deutsch"

#(define n 1)

setAmbitus =
#(define-music-function (lower upper) (number? number?)
   #{
     \override AmbitusNoteHead.stencil =
     #(lambda (grob)
        (let (
               (stil (ly:note-head::print grob)))
          (if (= n 1)
              (begin
               (ly:grob-set-property!  grob 'staff-position lower)
               (set! n 2))
              (begin
               (ly:grob-set-property!  grob 'staff-position upper)
               (set! n 1)))
          stil))
   #} )

\new Voice \with
{ \consists Ambitus_engraver }
\relative {

 \setAmbitus #-2 #5

  c'4 d e c' d
}


Jetzt muss ich schon wieder schreiben, dass das keine schöne Lösung ist...  ;)

Aber ich habe noch nicht herausgefunden, wo und wann man auf die Eigenschaft 'note-heads des ambitus-interfaces zugreifen kann.

Grüße, Jürgen.

Jean Abou Samra

Dafür soll man ly:grob-object benutzen, nicht ly:grob-property (cf. https://extending-lilypond.gitlab.io/de/extending/backend.html#understanding-grob-pointers, zurzeit nicht ins Deutsche übersetzt).

\version "2.24.1"

overrideAmbitus =
#(define-music-function (pos1 pos2) (integer? integer?)
   #{
     \override AmbitusLine.before-line-breaking =
       #(lambda (grob)
          (match-let (((head1 head2) (ly:grob-array->list
                                      (ly:grob-object grob 'note-heads))))
           (ly:grob-set-property! head1 'staff-position pos1)
           (ly:grob-set-property! head2 'staff-position pos2)))
   #})

\new Staff \with {
  \consists Ambitus_engraver
  \overrideAmbitus -10 5
}
{ c'4 c''4 }


--------

Ich bin kein deutscher Muttersprachler. Bitte verzeihen Sie mir Fehler.


juergen74


juergen74

Ich habe dein Tutorial gelesen. Was ich vorher versucht hatte:
I have read your tutorial. What I tried before:
\override Ambitus.before-line-breaking =
   #(lambda (grob)
          (pretty-print (ly:grob-object grob 'note-heads)))

IR:
Zitat3.1.5 Ambitus
An ambitus, giving the range of pitches of a voice or instrument. It aligns AmbitusAccidental
(page 482), AmbitusLine (page 483), and AmbitusNoteHead (page 483)[...]

Wie kann man auf die Idee kommen mit AmbitusLine auf die AmbitusNoreHeads zuzugreifen, ohne Lilypond-Entwickler zu sein??? Lilypond ist mit Abstand das Programm mit dem größten Frustrationspotential, mit dem ich je gearbeitet habe :(
Why would amyone - not being a lilypond developer - try to access AmbitusNoteHeads by AmbitusLine??? Lilypond is by far the software with the greatest potential of frustation I have ever worked with :(

Andererseits macht es aber auch Spaß und liefert super Ergebnisse   :)
Then again it is really fun and yields great results   :)


Jürgen.

Je seulement parles un petit peu francais...  ;)

Manuela

Zitat von: Jean Abou Samra am Sonntag, 14. Mai 2023, 01:28Dafür soll man ly:grob-object benutzen, nicht ly:grob-property (cf. https://extending-lilypond.gitlab.io/de/extending/backend.html#understanding-grob-pointers, zurzeit nicht ins Deutsche übersetzt).

Thanks for your help, this is exactly what I was looking for.

Danke auch dir Jürgen für deine Unterstützung, die schon sehr hilfreich war für mich.

Mich frustriert Lilypond nicht, ich bin immer aufs Neue begeistert von den Möglichkeiten. Ich denke, kein anderes Notensatzprogramm kann das.

Dass nicht alles optimal implementiert ist, verzeihe ich den Entwicklern gern (jammern auf hohem Niveau  ;) )
Danke für eure Hilfe
viele Grüße
-- Manuela