Notationsspezifisch > Noten für Schlagzeug
Drumstaff: acciaccatura am Anfang wird nicht korrekt dargestellt
harm6:
Hi zoink,
folgendes scheint zu funktionieren (warum \stemDown nötig ist weiß ich im Moment nicht):
--- Code: ---\book {
\score {
\new DrumStaff \with { \consists "Parenthesis_engraver" }
<<
\set DrumStaff.drumStyleTable = #(alist->hash-table mydrums)
\new DrumVoice = "1" { \cadenzaOn s128 \cadenzaOff s1 *12 }
\new DrumVoice = "2" { \cadenzaOn s128 \cadenzaOff s1 *12 }
\drummode {
\tempo 4 = 120
\set countPercentRepeats = ##t
% 1-4
\cadenzaOn s128 \cadenzaOff
\repeat percent 4 {
<<
{ s1 | }
\\
{ \acciaccatura tomh8 \stemDown tomh8 \times 2/3 { bdr16 bdl bdr } tomm8 bdr bdr sn toml16 bdr bdl bdr | }
>>
}
% 5-12
\repeat percent 8 {
<<
{ \repeat unfold 4 { hh4 } | }
\\
{ \repeat unfold 4 { bdr8 sn } | }
>>
}
}
>>
\layout { indent = 0.0\cm }
}
\header {
title = "Titel"
subtitle = " "
instrument = "Schlagzeug"
poet = "Autor"
composer = "Komponist"
meter = " "
}
}
--- Ende Code ---
Probiert habe ich auch:
\partial 4 s4 \bar "" (führt zu einer geringen Verschiebung nach rechts und lilypond meckert im log: Programmierfehler: insane spring distance requested, ignoring it)
\partial 4 \once\override Rest #'stencil = ##f r4 \bar "" (führt zu einer größeren Verschiebung nach rechts aber lily meckert nicht.)
Gruß,
Harm
harm6:
Hallo zoink,
Nachtrag:
Ich hab' mich gestern schon über die score-Konstruktion gewundert.
--- Code: --- \new DrumVoice = "2" { ... }
\drummode {...}
--- Ende Code ---
Ich kenne mich mit drummode nicht so gut aus, aber hat dieses Konstrukt einen Sinn? Ich hätte
--- Code: --- \new DrumVoice = "2"
<<{ ...}\\
<<{\drummode {...}}>>
--- Ende Code ---
erwartet. Besser noch, wenn die einzeln Stimmen als Variable definiert sind und im score nur aufgerufen werden.
Gruß,
Harm
P.S. \book brauchst Du nur dann zu setzen, wenn Du mehrere books in ein file packen möchtest, denn lily "denkt" sich das sonst automatisch dazu.
EDIT
Code ist fehlerhaft, nicht verwenden
RobUr:
Hallo zoink, hallo alle,
das Problem ist, dass Lily die Neudefinition der drumStyleTable erst mit dem ersten vollen Notenwert berücksichtigt. Eine acciaccatura (wie auch alle anderen Vorschlag-/Vorhaltnoten) werden im Scoretiming von der Hauptnote abgezogen, haben also einen negativen Zeitwert. Selbst ein Auftakt mittels \partial hat einen positiven Wert; Vorschläge/Vorhalte hingegen nicht.
Der (umständliche) Trick ist nun, einen gültigen (vollwertigen) Spacer einzufügen, den ersten Takt um diesen (Zeit-)Wert zu verlängern und anschließend wieder zurückzusetzen:
--- Code: ---\set Score.measureLength = #(ly:make-moment 9 8) s8
\acciaccatura tomh8 tomh8 \times 2/3 { bdr16 bdl bdr } tomm8 bdr bdr sn toml16 bdr bdl bdr |
\unset Score.measureLength
--- Ende Code ---
Das komplette Beispiel sieht dann folgendermaßen aus:
--- Code: ---\version "2.12.3"
drumPitchNames =
#(append '(
(bassdrumr . bassdrumr)
(bassdruml . bassdruml)
(bdr . bassdrumr)
(bdl . bassdruml)
(tomm . lowmidtom)
(tomf . lowfloortom)
)
drumPitchNames
)
#(define mydrums '(
(crashcymbal cross #f +5)
(cowbell triangle #f +5)
(hihat cross #f +4)
(closedhihat cross "stopped" +4)
(halfopenhihat xcircle #f +4)
(openhihat cross "open" +4)
(ridecymbal cross #f +3)
(ridebell triangle #f +3)
(hightom default #f +2)
(lowmidtom default #f +1)
(sidestick cross #f 0)
(snaredrum default #f 0)
(lowtom default #f -1)
(lowfloortom default #f -2)
(pedalhihat cross #f -3)
(bassdrumr default #f -4)
(bassdruml default #f -5)
)
)
drumNotes = \drummode {
\tempo 4 = 120
\set countPercentRepeats = ##t
\set Score.measureLength = #(ly:make-moment 9 8) s8
\acciaccatura tomh8 tomh8 \times 2/3 { bdr16 bdl bdr } tomm8 bdr bdr sn toml16 bdr bdl bdr |
\unset Score.measureLength
\acciaccatura tomh8 tomh8 \times 2/3 { bdr16 bdl bdr } tomm8 bdr bdr sn toml16 bdr bdl bdr |
}
\book {
\bookpart {
\score {
\new DrumStaff \with {
\consists "Parenthesis_engraver"
}
<<
\set DrumStaff.drumStyleTable = #(alist->hash-table mydrums)
\drumNotes
>>
\layout {
indent = 0.0\cm
}
}
\header {
title = "Titel"
subtitle = " "
instrument = "Schlagzeug"
poet = "Autor"
composer = "Komponist"
meter = " "
tagline = ##f
}
}
}
--- Ende Code ---
Grüße, Robert
zoink:
Hallo Harm, Hallo Robert,
--- Zitat ---Ich hab' mich gestern schon über die score-Konstruktion gewundert
--- Ende Zitat ---
Nun, mangels weiterer Ahnung habe ich gemacht was funktioniert hat. Aber ich bin natürlich um jeden Tip zur Codeentrümpelung froh. Leider steige ich bei Deinem Vorschlag nicht durch, könntest Du ein ausführlicheres Beispiel angeben? Ich möchte aber die zwei Stimmen auf keinen Fall getrennt in Variablen schreiben, denn das führt beim Schreiben längerer Stücken zu einiger Verwirrung.
@Robert: Dein Code funktioniert, allerdings konnte ich nicht austüfteln, wie ich das mit zwei Stimmen und der
--- Code: ---\repeat percent { }
--- Ende Code ---
Umgebung in Einklang bringen kann. Könntest Du hierzu noch ein ausführlicheres Beispiel liefern?
Bitte entschuldigt mein Bretterverschlag vorm Kopf, ich bin schon froh, dass ich das überhaupt soweit mit Hängen und Würgen hin bekommen habe...
vielen Dank,
Markus
harm6:
Hallo zoink,
Robert hat vorgemacht was ich mir eigentlich vorgestellt habe!
Auch wenn Du schreibst:
--- Zitat ---Ich möchte aber die zwei Stimmen auf keinen Fall getrennt in Variablen schreiben, denn das führt beim Schreiben längerer Stücken zu einiger Verwirrung.
--- Ende Zitat ---
, so denke ich genau das Gegenteil. Die Konstruktion <<{...}\\{...}>> verwende ich eigentlich nur noch in Sonderfällen.
Ich habe mal Robert's Vorschlag einschließlich \repeat percent und Variablen umgesetzt.
--- Code: ---\version "2.12.3"
drumPitchNames =
#(append '(
(bassdrumr . bassdrumr)
(bassdruml . bassdruml)
(bdr . bassdrumr)
(bdl . bassdruml)
(tomm . lowmidtom)
(tomf . lowfloortom)
)
drumPitchNames
)
#(define mydrums '(
(crashcymbal cross #f +5)
(cowbell triangle #f +5)
(hihat cross #f +4)
(closedhihat cross "stopped" +4)
(halfopenhihat xcircle #f +4)
(openhihat cross "open" +4)
(ridecymbal cross #f +3)
(ridebell triangle #f +3)
(hightom default #f +2)
(lowmidtom default #f +1)
(sidestick cross #f 0)
(snaredrum default #f 0)
(lowtom default #f -1)
(lowfloortom default #f -2)
(pedalhihat cross #f -3)
(bassdrumr default #f -4)
(bassdruml default #f -5)
)
)
drumNotesOne = \drummode {
\tempo 4 = 120
% 1-4
\set Score.measureLength = #(ly:make-moment 9 8) s8
s1 |
\unset Score.measureLength
\repeat percent 3 { s1 |}
% 5-12
\repeat percent 8 {\repeat unfold 4 { hh4 }| }
}
drumNotesTwo = \drummode {
% 1-4
\set Score.measureLength = #(ly:make-moment 9 8) s8
\acciaccatura tomh8 tomh8 [\times 2/3 { bdr16 bdl bdr } tomm8 bdr] bdr sn toml16 [bdr bdl bdr] |
\unset Score.measureLength
\repeat percent 3 { \acciaccatura tomh8 tomh8 \times 2/3 { bdr16 bdl bdr } tomm8 bdr bdr sn toml16 bdr bdl bdr |}
% 5-12
\repeat percent 8 {\repeat unfold 4 { bdr8 sn } }
}
\book {
\bookpart {
\score {
\new DrumStaff \with {
\consists "Parenthesis_engraver"
}
<<
\set DrumStaff.drumStyleTable = #(alist->hash-table mydrums)
\set DrumStaff.countPercentRepeats = ##t
\new DrumVoice { \voiceOne \drumNotesOne }
\new DrumVoice { \voiceTwo \drumNotesTwo }
>>
\layout {
indent = 0.0\cm
}
}
\header {
title = "Titel"
subtitle = " "
instrument = "Schlagzeug"
poet = "Autor"
composer = "Komponist"
meter = " "
tagline = ##f
}
}
}
--- Ende Code ---
Die Zuordnung zu den Stimmen habe ich verändert und im \score mit \voiceOne, \voiceTwo gearbeitet um die Notenhälse von vornherein richtig auszurichten
@Robert
--- Zitat ---das Problem ist, dass Lily die Neudefinition der drumStyleTable erst mit dem ersten vollen Notenwert berücksichtigt.
--- Ende Zitat ---
Das wußte ich nicht! Insofern: wieder etwas gelernt!!
Aber hat Dein Vorschlag nicht auch ein paar Nachteile?
Man muß beim \set Score.measureLength = #(ly:make-moment 9 8) music \unset Score.measureLength-Konstrukt im ersten Takt von Hand verbalken und wenn man \repeat percent setzen will, diesen Takt nach \unset Score.measureLength nocheinmal angeben. Ich habe keinen Weg (mit akzeptablem Aufwand) gefunden stattdessen das repeat-percent-Zeichen auszugeben. In der zweiten Stimme mußte ich dasselbe Konstrukt dann erneut angeben.
Insofern frage ich, ob meine Idee mit \cadenzaOn s128 \cadenzaOff diese Voraussetzung nicht auch erfüllt? Wenn ich folgenden Code kompiliere wird das repeat percent -Zeichen auch im zweiten Takt ausgegeben.
--- Code: ---\version "2.12.3"
drumPitchNames =
#(append '(
(bassdrumr . bassdrumr)
(bassdruml . bassdruml)
(bdr . bassdrumr)
(bdl . bassdruml)
(tomm . lowmidtom)
(tomf . lowfloortom)
)
drumPitchNames
)
#(define mydrums '(
(crashcymbal cross #f +5)
(cowbell triangle #f +5)
(hihat cross #f +4)
(closedhihat cross "stopped" +4)
(halfopenhihat xcircle #f +4)
(openhihat cross "open" +4)
(ridecymbal cross #f +3)
(ridebell triangle #f +3)
(hightom default #f +2)
(lowmidtom default #f +1)
(sidestick cross #f 0)
(snaredrum default #f 0)
(lowtom default #f -1)
(lowfloortom default #f -2)
(pedalhihat cross #f -3)
(bassdrumr default #f -4)
(bassdruml default #f -5)
)
)
cad = {\cadenzaOn s128 \cadenzaOff }
drumNotesOne = \drummode {
\tempo 4 = 120
% 1-4
\cad
\repeat percent 4 { s1 |}
% 5-12
\repeat percent 8 {\repeat unfold 4 { hh4 }| }
}
drumNotesTwo = \drummode {
% 1-4
\cad
\repeat percent 4 { \acciaccatura tomh8 tomh8 \times 2/3 { bdr16 bdl bdr } tomm8 bdr bdr sn toml16 bdr bdl bdr |}
% 5-12
\repeat percent 8 {\repeat unfold 4 { bdr8 sn } }
}
\book {
\bookpart {
\score {
\new DrumStaff \with {
\consists "Parenthesis_engraver"
}
<<
\set DrumStaff.drumStyleTable = #(alist->hash-table mydrums)
\set DrumStaff.countPercentRepeats = ##t
\new DrumVoice { \voiceOne \drumNotesOne }
\new DrumVoice { \voiceTwo \drumNotesTwo }
>>
\layout {
indent = 0.0\cm
}
}
\header {
title = "Titel"
subtitle = " "
instrument = "Schlagzeug"
poet = "Autor"
composer = "Komponist"
meter = " "
tagline = ##f
}
}
}
--- Ende Code ---
Gruß,
Harm
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln