]> git.donarmstrong.com Git - lilypond.git/blob - input/lsr/score-for-diatonic-accordion.ly
Merge master into nested-bookparts
[lilypond.git] / input / lsr / score-for-diatonic-accordion.ly
1 %% Do not edit this file; it is auto-generated from LSR http://lsr.dsi.unimi.it
2 %% This file is in the public domain.
3 \version "2.11.62"
4
5 \header {
6   lsrtags = "template"
7
8   texidoc = "
9 A template to write a score for a diatonic accordion.
10
11 - There is a horizontal staff indicating if the accordion must be
12 pushed (thick line) or pulled (thin line)
13
14 - There is a small rhythmic staff with lyrics that describes the bass
15 buttons to press. The bar lines are made from gridlines
16
17 - The tabulator staff for diatonic accordions shows the geographic
18 position of the buttons and not (as for every other instrument) the
19 pitch of the notes; the keys on the melody-side of the accordion are
20 placed in three columns and about 12 rows
21
22
23 In the tabulator staff notation the outermost column is described with
24 notes between lines, the innermost column is described with notes
25 between lines and a cross as accidental, and the middle column is
26 described with notes on a line, whereby the row in the middle is
27 represented on the middle line in the staff.
28
29
30 Some words to transpose piano notes to the diatonic accordion:
31
32
33 1. Every diatonic accordion is built for some keys only (for example,
34 for the keys of C major and F major), so it is important to transpose a
35 piano melody to match one of these keys. Transpose the source code, not
36 only the output because this code is required later on to translate it
37 once more to the tabulator staff. This can be done with the command
38 @code{displayLilyMusic}.
39
40
41 2. You have to alternate the push- and pull-direction of the accordion
42 regularly. If the player has a too long part to pull the accordion gets
43 broken. On the other hand, some harmonies are only available in one
44 direction. Considering this, decide which parts of the melody are the
45 push-parts and which the pull-parts.
46
47
48 3. For each pull- or push-part translate the piano notes to the
49 according tabulature representation.
50
51
52 This snippet comes with a useful optional macro for the jEdit text
53 editor. 
54
55 "
56   doctitle = "Score for diatonic accordion"
57 } % begin verbatim
58
59 verse = \lyricmode { Wie gross bist du! Wie gross bist du! }
60
61 harmonies = \new ChordNames \chordmode {
62   \germanChords
63   \set chordChanges = ##t
64         bes8 bes8 bes8
65   es2 f
66   bes1
67 }
68
69 NoStem = \override Stem #'transparent = ##t
70 NoNoteHead = \override NoteHead #'transparent = ##t
71 ZeroBeam = \override Beam  #'positions = #'(0 . 0)
72
73 staffTabLine = \new Staff \with {
74   \remove "Time_signature_engraver"
75   \remove "Clef_engraver"
76 } {
77   \override Staff.StaffSymbol #'line-positions = #'(0)
78 % Shows one horizontal line. The vertical line (simulating a bar-line) is simulated with a gridline
79         \set Staff.midiInstrument = #"choir aahs"
80         \key c \major
81         \relative c''
82                 {  
83                         % disable the following line to see the the noteheads while writing the song 
84                         \NoNoteHead  
85                         \override NoteHead #'no-ledgers = ##t
86
87                         % The beam between 8th-notes is used to draw the push-line
88                         %How to fast write the push-lines: 
89                         %        1. write repeatedly 'c c c c c c c c |' for the whole length of the song 
90                         %        2. uncomment the line \NoNoteHead
91                         %        3. compile
92                         %        4. Mark the positions on which push/pull changes. 
93                         %           In the score-picture click on the position the push- or pull-part starts 
94                         %           (on the noteHead, the cursor will change to a hand-icon).
95                         %           The cursor in the source code will jump just at this position.
96                         %         a) If a push-part starts there, replace the 'c' by an 'e['
97                         %         b) If a pull-part starts there, replace the 'c' by an 's'
98                         %        5. Switch into 'overwrite-mode' by pressing the 'ins' key. 
99                         %        6. For the pull-parts overwrite the 'c' with 's' 
100                         %        7. For every push-part replace the last 'c' with 'e]' 
101                         %        8. Switch into 'insert-mode' again 
102                         %        9. At last it should look lik e.g. (s s e[ c | c c c c c c c c | c c c c c c e] s s)
103                         %       10. re-enable the line \NoNoteHead
104                         \autoBeamOff
105                         \ZeroBeam 
106                          s8 s s e[ c c c c c c e] | s s s s s 
107                 }
108 }
109
110 %{
111 %}
112
113 % Accordion melody in tabulator score           
114 % 1. Place a copy of the piano melody below
115 % 2. Separate piano melody into pull- and push-parts according to the staffTabLine you've already made      
116 % 3. For each line: Double the line. Remark the 1st one (Keeps unchanged as reference) and then change the second line using the transformation paper
117 %    or the macros 'conv2diaton push.bsh' and 'conv2diaton pull.bsh' 
118 % Tips:
119 % - In jEdit Search & Replace mark the Option 'Keep Dialog'
120
121 AccordionTabTwoCBesDur = {
122  % pull 1
123  %<f' bes'>8 <f' a'>8 <d' bes'>8 | 
124 <g'' a''>8 <g'' b''>8 <e'' a''>8 | 
125  % push 2
126  %<g' c''>4 <f' d''> <g' ees''> <f' a'> | 
127 <g'' a''>4 <d'' eisis''> <g'' bisis''> <d'' f''> | 
128  % pull 3
129 % <f' bes'>2 r8 }
130  <g'' a''>2 r8 }
131
132   AccordionTab= { \dynamicUp            
133 % 1. Place a copy of the piano melody above
134 % 2. Separate piano melody into pull- and push-parts according to the staffTabLine you've already made      
135 % 3. For each line: Double the line. Remark the 1st one (Keeps unchanged as reference) and then 
136 %    change the second line using the transformation paper
137 % Tips:
138 % - In jEdit Search & Replace mark the Option 'Keep Dialog'
139 % - 
140 \AccordionTabTwoCBesDur
141  }
142
143
144  
145  \layout {   
146  \context {
147    \Staff         
148    \consists "Grid_point_engraver"
149
150    gridInterval = #(ly:make-moment 4 4) % 4/4 - tact. How many beats per bar
151
152    % The following line has to be adjusted O-F-T-E-N.
153    \override GridPoint #'Y-extent = #'(-2 . -21)   
154  }
155  \context {
156     \ChoirStaff
157     \remove "System_start_delimiter_engraver" 
158  }
159 }
160
161 staffVoice = \new Staff=astaffvoice  {
162         \time 4/4
163         \set Staff.instrumentName="Voice"
164         \set Staff.midiInstrument="voice oohs"
165         \key bes \major
166         \partial 8*3 
167         \clef treble
168         {       
169                 \context Voice = "melodyVoi" 
170                 { <f' bes'>8 <f' a'>8 <d' bes'>8 | <g' c''>4 <f' d''> <g' es''> <f' a'> | <f' bes'>2 r8 }
171         \bar "|."
172         }
173 }
174
175 staffAccordionMel = \new Staff  \with { \remove "Clef_engraver" } {
176         #(set-accidental-style 'forget) %Set the accidentals (Vorzeichen) for each note, 
177                                         %do not remember them for the rest of the measure.  
178         \time 4/4
179         \set Staff.instrumentName="Accordion"
180         \set Staff.midiInstrument="voice oohs"
181         \key c \major
182         \clef treble
183         { \AccordionTab \bar "|." }
184 }
185
186         AltOn = #(define-music-function (parser location mag) (number?)
187                 #{ \override Stem #'length = #$(* 7.0 mag)
188                 \override NoteHead #'font-size =
189                 #$(inexact->exact (* (/ 6.0 (log 2.0)) (log mag))) #})
190      
191         AltOff = {
192                 \revert Stem #'length
193                 \revert NoteHead #'font-size
194                 }
195
196 BassRhytm = {s4 s8 | c2 c2 | c2 s8 }
197 LyricBassRhythmI=  \lyricmode { c b | c }
198
199 staffBassRhytm = \new Staff=staffbass  \with { \remove "Clef_engraver" } {
200         % This is not a RhythmicStaff  because it must be possible to append lyrics.
201                 
202         \override Score.GridLine #'extra-offset = #'( 13.0 . 0.0 ) % x.y
203         \override Staff.StaffSymbol #'line-positions = #'( 0 ) 
204         % Shows one horizontal line. The vertical line (simulating a bar-line) is simulated by a grid
205         % Search for 'grid' in this page to find all related functions 
206         \time 4/4
207         {       
208                 \context Voice = "VoiceBassRhytm" 
209                 \stemDown \AltOn #0.6
210                 \relative c''
211                 {   
212                 \BassRhytm
213                 }
214                 \AltOff
215         \bar "|."
216         }
217 }
218
219 \new Score 
220 \with {
221  \consists "Grid_line_span_engraver" %The vertical line (simulating a bar-line) in the staffBassRhytm is a gridline 
222 }
223 \new ChoirStaff 
224         <<
225                 \harmonies 
226                 \staffVoice
227                 \context Lyrics = "lmelodyVoi" \with {alignBelowContext=astaffvoice} { \lyricsto "melodyVoi" \verse }
228                 \staffAccordionMel
229                 \staffTabLine
230                 \staffBassRhytm
231         \context Lyrics = "lBassRhytmAboveI" \with {alignAboveContext=staffbass} \lyricsto VoiceBassRhytm \LyricBassRhythmI
232         >>
233 %}