beats 2.1.1 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +21 -23
  3. data/README.markdown +7 -15
  4. data/Rakefile +3 -3
  5. data/bin/beats +5 -5
  6. data/lib/beats.rb +15 -15
  7. data/lib/beats/kit.rb +1 -1
  8. data/lib/beats/kit_builder.rb +5 -1
  9. data/lib/beats/song.rb +1 -1
  10. data/lib/beats/song_parser.rb +45 -23
  11. data/test/audio_engine_test.rb +1 -1
  12. data/test/audio_utils_test.rb +1 -1
  13. data/test/caching_writer_test.rb +1 -1
  14. data/test/fixtures/invalid/flow_invalid_repeat_count_prefix.txt +8 -0
  15. data/test/fixtures/invalid/flow_invalid_repeat_count_suffix.txt +8 -0
  16. data/test/fixtures/invalid/{bad_repeat_count.txt → flow_missing_repeat_count.txt} +3 -3
  17. data/test/fixtures/invalid/flow_negative_repeat_count.txt +8 -0
  18. data/test/fixtures/invalid/{bad_flow.txt → flow_non_existent_pattern.txt} +0 -0
  19. data/test/fixtures/invalid/flow_non_string_repeat_count.txt +8 -0
  20. data/test/fixtures/invalid/flow_not_an_array.txt +15 -0
  21. data/test/fixtures/invalid/flow_pattern_name_not_a_string.txt +15 -0
  22. data/test/fixtures/invalid/flow_repeat_count_is_missing_prefix.txt +8 -0
  23. data/test/fixtures/invalid/flow_section_not_a_string_or_hash.txt +15 -0
  24. data/test/fixtures/invalid/kit_filename_not_a_string.txt +17 -0
  25. data/test/fixtures/invalid/kit_not_an_array.txt +17 -0
  26. data/test/fixtures/invalid/pattern_not_an_array.txt +17 -0
  27. data/test/fixtures/invalid/pattern_referenced_pattern_name_not_a_string.txt +19 -0
  28. data/test/fixtures/invalid/pattern_unreferenced_pattern_name_not_a_string.txt +18 -0
  29. data/test/fixtures/invalid/pattern_with_incomplete_track.txt +10 -0
  30. data/test/fixtures/invalid/pattern_with_nil_track.txt +10 -0
  31. data/test/fixtures/valid/composite_sounds_trailing_comma.txt +16 -0
  32. data/test/fixtures/valid/example_alternate_array_syntax.txt +11 -0
  33. data/test/fixtures/valid/{multiple_song_header_sections.txt → multiple_copies_of_song_components.txt} +28 -4
  34. data/test/fixtures/valid/multiple_yaml_documents.txt +33 -0
  35. data/test/fixtures/valid/track_sound_has_mixed_capitalization.txt +13 -0
  36. data/test/includes.rb +2 -2
  37. data/test/integration_test.rb +3 -3
  38. data/test/kit_builder_test.rb +3 -3
  39. data/test/kit_test.rb +7 -7
  40. data/test/pattern_test.rb +176 -176
  41. data/test/song_optimizer_test.rb +1 -1
  42. data/test/song_parser_test.rb +86 -11
  43. data/test/song_swinger_test.rb +1 -1
  44. data/test/song_test.rb +1 -1
  45. data/test/sounds/MiXeD_CaPiTaLiZaTiOn.wav +0 -0
  46. data/test/sounds/bass_mono_16_11025.wav +0 -0
  47. data/test/sounds/bass_mono_16_22050.wav +0 -0
  48. data/test/sounds/bass_mono_24.wav +0 -0
  49. data/test/sounds/bass_mono_8.mp3 +0 -0
  50. data/test/track_test.rb +1 -1
  51. metadata +58 -12
@@ -1,4 +1,4 @@
1
- require 'includes'
1
+ require "includes"
2
2
 
3
3
  class MockSongOptimizer < SongOptimizer
4
4
  def clone_song_ignoring_patterns_and_flow(original_song)
@@ -1,10 +1,18 @@
1
- require 'includes'
1
+ require "includes"
2
2
 
3
3
  class SongParserTest < Minitest::Test
