Hallo Sven,
willkommen im Forum.
Zunächst mal grundsätzliches vorab:
- Wir haben hier im Forum eine Abteilung für Schlagzeugnotation. Dort wäre Deine Frage besser aufgehoben.
- Bitte poste immer ein kurzes kompilierbares Beispiel mit Angabe der Versions-Nummer.
Ich zumindest werde schnell
ungehalten, wenn ich den Code, den Du verbessert haben willst auch noch selber schreiben muß.
Darüber hinaus ist Code eindeutig zu verstehen, verbale Beschreibung sind häufig mehrdeutig (und ich hasse es zu raten)
Die Versions-Nummer ist wichtig, damit ich weiß welchen Code ich schreiben muß. Mein Beispiel unten ist 2.16.0, mit 2.14.2 kompiliert es nicht.
Ähnliches ist natürlich auch in 2.14.2 möglich, man muß nur etwas anders formulieren.
Zu Deiner Frage.
Mir scheint je nach drumvoice wird die Pause entweder
der Hihat, oder der Basedrum zugeordnet (vertikale
Pausenposition).
Davon ausgehend, daß Du einen Code mit mehreren \Voice in einem \Staff meinst, so ist das nicht ganz richtig.
In mehrstimmigen Sätzen werden den Pausen verschiedener Stimmen verschiedene Positionen im Notensystem zugeordnet.
Die einzelnen Percussion-Instrumente bekommen auch eine bestimmte Position zugewiesen.
Manchmal ist das dann eben dieselbe Position.
(das Setzen der Pause in einer bestimmten Tonhöhe scheint im
Drummode nicht zu funktionieren)
Richtig. Der \drummode gibt keine Tonhöhe aus. (Für das midi sind aber tatsächlich unterschiedliche Klänge definiert)
Ich möchte aber der Snaredrum eine Pause verpassen.
Wie mache ich das, bzw. wie kann ich das gezielt beeinflussen?
Du kannst die Pausen aber schon auf bestimmte Positionen im Notensystem setzen wenn Du
[\once] \override DrumVoice.Rest #'staff-position = ...
benutzt.
Im folgenden Code habe ich verschiedene Möglichkeiten der Anwendung dargestellt.
- direkt bzw als vordefinierte Variable
- als variable Musik-Funktion
- als Musikfunktion innerhalb eines \with { ... } -Blocks. (für Voice-weite Anwendung)
Anmerkung: Um eindeutig zu sein habe ich immer \DrumVoice benutzt, tatsächlich wäre auch einfach \Voice schon hinreichend gewesen.
\version "2.16.0"
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 'staff-position: direkt and stored in a variable
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
restPos =
\once \override DrumVoice.Rest #'staff-position = #-8
up = \drummode {
crashcymbal4 hihat8 halfopenhihat
\once \override DrumVoice.Rest #'staff-position = #8
r hh hh openhihat
}
down = \drummode {
bassdrum4 snare8 bd
\restPos
r bd sn4
}
\new DrumStaff <<
\new DrumVoice { \voiceOne \up }
\new DrumVoice { \voiceTwo \down }
>>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 'staff-position: music-function
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
varRestPos =
#(define-music-function (parser location staff-pos)(number?)
#{
\override DrumVoice.Rest #'staff-position = $staff-pos
#})
up¹ = \drummode {
crashcymbal4 hihat8 halfopenhihat
\once \varRestPos #6
r hh hh openhihat
r
}
down¹ = \drummode {
bassdrum4 snare8 bd
\once \varRestPos #-5
r bd sn4
r
}
\new DrumStaff <<
\new DrumVoice { \voiceOne \up¹ }
\new DrumVoice { \voiceTwo \down¹ }
>>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 'staff-position: in \with { ... } using \varRestPos ...
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
withVarRestPosV =
\with { \varRestPos #5 }
withVarRestPosMinusV =
\with { \varRestPos #-5 }
up² = \drummode {
crashcymbal4 hihat8 halfopenhihat r hh hh openhihat
r
}
down² = \drummode {
bassdrum4 snare8 bd r bd sn4
r
}
\new DrumStaff <<
\new DrumVoice \withVarRestPosV { \voiceOne \up² }
\new DrumVoice \withVarRestPosMinusV { \voiceTwo \down² }
>>
Das Ganze funktioniert allerdings nicht für MultiMeasureRest: { R1 }
Willst Du das auch?
Dann füge überall zusätzlich
\override DrumVoice.MultiMeasureRest #'staff-position = ...
ein
HTH,
Harm