Holzbläser-Diagramm für Oboe "gelöst"

Begonnen von chf, Sonntag, 12. Dezember 2021, 19:08

« vorheriges - nächstes »

chf

Liebe Freunde,

auf der Grundlage von
Re:Holzbläser-Diagramm für Blockflöte gesucht
« Antwort #1 am: Montag, 24. Januar 2011, 09:51 »
aus dem Archiv

\version "2.22.0"
finger = \markup {
  \draw-circle #.75 #.2 ##f
  \hspace #1
  \center-column {
    \line { \draw-circle #.75 #.2 ##t }
    \line { \draw-circle #.75 #.2 ##t  }
    \line { \draw-circle #.75 #.2 ##t  }
    \line { \draw-circle #.75 #.2 ##f  }
    \line { \draw-circle #.75 #.2 ##f  }
    \line { \draw-circle #.6 #.2 ##f \draw-circle #.4 #.2 ##f  }
    \line { \draw-circle #.6 #.2 ##f \draw-circle #.4 #.2 ##f  }
} }

\relative c' {
  \override Stem.transparent = ##t a''4^\finger
}
bin ich bis hierher gekommen. Nun weiß ich nicht weiter.
Im angehängten Foto ist zu sehen, was rauskommen soll. Könnt ihr helfen? Es geht mir vor allem um die Bezeichnungen in den Diagrammen.
Ich weiß nicht, wie ich sie einfügen soll.

finger = \markup {
  %\draw-circle #.75 #.2 ##f
  \hspace #1
  \center-column {
    \line { \draw-circle #.75 #.2 ##t }
    \line { \draw-circle #.75 #.2 ##t  }
    \line { \draw-circle #.75 #.2 ##f  }
    \line { \draw-circle #.75 #.2 ##t  }
    \line { \draw-circle #.75 #.2 ##t  }
    \line { \draw-circle #.75 #.2 ##t  }
   
} }

\relative c' {
  \override Stem.transparent = ##t a''4^\finger}

Herzliche Adventgrüße
Christa

Manuela

Liebe Christa, wenn du deine Codelbeispiele in die Code-Tags einfügst (das Kästchen mit dem #) tut man sich einerseits beim Lesen leichter, andererseits kann man den Code mit einem Mausklick rauskopieren.
Das Diagramm wird hier als Markup (=Text) definiert, es gibt hier eine ausführliche Beschreibung, wie Texte in Lilypond zu erstellen sind: A.10 Textbeschriftungsbefehle

Somit wird dann auch klar, wo der zusätzliche Text eingefügt werden muss (das Beispielbild ist übrigens so klein, das es kaum zu erkennen ist)

Ich habe mal etwas eingefügt

\version "2.22.0"

finger = \markup {
  \draw-circle #.75 #.2 ##f
  \hspace #1
  \center-column {
    \line { \draw-circle #.75 #.2 ##t }
    \line { \draw-circle #.75 #.2 ##t }
    \line \vcenter { \hspace #2 +8 \draw-circle #.75 #.2 ##t + As  }
    \line { \draw-circle #.75 #.2 ##f  }
    \line { \draw-circle #.75 #.2 ##f  }
    \line { \draw-circle #.6 #.2 ##f \draw-circle #.4 #.2 ##f  }
    \line { \draw-circle #.6 #.2 ##f \draw-circle #.4 #.2 ##f  }
} }

\relative c' {
  \override Stem.transparent = ##t a''4^\finger
}


Was \line, \vcenter und \hspace bewirken, findest du im Kapitel Align, \circle im Kapitel Graphic vom vorhin erwähnten Link
Danke für eure Hilfe
viele Grüße
-- Manuela

chf


Manuela

#3
Liebe Christa,

die Kreise sind deswegen nicht genau übereinander, weil die vor- und nachgestellten Buchstaben Platz brauchen. Mit den Zahlenwerten nach \hspace kannst du den Abstand regeln, es kommt auf dein System an, die eingestellten Schriftgrößen etc. In meinem System ergeben die folgenden Werte genau übereinander liegende Grifflöcher. Du musst evtl. die Werte ändern, damit es bei dir passt.

Harm hat vll. eine elgantere Lösung, ich kann nur das folgende anbieten:

\version "2.22.0"

slashC = \markup \combine \draw-circle #.75 #.2 ##f \path #0.25
#'((moveto -1 -1)
   (lineto 1 1)
   )
offen = \markup \draw-circle #.75 #.2 ##t
zu = \markup \draw-circle #.75 #.2 ##f

finger = \markup {
  \center-column {
    \line { \offen }
    \line { \offen }
    \line \vcenter { \hspace #-3 +8 \zu }
    \line { \offen }
    \line { \offen }
    \line \vcenter { \hspace #-3.5 +C \offen }
  }
}

fingerSl = \markup {
  \center-column {
    \line { \offen }
    \line { \slashC }
    \line \vcenter { \hspace #-3 +8 \zu }
    \line { \offen }
    \line { \offen }
    \line \vcenter { \hspace #-3.5 +C \offen }
  }
}

fingerAs = \markup {
  \center-column {
    \line { \offen }
    \line { \offen }
    \line \vcenter { \hspace #2 +8 \zu + As  }
    \line { \offen }
    \line { \offen }
    \line \vcenter { \hspace #-3.5 +C \offen }
  }
}

\relative c'' {
  \textLengthOn
  \override TextScript.outside-staff-priority = ##f
  \override TextScript.padding = #1
  \override Stem.transparent = ##t
  a4^\finger
  a4^\fingerAs
  \hideNotes a a a a
  \unHideNotes
  a4^\fingerSl
}
Danke für eure Hilfe
viele Grüße
-- Manuela

chf

Liebe Manuela,

du bist ein Schatz! Ich danke dir - es ist alles am richtigen Fleck.
Ich wünsche dir eine gute Zeit!

Christa



chf

Liebe Manuela,

noch eine Frage/Bitte:
Wie kann das ganze Bild verkleinert werden?

(Dass es sich als "TextScript" verschieben lässt, habe ich mit Erfolg probiert.)

Mit Dank und Gruß
Christa

Malte

Mit \scale in der Definition sollte es gehen:fingerAs = \markup \scale #'(0.5 . 0.5) { [...]

chf


Manuela

Liebe Christa, fügst du bitten dem Titel den Zusatz "gelöst" hinzu, damit man gleich sieht, dass es eine Lösung gibt, danke  :)
Danke für eure Hilfe
viele Grüße
-- Manuela

Lilysetter

Für solche Wünsche bietet sich auch \postscript an. Man muss sich halt ein wenig einlesen. Ich programmiere seit 30 Jahren in Postscript, das ist eine sehr durchdachte und mächtige Seitenbeschreibungssprache, die auch Lilypond nutzt: Die .ly-Dateien werden zuerst in eine Postscript-Datei umgewandelt und dann mit dem OpensourceProgramm ghostscript in PDF übersetzt.
Hier mein Vorschlag (es gibt eine noch aktuellere Version, welche ich gerade nicht zur Hand habe):
%https://lilypondforum.de/index.php/topic,1006.0.html
\version "2.22.0"

slashC = \markup \combine \draw-circle #.75 #.2 ##f \path #0.25
#'((moveto -1 -1)
   (lineto 1 1)(rlineto -1 1)
   )
offen = \markup \draw-circle #.75 #.2 ##t
zu = \markup \draw-circle #.75 #.2 ##f

finger = \markup {
  \center-column {
    \line { \offen }
    \line { \offen }
    \line \vcenter { \hspace #-3 +8 \zu }
    \line { \offen }
    \line { \offen }
    \line \vcenter { \hspace #-3.5 +C \offen }
  }
}
fingerZ = \markup\postscript "0.15 setlinewidth newpath
  /x  0.9 def %x-Position der Punkte
  /ys 1.0 def %y-Startwert
  /ya 1.5 def %y-Addierwert (Abstand der Punkte)
  /z   ys def %y-Hilfsvariable
  /r  0.4 def %Radius der Punkte
  /y{z /z z ya add def}def %y holen und nächstes y (in z) berechnen
  x y r 0 360 arc fill %Punkt zeichnen
  x y r 0 360 arc fill
  x y r 0 360 arc fill
  x y r 0 360 arc stroke %Kreis zeichnen
  x y r 0 360 arc stroke
  x y r 0 360 arc fill
  x    4 ya mul  ys add moveto  -0.6 -0.6 rmoveto 1.2 1.2 rlineto stroke %Diagonallinie
  /Times findfont 1.8 scalefont setfont  %Font und Größe
  -2.5 0 ya mul 0.4 add moveto (+C) show %auf der 0+1=1. Position
  -2.5 3 ya mul 0.4 add moveto (+8) show %auf der 3+1=4. Position
   2.0 3 ya mul 0.4 add moveto (+As)show
  "

fingerSl = \markup {
  \center-column {
    \line { \offen }
    \line { \slashC }
    \line \vcenter { \hspace #-3 +8 \zu }
    \line { \offen }
    \line { \offen }
    \line \vcenter { \hspace #-3.5 +C \offen }
  }
}

fingerAs = \markup {
  \center-column {
    \line { \offen }
    \line { \offen }
    \line \vcenter { \hspace #2 +8 \zu + As  }
    \line { \offen }
    \line { \offen }
    \line \vcenter { \hspace #-3.5 +C \offen }
  }
}

\relative c'' {
  \textLengthOn
  \override TextScript.outside-staff-priority = ##f
  \override TextScript.padding = #1
  \override Stem.transparent = ##t
  a4^\finger
  a a a^\fingerZ
  a a a^\fingerAs
  \hideNotes a a a a
  \unHideNotes
  a4^\fingerSl
}

Lilysetter

Wie versprochen die andere Version:
\version"2.22.0"\paper{top-margin=35}
\relative{c'd e f c d e f^\markup\postscript"
  /Times-Roman findfont 1 scalefont setfont
  1 1 translate 2 2 scale 0.025 setlinewidth newpath
  [0 1 7]{0 exch 0.3 0 360 arc fill}forall
  [  2]{dup 0 exch 0.3 170 370 arc closepath -0.4 exch 0.30 sub moveto 0.8 0.0 rlineto stroke}forall
  [3 4]{0 exch 0.3 0 360 arc stroke}forall
  [  5]{dup 0 exch 0.3 40 320 arc  0 exch lineto closepath stroke}forall
  [  6]{0 exch 0.3 60 300 arc closepath stroke}forall
  [8 9]{0 exch 0.3 70 290 arc fill}forall
  [0 1]{-0.7 exch moveto(rechtsbuendig)dup stringwidth pop neg -0.32 rmoveto show}forall %rechtsbündig
  [2 3]{-0.7 exch moveto(+888)dup stringwidth pop neg -0.32 rmoveto show}forall %rechtsbündig
  [4 5]{-0.7 exch moveto (+8)dup stringwidth pop neg -0.32 rmoveto show}forall %rechtsbündig
  [6 7]{ 0.7 exch 0.32 sub moveto(ADD)show}forall %linksbündig
  [2 3]{-0.3 exch 0.30 sub moveto 0.6 0.6 rlineto stroke}forall %Diagonalstrich
  [  4]{ 0.7 exch 0.32 sub moveto(linksbuendig)show}forall %linksbündig
  [  5]{ 0.7 exch 0.32 sub moveto(pacman)show}forall %linksbündig
  "}

Postscript-Literatur:
Reference Manual second editition:
https://www.adobe.com/content/dam/acom/en/devnet/actionscript/articles/psrefman.pdf
Reference Manual third editition:
https://www.adobe.com/content/dam/acom/en/devnet/actionscript/articles/PLRM.pdf
Jens Pönisch (TU Chemnitz): Postscript-Grafik
https://monarch.qucosa.de/api/qucosa%3A17967/attachment/ATT-1/
Frank Richter: Postscript-Einführung
https://monarch.qucosa.de/api/qucosa%3A17967/attachment/ATT-2/
Frank Richter: Postscript-Sprache
https://monarch.qucosa.de/api/qucosa%3A17967/attachment/ATT-3/
Jens Pönisch: Postscript-Tools
https://monarch.qucosa.de/api/qucosa%3A17967/attachment/ATT-4/

Manuela

Danke. Lilysetter! Auch für die Postscript Links
Danke für eure Hilfe
viele Grüße
-- Manuela