beats 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (158) hide show
  1. data/README.markdown +29 -4
  2. data/bin/beats +36 -71
  3. data/lib/beats.rb +57 -0
  4. data/lib/beatswavefile.rb +93 -0
  5. data/lib/kit.rb +67 -11
  6. data/lib/pattern.rb +131 -86
  7. data/lib/song.rb +145 -114
  8. data/lib/songoptimizer.rb +154 -0
  9. data/lib/songparser.rb +40 -28
  10. data/lib/songsplitter.rb +38 -0
  11. data/lib/track.rb +33 -31
  12. data/lib/wavefile.rb +475 -0
  13. data/test/examples/combined.wav +0 -0
  14. data/test/examples/split-agogo_high.wav +0 -0
  15. data/test/examples/split-bass.wav +0 -0
  16. data/test/examples/split-hh_closed.wav +0 -0
  17. data/test/examples/split-snare.wav +0 -0
  18. data/test/examples/split-tom2.wav +0 -0
  19. data/test/examples/split-tom4.wav +0 -0
  20. data/test/fixtures/expected_output/example_combined_mono_16.wav +0 -0
  21. data/test/fixtures/expected_output/example_combined_mono_8.wav +0 -0
  22. data/test/fixtures/expected_output/example_combined_stereo_16.wav +0 -0
  23. data/test/fixtures/expected_output/example_combined_stereo_8.wav +0 -0
  24. data/test/fixtures/expected_output/example_split_mono_16-agogo.wav +0 -0
  25. data/test/fixtures/expected_output/example_split_mono_16-bass.wav +0 -0
  26. data/test/fixtures/expected_output/example_split_mono_16-hh_closed.wav +0 -0
  27. data/test/fixtures/expected_output/example_split_mono_16-snare.wav +0 -0
  28. data/test/fixtures/expected_output/example_split_mono_16-tom2_mono_16.wav +0 -0
  29. data/test/fixtures/expected_output/example_split_mono_16-tom4_mono_16.wav +0 -0
  30. data/test/fixtures/expected_output/example_split_mono_8-agogo.wav +0 -0
  31. data/test/fixtures/expected_output/example_split_mono_8-bass.wav +0 -0
  32. data/test/fixtures/expected_output/example_split_mono_8-hh_closed.wav +0 -0
  33. data/test/fixtures/expected_output/example_split_mono_8-snare.wav +0 -0
  34. data/test/fixtures/expected_output/example_split_mono_8-tom2_mono_8.wav +0 -0
  35. data/test/fixtures/expected_output/example_split_mono_8-tom4_mono_8.wav +0 -0
  36. data/test/fixtures/expected_output/example_split_stereo_16-agogo.wav +0 -0
  37. data/test/fixtures/expected_output/example_split_stereo_16-bass.wav +0 -0
  38. data/test/fixtures/expected_output/example_split_stereo_16-hh_closed.wav +0 -0
  39. data/test/fixtures/expected_output/example_split_stereo_16-snare.wav +0 -0
  40. data/test/fixtures/expected_output/example_split_stereo_16-tom2_stereo_16.wav +0 -0
  41. data/test/fixtures/expected_output/example_split_stereo_16-tom4_stereo_16.wav +0 -0
  42. data/test/fixtures/expected_output/example_split_stereo_8-agogo.wav +0 -0
  43. data/test/fixtures/expected_output/example_split_stereo_8-bass.wav +0 -0
  44. data/test/fixtures/expected_output/example_split_stereo_8-hh_closed.wav +0 -0
  45. data/test/fixtures/expected_output/example_split_stereo_8-snare.wav +0 -0
  46. data/test/fixtures/expected_output/example_split_stereo_8-tom2_stereo_8.wav +0 -0
  47. data/test/fixtures/expected_output/example_split_stereo_8-tom4_stereo_8.wav +0 -0
  48. data/test/fixtures/invalid/bad_repeat_count.txt +8 -0
  49. data/test/fixtures/invalid/bad_rhythm.txt +9 -0
  50. data/test/fixtures/invalid/bad_structure.txt +9 -0
  51. data/test/fixtures/invalid/bad_tempo.txt +8 -0
  52. data/test/fixtures/invalid/no_header.txt +3 -0
  53. data/test/fixtures/invalid/no_structure.txt +6 -0
  54. data/test/fixtures/invalid/pattern_with_no_tracks.txt +12 -0
  55. data/test/fixtures/invalid/sound_in_kit_not_found.txt +10 -0
  56. data/test/fixtures/invalid/sound_in_track_not_found.txt +8 -0
  57. data/test/fixtures/invalid/template.txt +31 -0
  58. data/test/fixtures/valid/example_mono_16.txt +28 -0
  59. data/test/fixtures/valid/example_mono_8.txt +28 -0
  60. data/test/fixtures/valid/example_no_kit.txt +30 -0
  61. data/test/fixtures/valid/example_stereo_16.txt +28 -0
  62. data/test/fixtures/valid/example_stereo_8.txt +28 -0
  63. data/test/fixtures/valid/example_with_empty_track.txt +10 -0
  64. data/test/fixtures/valid/example_with_kit.txt +34 -0
  65. data/test/fixtures/valid/no_tempo.txt +8 -0
  66. data/test/fixtures/valid/pattern_with_overflow.txt +9 -0
  67. data/test/fixtures/valid/repeats_not_specified.txt +10 -0
  68. data/test/fixtures/yaml/song_yaml.txt +30 -0
  69. data/test/includes.rb +11 -4
  70. data/test/integration.rb +100 -0
  71. data/test/kit_test.rb +39 -39
  72. data/test/pattern_test.rb +119 -71
  73. data/test/song_test.rb +87 -62
  74. data/test/songoptimizer_test.rb +162 -0
  75. data/test/songparser_test.rb +36 -165
  76. data/test/sounds/agogo_high_mono_16.wav +0 -0
  77. data/test/sounds/agogo_high_mono_8.wav +0 -0
  78. data/test/sounds/agogo_high_stereo_16.wav +0 -0
  79. data/test/sounds/agogo_high_stereo_8.wav +0 -0
  80. data/test/sounds/agogo_low_mono_16.wav +0 -0
  81. data/test/sounds/agogo_low_mono_8.wav +0 -0
  82. data/test/sounds/agogo_low_stereo_16.wav +0 -0
  83. data/test/sounds/agogo_low_stereo_8.wav +0 -0
  84. data/test/sounds/bass2_mono_16.wav +0 -0
  85. data/test/sounds/bass2_mono_8.wav +0 -0
  86. data/test/sounds/bass2_stereo_16.wav +0 -0
  87. data/test/sounds/bass2_stereo_8.wav +0 -0
  88. data/test/sounds/bass_mono_8.wav +0 -0
  89. data/test/sounds/bass_stereo_16.wav +0 -0
  90. data/test/sounds/bass_stereo_8.wav +0 -0
  91. data/test/sounds/clave_high_mono_16.wav +0 -0
  92. data/test/sounds/clave_high_mono_8.wav +0 -0
  93. data/test/sounds/clave_high_stereo_16.wav +0 -0
  94. data/test/sounds/clave_high_stereo_8.wav +0 -0
  95. data/test/sounds/clave_low_mono_16.wav +0 -0
  96. data/test/sounds/clave_low_mono_8.wav +0 -0
  97. data/test/sounds/clave_low_stereo_16.wav +0 -0
  98. data/test/sounds/clave_low_stereo_8.wav +0 -0
  99. data/test/sounds/conga_high_mono_16.wav +0 -0
  100. data/test/sounds/conga_high_mono_8.wav +0 -0
  101. data/test/sounds/conga_high_stereo_16.wav +0 -0
  102. data/test/sounds/conga_high_stereo_8.wav +0 -0
  103. data/test/sounds/conga_low_mono_16.wav +0 -0
  104. data/test/sounds/conga_low_mono_8.wav +0 -0
  105. data/test/sounds/conga_low_stereo_16.wav +0 -0
  106. data/test/sounds/conga_low_stereo_8.wav +0 -0
  107. data/test/sounds/cowbell_high_mono_16.wav +0 -0
  108. data/test/sounds/cowbell_high_mono_8.wav +0 -0
  109. data/test/sounds/cowbell_high_stereo_16.wav +0 -0
  110. data/test/sounds/cowbell_high_stereo_8.wav +0 -0
  111. data/test/sounds/cowbell_low_mono_16.wav +0 -0
  112. data/test/sounds/cowbell_low_mono_8.wav +0 -0
  113. data/test/sounds/cowbell_low_stereo_16.wav +0 -0
  114. data/test/sounds/cowbell_low_stereo_8.wav +0 -0
  115. data/test/sounds/hh_closed_mono_16.wav +0 -0
  116. data/test/sounds/hh_closed_mono_8.wav +0 -0
  117. data/test/sounds/hh_closed_stereo_16.wav +0 -0
  118. data/test/sounds/hh_closed_stereo_8.wav +0 -0
  119. data/test/sounds/hh_open_mono_16.wav +0 -0
  120. data/test/sounds/hh_open_mono_8.wav +0 -0
  121. data/test/sounds/hh_open_stereo_16.wav +0 -0
  122. data/test/sounds/hh_open_stereo_8.wav +0 -0
  123. data/test/sounds/ride_mono_16.wav +0 -0
  124. data/test/sounds/ride_mono_8.wav +0 -0
  125. data/test/sounds/ride_stereo_16.wav +0 -0
  126. data/test/sounds/ride_stereo_8.wav +0 -0
  127. data/test/sounds/rim_mono_16.wav +0 -0
  128. data/test/sounds/rim_mono_8.wav +0 -0
  129. data/test/sounds/rim_stereo_16.wav +0 -0
  130. data/test/sounds/rim_stereo_8.wav +0 -0
  131. data/test/sounds/sine-mono-8bit.wav +0 -0
  132. data/test/sounds/snare2_mono_16.wav +0 -0
  133. data/test/sounds/snare2_mono_8.wav +0 -0
  134. data/test/sounds/snare2_stereo_16.wav +0 -0
  135. data/test/sounds/snare2_stereo_8.wav +0 -0
  136. data/test/sounds/snare_mono_16.wav +0 -0
  137. data/test/sounds/snare_mono_8.wav +0 -0
  138. data/test/sounds/snare_stereo_16.wav +0 -0
  139. data/test/sounds/snare_stereo_8.wav +0 -0
  140. data/test/sounds/tom1_mono_16.wav +0 -0
  141. data/test/sounds/tom1_mono_8.wav +0 -0
  142. data/test/sounds/tom1_stereo_16.wav +0 -0
  143. data/test/sounds/tom1_stereo_8.wav +0 -0
  144. data/test/sounds/tom2_mono_16.wav +0 -0
  145. data/test/sounds/tom2_mono_8.wav +0 -0
  146. data/test/sounds/tom2_stereo_16.wav +0 -0
  147. data/test/sounds/tom2_stereo_8.wav +0 -0
  148. data/test/sounds/tom3_mono_16.wav +0 -0
  149. data/test/sounds/tom3_mono_8.wav +0 -0
  150. data/test/sounds/tom3_stereo_16.wav +0 -0
  151. data/test/sounds/tom3_stereo_8.wav +0 -0
  152. data/test/sounds/tom4_mono_16.wav +0 -0
  153. data/test/sounds/tom4_mono_8.wav +0 -0
  154. data/test/sounds/tom4_stereo_16.wav +0 -0
  155. data/test/sounds/tom4_stereo_8.wav +0 -0
  156. data/test/sounds/tone.wav +0 -0
  157. data/test/track_test.rb +78 -72
  158. metadata +277 -15
