Autor Thema: Einrückung einzelner Noten in einem Akkord  (Gelesen 3137 mal)

derburn

  • Member
Einrückung einzelner Noten in einem Akkord
« am: Montag, 11. April 2011, 11:53 »
Hallo Lilys,

hier kommt ein voraussichtlich kniffliges Problem:
um Drums bzw. Percussions zu notieren, definiere ich eigene Notenköpfe.
Dazu nutze ich alle 5 Notenlinien.
Im angehängten Beispiel sieht man, wie das z.B. für ein Basedrum- & Snare- Pattern aussehen soll.

Wie man sieht, sind die Noten zu eng beieinander.
Klar könnte man jetzt das #'staff-spacing ändern oder sonst irgendwie den Staff an die Noten anpassen.

Diesen Weg möchte ich nicht gehen, sondern stattdessen die jeweils obere Note einen Tick nach rechts verschieben,
ganz so, wie Lilypond das automatisch für Akkorde wie den folgenden macht:
\version "2.13.51"
\relative c' { d4 <<a4 e' f>> a2 }


Der Unterschied ist, dass ich die obere Note eben auch dann verschieben will, wenn sie NICHT nur einen Halbton von der unteren entfernt ist, sondern - wie im angehängten Fall - auch eine ganze Note (bzw. am besten für beliebige Abstände, wobei zur Not die ganze Note ausreicht).

Bitte schaut Euch mal den angehängten Code und die Ausgabe an - dort sieht man, wie ich verzweifelt versuche, den
selbst gebastelten Notenkopf zu verschieben (und ordentlich scheitere ;)).

Hat da jemand eine Idee, wie man es besser machen kann bzw. was noch fehlt?

Viele liebe grüße,
Manuel

harm6

  • Member
Re:Einrückung einzelner Noten in einem Akkord
« Antwort #1 am: Montag, 11. April 2011, 12:16 »
Nur eine Idee:

\version "2.12.3"

\relative c' { d4 <a e' \tweak #'extra-offset #'(1.3 . 0) g>4 a2 }

Ist zwar in 2.12.3 geschrieben, aber vielleicht kannst Du ja doch 'was damit anfangen.

Gruß,
  Harm

RobUr

  • Member
Re:Einrückung einzelner Noten in einem Akkord
« Antwort #2 am: Montag, 11. April 2011, 16:47 »
Hallo Manuel,

hilft es, wenn du deine Scheme-Definition änderst?

#(define (mySnare grob)
  (let* ((interfaces (ly:grob-interfaces grob)))
    (ly:grob-set-property! grob 'extra-offset '(1 . -0.58)))
    (ly:grob-set-property! grob 'stencil
            (grob-interpret-markup grob
              (make-lower-markup 0.5 (make-bold-markup "x")))))

Grüße, Robert

derburn

  • Member
Re:Einrückung einzelner Noten in einem Akkord
« Antwort #3 am: Dienstag, 12. April 2011, 10:39 »
Nur eine Idee:

\version "2.12.3"

\relative c' { d4 <a e' \tweak #'extra-offset #'(1.3 . 0) g>4 a2 }

Ist zwar in 2.12.3 geschrieben, aber vielleicht kannst Du ja doch 'was damit anfangen.

Danke, Harm,
das würde in dem Mini-Code-Beispiel tatsächlich helfen, allerdings nicht in dem angehängten Beispielcode...
Trotzdem danke!

Viele liebe Grüße,
Manuel

derburn

  • Member
Re:Einrückung einzelner Noten in einem Akkord
« Antwort #4 am: Dienstag, 12. April 2011, 10:51 »
hilft es, wenn du deine Scheme-Definition änderst?

#(define (mySnare grob)
  (let* ((interfaces (ly:grob-interfaces grob)))
    (ly:grob-set-property! grob 'extra-offset '(1 . -0.58)))
    (ly:grob-set-property! grob 'stencil
            (grob-interpret-markup grob
              (make-lower-markup 0.5 (make-bold-markup "x")))))


Hi Robert,

das ist in der Tat eigtl. die beste Lösung... :)
Das bedeutet zwar, dass ich dann quasi 'mySnareMoved' definieren muss, damit ich sowohl die nicht verschobene als auch die verschobene Variante habe,
aber das könnte trotzdem klappen...

Einziger Mini-Haken, den meine Lösung allerdings insgesamt hat, ist, dass ich neue Instrumente nur in Verbindung mit der Zuweisung eines neuen MIDI-Sounds
generieren kann - man sieht ja im Code, dass ich eigtl. nur z.B. "bd" etc. schreibe und den entsprechend formatierten Notenkopf im Layout bekomme.

Aber das neue MIDI-Instrument findet sich auch - durch meinen Ansatz klingen die MIDIs ohnehin nicht sehr originalgetreu, aber die sind ja (zumindest für mich)
auch nur als Unterstützung zur Notation gedacht...

Vielen Dank an alle!
Viele liebe Grüße,
Manuel