Autor Thema: wie schreibt man einen Akkord vor das System?  (Gelesen 1739 mal)

juppes

  • Member
wie schreibt man einen Akkord vor das System?
« am: Sonntag, 26. Oktober 2014, 14:44 »
liebe Forumsmitglieder,

ich habe ein Stück für Viola d'amore abgeschrieben und möchte gerne die Stimmung, die man für dieses Stück benötigt, als Akkord ohne Notenhälse vor das erste System schreiben. Wie kann ich das anstellen?

Danke wie immer für Eure Anregungen

harm6

  • Member
Re: wie schreibt man einen Akkord vor das System?
« Antwort #1 am: Sonntag, 26. Oktober 2014, 17:54 »
Hallo,

es gibt
http://lilypond.org/doc/v2.19/Documentation/snippets-big-page.html#staff-notation-incipit
Mir scheint es allerdings noch nicht richtig ausgereift zu sein, um als generelles Beispiel dienen zu können.
Ich hab doch einiges ändern müssen. Es würde wohl auch ohne music-function gehen, indem man markup verwendet.

Doch hier der Code (die Stimmung für die Viola d'Amore hatte ich nicht im Kopf, stattdessen habe ich Geige genommen. Ist natürlich leicht zu ändern):

\version "2.19.13"

incipit =
#(define-music-function (parser location incipit-music) (ly:music?)
  #{
    %\once \override Staff.InstrumentName.self-alignment-X = #RIGHT
    \once \override Staff.InstrumentName.self-alignment-Y = ##f
    \once \override Staff.InstrumentName.padding = #0.3
    \once \override Staff.InstrumentName.stencil =
      #(lambda (grob)
         (let* ((instrument-name (ly:grob-property grob 'long-text)))
           (set! (ly:grob-property grob 'long-text)
             #{
              \markup
                  \score {
                    \context Staff \with { instrumentName = #instrument-name }
                      $incipit-music
                     \layout {
                       $(ly:grob-layout grob)
                       line-width = \indent
                       indent =
                       % primitive-eval is probably easiest for
                       % escaping lexical closure and evaluating
                       % everything respective to (current-module).
                         #(primitive-eval
                           '(or (false-if-exception (- indent incipit-width))
                                (* 0.5 indent)))
                       ragged-right = ##t
                       ragged-last = ##f
                       system-count = #1
                     }
                  }
              #})
            (system-start-text::print grob)))
  #})
 

violaIncipit = {
  \once \omit Staff.TimeSignature
  <g d' a' e''>1
  \once \hide Staff.BarLine
}

violaNotes = \repeat unfold 20 { c'4 d' e' f' }

\score {
  \new Staff \with { instrumentName = "Viola D'Amore" }
  {
    \incipit \violaIncipit
    \violaNotes
  }
 
  \layout {
    indent = 6\cm
    incipit-width = 1\cm
  }
}

HTH,
  Harm

juppes

  • Member
Re: wie schreibt man einen Akkord vor das System?
« Antwort #2 am: Sonntag, 26. Oktober 2014, 19:47 »
ganz herzlichen Dank erst einmal. Ich habe idiotischerweise vergessen zu erwähnen, daß ich noch mit Version 2.16.2 arbeite. Asche auf mein Haupt. Das Ergebnis iat zwar so ziemlich das, was ich mir vorgestellt habe, aber meine Version scheint zum Beispiel den Befeht "\omit" nicht zu kennen. Gibt es in 2.16.2 auch so eine Möglichkeit? Da muß offenbar die Syntax anders gewesen sein. Meine Spielereien haben nicht zum Erfolg geführt leider.

harm6

  • Member
Re: wie schreibt man einen Akkord vor das System?
« Antwort #3 am: Sonntag, 26. Oktober 2014, 21:32 »
In 2.16. hatte das score-markup-command einige befremdliche Setzungen für die baseline.
Entweder Du machst das upgrade auf 2.18.2 oder Du benutzt den Code unten. Da mußt Du aber den Wert für extra-offset manuell nachregulieren, je nach dem welche Ausmaße das Incipit hat (z.Zt. '(0 . -0.65))
Die anderen Neuerungen in 2.18 ff (shortcuts und semantische Sachen) habe ich auch geändert, sind aber weniger bedeutsam in diesem Fall.

\version "2.16.2"

incipit =
#(define-music-function (parser location incipit-music) (ly:music?)
  #{
    %\once \override Staff.InstrumentName #'self-alignment-X = #RIGHT
    %\once \override Staff.InstrumentName #'self-alignment-Y = ##f
    \once \override Staff.InstrumentName #'padding = #0.3
    \once \override Staff.InstrumentName #'stencil =
      #(lambda (grob)
         (let* ((instrument-name (ly:grob-property grob 'long-text)))
           (set! (ly:grob-property grob 'long-text)
             #{
              \markup
                  \score {
     

Gruß,
  Harm

juppes

  • Member
Re: wie schreibt man einen Akkord vor das System?
« Antwort #4 am: Montag, 27. Oktober 2014, 00:17 »
wunderbar, vielen Dank. Ich werde für den Augenblick noch bei 2.16.2 bleiben, habe mir aber schon mal die neue Version heruntergeladen, um sie demächst zu installieren. Habe noch ein wenig weitergebastelt und etwas gemacht, das mich zufriedenstellt.