4
4
  FIXTURE_BASE_PATH = File.dirname(__FILE__) + "/.."
5
5
 
6
- INVALID_FIXTURES = [:bad_repeat_count,
7
- :bad_flow,
6
+ INVALID_FIXTURES = [:flow_invalid_repeat_count_prefix,
7
+ :flow_invalid_repeat_count_suffix,
8
+ :flow_non_existent_pattern,
9
+ :flow_negative_repeat_count,
10
+ :flow_non_string_repeat_count,
11
+ :flow_repeat_count_is_missing_prefix,
12
+ :flow_missing_repeat_count,
13
+ :flow_not_an_array,
14
+ :flow_section_not_a_string_or_hash,
15
+ :flow_pattern_name_not_a_string,
8
16
  :bad_tempo,
9
17
  :bad_swing_rate_1,
10
18
  :bad_swing_rate_2,
@@ -12,12 +20,19 @@ class SongParserTest < Minitest::Test
12
20
  :no_flow,
13
21
  :with_structure,
14
22
  :pattern_with_no_tracks,
23
+ :pattern_with_nil_track,
24
+ :pattern_with_incomplete_track,
25
+ :pattern_referenced_pattern_name_not_a_string,
26
+ :pattern_unreferenced_pattern_name_not_a_string,
27
+ :pattern_not_an_array,
15
28
  :track_with_composite_non_existent_sound,
16
29
  :kit_with_composite_non_existent_sound,
17
30
  :track_with_composite_empty_sound,
18
31
  :kit_with_composite_empty_sound,
19
32
  :track_with_composite_nested_sounds,
20
33
  :kit_with_composite_nested_sounds,
34
+ :kit_not_an_array,
35
+ :kit_filename_not_a_string,
21
36
  :leading_bar_line,
22
37
  :sound_in_kit_not_found,
23
38
  :sound_in_track_not_found,
@@ -39,19 +54,19 @@ class SongParserTest < Minitest::Test
39
54
  assert_equal("....X.......X...", song.patterns[:chorus].tracks["snare"].rhythm)
40
55
  end
41
56
 
42
- def test_multiple_song_headers
43
- song, kit = load_fixture("valid/multiple_song_header_sections.txt")
57
+ def test_multiple_copies_of_song_components
58
+ song, kit = load_fixture("valid/multiple_copies_of_song_components.txt")
44
59
 
45
- assert_equal(200, song.tempo)
46
- assert_equal([:chorus, :chorus, :chorus, :chorus], song.flow)
60
+ assert_equal(120, song.tempo)
61
+ assert_equal([:verse, :verse, :chorus, :chorus], song.flow)
47
62
  assert_equal(["bass", "snare", "empty_track_placeholder_name_234hkj32hjk4hjkhds23"], kit.labels)
48
63
  assert_equal(2, song.patterns.length)
49
64
  assert_equal(2, song.patterns[:verse].tracks.length)
50
- assert_equal("X...X...X...X...", song.patterns[:verse].tracks["bass"].rhythm)
51
- assert_equal("..............X.", song.patterns[:verse].tracks["snare"].rhythm)
65
+ assert_equal("X.......X...X...", song.patterns[:verse].tracks["bass"].rhythm)
66
+ assert_equal("....X.......X...", song.patterns[:verse].tracks["snare"].rhythm)
52
67
  assert_equal(2, song.patterns[:chorus].tracks.length)
53
- assert_equal("X...X...XX..X...", song.patterns[:chorus].tracks["bass"].rhythm)
54
- assert_equal("....X.......X...", song.patterns[:chorus].tracks["snare"].rhythm)
68
+ assert_equal("X.X.X.X.X.X.X.X.", song.patterns[:chorus].tracks["bass"].rhythm)
69
+ assert_equal("X...X...X...X...", song.patterns[:chorus].tracks["snare"].rhythm)
55
70
  end
56
71
 
57
72
  def test_multiple_patterns_same_name
@@ -70,6 +85,17 @@ class SongParserTest < Minitest::Test
70
85
  assert_equal("....X.......X...", song.patterns[:chorus].tracks["snare"].rhythm)
71
86
  end
72
87
 
88
+ def test_multiple_yaml_documents
89
+ song, kit = load_fixture("valid/multiple_yaml_documents.txt")
90
+
91
+ assert_equal(150, song.tempo)
92
+ assert_equal([:verse, :verse], song.flow)
93
+ assert_equal(["bass", "empty_track_placeholder_name_234hkj32hjk4hjkhds23"], kit.labels)
94
+ assert_equal(1, song.patterns.length)
95
+ assert_equal(1, song.patterns[:verse].tracks.length)
96
+ assert_equal("X...X...X...X...", song.patterns[:verse].tracks["bass"].rhythm)
97
+ end
98
+
73
99
  def test_no_tempo
74
100
  song, _ = load_fixture("valid/no_tempo.txt")
75
101
 
@@ -199,6 +225,18 @@ class SongParserTest < Minitest::Test
199
225
  assert_equal("..............X.", song.patterns[:chorus].tracks["test/sounds/tom2_mono_16.wav"].rhythm)
200
226
  end
201
227
 
228
+ def test_track_sound_with_mixed_capitalization
229
+ song, kit = load_fixture("valid/track_sound_has_mixed_capitalization.txt")
230
+
231
+ assert_equal(120, song.tempo)
232
+ assert_equal([:verse], song.flow)
233
+ assert_equal(["bass", "test/sounds/MiXeD_CaPiTaLiZaTiOn.wav", "empty_track_placeholder_name_234hkj32hjk4hjkhds23"], kit.labels)
234
+ assert_equal(1, song.patterns.length)
235
+ assert_equal(2, song.patterns[:verse].tracks.length)
236
+ assert_equal("X...X...........", song.patterns[:verse].tracks["bass"].rhythm)
237
+ assert_equal("........X...X...", song.patterns[:verse].tracks["test/sounds/MiXeD_CaPiTaLiZaTiOn.wav"].rhythm)
238
+ end
239
+
202
240
  def test_swung_8
203
241
  song, _ = load_fixture("valid/example_swung_8th.txt")
204
242
 
@@ -373,6 +411,43 @@ class SongParserTest < Minitest::Test
373
411
  assert_equal(".X.X.X.X", song.patterns[:chorus].tracks["hihat-hh_closed_mono_8"].rhythm)
374
412
  end
375
413
 
414
+ def test_alternate_array_syntax
415
+ song, kit = load_fixture("valid/example_alternate_array_syntax.txt")
416
+
417
+ assert_equal(120, song.tempo)
418
+ assert_equal(["bass", "snare", "hhclosed", "hhopen", "test/sounds/ride_mono_8.wav", "empty_track_placeholder_name_234hkj32hjk4hjkhds23"], kit.labels)
419
+ assert_equal([:verse, :verse, :chorus, :chorus, :verse, :verse, :chorus, :chorus, :chorus, :chorus], song.flow)
420
+ assert_equal(2, song.patterns.length)
421
+ assert_equal(4, song.patterns[:verse].tracks.length)
422
+ assert_equal("X...X...X...X...", song.patterns[:verse].tracks["bass"].rhythm)
423
+ assert_equal("....X.......X...", song.patterns[:verse].tracks["snare"].rhythm)
424
+ assert_equal("X.X.X.X.X.X.X...", song.patterns[:verse].tracks["hhclosed"].rhythm)
425
+ assert_equal("..............X.", song.patterns[:verse].tracks["hhopen"].rhythm)
426
+ assert_equal(4, song.patterns[:chorus].tracks.length)
427
+ assert_equal("X...X...XXXXXXXX", song.patterns[:chorus].tracks["bass"].rhythm)
428
+ assert_equal("X...X...X...X...", song.patterns[:chorus].tracks["snare"].rhythm)
429
+ assert_equal("........X.......", song.patterns[:chorus].tracks["hhopen"].rhythm)
430
+ assert_equal("....X...........", song.patterns[:chorus].tracks["test/sounds/ride_mono_8.wav"].rhythm)
431
+ end
432
+
433
+ def test_composite_sounds_with_trailing_comma
434
+ song, kit = load_fixture("valid/composite_sounds_trailing_comma.txt")
435
+
436
+ assert_equal(100, song.tempo)
437
+ assert_equal(["bass", "snare-snare_mono_8", "hihat-hh_closed_mono_8", "hihat-hh_open_mono_8", "empty_track_placeholder_name_234hkj32hjk4hjkhds23"], kit.labels)
438
+ assert_equal([:verse, :verse, :chorus, :chorus], song.flow)
439
+ assert_equal(2, song.patterns.length)
440
+ assert_equal(3, song.patterns[:verse].tracks.length)
441
+ assert_equal("X...X...", song.patterns[:verse].tracks["hihat-hh_closed_mono_8"].rhythm)
442
+ assert_equal("X...X...", song.patterns[:verse].tracks["hihat-hh_open_mono_8"].rhythm)
443
+ assert_equal("..X...X.", song.patterns[:verse].tracks["snare-snare_mono_8"].rhythm)
444
+ assert_equal(4, song.patterns[:chorus].tracks.length)
445
+ assert_equal("XXXXXXXX", song.patterns[:chorus].tracks["bass"].rhythm)
446
+ assert_equal(".X.X.X.X", song.patterns[:chorus].tracks["snare-snare_mono_8"].rhythm)
447
+ assert_equal(".X.X.X.X", song.patterns[:chorus].tracks["hihat-hh_closed_mono_8"].rhythm)
448
+ assert_equal(".X.X.X.X", song.patterns[:chorus].tracks["hihat-hh_open_mono_8"].rhythm)
449
+ end
450
+
376
451
  def test_invalid_parse
377
452
  INVALID_FIXTURES.each do |fixture|
378
453
  assert_raises(SongParser::ParseError) do
@@ -1,4 +1,4 @@
1
- require 'includes'
1
+ require "includes"
2
2
 
3
3
  class SongSwingerTest < Minitest::Test
4
4
  def test_full_song_swing_rate_8
@@ -1,4 +1,4 @@
1
- require 'includes'
1
+ require "includes"
2
2
 
3
3
  class SongTest < Minitest::Test
4
4
  FIXTURES = [:repeats_not_specified,
@@ -1,4 +1,4 @@
1
- require 'includes'
1
+ require "includes"
2
2
 
3
3
  class TrackTest < Minitest::Test
4
4
  def generate_test_data
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beats
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel Strait
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-29 00:00:00.000000000 Z
11
+ date: 2019-12-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: wavefile
@@ -84,18 +84,33 @@ files:
84
84
  - test/fixtures/expected_output/example_split_stereo_8-snare.wav
85
85
  - test/fixtures/expected_output/example_split_stereo_8-tom2_stereo_8.wav
86
86
  - test/fixtures/expected_output/example_split_stereo_8-tom4_stereo_8.wav
87
- - test/fixtures/invalid/bad_flow.txt
88
- - test/fixtures/invalid/bad_repeat_count.txt
89
87
  - test/fixtures/invalid/bad_rhythm.txt
90
88
  - test/fixtures/invalid/bad_swing_rate_1.txt
91
89
  - test/fixtures/invalid/bad_swing_rate_2.txt
92
90
  - test/fixtures/invalid/bad_tempo.txt
91
+ - test/fixtures/invalid/flow_invalid_repeat_count_prefix.txt
92
+ - test/fixtures/invalid/flow_invalid_repeat_count_suffix.txt
93
+ - test/fixtures/invalid/flow_missing_repeat_count.txt
94
+ - test/fixtures/invalid/flow_negative_repeat_count.txt
95
+ - test/fixtures/invalid/flow_non_existent_pattern.txt
96
+ - test/fixtures/invalid/flow_non_string_repeat_count.txt
97
+ - test/fixtures/invalid/flow_not_an_array.txt
98
+ - test/fixtures/invalid/flow_pattern_name_not_a_string.txt
99
+ - test/fixtures/invalid/flow_repeat_count_is_missing_prefix.txt
100
+ - test/fixtures/invalid/flow_section_not_a_string_or_hash.txt
101
+ - test/fixtures/invalid/kit_filename_not_a_string.txt
102
+ - test/fixtures/invalid/kit_not_an_array.txt
93
103
  - test/fixtures/invalid/kit_with_composite_empty_sound.txt
94
104
  - test/fixtures/invalid/kit_with_composite_nested_sounds.txt
95
105
  - test/fixtures/invalid/kit_with_composite_non_existent_sound.txt
96
106
  - test/fixtures/invalid/leading_bar_line.txt
97
107
  - test/fixtures/invalid/no_flow.txt
98
108
  - test/fixtures/invalid/no_header.txt
109
+ - test/fixtures/invalid/pattern_not_an_array.txt
110
+ - test/fixtures/invalid/pattern_referenced_pattern_name_not_a_string.txt
111
+ - test/fixtures/invalid/pattern_unreferenced_pattern_name_not_a_string.txt
112
+ - test/fixtures/invalid/pattern_with_incomplete_track.txt
113
+ - test/fixtures/invalid/pattern_with_nil_track.txt
99
114
  - test/fixtures/invalid/pattern_with_no_tracks.txt
100
115
  - test/fixtures/invalid/sound_in_kit_not_found.txt
101
116
  - test/fixtures/invalid/sound_in_kit_wrong_format.txt
@@ -105,7 +120,9 @@ files:
105
120
  - test/fixtures/invalid/track_with_composite_nested_sounds.txt
106
121
  - test/fixtures/invalid/track_with_composite_non_existent_sound.txt
107
122
  - test/fixtures/invalid/with_structure.txt
123
+ - test/fixtures/valid/composite_sounds_trailing_comma.txt
108
124
  - test/fixtures/valid/empty_kit.txt
125
+ - test/fixtures/valid/example_alternate_array_syntax.txt
109
126
  - test/fixtures/valid/example_flow_patterns_different_capitalization.txt
110
127
  - test/fixtures/valid/example_mono_16.txt
111
128
  - test/fixtures/valid/example_mono_16_base_path.txt
@@ -122,13 +139,15 @@ files:
122
139
  - test/fixtures/valid/fractional_tempo.txt
123
140
  - test/fixtures/valid/kit_with_composite_single_sound.txt
124
141
  - test/fixtures/valid/kit_with_composite_sounds.txt
142
+ - test/fixtures/valid/multiple_copies_of_song_components.txt
125
143
  - test/fixtures/valid/multiple_patterns_same_name.txt
126
- - test/fixtures/valid/multiple_song_header_sections.txt
127
144
  - test/fixtures/valid/multiple_tracks_same_sound.txt
145
+ - test/fixtures/valid/multiple_yaml_documents.txt
128
146
  - test/fixtures/valid/no_tempo.txt
129
147
  - test/fixtures/valid/optimize_pattern_collision.txt
130
148
  - test/fixtures/valid/pattern_with_overflow.txt
131
149
  - test/fixtures/valid/repeats_not_specified.txt
150
+ - test/fixtures/valid/track_sound_has_mixed_capitalization.txt
132
151
  - test/fixtures/valid/track_with_composite_kit_sounds.txt
133
152
  - test/fixtures/valid/track_with_composite_mix_kit_and_not_kit_sound.txt
134
153
  - test/fixtures/valid/track_with_composite_mix_kit_and_not_kit_sound_2.txt
@@ -144,6 +163,7 @@ files:
144
163
  - test/song_parser_test.rb
145
164
  - test/song_swinger_test.rb
146
165
  - test/song_test.rb
166
+ - test/sounds/MiXeD_CaPiTaLiZaTiOn.wav
147
167
  - test/sounds/agogo_high_mono_16.wav
148
168
  - test/sounds/agogo_high_mono_8.wav
149
169
  - test/sounds/agogo_high_stereo_16.wav
@@ -157,6 +177,10 @@ files:
157
177
  - test/sounds/bass2_stereo_16.wav
158
178
  - test/sounds/bass2_stereo_8.wav
159
179
  - test/sounds/bass_mono_16.wav
180
+ - test/sounds/bass_mono_16_11025.wav
181
+ - test/sounds/bass_mono_16_22050.wav
182
+ - test/sounds/bass_mono_24.wav
183
+ - test/sounds/bass_mono_8.mp3
160
184
  - test/sounds/bass_mono_8.wav
161
185
  - test/sounds/bass_stereo_16.wav
162
186
  - test/sounds/bass_stereo_8.wav
@@ -249,12 +273,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
249
273
  - !ruby/object:Gem::Version
250
274
  version: '0'
251
275
  requirements: []
252
- rubyforge_project:
253
- rubygems_version: 2.7.6
276
+ rubygems_version: 3.0.3
254
277
  signing_key:
255
278
  specification_version: 4
256
- summary: A command-line drum machine. Takes a song notated in a YAML file as input,
257
- and outputs a *.wav sound file.
279
+ summary: A command-line drum machine
258
280
  test_files:
259
281
  - test/integration_test.rb
260
282
  - test/caching_writer_test.rb
@@ -273,6 +295,7 @@ test_files:
273
295
  - test/sounds/ride_mono_16.wav
274
296
  - test/sounds/composite_snare_stereo_8_tom3_mono_16_stereo_16.wav
275
297
  - test/sounds/cowbell_low_mono_16.wav
298
+ - test/sounds/bass_mono_16_11025.wav
276
299
  - test/sounds/clave_high_mono_8.wav
277
300
  - test/sounds/bass2_mono_16.wav
278
301
  - test/sounds/rim_mono_8.wav
@@ -281,11 +304,13 @@ test_files:
281
304
  - test/sounds/tom3_mono_8.wav
282
305
  - test/sounds/tom4_mono_8.wav
283
306
  - test/sounds/agogo_high_stereo_16.wav
307
+ - test/sounds/MiXeD_CaPiTaLiZaTiOn.wav
284
308
  - test/sounds/tom1_mono_16.wav
285
309
  - test/sounds/composite_snare_mono_8_tom3_mono_8_mono_16.wav
286
310
  - test/sounds/clave_low_stereo_16.wav
287
311
  - test/sounds/clave_high_stereo_8.wav
288
312
  - test/sounds/bass2_stereo_8.wav
313
+ - test/sounds/bass_mono_24.wav
289
314
  - test/sounds/composite_snare_stereo_16_tom3_mono_16_stereo_16.wav
290
315
  - test/sounds/hh_open_mono_16.wav
291
316
  - test/sounds/tom2_stereo_8.wav
@@ -310,10 +335,12 @@ test_files:
310
335
  - test/sounds/conga_high_stereo_8.wav
311
336
  - test/sounds/cowbell_low_mono_8.wav
312
337
  - test/sounds/hh_closed_mono_8.wav
338
+ - test/sounds/bass_mono_16_22050.wav
313
339
  - test/sounds/cowbell_high_stereo_16.wav
314
340
  - test/sounds/bass_stereo_8.wav
315
341
  - test/sounds/tom1_stereo_8.wav
316
342
  - test/sounds/clave_high_mono_16.wav
343
+ - test/sounds/bass_mono_8.mp3
317
344
  - test/sounds/agogo_high_mono_16.wav
318
345
  - test/sounds/snare2_mono_8.wav
319
346
  - test/sounds/ride_stereo_16.wav
@@ -365,12 +392,14 @@ test_files:
365
392
  - test/fixtures/valid/example_mono_8.txt
366
393
  - test/fixtures/valid/example_mono_16.txt
367
394
  - test/fixtures/valid/example_song_header_different_capitalization.txt
368
- - test/fixtures/valid/multiple_song_header_sections.txt
395
+ - test/fixtures/valid/composite_sounds_trailing_comma.txt
369
396
  - test/fixtures/valid/kit_with_composite_single_sound.txt
370
397
  - test/fixtures/valid/track_with_composite_mix_kit_and_not_kit_sound.txt
371
398
  - test/fixtures/valid/example_flow_patterns_different_capitalization.txt
372
399
  - test/fixtures/valid/example_swung_16th.txt
400
+ - test/fixtures/valid/track_sound_has_mixed_capitalization.txt
373
401
  - test/fixtures/valid/multiple_tracks_same_sound.txt
402
+ - test/fixtures/valid/multiple_copies_of_song_components.txt
374
403
  - test/fixtures/valid/track_with_composite_single_sound.txt
375
404
  - test/fixtures/valid/example_mono_16_base_path.txt
376
405
  - test/fixtures/valid/empty_kit.txt
@@ -378,32 +407,49 @@ test_files:
378
407
  - test/fixtures/valid/example_no_kit.txt
379
408
  - test/fixtures/valid/track_with_composite_non_kit_sound.txt
380
409
  - test/fixtures/valid/kit_with_composite_sounds.txt
410
+ - test/fixtures/valid/multiple_yaml_documents.txt
381
411
  - test/fixtures/valid/fractional_tempo.txt
382
412
  - test/fixtures/valid/example_with_empty_track.txt
383
413
  - test/fixtures/valid/pattern_with_overflow.txt
414
+ - test/fixtures/valid/example_alternate_array_syntax.txt
384
415
  - test/fixtures/valid/no_tempo.txt
385
416
  - test/fixtures/valid/track_with_composite_kit_sounds.txt
417
+ - test/fixtures/invalid/flow_non_existent_pattern.txt
418
+ - test/fixtures/invalid/flow_non_string_repeat_count.txt
386
419
  - test/fixtures/invalid/with_structure.txt
387
420
  - test/fixtures/invalid/sound_in_kit_wrong_format.txt
388
421
  - test/fixtures/invalid/track_with_composite_empty_sound.txt
389
422
  - test/fixtures/invalid/no_header.txt
390
- - test/fixtures/invalid/bad_repeat_count.txt
423
+ - test/fixtures/invalid/pattern_unreferenced_pattern_name_not_a_string.txt
424
+ - test/fixtures/invalid/flow_not_an_array.txt
425
+ - test/fixtures/invalid/flow_section_not_a_string_or_hash.txt
426
+ - test/fixtures/invalid/kit_filename_not_a_string.txt
391
427
  - test/fixtures/invalid/sound_in_track_not_found.txt
428
+ - test/fixtures/invalid/flow_invalid_repeat_count_prefix.txt
392
429
  - test/fixtures/invalid/sound_in_kit_not_found.txt
430
+ - test/fixtures/invalid/flow_negative_repeat_count.txt
431
+ - test/fixtures/invalid/flow_missing_repeat_count.txt
432
+ - test/fixtures/invalid/pattern_with_nil_track.txt
433
+ - test/fixtures/invalid/kit_not_an_array.txt
393
434
  - test/fixtures/invalid/bad_swing_rate_1.txt
394
435
  - test/fixtures/invalid/bad_tempo.txt
436
+ - test/fixtures/invalid/flow_pattern_name_not_a_string.txt
395
437
  - test/fixtures/invalid/leading_bar_line.txt
438
+ - test/fixtures/invalid/flow_repeat_count_is_missing_prefix.txt
396
439
  - test/fixtures/invalid/bad_rhythm.txt
397
440
  - test/fixtures/invalid/kit_with_composite_non_existent_sound.txt
398
441
  - test/fixtures/invalid/bad_swing_rate_2.txt
442
+ - test/fixtures/invalid/pattern_not_an_array.txt
443
+ - test/fixtures/invalid/pattern_referenced_pattern_name_not_a_string.txt
399
444
  - test/fixtures/invalid/track_with_composite_nested_sounds.txt
400
445
  - test/fixtures/invalid/sound_in_track_wrong_format.txt
401
446
  - test/fixtures/invalid/pattern_with_no_tracks.txt
402
- - test/fixtures/invalid/bad_flow.txt
403
447
  - test/fixtures/invalid/no_flow.txt
404
448
  - test/fixtures/invalid/kit_with_composite_empty_sound.txt
405
449
  - test/fixtures/invalid/kit_with_composite_nested_sounds.txt
450
+ - test/fixtures/invalid/pattern_with_incomplete_track.txt
406
451
  - test/fixtures/invalid/track_with_composite_non_existent_sound.txt
452
+ - test/fixtures/invalid/flow_invalid_repeat_count_suffix.txt
407
453
  - test/fixtures/expected_output/example_split_mono_8-tom4_mono_8.wav
408
454
  - test/fixtures/expected_output/example_split_mono_8-agogo.wav
409
455
  - test/fixtures/expected_output/example_split_stereo_16-tom4_stereo_16.wav