@@ -0,0 +1,8 @@
1
+ # Invalid song, since the number of repeats for pattern Verse is not a number
2
+ Song:
3
+ Tempo: 100
4
+ Structure:
5
+ - Verse: x2a
6
+
7
+ Verse:
8
+ - test/sounds/bass_mono_8.wav: X...X...X...XX..X...X...XX..X...
@@ -0,0 +1,9 @@
1
+ # Song with a track whose rhythm has an invalid character. (In this case, $).
2
+
3
+ Song:
4
+ Tempo: 100
5
+ Structure:
6
+ - Verse: x1
7
+
8
+ Verse:
9
+ - test/sounds/snare_mono_8.wav: ..$.X
@@ -0,0 +1,9 @@
1
+ # Invalid song, since the structure references a non-existent pattern
2
+ Song:
3
+ Tempo: 100
4
+ Structure:
5
+ - Verse: x2
6
+ - Chorus: x1
7
+
8
+ Verse:
9
+ - test/sounds/bass_mono_8.wav: X...X...X...XX..X...X...XX..X...
@@ -0,0 +1,8 @@
1
+ # Invalid song, since the tempo is not a number
2
+ Song:
3
+ Tempo: 100a
4
+ Structure:
5
+ - Verse: x2
6
+
7
+ Verse:
8
+ - test/sounds/bass_mono_8.wav: X...X...X...XX..X...X...XX..X...
@@ -0,0 +1,3 @@
1
+ # Invalid song, since it has no header
2
+ Verse:
3
+ - test/sounds/bass_mono_8.wav: X...X...X...XX..X...X...XX..X...
@@ -0,0 +1,6 @@
1
+ # Invalid song, since it doesn't have a structure section in the header
2
+ Song:
3
+ Tempo: 100
4
+
5
+ Verse:
6
+ - test/sounds/bass_mono_8.wav: X...X...X...XX..X...X...XX..X...
@@ -0,0 +1,12 @@
1
+ # Invalid song, since it contains a pattern with no tracks
2
+
3
+ Song:
4
+ Tempo: 100
5
+ Structure:
6
+ - Verse: x1
7
+ - Chorus: x1
8
+
9
+ Verse:
10
+
11
+ Chorus:
12
+ - ../../../test/sounds/snare_mono_8.wav: X...X...
@@ -0,0 +1,10 @@
1
+ # Invalid song, since the Kit references a non-existent sound
2
+ Song:
3
+ Tempo: 100
4
+ Structure:
5
+ - Verse: x1
6
+ Kit:
7
+ - bad: test/sounds/i_do_not_exist.wav
8
+
9
+ Verse:
10
+ - bad: X...X...
@@ -0,0 +1,8 @@
1
+ # Invalid song, since a track references a non-existent sound
2
+ Song:
3
+ Tempo: 100
4
+ Structure:
5
+ - Verse: x1
6
+
7
+ Verse:
8
+ - test/sounds/i_do_not_exist.wav: X...X...
@@ -0,0 +1,31 @@
1
+ # An example song using mono 8-bit sounds
2
+
3
+ Song:
4
+ Tempo: 120
5
+ Structure:
6
+ - Verse: x2
7
+ - Chorus: x4
8
+ - Verse: x2
9
+ - Chorus: x4
10
+ Kit:
11
+ - bass: ../../sounds/bass_mono_16.wav
12
+ - snare: ../../sounds/snare_mono_16.wav
13
+ - hh_closed: ../../sounds/hh_closed_mono_16.wav
14
+ - agogo: ../../sounds/agogo_high_mono_16.wav
15
+ - tom_high: ../../sounds/tom4_mono_16.wav
16
+ - tom_low: ../../sounds/tom2_mono_16.wav
17
+
18
+ Verse:
19
+ - bass: X...X
20
+ - snare: X.X.X
21
+ - hh_closed: X.XXX
22
+ - hh_closed: X....
23
+ - agogo: ....X
24
+
25
+ Chorus:
26
+ - bass: X...X...XX..X...
27
+ - snare: ....X.......X...
28
+ - hh_closed: X......
29
+ - hh_closed: X.XXX.XXX.XX..X.
30
+ - tom_high: ...........X....
31
+ - tom_low: X.............X.
@@ -0,0 +1,28 @@
1
+ # An example song using mono 16-bit sounds
2
+
3
+ Song:
4
+ Tempo: 120
5
+ Structure:
6
+ - Verse: x2
7
+ - Chorus: x4
8
+ - Verse: x2
9
+ - Chorus: x4
10
+ Kit:
11
+ - bass: ../../sounds/bass_mono_16.wav
12
+ - snare: ../../sounds/snare_mono_16.wav
13
+ - hh_closed: ../../sounds/hh_closed_mono_16.wav
14
+ - agogo: ../../sounds/agogo_high_mono_16.wav
15
+
16
+ Verse:
17
+ - bass: X...X...X...X...
18
+ - snare: ..............X.
19
+ - hh_closed: X.XXX.XXX.X.X.X.
20
+ - agogo: ..............XX
21
+
22
+ # Also including non-Kit sounds to test that they work as well:
23
+ Chorus:
24
+ - bass: X...X...XX..X...
25
+ - snare: ....X.......X...
26
+ - hh_closed: X.XXX.XXX.XX..X.
27
+ - ../../sounds/tom4_mono_16.wav: ...........X....
28
+ - ../../sounds/tom2_mono_16.wav: ..............X.
@@ -0,0 +1,28 @@
1
+ # An example song using mono 8-bit sounds
2
+
3
+ Song:
4
+ Tempo: 120
5
+ Structure:
6
+ - Verse: x2
7
+ - Chorus: x4
8
+ - Verse: x2
9
+ - Chorus: x4
10
+ Kit:
11
+ - bass: ../../sounds/bass_mono_8.wav
12
+ - snare: ../../sounds/snare_mono_8.wav
13
+ - hh_closed: ../../sounds/hh_closed_mono_8.wav
14
+ - agogo: ../../sounds/agogo_high_mono_8.wav
15
+
16
+ Verse:
17
+ - bass: X...X...X...X...
18
+ - snare: ..............X.
19
+ - hh_closed: X.XXX.XXX.X.X.X.
20
+ - agogo: ..............XX
21
+
22
+ # Also including non-Kit sounds to test that they work as well:
23
+ Chorus:
24
+ - bass: X...X...XX..X...
25
+ - snare: ....X.......X...
26
+ - hh_closed: X.XXX.XXX.XX..X.
27
+ - ../../sounds/tom4_mono_8.wav: ...........X....
28
+ - ../../sounds/tom2_mono_8.wav: ..............X.
@@ -0,0 +1,30 @@
1
+ # An example song, with no Kit section in the header.
2
+
3
+ Song:
4
+ Tempo: 99
5
+ Structure:
6
+ - Verse: x2
7
+ - Chorus: x2
8
+ - Verse: x2
9
+ - Chorus: x4
10
+ - Bridge: x1
11
+ - Undefined: x0 # Legal to reference undefined pattern as long as num repeats is 0.
12
+ - Chorus: x4
13
+
14
+ Verse:
15
+ - test/sounds/bass_mono_8.wav: X...X...X...XX..X...X...XX..X...
16
+ - test/sounds/snare_mono_8.wav: ..X...X...X...X.X...X...X...X...
17
+ # Here is a comment
18
+ - test/sounds/hh_closed_mono_8.wav: X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.
19
+ - test/sounds/hh_open_mono_8.wav: X...............X..............X
20
+ # Here is another comment
21
+ Chorus:
22
+ - test/sounds/bass_mono_8.wav: X...X...XXXXXXXXX...X...X...X...
23
+ - test/sounds/snare_mono_8.wav: ...................X...X...X...X
24
+ - test/sounds/hh_closed_mono_8.wav: X.X.XXX.X.X.XXX.X.X.XXX.X.X.XXX. # It's comment time
25
+ - test/sounds/hh_open_mono_8.wav: ........X.......X.......X.......
26
+ - test/sounds/ride_mono_8.wav: ....X...................X.......
27
+
28
+
29
+ Bridge:
30
+ - test/sounds/hh_closed_mono_8.wav: XX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.X
@@ -0,0 +1,28 @@
1
+ # An example song using stereo 16-bit sounds
2
+
3
+ Song:
4
+ Tempo: 120
5
+ Structure:
6
+ - Verse: x2
7
+ - Chorus: x4
8
+ - Verse: x2
9
+ - Chorus: x4
10
+ Kit:
11
+ - bass: ../../sounds/bass_stereo_16.wav
12
+ - snare: ../../sounds/snare_stereo_16.wav
13
+ - hh_closed: ../../sounds/hh_closed_stereo_16.wav
14
+ - agogo: ../../sounds/agogo_high_stereo_16.wav
15
+
16
+ Verse:
17
+ - bass: X...X...X...X...
18
+ - snare: ..............X.
19
+ - hh_closed: X.XXX.XXX.X.X.X.
20
+ - agogo: ..............XX
21
+
22
+ # Also including non-Kit sounds to test that they work as well:
23
+ Chorus:
24
+ - bass: X...X...XX..X...
25
+ - snare: ....X.......X...
26
+ - hh_closed: X.XXX.XXX.XX..X.
27
+ - ../../sounds/tom4_stereo_16.wav: ...........X....
28
+ - ../../sounds/tom2_stereo_16.wav: ..............X.
@@ -0,0 +1,28 @@
1
+ # An example song using stereo 8-bit sounds
2
+
3
+ Song:
4
+ Tempo: 120
5
+ Structure:
6
+ - Verse: x2
7
+ - Chorus: x4
8
+ - Verse: x2
9
+ - Chorus: x4
10
+ Kit:
11
+ - bass: ../../sounds/bass_stereo_8.wav
12
+ - snare: ../../sounds/snare_stereo_8.wav
13
+ - hh_closed: ../../sounds/hh_closed_stereo_8.wav
14
+ - agogo: ../../sounds/agogo_high_stereo_8.wav
15
+
16
+ Verse:
17
+ - bass: X...X...X...X...
18
+ - snare: ..............X.
19
+ - hh_closed: X.XXX.XXX.X.X.X.
20
+ - agogo: ..............XX
21
+
22
+ # Also including non-Kit sounds to test that they work as well:
23
+ Chorus:
24
+ - bass: X...X...XX..X...
25
+ - snare: ....X.......X...
26
+ - hh_closed: X.XXX.XXX.XX..X.
27
+ - ../../sounds/tom4_stereo_8.wav: ...........X....
28
+ - ../../sounds/tom2_stereo_8.wav: ..............X.
@@ -0,0 +1,10 @@
1
+ # An song which has a track with no rhythm. This is valid.
2
+
3
+ Song:
4
+ Tempo: 99
5
+ Structure:
6
+ - Verse: x1
7
+
8
+ Verse:
9
+ - test/sounds/bass_mono_8.wav:
10
+ - test/sounds/snare_mono_8.wav: X...X...
@@ -0,0 +1,34 @@
1
+ # An example song
2
+
3
+ Song:
4
+ Tempo: 99
5
+ Kit:
6
+ - bass: test/sounds/bass_mono_8.wav
7
+ - snare: test/sounds/snare_mono_8.wav
8
+ - hhclosed: test/sounds/hh_closed_mono_8.wav
9
+ - hhopen: test/sounds/hh_open_mono_8.wav
10
+ Structure:
11
+ - Verse: x2
12
+ - Chorus: x2
13
+ - Verse: x2
14
+ - Chorus: x4
15
+ - Bridge: x1
16
+ - Undefined: x0 # Legal to reference undefined pattern as long as num repeats is 0.
17
+ - Chorus: x4
18
+
19
+ Verse:
20
+ - bass: X...X...X...XX..X...X...XX..X...
21
+ - snare: ..X...X...X...X.X...X...X...X...
22
+ # Here is a comment
23
+ - hhclosed: X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.
24
+ - hhopen: X...............X..............X
25
+ # Here is another comment
26
+ Chorus:
27
+ - bass: X...X...XXXXXXXXX...X...X...X...
28
+ - snare: ...................X...X...X...X
29
+ - test/sounds/hh_closed_mono_8.wav: X.X.XXX.X.X.XXX.X.X.XXX.X.X.XXX. # It's comment time
30
+ - hhopen: ........X.......X.......X.......
31
+ - test/sounds/ride_mono_8.wav: ....X...................X.......
32
+
33
+ Bridge:
34
+ - hhclosed: XX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.X
@@ -0,0 +1,8 @@
1
+ # Valid song file, despite not having a tempo. Tempo will be set to a default value.
2
+
3
+ Song:
4
+ Structure:
5
+ - Verse: x1
6
+
7
+ Verse:
8
+ - test/sounds/bass_mono_8.wav: X
@@ -0,0 +1,9 @@
1
+ # Song with a pattern whose sound overflows past the end of it.
2
+
3
+ Song:
4
+ Tempo: 100
5
+ Structure:
6
+ - Verse: x2
7
+
8
+ Verse:
9
+ - test/sounds/snare_mono_8.wav: ...X
@@ -0,0 +1,10 @@
1
+ # The pattern Verse in the structure doesn't specify how many times it should repeat.
2
+ # This is valid, it causes it to default to 1 repeat.
3
+
4
+ Song:
5
+ Tempo: 100
6
+ Structure:
7
+ - Verse
8
+
9
+ Verse:
10
+ - test/sounds/bass_mono_8.wav: X
@@ -0,0 +1,30 @@
1
+ Song:
2
+ Tempo: 99
3
+ Structure:
4
+ - Verse: x2
5
+ - Chorus: x2
6
+ - Verse: x2
7
+ - Chorus: x4
8
+ - Bridge: x1
9
+ - Chorus: x4
10
+ Kit:
11
+ - bass: test/sounds/bass_mono_8.wav
12
+ - hhclosed: test/sounds/hh_closed_mono_8.wav
13
+ - hhopen: test/sounds/hh_open_mono_8.wav
14
+ - snare: test/sounds/snare_mono_8.wav
15
+
16
+ Bridge:
17
+ - hhclosed: XX.XXX.XXX.XXX.XXX.XXX.XXX.XXX.X
18
+
19
+ Chorus:
20
+ - bass: X...X...XXXXXXXXX...X...X...X...
21
+ - hhopen: ........X.......X.......X.......
22
+ - snare: ...................X...X...X...X
23
+ - test/sounds/hh_closed_mono_8.wav: X.X.XXX.X.X.XXX.X.X.XXX.X.X.XXX.
24
+ - test/sounds/ride_mono_8.wav: ....X...................X.......
25
+
26
+ Verse:
27
+ - bass: X...X...X...XX..X...X...XX..X...
28
+ - hhclosed: X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.
29
+ - hhopen: X...............X..............X
30
+ - snare: ..X...X...X...X.X...X...X...X...