Deutsches Lilypond Forum (Archiv)
Allgemein => Fragen zu Funktionen => Thema gestartet von: ToPDF am Mittwoch, 19. März 2014, 21:04
-
GIb es eine Möglichkeit ein Akkordsymbol eingeklammert darzustellen, also
A G (F) A,
so dass es zwar (eingeklammer) dargestellt wird, aber nicht im midi-File erklingt?
-
Hallo ToPDF,
das kannst du wieder mit den ChordExceptions machen:
chExceptionMusic = {
<c e g>-\markup {\parenthesize "F"}}
Wenn du ein bisschen Platz vor der Klammer brauchst:
chExceptionMusic = {
<c e g>-\markup {" " \parenthesize "F"}}
Erinnerung: Poste zu deiner Frage ein Minimalbeispiel.
Gruß
-
\version "2.18.0"
chExceptionMusic = {
<c e g>-\markup {" " \parenthesize "F"}}
chExceptions = #( append
( sequential-music-to-chord-exceptions chExceptionMusic #t)
ignatzekExceptions)
theMusic = \chordmode {
\set chordNameExceptions = #chExceptions
c1 c1
}
<< \context ChordNames \theMusic
>>
ergibt
C ( F ) C ( F )
Hm. Wie bekomme ich nur das ( F ) ?
-
Hallo,
versuch mal:
\version "2.18.0"
chrds =
\chordmode {
c1
\tag #'print {
\override ParenthesesItem #'font-size = #0.5
\parenthesize
g
}
\tag #'midi c
c
}
\score {
\new ChordNames \removeWithTag #'midi \chrds
}
\score {
\new ChordNames \removeWithTag #'print \chrds
\midi { }
}
HTH,
Harm
-
Danke harm6, optisch tut es. Nur das Ausblenden im Midi-File bekomme ich bei mir nicht hin.
Ich habe folgendes Konstrukt:
\book {
\score {
\layout {
}
\midi {
}
}
}
Wo muss ich
\new ChordNames \removeWithTag #'midi \chrds
wo muss ich
\new ChordNames \removeWithTag #'print \chrds
hinschieben?
-
So wie ich schrieb, zwei scores. Die können natürlich in einem book sein.
-
Das ist natürlich alles sehr aufwendig und der Code lässt sich dadurch nicht besser lesen.
Kann ich Akkorden auch eine Länge größer als "1" für "Ganze" angeben? Also ein Akkord über zwei Takte definieren?
-
Ja, du kannst einen Akkord zwei Ganze dauern lassen, und zwar als c\breve oder c1*2. Er kann auch fünf Viertel dauern oder anderthalb Ganze: c4*5 bzw . c1*3/2 oder c1.
-
Das ist natürlich alles sehr aufwendig und der Code lässt sich dadurch nicht besser lesen.
Nö, falls Du Variablen möglichst effektiv benutzt.
Vier Zeilen (Könnte man hier auch in eine schreiben.)
Kann ich Akkorden auch eine Länge größer als "1" für "Ganze" angeben? Also ein Akkord über zwei Takte definieren?
Ja
\version "2.18.0"
chrds =
\new ChordNames
\chordmode {
c1*2 %% maybe this way
\tag #'print {
\override ParenthesesItem #'font-size = #0.5
\parenthesize
g
}
\tag #'midi c
c\longa %% or this way
c1
}
mus =
\new Staff \repeat unfold 9 R1
ready =
<<
\chrds
\mus
>>
\book {
\score {
\removeWithTag #'midi \ready
}
\score {
\removeWithTag #'print \ready
\midi { }
}
}
-
\version "2.18.00"
#(set-global-staff-size 20)
\language "deutsch"
harmonien = {
\germanChords
\chordmode {
\partial 4
%---------------
\tag #'print {
\override ParenthesesItem #'font-size = #0.5
\parenthesize
a2.
}
\tag #'midi r2.
%---------------
h1:m e1 a1 fis1:m:
}
}
melody =
\relative c'' {\new Voice = "singer"
\time 4/4
e4 r4 \tuplet 3/2 {e e e}
\slurDashed e (e) e~ e4
r4 \tuplet 3/2 {e e e}
r4 \tuplet 3/2 {e e e}
}
Versea = \lyricmode {
"" la la la -- \set ignoreMelismata = ##t laaaa laaa \unset ignoreMelismata laaaa __ laaaa -- laaa laa -
}
\book {
\score {
<<
\new ChordNames \removeWithTag #'midi { \harmonien }
\new Staff <<
\melody >>
\lyricsto "singer" \new Lyrics \Versea
>>
\layout {
}
}
\score {
\removeWithTag #'print
\midi { }
}
}
funktioniert leider auch nicht.
Wie geht es richtig?
-
Selbst nachdem ich Tippfehler u.ä. entfernt habe, achte mehr auf das log, und den Code nach meinem Geschmack formatiert habe ist mir völlig unklar wo die Akkordsymbole platziert werden sollen. (Zur Kontrolle kommentier mal den zusätzlichen Staff ein.)
Das Einklammern funktioniert jedenfalls. Das midi auch.
Zumindest bei mir. Falls es bei Dir nicht klappt poste bitte das log, falls error und/oder warning gemeldet werden oder spezifizier genau was nicht in Ordnung ist.
\version "2.18.0"
\language "deutsch"
harmonien =
\chordmode {
\germanChords
%---------------
\tag #'print {
\override ParenthesesItem #'font-size = #0.5
\parenthesize
a2.
}
\tag #'midi r2.
%---------------
h1:m e1 a1 fis1:m
}
melody =
\relative c'' {
\new Voice = "singer"
\time 4/4
\partial 4
e4
r4 \tuplet 3/2 { e e e }
\slurDashed
e( |
e) e~ e4 r4 |
\tuplet 3/2 {e e e}
r4 \tuplet 3/2 {e e e}
}
Versea = \lyricmode {
_ la la la --
\set ignoreMelismata = ##t
laaaa laaa
\unset ignoreMelismata
laaaa __ laaaa -- laaa laa
}
ready =
<<
%\new Staff \harmonien
\new ChordNames \harmonien
\new Staff \melody
\lyricsto "singer" \new Lyrics \Versea
>>
\book {
\score {
\removeWithTag #'midi \ready
\layout { }
}
\score {
\removeWithTag #'print \ready
\midi { }
}
}
-
> ist mir völlig unklar wo die Akkordsymbole platziert werden sollen.
Der Zusammenhang Akkorde und Noten, also die horizontale Anordnung der Akkorde über den Noten ist in dem Beispiel völlig sinnfrei.
Es ging ja um \book und \score und dass es sich nicht compilieren ließ ...
Jetzt funktioniert es, danke!
Das Einklammern von Akkorden ist ja nun nicht so unüblich. Wäre das ein Thema für die Wunschliste?
Der zusätzliche Staff wird nun mehrfach eingeklammert.
-
Das Einklammern von Akkorden ist ja nun nicht so unüblich. Wäre das ein Thema für die Wunschliste?
Das feature existiert ja, parenthesize funktioniert. Insoweit nein.
Das Problem ist eher das sich die Klammern nicht an die Größe des Akkordsymbols anpassen und man einen zusätzlichen override benötigt. Insoweit ja.
Der zusätzliche Staff wird nun mehrfach eingeklammert.
Ja. \parenthesize klammert jeden einzelnen NoteHead ein, nicht die NoteColumn.
Da gibts schon einige issues zu auf dem bug-tracker. Ich hab mich auch schon selbst dran versucht, allerdings ohne überzeugendes Ergebnis.
Gruß,
Harm