line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package MIDI::Simple::Drummer::Rudiments; |
2
|
|
|
|
|
|
|
$MIDI::Simple::Drummer::Rudiments::VERSION = '0.0813'; |
3
|
|
|
|
|
|
|
our $AUTHORITY = 'cpan:GENE'; |
4
|
1
|
|
|
1
|
|
950
|
use strict; |
|
1
|
|
|
|
|
3
|
|
|
1
|
|
|
|
|
32
|
|
5
|
1
|
|
|
1
|
|
5
|
use warnings; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
33
|
|
6
|
1
|
|
|
1
|
|
431
|
use parent 'MIDI::Simple::Drummer'; |
|
1
|
|
|
|
|
293
|
|
|
1
|
|
|
|
|
6
|
|
7
|
|
|
|
|
|
|
|
8
|
1
|
|
|
1
|
|
53
|
use constant PAN_LEFT => 0; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
56
|
|
9
|
1
|
|
|
1
|
|
6
|
use constant PAN_CENTER => 64; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
46
|
|
10
|
1
|
|
|
1
|
|
5
|
use constant PAN_RIGHT => 1; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
4794
|
|
11
|
|
|
|
|
|
|
|
12
|
|
|
|
|
|
|
|
13
|
|
|
|
|
|
|
sub new { |
14
|
1
|
|
|
1
|
1
|
623
|
my $self = shift; |
15
|
1
|
|
|
|
|
10
|
$self->SUPER::new( |
16
|
|
|
|
|
|
|
-pan_width => 32, # [ 0 .. 64 ] # From center |
17
|
|
|
|
|
|
|
-chorus => 0, |
18
|
|
|
|
|
|
|
-reverb => 1, |
19
|
|
|
|
|
|
|
@_, |
20
|
|
|
|
|
|
|
); |
21
|
|
|
|
|
|
|
} |
22
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
sub _default_patterns { |
24
|
1
|
|
|
1
|
|
3
|
my $self = shift; |
25
|
|
|
|
|
|
|
return { |
26
|
1
|
|
|
|
|
37
|
1 => \&single_stroke_roll, |
27
|
|
|
|
|
|
|
2 => \&single_stroke_four, |
28
|
|
|
|
|
|
|
3 => \&single_stroke_seven, |
29
|
|
|
|
|
|
|
4 => \&multiple_bounce_roll, |
30
|
|
|
|
|
|
|
5 => \&triple_stroke_roll, |
31
|
|
|
|
|
|
|
6 => \&double_stroke_open_roll, |
32
|
|
|
|
|
|
|
7 => \&five_stroke_roll, |
33
|
|
|
|
|
|
|
8 => \&six_stroke_roll, |
34
|
|
|
|
|
|
|
9 => \&seven_stroke_roll, |
35
|
|
|
|
|
|
|
10 => \&nine_stroke_roll, |
36
|
|
|
|
|
|
|
11 => \&ten_stroke_roll, |
37
|
|
|
|
|
|
|
12 => \&eleven_stroke_roll, |
38
|
|
|
|
|
|
|
13 => \&thirteen_stroke_roll, |
39
|
|
|
|
|
|
|
14 => \&fifteen_stroke_roll, |
40
|
|
|
|
|
|
|
15 => \&seventeen_stroke_roll, |
41
|
|
|
|
|
|
|
16 => \&single_paradiddle, |
42
|
|
|
|
|
|
|
17 => \&double_paradiddle, |
43
|
|
|
|
|
|
|
18 => \&triple_paradiddle, |
44
|
|
|
|
|
|
|
19 => \¶diddle_diddle, |
45
|
|
|
|
|
|
|
20 => \&flam, |
46
|
|
|
|
|
|
|
21 => \&flam_accent, |
47
|
|
|
|
|
|
|
22 => \&flam_tap, |
48
|
|
|
|
|
|
|
23 => \&flamacue, |
49
|
|
|
|
|
|
|
24 => \&flam_paradiddle, |
50
|
|
|
|
|
|
|
25 => \&flammed_mill, |
51
|
|
|
|
|
|
|
26 => \&flam_paradiddle_diddle, |
52
|
|
|
|
|
|
|
27 => \&pataflafla, |
53
|
|
|
|
|
|
|
28 => \&swiss_army_triplet, |
54
|
|
|
|
|
|
|
29 => \&inverted_flam_tap, |
55
|
|
|
|
|
|
|
30 => \&flam_drag, |
56
|
|
|
|
|
|
|
31 => \&drag, |
57
|
|
|
|
|
|
|
32 => \&single_drag_tap, |
58
|
|
|
|
|
|
|
33 => \&double_drag_tap, |
59
|
|
|
|
|
|
|
34 => \&lesson_25_two_and_three, |
60
|
|
|
|
|
|
|
35 => \&single_dragadiddle, |
61
|
|
|
|
|
|
|
36 => \&drag_paradiddle_1, |
62
|
|
|
|
|
|
|
37 => \&drag_paradiddle_2, |
63
|
|
|
|
|
|
|
38 => \&single_ratamacue, |
64
|
|
|
|
|
|
|
39 => \&double_ratamacue, |
65
|
|
|
|
|
|
|
40 => \&triple_ratamacue, |
66
|
|
|
|
|
|
|
}; |
67
|
|
|
|
|
|
|
}; |
68
|
|
|
|
|
|
|
|
69
|
|
|
|
|
|
|
|
70
|
|
|
|
|
|
|
sub single_stroke_roll { # 1 |
71
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
72
|
0
|
|
|
|
|
0
|
my %args = ( |
73
|
|
|
|
|
|
|
critical => [PAN_RIGHT .. 8], |
74
|
|
|
|
|
|
|
@_ |
75
|
|
|
|
|
|
|
); |
76
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
77
|
|
|
|
|
|
|
} |
78
|
|
|
|
|
|
|
|
79
|
|
|
|
|
|
|
|
80
|
|
|
|
|
|
|
sub single_stroke_four { # 2 |
81
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
82
|
0
|
|
|
|
|
0
|
my %args = ( |
83
|
|
|
|
|
|
|
critical => [4, 8], |
84
|
|
|
|
|
|
|
alternate_pan => 2, |
85
|
|
|
|
|
|
|
accent => $self->EIGHTH, |
86
|
|
|
|
|
|
|
note => $self->TRIPLET_SIXTEENTH, |
87
|
|
|
|
|
|
|
); |
88
|
0
|
|
|
|
|
0
|
$self->single_stroke_n(%args); |
89
|
|
|
|
|
|
|
} |
90
|
|
|
|
|
|
|
|
91
|
|
|
|
|
|
|
|
92
|
|
|
|
|
|
|
sub single_stroke_seven { # 3 |
93
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
94
|
0
|
|
|
|
|
0
|
my %args = ( |
95
|
|
|
|
|
|
|
critical => [7], |
96
|
|
|
|
|
|
|
@_ |
97
|
|
|
|
|
|
|
); |
98
|
0
|
|
|
|
|
0
|
$self->single_stroke_n(%args); |
99
|
|
|
|
|
|
|
} |
100
|
|
|
|
|
|
|
|
101
|
|
|
|
|
|
|
|
102
|
|
|
|
|
|
|
sub multiple_bounce_roll { # 4 TODO |
103
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
104
|
|
|
|
|
|
|
# TODO Set $multiple and then do a figure below. |
105
|
|
|
|
|
|
|
} |
106
|
|
|
|
|
|
|
|
107
|
|
|
|
|
|
|
|
108
|
|
|
|
|
|
|
sub triple_stroke_roll { # 5 |
109
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
110
|
0
|
|
|
|
|
0
|
my %args = ( |
111
|
|
|
|
|
|
|
critical => [1 .. 12], |
112
|
|
|
|
|
|
|
groups_of => 3, |
113
|
|
|
|
|
|
|
note => $self->TRIPLET_SIXTEENTH, |
114
|
|
|
|
|
|
|
@_ |
115
|
|
|
|
|
|
|
); |
116
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
117
|
|
|
|
|
|
|
} |
118
|
|
|
|
|
|
|
|
119
|
|
|
|
|
|
|
|
120
|
|
|
|
|
|
|
sub double_stroke_open_roll { # 6 |
121
|
1
|
|
|
1
|
1
|
2
|
my $self = shift; |
122
|
1
|
|
|
|
|
5
|
my %args = ( |
123
|
|
|
|
|
|
|
critical => [1 .. 8], |
124
|
|
|
|
|
|
|
groups_of => 2, |
125
|
|
|
|
|
|
|
@_ |
126
|
|
|
|
|
|
|
); |
127
|
1
|
|
|
|
|
5
|
$self->alternate_note(%args); |
128
|
|
|
|
|
|
|
} |
129
|
|
|
|
|
|
|
|
130
|
|
|
|
|
|
|
|
131
|
|
|
|
|
|
|
sub five_stroke_roll { # 7 |
132
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
133
|
0
|
|
|
|
|
0
|
my %args = ( |
134
|
|
|
|
|
|
|
critical => [0 .. 3], |
135
|
|
|
|
|
|
|
groups_of => 2, |
136
|
|
|
|
|
|
|
accent => $self->EIGHTH, |
137
|
|
|
|
|
|
|
@_ |
138
|
|
|
|
|
|
|
); |
139
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
140
|
0
|
|
|
|
|
0
|
$self->pan_left; |
141
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
142
|
|
|
|
|
|
|
|
143
|
0
|
|
|
|
|
0
|
$args{critical} = [1 .. 4]; |
144
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
145
|
0
|
|
|
|
|
0
|
$self->pan_right; |
146
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
147
|
|
|
|
|
|
|
} |
148
|
|
|
|
|
|
|
|
149
|
|
|
|
|
|
|
|
150
|
|
|
|
|
|
|
sub six_stroke_roll { #8 |
151
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
152
|
0
|
|
|
|
|
0
|
my %args = ( |
153
|
|
|
|
|
|
|
critical => [0 .. 3], |
154
|
|
|
|
|
|
|
groups_of => 2, |
155
|
|
|
|
|
|
|
accent => $self->EIGHTH, |
156
|
|
|
|
|
|
|
@_ |
157
|
|
|
|
|
|
|
); |
158
|
0
|
|
|
|
|
0
|
$self->pan_left; |
159
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
160
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
161
|
0
|
|
|
|
|
0
|
$self->pan_right; |
162
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
163
|
|
|
|
|
|
|
|
164
|
0
|
|
|
|
|
0
|
$args{critical} = [1 .. 4]; |
165
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
166
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
167
|
0
|
|
|
|
|
0
|
$self->pan_left; |
168
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
169
|
|
|
|
|
|
|
} |
170
|
|
|
|
|
|
|
|
171
|
|
|
|
|
|
|
|
172
|
|
|
|
|
|
|
sub seven_stroke_roll { # 9 |
173
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
174
|
0
|
|
|
|
|
0
|
my %args = ( |
175
|
|
|
|
|
|
|
critical => [0 .. 5], |
176
|
|
|
|
|
|
|
groups_of => 2, |
177
|
|
|
|
|
|
|
accent => $self->EIGHTH, |
178
|
|
|
|
|
|
|
note => $self->TRIPLET_SIXTEENTH, |
179
|
|
|
|
|
|
|
@_ |
180
|
|
|
|
|
|
|
); |
181
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
182
|
0
|
|
|
|
|
0
|
$self->pan_right; |
183
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
184
|
|
|
|
|
|
|
|
185
|
0
|
|
|
|
|
0
|
$args{critical} = [1 .. 6]; |
186
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
187
|
0
|
|
|
|
|
0
|
$self->pan_left; |
188
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
189
|
|
|
|
|
|
|
} |
190
|
|
|
|
|
|
|
|
191
|
|
|
|
|
|
|
|
192
|
|
|
|
|
|
|
sub nine_stroke_roll { # 10 |
193
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
194
|
0
|
|
|
|
|
0
|
my %args = ( |
195
|
|
|
|
|
|
|
critical => [0 .. 7], |
196
|
|
|
|
|
|
|
groups_of => 2, |
197
|
|
|
|
|
|
|
accent => $self->EIGHTH, |
198
|
|
|
|
|
|
|
@_ |
199
|
|
|
|
|
|
|
); |
200
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
201
|
0
|
|
|
|
|
0
|
$self->pan_right; |
202
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
203
|
|
|
|
|
|
|
|
204
|
0
|
|
|
|
|
0
|
$args{critical} = [1 .. 8]; |
205
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
206
|
0
|
|
|
|
|
0
|
$self->pan_left; |
207
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
208
|
|
|
|
|
|
|
} |
209
|
|
|
|
|
|
|
|
210
|
|
|
|
|
|
|
|
211
|
|
|
|
|
|
|
sub ten_stroke_roll { # 11 |
212
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
213
|
0
|
|
|
|
|
0
|
my %args = ( |
214
|
|
|
|
|
|
|
critical => [0 .. 7], |
215
|
|
|
|
|
|
|
groups_of => 2, |
216
|
|
|
|
|
|
|
accent => $self->EIGHTH, |
217
|
|
|
|
|
|
|
@_ |
218
|
|
|
|
|
|
|
); |
219
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
220
|
0
|
|
|
|
|
0
|
$self->pan_right; |
221
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
222
|
0
|
|
|
|
|
0
|
$self->pan_left; |
223
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
224
|
|
|
|
|
|
|
|
225
|
0
|
|
|
|
|
0
|
$args{critical} = [1 .. 8]; |
226
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
227
|
0
|
|
|
|
|
0
|
$self->pan_left; |
228
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
229
|
0
|
|
|
|
|
0
|
$self->pan_right; |
230
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
231
|
|
|
|
|
|
|
} |
232
|
|
|
|
|
|
|
|
233
|
|
|
|
|
|
|
|
234
|
|
|
|
|
|
|
sub eleven_stroke_roll { # 12 |
235
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
236
|
0
|
|
|
|
|
0
|
my %args = ( |
237
|
|
|
|
|
|
|
critical => [0 .. 9], |
238
|
|
|
|
|
|
|
groups_of => 2, |
239
|
|
|
|
|
|
|
accent => $self->EIGHTH, |
240
|
|
|
|
|
|
|
@_ |
241
|
|
|
|
|
|
|
); |
242
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
243
|
0
|
|
|
|
|
0
|
$self->pan_right; |
244
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
245
|
|
|
|
|
|
|
|
246
|
0
|
|
|
|
|
0
|
$args{critical} = [1 .. 10]; |
247
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
248
|
0
|
|
|
|
|
0
|
$self->pan_left; |
249
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
250
|
|
|
|
|
|
|
} |
251
|
|
|
|
|
|
|
|
252
|
|
|
|
|
|
|
|
253
|
|
|
|
|
|
|
sub thirteen_stroke_roll { # 13 |
254
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
255
|
0
|
|
|
|
|
0
|
my %args = ( |
256
|
|
|
|
|
|
|
critical => [0 .. 11], |
257
|
|
|
|
|
|
|
groups_of => 2, |
258
|
|
|
|
|
|
|
accent => $self->EIGHTH, |
259
|
|
|
|
|
|
|
note => $self->TRIPLET_SIXTEENTH, |
260
|
|
|
|
|
|
|
@_ |
261
|
|
|
|
|
|
|
); |
262
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
263
|
0
|
|
|
|
|
0
|
$self->pan_right; |
264
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
265
|
|
|
|
|
|
|
|
266
|
0
|
|
|
|
|
0
|
$args{critical} = [1 .. 12]; |
267
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
268
|
0
|
|
|
|
|
0
|
$self->pan_left; |
269
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
270
|
|
|
|
|
|
|
} |
271
|
|
|
|
|
|
|
|
272
|
|
|
|
|
|
|
|
273
|
|
|
|
|
|
|
sub fifteen_stroke_roll { # 14 |
274
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
275
|
0
|
|
|
|
|
0
|
my %args = ( |
276
|
|
|
|
|
|
|
critical => [0 .. 13], |
277
|
|
|
|
|
|
|
groups_of => 2, |
278
|
|
|
|
|
|
|
accent => $self->EIGHTH, |
279
|
|
|
|
|
|
|
@_ |
280
|
|
|
|
|
|
|
); |
281
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
282
|
0
|
|
|
|
|
0
|
$self->pan_right; |
283
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
284
|
|
|
|
|
|
|
|
285
|
0
|
|
|
|
|
0
|
$args{critical} = [1 .. 14]; |
286
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
287
|
0
|
|
|
|
|
0
|
$self->pan_left; |
288
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
289
|
|
|
|
|
|
|
} |
290
|
|
|
|
|
|
|
|
291
|
|
|
|
|
|
|
|
292
|
|
|
|
|
|
|
sub seventeen_stroke_roll { # 15 |
293
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
294
|
0
|
|
|
|
|
0
|
my %args = ( |
295
|
|
|
|
|
|
|
critical => [0 .. 15], |
296
|
|
|
|
|
|
|
groups_of => 2, |
297
|
|
|
|
|
|
|
accent => $self->EIGHTH, |
298
|
|
|
|
|
|
|
@_ |
299
|
|
|
|
|
|
|
); |
300
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
301
|
0
|
|
|
|
|
0
|
$self->pan_right; |
302
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
303
|
|
|
|
|
|
|
|
304
|
0
|
|
|
|
|
0
|
$args{critical} = [1 .. 16]; |
305
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
306
|
0
|
|
|
|
|
0
|
$self->pan_left; |
307
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
308
|
|
|
|
|
|
|
} |
309
|
|
|
|
|
|
|
|
310
|
|
|
|
|
|
|
|
311
|
|
|
|
|
|
|
sub single_paradiddle { # 16 |
312
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
313
|
0
|
|
|
|
|
0
|
my %args = ( |
314
|
|
|
|
|
|
|
critical => [0 .. 1], |
315
|
|
|
|
|
|
|
@_ |
316
|
|
|
|
|
|
|
); |
317
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
318
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args, groups_of => 2); |
319
|
|
|
|
|
|
|
|
320
|
0
|
|
|
|
|
0
|
$args{critical} = [1 .. 2]; |
321
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
322
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args, groups_of => 2); |
323
|
|
|
|
|
|
|
} |
324
|
|
|
|
|
|
|
|
325
|
|
|
|
|
|
|
|
326
|
|
|
|
|
|
|
sub double_paradiddle { # 17 |
327
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
328
|
0
|
|
|
|
|
0
|
my %args = ( |
329
|
|
|
|
|
|
|
critical => [0 .. 3], |
330
|
|
|
|
|
|
|
@_ |
331
|
|
|
|
|
|
|
); |
332
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
333
|
0
|
|
|
|
|
0
|
$args{critical} = [0 .. 1]; |
334
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args, groups_of => 2); |
335
|
|
|
|
|
|
|
|
336
|
0
|
|
|
|
|
0
|
$args{critical} = [1 .. 4]; |
337
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
338
|
0
|
|
|
|
|
0
|
$args{critical} = [1 .. 2]; |
339
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args, groups_of => 2); |
340
|
|
|
|
|
|
|
} |
341
|
|
|
|
|
|
|
|
342
|
|
|
|
|
|
|
|
343
|
|
|
|
|
|
|
sub triple_paradiddle { # 18 |
344
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
345
|
0
|
|
|
|
|
0
|
my %args = ( |
346
|
|
|
|
|
|
|
critical => [0 .. 5], |
347
|
|
|
|
|
|
|
@_ |
348
|
|
|
|
|
|
|
); |
349
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
350
|
0
|
|
|
|
|
0
|
$args{critical} = [0 .. 1]; |
351
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args, groups_of => 2); |
352
|
|
|
|
|
|
|
|
353
|
0
|
|
|
|
|
0
|
$args{critical} = [1 .. 6]; |
354
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
355
|
0
|
|
|
|
|
0
|
$args{critical} = [1 .. 2]; |
356
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args, groups_of => 2); |
357
|
|
|
|
|
|
|
} |
358
|
|
|
|
|
|
|
|
359
|
|
|
|
|
|
|
|
360
|
|
|
|
|
|
|
sub paradiddle_diddle { # 19 |
361
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
362
|
0
|
|
|
|
|
0
|
my %args = ( |
363
|
|
|
|
|
|
|
critical => [0 .. 1], |
364
|
|
|
|
|
|
|
@_ |
365
|
|
|
|
|
|
|
); |
366
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
367
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args, groups_of => 2); |
368
|
|
|
|
|
|
|
|
369
|
0
|
|
|
|
|
0
|
$args{critical} = [1 .. 2]; |
370
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
371
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args, groups_of => 2); |
372
|
|
|
|
|
|
|
} |
373
|
|
|
|
|
|
|
|
374
|
|
|
|
|
|
|
|
375
|
|
|
|
|
|
|
sub flam { # 20 |
376
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
377
|
0
|
|
|
|
|
0
|
my %args = ( |
378
|
|
|
|
|
|
|
note => $self->EIGHTH, |
379
|
|
|
|
|
|
|
@_ |
380
|
|
|
|
|
|
|
); |
381
|
0
|
|
|
|
|
0
|
$self->_flambit(PAN_RIGHT, $args{note}, 1); |
382
|
0
|
|
|
|
|
0
|
$self->_flambit(PAN_LEFT, $args{note}, 1); |
383
|
|
|
|
|
|
|
} |
384
|
|
|
|
|
|
|
|
385
|
|
|
|
|
|
|
|
386
|
|
|
|
|
|
|
sub flam_accent { # 21 |
387
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
388
|
0
|
|
|
|
|
0
|
my %args = ( |
389
|
|
|
|
|
|
|
critical => [0 .. 1], |
390
|
|
|
|
|
|
|
note => $self->EIGHTH, |
391
|
|
|
|
|
|
|
@_ |
392
|
|
|
|
|
|
|
); |
393
|
0
|
|
|
|
|
0
|
$self->_flambit(PAN_RIGHT, $args{note}, 1); |
394
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
395
|
|
|
|
|
|
|
|
396
|
0
|
|
|
|
|
0
|
$self->_flambit(PAN_LEFT, $args{note}, 1); |
397
|
0
|
|
|
|
|
0
|
$args{critical} = [1 .. 2]; |
398
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
399
|
|
|
|
|
|
|
} |
400
|
|
|
|
|
|
|
|
401
|
|
|
|
|
|
|
|
402
|
|
|
|
|
|
|
sub flam_tap { # 22 |
403
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
404
|
0
|
|
|
|
|
0
|
my %args = ( |
405
|
|
|
|
|
|
|
note => $self->SIXTEENTH, |
406
|
|
|
|
|
|
|
@_ |
407
|
|
|
|
|
|
|
); |
408
|
0
|
|
|
|
|
0
|
$self->_flambit(PAN_RIGHT, $args{note}, 1); |
409
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
410
|
|
|
|
|
|
|
|
411
|
0
|
|
|
|
|
0
|
$self->_flambit(PAN_LEFT, $args{note}, 1); |
412
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
413
|
|
|
|
|
|
|
} |
414
|
|
|
|
|
|
|
|
415
|
|
|
|
|
|
|
|
416
|
|
|
|
|
|
|
sub flamacue { # 23 |
417
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
418
|
0
|
|
|
|
|
0
|
my %args = ( |
419
|
|
|
|
|
|
|
note => $self->SIXTEENTH, |
420
|
|
|
|
|
|
|
@_ |
421
|
|
|
|
|
|
|
); |
422
|
0
|
|
|
|
|
0
|
$self->_flambit(PAN_RIGHT, $args{note}, 0); |
423
|
0
|
|
|
|
|
0
|
$self->pan_left; |
424
|
0
|
|
|
|
|
0
|
$self->accent_note($args{note}); |
425
|
0
|
|
|
|
|
0
|
$self->alternate_note(critical => [0 .. 1], note => $self->EIGHTH); |
426
|
0
|
|
|
|
|
0
|
$self->_flambit(PAN_RIGHT, $args{note}, 0); |
427
|
|
|
|
|
|
|
|
428
|
0
|
|
|
|
|
0
|
$self->_flambit(PAN_LEFT, $args{note}, 0); |
429
|
0
|
|
|
|
|
0
|
$self->pan_right; |
430
|
0
|
|
|
|
|
0
|
$self->accent_note($args{note}); |
431
|
0
|
|
|
|
|
0
|
$self->alternate_note(critical => [1 .. 2], note => $self->EIGHTH); |
432
|
0
|
|
|
|
|
0
|
$self->_flambit(PAN_LEFT, $args{note}, 0); |
433
|
|
|
|
|
|
|
} |
434
|
|
|
|
|
|
|
|
435
|
|
|
|
|
|
|
|
436
|
|
|
|
|
|
|
sub flam_paradiddle { # 24 |
437
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
438
|
0
|
|
|
|
|
0
|
my %args = ( |
439
|
|
|
|
|
|
|
note => $self->SIXTEENTH, |
440
|
|
|
|
|
|
|
@_ |
441
|
|
|
|
|
|
|
); |
442
|
0
|
|
|
|
|
0
|
$self->_flambit(PAN_RIGHT, $args{note}, 1); |
443
|
0
|
|
|
|
|
0
|
$self->pan_left; |
444
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
445
|
0
|
|
|
|
|
0
|
$self->pan_right; |
446
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
447
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
448
|
|
|
|
|
|
|
|
449
|
0
|
|
|
|
|
0
|
$self->_flambit(PAN_LEFT, $args{note}, 1); |
450
|
0
|
|
|
|
|
0
|
$self->pan_right; |
451
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
452
|
0
|
|
|
|
|
0
|
$self->pan_left; |
453
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
454
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
455
|
|
|
|
|
|
|
} |
456
|
|
|
|
|
|
|
|
457
|
|
|
|
|
|
|
|
458
|
|
|
|
|
|
|
sub flammed_mill { # 25 |
459
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
460
|
0
|
|
|
|
|
0
|
my %args = ( |
461
|
|
|
|
|
|
|
note => $self->SIXTEENTH, |
462
|
|
|
|
|
|
|
@_ |
463
|
|
|
|
|
|
|
); |
464
|
0
|
|
|
|
|
0
|
$self->_flambit(PAN_RIGHT, $args{note}, 1); |
465
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args, critical => [1 .. 3]); |
466
|
|
|
|
|
|
|
|
467
|
0
|
|
|
|
|
0
|
$self->_flambit(PAN_LEFT, $args{note}, 1); |
468
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args, critical => [0 .. 2]); |
469
|
|
|
|
|
|
|
|
470
|
|
|
|
|
|
|
} |
471
|
|
|
|
|
|
|
|
472
|
|
|
|
|
|
|
|
473
|
|
|
|
|
|
|
sub flam_paradiddle_diddle { # 26 |
474
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
475
|
0
|
|
|
|
|
0
|
my %args = ( |
476
|
|
|
|
|
|
|
critical => [0 .. 3], |
477
|
|
|
|
|
|
|
note => $self->SIXTEENTH, |
478
|
|
|
|
|
|
|
@_ |
479
|
|
|
|
|
|
|
); |
480
|
0
|
|
|
|
|
0
|
$self->_flambit(PAN_RIGHT, $args{note}, 1); |
481
|
0
|
|
|
|
|
0
|
$self->pan_left; |
482
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
483
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args, groups_of => 2); |
484
|
|
|
|
|
|
|
|
485
|
0
|
|
|
|
|
0
|
$self->_flambit(PAN_LEFT, $args{note}, 1); |
486
|
0
|
|
|
|
|
0
|
$self->pan_right; |
487
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
488
|
0
|
|
|
|
|
0
|
$args{critical} = [1 .. 4]; |
489
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args, groups_of => 2); |
490
|
|
|
|
|
|
|
} |
491
|
|
|
|
|
|
|
|
492
|
|
|
|
|
|
|
|
493
|
|
|
|
|
|
|
sub pataflafla { # 27 |
494
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
495
|
0
|
|
|
|
|
0
|
my %args = ( |
496
|
|
|
|
|
|
|
critical => [0 .. 1], |
497
|
|
|
|
|
|
|
note => $self->SIXTEENTH, |
498
|
|
|
|
|
|
|
@_ |
499
|
|
|
|
|
|
|
); |
500
|
0
|
|
|
|
|
0
|
for (@{$args{critical}}) { |
|
0
|
|
|
|
|
0
|
|
501
|
|
|
|
|
|
|
# Flam tap tap Flam! |
502
|
0
|
|
|
|
|
0
|
$self->_flambit(PAN_RIGHT, $args{note}, 1); |
503
|
0
|
|
|
|
|
0
|
$self->alternate_note(%args); |
504
|
0
|
|
|
|
|
0
|
$self->_flambit(PAN_RIGHT, $args{note}, 1); |
505
|
|
|
|
|
|
|
} |
506
|
|
|
|
|
|
|
} |
507
|
|
|
|
|
|
|
|
508
|
|
|
|
|
|
|
|
509
|
|
|
|
|
|
|
sub swiss_army_triplet { # 28 |
510
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
511
|
0
|
|
|
|
|
0
|
my %args = ( |
512
|
|
|
|
|
|
|
critical => [0 .. 1], |
513
|
|
|
|
|
|
|
note => $self->SIXTEENTH, |
514
|
|
|
|
|
|
|
@_ |
515
|
|
|
|
|
|
|
); |
516
|
0
|
|
|
|
|
0
|
for (@{$args{critical}}) { |
|
0
|
|
|
|
|
0
|
|
517
|
|
|
|
|
|
|
# Flam! |
518
|
0
|
|
|
|
|
0
|
$self->_flambit(PAN_RIGHT, $args{note}, 1); |
519
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
520
|
0
|
|
|
|
|
0
|
$self->pan_left; |
521
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
522
|
|
|
|
|
|
|
} |
523
|
|
|
|
|
|
|
} |
524
|
|
|
|
|
|
|
|
525
|
|
|
|
|
|
|
|
526
|
|
|
|
|
|
|
sub inverted_flam_tap { # 29 |
527
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
528
|
0
|
|
|
|
|
0
|
my %args = ( |
529
|
|
|
|
|
|
|
critical => [0 .. 1], |
530
|
|
|
|
|
|
|
note => $self->TRIPLET_SIXTEENTH, |
531
|
|
|
|
|
|
|
@_ |
532
|
|
|
|
|
|
|
); |
533
|
0
|
|
|
|
|
0
|
for (@{$args{critical}}) { |
|
0
|
|
|
|
|
0
|
|
534
|
0
|
|
|
|
|
0
|
$self->_flambit(PAN_RIGHT, $args{note}, 1); |
535
|
0
|
|
|
|
|
0
|
$self->pan_left; |
536
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
537
|
|
|
|
|
|
|
|
538
|
0
|
|
|
|
|
0
|
$self->_flambit(PAN_LEFT, $args{note}, 1); |
539
|
0
|
|
|
|
|
0
|
$self->pan_right; |
540
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
541
|
|
|
|
|
|
|
} |
542
|
|
|
|
|
|
|
} |
543
|
|
|
|
|
|
|
|
544
|
|
|
|
|
|
|
|
545
|
|
|
|
|
|
|
sub flam_drag { # 30 |
546
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
547
|
0
|
|
|
|
|
0
|
my %args = ( |
548
|
|
|
|
|
|
|
critical => [0 .. 1], |
549
|
|
|
|
|
|
|
note => $self->SIXTEENTH, |
550
|
|
|
|
|
|
|
@_ |
551
|
|
|
|
|
|
|
); |
552
|
|
|
|
|
|
|
|
553
|
0
|
|
|
|
|
0
|
$self->_flambit(PAN_RIGHT, $self->EIGHTH, 1); |
554
|
0
|
|
|
|
|
0
|
$self->pan_left; |
555
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
556
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
557
|
0
|
|
|
|
|
0
|
$self->pan_right; |
558
|
0
|
|
|
|
|
0
|
$self->accent_note($self->EIGHTH); |
559
|
|
|
|
|
|
|
|
560
|
0
|
|
|
|
|
0
|
$self->_flambit(PAN_LEFT, $self->EIGHTH, 1); |
561
|
0
|
|
|
|
|
0
|
$self->pan_right; |
562
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
563
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
564
|
0
|
|
|
|
|
0
|
$self->pan_left; |
565
|
0
|
|
|
|
|
0
|
$self->accent_note($self->EIGHTH); |
566
|
|
|
|
|
|
|
} |
567
|
|
|
|
|
|
|
|
568
|
|
|
|
|
|
|
sub _flambit { |
569
|
0
|
|
|
0
|
|
0
|
my ($self, $direction, $note, $accent) = @_; |
570
|
|
|
|
|
|
|
|
571
|
|
|
|
|
|
|
# Set pan direction. |
572
|
0
|
0
|
|
|
|
0
|
if ($direction) { |
573
|
0
|
|
|
|
|
0
|
$self->pan_right; |
574
|
|
|
|
|
|
|
} |
575
|
|
|
|
|
|
|
else { |
576
|
0
|
|
|
|
|
0
|
$self->pan_left; |
577
|
|
|
|
|
|
|
} |
578
|
|
|
|
|
|
|
|
579
|
|
|
|
|
|
|
# Play a grace note. |
580
|
0
|
|
|
|
|
0
|
$self->note($self->THIRTYSECOND, $self->strike); |
581
|
|
|
|
|
|
|
|
582
|
|
|
|
|
|
|
# Alternate pan direction. |
583
|
0
|
0
|
|
|
|
0
|
if ($direction) { |
584
|
0
|
|
|
|
|
0
|
$self->pan_left; |
585
|
|
|
|
|
|
|
} |
586
|
|
|
|
|
|
|
else { |
587
|
0
|
|
|
|
|
0
|
$self->pan_right; |
588
|
|
|
|
|
|
|
} |
589
|
|
|
|
|
|
|
|
590
|
|
|
|
|
|
|
# Should we accent the final note? |
591
|
0
|
0
|
|
|
|
0
|
if ($accent) { |
592
|
0
|
|
|
|
|
0
|
$self->accent_note($note); |
593
|
|
|
|
|
|
|
} |
594
|
|
|
|
|
|
|
else { |
595
|
0
|
|
|
|
|
0
|
$self->note($note, $self->strike); |
596
|
|
|
|
|
|
|
} |
597
|
|
|
|
|
|
|
} |
598
|
|
|
|
|
|
|
|
599
|
|
|
|
|
|
|
|
600
|
|
|
|
|
|
|
sub drag { # 31 |
601
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
602
|
0
|
|
|
|
|
0
|
my %args = ( |
603
|
|
|
|
|
|
|
note => $self->QUARTER, |
604
|
|
|
|
|
|
|
@_ |
605
|
|
|
|
|
|
|
); |
606
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_RIGHT, $args{note}, 0); |
607
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_LEFT, $args{note}, 0); |
608
|
|
|
|
|
|
|
} |
609
|
|
|
|
|
|
|
|
610
|
|
|
|
|
|
|
|
611
|
|
|
|
|
|
|
sub single_drag_tap { # 32 |
612
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
613
|
0
|
|
|
|
|
0
|
my %args = ( |
614
|
|
|
|
|
|
|
note => $self->EIGHTH, |
615
|
|
|
|
|
|
|
@_ |
616
|
|
|
|
|
|
|
); |
617
|
|
|
|
|
|
|
|
618
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_RIGHT, $args{note}, 0); |
619
|
0
|
|
|
|
|
0
|
$self->pan_left; |
620
|
0
|
|
|
|
|
0
|
$self->accent_note($args{note}); |
621
|
|
|
|
|
|
|
|
622
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_LEFT, $args{note}, 0); |
623
|
0
|
|
|
|
|
0
|
$self->pan_right; |
624
|
0
|
|
|
|
|
0
|
$self->accent_note($args{note}); |
625
|
|
|
|
|
|
|
|
626
|
|
|
|
|
|
|
} |
627
|
|
|
|
|
|
|
|
628
|
|
|
|
|
|
|
|
629
|
|
|
|
|
|
|
sub double_drag_tap { # 33 |
630
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
631
|
0
|
|
|
|
|
0
|
my %args = ( |
632
|
|
|
|
|
|
|
note => $self->EIGHTH, |
633
|
|
|
|
|
|
|
@_ |
634
|
|
|
|
|
|
|
); |
635
|
|
|
|
|
|
|
|
636
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_RIGHT, $args{note}, 0); |
637
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_RIGHT, $args{note}, 0); |
638
|
0
|
|
|
|
|
0
|
$self->pan_left; |
639
|
0
|
|
|
|
|
0
|
$self->accent_note($args{note}); |
640
|
|
|
|
|
|
|
|
641
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_LEFT, $args{note}, 0); |
642
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_LEFT, $args{note}, 0); |
643
|
0
|
|
|
|
|
0
|
$self->pan_right; |
644
|
0
|
|
|
|
|
0
|
$self->accent_note($args{note}); |
645
|
|
|
|
|
|
|
} |
646
|
|
|
|
|
|
|
|
647
|
|
|
|
|
|
|
|
648
|
|
|
|
|
|
|
sub lesson_25_two_and_three { # 34 |
649
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
650
|
0
|
|
|
|
|
0
|
my %args = ( |
651
|
|
|
|
|
|
|
note => $self->EIGHTH, |
652
|
|
|
|
|
|
|
@_ |
653
|
|
|
|
|
|
|
); |
654
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_RIGHT, $self->SIXTEENTH, 0); |
655
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_RIGHT, $args{note}, 0); |
656
|
0
|
|
|
|
|
0
|
$self->pan_left; |
657
|
0
|
|
|
|
|
0
|
$self->accent_note($args{note}); |
658
|
|
|
|
|
|
|
} |
659
|
|
|
|
|
|
|
|
660
|
|
|
|
|
|
|
|
661
|
|
|
|
|
|
|
sub single_dragadiddle { # 35 |
662
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
663
|
0
|
|
|
|
|
0
|
my %args = ( |
664
|
|
|
|
|
|
|
note => $self->SIXTEENTH, |
665
|
|
|
|
|
|
|
@_ |
666
|
|
|
|
|
|
|
); |
667
|
|
|
|
|
|
|
|
668
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_RIGHT, $args{note}, 0); |
669
|
0
|
|
|
|
|
0
|
$self->pan_right; |
670
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
671
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
672
|
|
|
|
|
|
|
|
673
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_LEFT, $args{note}, 0); |
674
|
0
|
|
|
|
|
0
|
$self->pan_left; |
675
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
676
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
677
|
|
|
|
|
|
|
} |
678
|
|
|
|
|
|
|
|
679
|
|
|
|
|
|
|
|
680
|
|
|
|
|
|
|
sub drag_paradiddle_1 { # 36 |
681
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
682
|
0
|
|
|
|
|
0
|
my %args = ( |
683
|
|
|
|
|
|
|
note => $self->SIXTEENTH, |
684
|
|
|
|
|
|
|
accent => $self->EIGHTH, |
685
|
|
|
|
|
|
|
@_ |
686
|
|
|
|
|
|
|
); |
687
|
|
|
|
|
|
|
|
688
|
0
|
|
|
|
|
0
|
$self->pan_right; |
689
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
690
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_RIGHT, $args{note}, 0); |
691
|
0
|
|
|
|
|
0
|
$self->pan_left; |
692
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
693
|
0
|
|
|
|
|
0
|
$self->pan_right; |
694
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
695
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
696
|
|
|
|
|
|
|
|
697
|
0
|
|
|
|
|
0
|
$self->pan_left; |
698
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
699
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_LEFT, $args{note}, 0); |
700
|
0
|
|
|
|
|
0
|
$self->pan_right; |
701
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
702
|
0
|
|
|
|
|
0
|
$self->pan_left; |
703
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
704
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
705
|
|
|
|
|
|
|
|
706
|
|
|
|
|
|
|
} |
707
|
|
|
|
|
|
|
|
708
|
|
|
|
|
|
|
|
709
|
|
|
|
|
|
|
sub drag_paradiddle_2 { # 37 |
710
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
711
|
0
|
|
|
|
|
0
|
my %args = ( |
712
|
|
|
|
|
|
|
note => $self->SIXTEENTH, |
713
|
|
|
|
|
|
|
accent => $self->EIGHTH, |
714
|
|
|
|
|
|
|
@_ |
715
|
|
|
|
|
|
|
); |
716
|
|
|
|
|
|
|
|
717
|
0
|
|
|
|
|
0
|
$self->pan_right; |
718
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
719
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_RIGHT, $args{note}, 0); |
720
|
0
|
|
|
|
|
0
|
$self->pan_left; |
721
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
722
|
0
|
|
|
|
|
0
|
$self->pan_right; |
723
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
724
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
725
|
|
|
|
|
|
|
|
726
|
0
|
|
|
|
|
0
|
$self->pan_left; |
727
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
728
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_LEFT, $args{note}, 0); |
729
|
0
|
|
|
|
|
0
|
$self->pan_right; |
730
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
731
|
0
|
|
|
|
|
0
|
$self->pan_left; |
732
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
733
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
734
|
|
|
|
|
|
|
|
735
|
|
|
|
|
|
|
} |
736
|
|
|
|
|
|
|
|
737
|
|
|
|
|
|
|
|
738
|
|
|
|
|
|
|
sub single_ratamacue { # 38 |
739
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
740
|
0
|
|
|
|
|
0
|
my %args = ( |
741
|
|
|
|
|
|
|
note => $self->TRIPLET_SIXTEENTH, |
742
|
|
|
|
|
|
|
accent => $self->EIGHTH, |
743
|
|
|
|
|
|
|
@_ |
744
|
|
|
|
|
|
|
); |
745
|
|
|
|
|
|
|
|
746
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_RIGHT, $args{note}, 0); |
747
|
0
|
|
|
|
|
0
|
$self->pan_left; |
748
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
749
|
0
|
|
|
|
|
0
|
$self->pan_right; |
750
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
751
|
0
|
|
|
|
|
0
|
$self->pan_left; |
752
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
753
|
|
|
|
|
|
|
|
754
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_LEFT, $args{note}, 0); |
755
|
0
|
|
|
|
|
0
|
$self->pan_right; |
756
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
757
|
0
|
|
|
|
|
0
|
$self->pan_left; |
758
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
759
|
0
|
|
|
|
|
0
|
$self->pan_right; |
760
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
761
|
|
|
|
|
|
|
} |
762
|
|
|
|
|
|
|
|
763
|
|
|
|
|
|
|
|
764
|
|
|
|
|
|
|
sub double_ratamacue { # 39 |
765
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
766
|
0
|
|
|
|
|
0
|
my %args = ( |
767
|
|
|
|
|
|
|
note => $self->TRIPLET_SIXTEENTH, |
768
|
|
|
|
|
|
|
accent => $self->EIGHTH, |
769
|
|
|
|
|
|
|
@_ |
770
|
|
|
|
|
|
|
); |
771
|
|
|
|
|
|
|
|
772
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_RIGHT, $args{accent}, 1); |
773
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_RIGHT, $args{note}, 0); |
774
|
0
|
|
|
|
|
0
|
$self->pan_left; |
775
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
776
|
0
|
|
|
|
|
0
|
$self->pan_right; |
777
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
778
|
0
|
|
|
|
|
0
|
$self->pan_left; |
779
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
780
|
|
|
|
|
|
|
|
781
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_LEFT, $args{accent}, 1); |
782
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_LEFT, $args{note}, 0); |
783
|
0
|
|
|
|
|
0
|
$self->pan_right; |
784
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
785
|
0
|
|
|
|
|
0
|
$self->pan_left; |
786
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
787
|
0
|
|
|
|
|
0
|
$self->pan_right; |
788
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
789
|
|
|
|
|
|
|
|
790
|
|
|
|
|
|
|
} |
791
|
|
|
|
|
|
|
|
792
|
|
|
|
|
|
|
|
793
|
|
|
|
|
|
|
sub triple_ratamacue { # 40 |
794
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
795
|
0
|
|
|
|
|
0
|
my %args = ( |
796
|
|
|
|
|
|
|
note => $self->TRIPLET_SIXTEENTH, |
797
|
|
|
|
|
|
|
accent => $self->EIGHTH, |
798
|
|
|
|
|
|
|
@_ |
799
|
|
|
|
|
|
|
); |
800
|
|
|
|
|
|
|
|
801
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_RIGHT, $args{accent}, 0); |
802
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_RIGHT, $args{accent}, 0); |
803
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_RIGHT, $args{note}, 0); |
804
|
0
|
|
|
|
|
0
|
$self->pan_left; |
805
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
806
|
0
|
|
|
|
|
0
|
$self->pan_right; |
807
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
808
|
0
|
|
|
|
|
0
|
$self->pan_left; |
809
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
810
|
|
|
|
|
|
|
|
811
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_LEFT, $args{accent}, 0); |
812
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_LEFT, $args{accent}, 0); |
813
|
0
|
|
|
|
|
0
|
$self->_dragit(PAN_LEFT, $args{note}, 0); |
814
|
0
|
|
|
|
|
0
|
$self->pan_right; |
815
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
816
|
0
|
|
|
|
|
0
|
$self->pan_left; |
817
|
0
|
|
|
|
|
0
|
$self->note($args{note}, $self->strike); |
818
|
0
|
|
|
|
|
0
|
$self->pan_right; |
819
|
0
|
|
|
|
|
0
|
$self->accent_note($args{accent}); |
820
|
|
|
|
|
|
|
|
821
|
|
|
|
|
|
|
} |
822
|
|
|
|
|
|
|
|
823
|
|
|
|
|
|
|
sub _groups_of { # Beat groupings |
824
|
8
|
|
|
8
|
|
16
|
my ($beat, $group) = @_; |
825
|
8
|
|
|
|
|
23
|
return ($beat - 1) % $group; |
826
|
|
|
|
|
|
|
} |
827
|
|
|
|
|
|
|
|
828
|
|
|
|
|
|
|
sub _dragit { # Common drag direction & accent. |
829
|
0
|
|
|
0
|
|
0
|
my ($self, $direction, $note, $accent) = @_; |
830
|
|
|
|
|
|
|
|
831
|
|
|
|
|
|
|
# Set pan direction. |
832
|
0
|
0
|
|
|
|
0
|
if ($direction) { |
833
|
0
|
|
|
|
|
0
|
$self->pan_right; |
834
|
|
|
|
|
|
|
} |
835
|
|
|
|
|
|
|
else { |
836
|
0
|
|
|
|
|
0
|
$self->pan_left; |
837
|
|
|
|
|
|
|
} |
838
|
|
|
|
|
|
|
|
839
|
|
|
|
|
|
|
# Drag it! |
840
|
0
|
|
|
|
|
0
|
$self->note($self->SIXTEENTH, $self->strike); |
841
|
0
|
|
|
|
|
0
|
$self->note($self->SIXTEENTH, $self->strike); |
842
|
|
|
|
|
|
|
|
843
|
|
|
|
|
|
|
# Set pan direction. |
844
|
0
|
0
|
|
|
|
0
|
if ($direction) { |
845
|
0
|
|
|
|
|
0
|
$self->pan_right; |
846
|
|
|
|
|
|
|
} |
847
|
|
|
|
|
|
|
else { |
848
|
0
|
|
|
|
|
0
|
$self->pan_left; |
849
|
|
|
|
|
|
|
} |
850
|
0
|
|
|
|
|
0
|
$self->pan_right; |
851
|
|
|
|
|
|
|
|
852
|
|
|
|
|
|
|
# Accented? |
853
|
0
|
0
|
|
|
|
0
|
if ($accent) { |
854
|
0
|
|
|
|
|
0
|
$self->accent_note($note); |
855
|
|
|
|
|
|
|
} |
856
|
|
|
|
|
|
|
else { |
857
|
0
|
|
|
|
|
0
|
$self->note($note, $self->strike); |
858
|
|
|
|
|
|
|
} |
859
|
|
|
|
|
|
|
} |
860
|
|
|
|
|
|
|
|
861
|
|
|
|
|
|
|
|
862
|
|
|
|
|
|
|
sub pan_left { |
863
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
864
|
0
|
|
|
|
|
0
|
$self->pan(PAN_CENTER - $self->pan_width); |
865
|
|
|
|
|
|
|
} |
866
|
|
|
|
|
|
|
sub pan_center { |
867
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
868
|
0
|
|
|
|
|
0
|
$self->pan(PAN_CENTER); |
869
|
|
|
|
|
|
|
} |
870
|
|
|
|
|
|
|
sub pan_right { |
871
|
0
|
|
|
0
|
1
|
0
|
my $self = shift; |
872
|
0
|
|
|
|
|
0
|
$self->pan(PAN_CENTER + $self->pan_width); |
873
|
|
|
|
|
|
|
} |
874
|
|
|
|
|
|
|
|
875
|
|
|
|
|
|
|
|
876
|
|
|
|
|
|
|
sub alternate_pan { |
877
|
8
|
|
|
8
|
1
|
13
|
my ($self, $pan, $width) = @_; |
878
|
|
|
|
|
|
|
|
879
|
|
|
|
|
|
|
# Pan hard left if not given. |
880
|
8
|
50
|
|
|
|
30
|
$pan = 0 unless defined $pan; |
881
|
|
|
|
|
|
|
|
882
|
|
|
|
|
|
|
# Set balance to center unless a width is given. |
883
|
8
|
50
|
|
|
|
15
|
$width = PAN_CENTER unless defined $width; |
884
|
|
|
|
|
|
|
|
885
|
|
|
|
|
|
|
# Pan the stereo balance. |
886
|
8
|
100
|
|
|
|
30
|
$self->pan( $pan ? abs($width - PAN_CENTER) : PAN_CENTER + $width ); |
887
|
|
|
|
|
|
|
|
888
|
|
|
|
|
|
|
# Return the pan dimensions. |
889
|
8
|
|
|
|
|
15
|
return $pan, $width; |
890
|
|
|
|
|
|
|
} |
891
|
|
|
|
|
|
|
|
892
|
|
|
|
|
|
|
|
893
|
|
|
|
|
|
|
sub alternate_note { |
894
|
1
|
|
|
1
|
1
|
2
|
my $self = shift; |
895
|
1
|
|
|
|
|
13
|
my %args = ( |
896
|
|
|
|
|
|
|
critical => [0, 1], |
897
|
|
|
|
|
|
|
alternate_pan => 2, |
898
|
|
|
|
|
|
|
groups_of => 0, |
899
|
|
|
|
|
|
|
note => $self->SIXTEENTH, |
900
|
|
|
|
|
|
|
accent => 0, |
901
|
|
|
|
|
|
|
@_ |
902
|
|
|
|
|
|
|
); |
903
|
|
|
|
|
|
|
|
904
|
|
|
|
|
|
|
# Add single strokes with different types of pan values. |
905
|
1
|
|
|
|
|
3
|
for my $beat (@{$args{critical}}) { |
|
1
|
|
|
|
|
3
|
|
906
|
|
|
|
|
|
|
# Use a beat grouping if requested. |
907
|
8
|
50
|
|
|
|
446
|
if ($args{groups_of}) { |
|
|
0
|
|
|
|
|
|
908
|
8
|
|
|
|
|
18
|
$self->alternate_pan(_groups_of($beat, $args{groups_of}), $self->pan_width); |
909
|
|
|
|
|
|
|
} |
910
|
|
|
|
|
|
|
# Use beat modulo otherwise. |
911
|
|
|
|
|
|
|
elsif ($args{alternate_pan}) { |
912
|
0
|
|
|
|
|
0
|
$self->alternate_pan($beat % $args{alternate_pan}, $self->pan_width); |
913
|
|
|
|
|
|
|
} |
914
|
|
|
|
|
|
|
|
915
|
|
|
|
|
|
|
# Add the note but accent the 1st if requested. |
916
|
8
|
50
|
33
|
|
|
24
|
if ($beat == ($args{critical})[0] && $args{accent}) { |
917
|
0
|
|
|
|
|
0
|
$self->accent_note($args{note}); |
918
|
|
|
|
|
|
|
} |
919
|
|
|
|
|
|
|
else { |
920
|
8
|
|
|
|
|
24
|
$self->note($args{note}, $self->strike); |
921
|
|
|
|
|
|
|
} |
922
|
|
|
|
|
|
|
} |
923
|
|
|
|
|
|
|
} |
924
|
|
|
|
|
|
|
|
925
|
|
|
|
|
|
|
|
926
|
|
|
|
|
|
|
sub single_stroke_n { |
927
|
0
|
|
|
0
|
1
|
|
my $self = shift; |
928
|
0
|
|
|
|
|
|
my %args = ( |
929
|
|
|
|
|
|
|
critical => [4, 8], |
930
|
|
|
|
|
|
|
alternate_pan => 2, |
931
|
|
|
|
|
|
|
accent => $self->EIGHTH, |
932
|
|
|
|
|
|
|
note => $self->TRIPLET_SIXTEENTH, |
933
|
|
|
|
|
|
|
@_ |
934
|
|
|
|
|
|
|
); |
935
|
|
|
|
|
|
|
|
936
|
|
|
|
|
|
|
# Assume critical beats have increasing order. |
937
|
0
|
|
|
|
|
|
for my $beat (1 .. (@{$args{critical}})[-1]) { |
|
0
|
|
|
|
|
|
|
938
|
|
|
|
|
|
|
# Alternate hands by modulo. |
939
|
0
|
|
|
|
|
|
$self->alternate_pan($beat % $args{alternate_pan}, $self->pan_width); |
940
|
|
|
|
|
|
|
|
941
|
|
|
|
|
|
|
# Accent if on a critical beat. |
942
|
0
|
0
|
|
|
|
|
if (grep { $beat == $_ } @{ $args{critical} }) { |
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
943
|
0
|
|
|
|
|
|
$self->accent_note($args{accent}); |
944
|
|
|
|
|
|
|
} |
945
|
|
|
|
|
|
|
else { |
946
|
0
|
|
|
|
|
|
$self->note($args{note}, $self->strike); |
947
|
|
|
|
|
|
|
} |
948
|
|
|
|
|
|
|
} |
949
|
|
|
|
|
|
|
} |
950
|
|
|
|
|
|
|
|
951
|
|
|
|
|
|
|
1; |
952
|
|
|
|
|
|
|
|
953
|
|
|
|
|
|
|
__END__ |