beats 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +29 -4
- data/bin/beats +36 -71
- data/lib/beats.rb +57 -0
- data/lib/beatswavefile.rb +93 -0
- data/lib/kit.rb +67 -11
- data/lib/pattern.rb +131 -86
- data/lib/song.rb +145 -114
- data/lib/songoptimizer.rb +154 -0
- data/lib/songparser.rb +40 -28
- data/lib/songsplitter.rb +38 -0
- data/lib/track.rb +33 -31
- data/lib/wavefile.rb +475 -0
- data/test/examples/combined.wav +0 -0
- data/test/examples/split-agogo_high.wav +0 -0
- data/test/examples/split-bass.wav +0 -0
- data/test/examples/split-hh_closed.wav +0 -0
- data/test/examples/split-snare.wav +0 -0
- data/test/examples/split-tom2.wav +0 -0
- data/test/examples/split-tom4.wav +0 -0
- data/test/fixtures/expected_output/example_combined_mono_16.wav +0 -0
- data/test/fixtures/expected_output/example_combined_mono_8.wav +0 -0
- data/test/fixtures/expected_output/example_combined_stereo_16.wav +0 -0
- data/test/fixtures/expected_output/example_combined_stereo_8.wav +0 -0
- data/test/fixtures/expected_output/example_split_mono_16-agogo.wav +0 -0
- data/test/fixtures/expected_output/example_split_mono_16-bass.wav +0 -0
- data/test/fixtures/expected_output/example_split_mono_16-hh_closed.wav +0 -0
- data/test/fixtures/expected_output/example_split_mono_16-snare.wav +0 -0
- data/test/fixtures/expected_output/example_split_mono_16-tom2_mono_16.wav +0 -0
- data/test/fixtures/expected_output/example_split_mono_16-tom4_mono_16.wav +0 -0
- data/test/fixtures/expected_output/example_split_mono_8-agogo.wav +0 -0
- data/test/fixtures/expected_output/example_split_mono_8-bass.wav +0 -0
- data/test/fixtures/expected_output/example_split_mono_8-hh_closed.wav +0 -0
- data/test/fixtures/expected_output/example_split_mono_8-snare.wav +0 -0
- data/test/fixtures/expected_output/example_split_mono_8-tom2_mono_8.wav +0 -0
- data/test/fixtures/expected_output/example_split_mono_8-tom4_mono_8.wav +0 -0
- data/test/fixtures/expected_output/example_split_stereo_16-agogo.wav +0 -0
- data/test/fixtures/expected_output/example_split_stereo_16-bass.wav +0 -0
- data/test/fixtures/expected_output/example_split_stereo_16-hh_closed.wav +0 -0
- data/test/fixtures/expected_output/example_split_stereo_16-snare.wav +0 -0
- data/test/fixtures/expected_output/example_split_stereo_16-tom2_stereo_16.wav +0 -0
- data/test/fixtures/expected_output/example_split_stereo_16-tom4_stereo_16.wav +0 -0
- data/test/fixtures/expected_output/example_split_stereo_8-agogo.wav +0 -0
- data/test/fixtures/expected_output/example_split_stereo_8-bass.wav +0 -0
- data/test/fixtures/expected_output/example_split_stereo_8-hh_closed.wav +0 -0
- data/test/fixtures/expected_output/example_split_stereo_8-snare.wav +0 -0
- data/test/fixtures/expected_output/example_split_stereo_8-tom2_stereo_8.wav +0 -0
- data/test/fixtures/expected_output/example_split_stereo_8-tom4_stereo_8.wav +0 -0
- data/test/fixtures/invalid/bad_repeat_count.txt +8 -0
- data/test/fixtures/invalid/bad_rhythm.txt +9 -0
- data/test/fixtures/invalid/bad_structure.txt +9 -0
- data/test/fixtures/invalid/bad_tempo.txt +8 -0
- data/test/fixtures/invalid/no_header.txt +3 -0
- data/test/fixtures/invalid/no_structure.txt +6 -0
- data/test/fixtures/invalid/pattern_with_no_tracks.txt +12 -0
- data/test/fixtures/invalid/sound_in_kit_not_found.txt +10 -0
- data/test/fixtures/invalid/sound_in_track_not_found.txt +8 -0
- data/test/fixtures/invalid/template.txt +31 -0
- data/test/fixtures/valid/example_mono_16.txt +28 -0
- data/test/fixtures/valid/example_mono_8.txt +28 -0
- data/test/fixtures/valid/example_no_kit.txt +30 -0
- data/test/fixtures/valid/example_stereo_16.txt +28 -0
- data/test/fixtures/valid/example_stereo_8.txt +28 -0
- data/test/fixtures/valid/example_with_empty_track.txt +10 -0
- data/test/fixtures/valid/example_with_kit.txt +34 -0
- data/test/fixtures/valid/no_tempo.txt +8 -0
- data/test/fixtures/valid/pattern_with_overflow.txt +9 -0
- data/test/fixtures/valid/repeats_not_specified.txt +10 -0
- data/test/fixtures/yaml/song_yaml.txt +30 -0
- data/test/includes.rb +11 -4
- data/test/integration.rb +100 -0
- data/test/kit_test.rb +39 -39
- data/test/pattern_test.rb +119 -71
- data/test/song_test.rb +87 -62
- data/test/songoptimizer_test.rb +162 -0
- data/test/songparser_test.rb +36 -165
- data/test/sounds/agogo_high_mono_16.wav +0 -0
- data/test/sounds/agogo_high_mono_8.wav +0 -0
- data/test/sounds/agogo_high_stereo_16.wav +0 -0
- data/test/sounds/agogo_high_stereo_8.wav +0 -0
- data/test/sounds/agogo_low_mono_16.wav +0 -0
- data/test/sounds/agogo_low_mono_8.wav +0 -0
- data/test/sounds/agogo_low_stereo_16.wav +0 -0
- data/test/sounds/agogo_low_stereo_8.wav +0 -0
- data/test/sounds/bass2_mono_16.wav +0 -0
- data/test/sounds/bass2_mono_8.wav +0 -0
- data/test/sounds/bass2_stereo_16.wav +0 -0
- data/test/sounds/bass2_stereo_8.wav +0 -0
- data/test/sounds/bass_mono_8.wav +0 -0
- data/test/sounds/bass_stereo_16.wav +0 -0
- data/test/sounds/bass_stereo_8.wav +0 -0
- data/test/sounds/clave_high_mono_16.wav +0 -0
- data/test/sounds/clave_high_mono_8.wav +0 -0
- data/test/sounds/clave_high_stereo_16.wav +0 -0
- data/test/sounds/clave_high_stereo_8.wav +0 -0
- data/test/sounds/clave_low_mono_16.wav +0 -0
- data/test/sounds/clave_low_mono_8.wav +0 -0
- data/test/sounds/clave_low_stereo_16.wav +0 -0
- data/test/sounds/clave_low_stereo_8.wav +0 -0
- data/test/sounds/conga_high_mono_16.wav +0 -0
- data/test/sounds/conga_high_mono_8.wav +0 -0
- data/test/sounds/conga_high_stereo_16.wav +0 -0
- data/test/sounds/conga_high_stereo_8.wav +0 -0
- data/test/sounds/conga_low_mono_16.wav +0 -0
- data/test/sounds/conga_low_mono_8.wav +0 -0
- data/test/sounds/conga_low_stereo_16.wav +0 -0
- data/test/sounds/conga_low_stereo_8.wav +0 -0
- data/test/sounds/cowbell_high_mono_16.wav +0 -0
- data/test/sounds/cowbell_high_mono_8.wav +0 -0
- data/test/sounds/cowbell_high_stereo_16.wav +0 -0
- data/test/sounds/cowbell_high_stereo_8.wav +0 -0
- data/test/sounds/cowbell_low_mono_16.wav +0 -0
- data/test/sounds/cowbell_low_mono_8.wav +0 -0
- data/test/sounds/cowbell_low_stereo_16.wav +0 -0
- data/test/sounds/cowbell_low_stereo_8.wav +0 -0
- data/test/sounds/hh_closed_mono_16.wav +0 -0
- data/test/sounds/hh_closed_mono_8.wav +0 -0
- data/test/sounds/hh_closed_stereo_16.wav +0 -0
- data/test/sounds/hh_closed_stereo_8.wav +0 -0
- data/test/sounds/hh_open_mono_16.wav +0 -0
- data/test/sounds/hh_open_mono_8.wav +0 -0
- data/test/sounds/hh_open_stereo_16.wav +0 -0
- data/test/sounds/hh_open_stereo_8.wav +0 -0
- data/test/sounds/ride_mono_16.wav +0 -0
- data/test/sounds/ride_mono_8.wav +0 -0
- data/test/sounds/ride_stereo_16.wav +0 -0
- data/test/sounds/ride_stereo_8.wav +0 -0
- data/test/sounds/rim_mono_16.wav +0 -0
- data/test/sounds/rim_mono_8.wav +0 -0
- data/test/sounds/rim_stereo_16.wav +0 -0
- data/test/sounds/rim_stereo_8.wav +0 -0
- data/test/sounds/sine-mono-8bit.wav +0 -0
- data/test/sounds/snare2_mono_16.wav +0 -0
- data/test/sounds/snare2_mono_8.wav +0 -0
- data/test/sounds/snare2_stereo_16.wav +0 -0
- data/test/sounds/snare2_stereo_8.wav +0 -0
- data/test/sounds/snare_mono_16.wav +0 -0
- data/test/sounds/snare_mono_8.wav +0 -0
- data/test/sounds/snare_stereo_16.wav +0 -0
- data/test/sounds/snare_stereo_8.wav +0 -0
- data/test/sounds/tom1_mono_16.wav +0 -0
- data/test/sounds/tom1_mono_8.wav +0 -0
- data/test/sounds/tom1_stereo_16.wav +0 -0
- data/test/sounds/tom1_stereo_8.wav +0 -0
- data/test/sounds/tom2_mono_16.wav +0 -0
- data/test/sounds/tom2_mono_8.wav +0 -0
- data/test/sounds/tom2_stereo_16.wav +0 -0
- data/test/sounds/tom2_stereo_8.wav +0 -0
- data/test/sounds/tom3_mono_16.wav +0 -0
- data/test/sounds/tom3_mono_8.wav +0 -0
- data/test/sounds/tom3_stereo_16.wav +0 -0
- data/test/sounds/tom3_stereo_8.wav +0 -0
- data/test/sounds/tom4_mono_16.wav +0 -0
- data/test/sounds/tom4_mono_8.wav +0 -0
- data/test/sounds/tom4_stereo_16.wav +0 -0
- data/test/sounds/tom4_stereo_8.wav +0 -0
- data/test/sounds/tone.wav +0 -0
- data/test/track_test.rb +78 -72
- metadata +277 -15
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/test/sounds/bass_mono_8.wav
CHANGED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/test/sounds/ride_mono_8.wav
CHANGED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/test/track_test.rb
CHANGED
@@ -27,55 +27,80 @@ class TrackTest < Test::Unit::TestCase
|
|
27
27
|
def test_initialize
|
28
28
|
test_tracks = generate_test_data()
|
29
29
|
|
30
|
-
assert_equal(
|
31
|
-
assert_equal(test_tracks[0].name
|
30
|
+
assert_equal([0], test_tracks[0].beats)
|
31
|
+
assert_equal("bass", test_tracks[0].name)
|
32
32
|
|
33
|
-
assert_equal(
|
34
|
-
assert_equal(test_tracks[1].name
|
33
|
+
assert_equal([0, 1], test_tracks[1].beats)
|
34
|
+
assert_equal("bass", test_tracks[1].name)
|
35
35
|
|
36
|
-
assert_equal(test_tracks[2].beats
|
37
|
-
assert_equal(
|
38
|
-
assert_equal(
|
39
|
-
assert_equal(
|
36
|
+
assert_equal([3, 1], test_tracks[2].beats)
|
37
|
+
assert_equal([0, 2, 2, 2, 2], test_tracks[3].beats)
|
38
|
+
assert_equal([4], test_tracks[4].beats)
|
39
|
+
assert_equal([2, 4, 4, 4, 2, 4, 4, 4, 4], test_tracks[5].beats)
|
40
40
|
end
|
41
41
|
|
42
|
+
def test_tick_count
|
43
|
+
test_tracks = generate_test_data()
|
44
|
+
|
45
|
+
assert_equal(0, test_tracks[0].tick_count())
|
46
|
+
assert_equal(1, test_tracks[1].tick_count())
|
47
|
+
assert_equal(4, test_tracks[2].tick_count())
|
48
|
+
assert_equal(8, test_tracks[3].tick_count())
|
49
|
+
assert_equal(4, test_tracks[4].tick_count())
|
50
|
+
assert_equal(32, test_tracks[5].tick_count())
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_intro_sample_length
|
54
|
+
# TODO: Add tests for when tick_sample_length has a non-zero remainder
|
55
|
+
|
56
|
+
test_tracks = generate_test_data()
|
57
|
+
|
58
|
+
tick_sample_length = W.sample_data.length # 6179.0
|
59
|
+
assert_equal(0, test_tracks[0].intro_sample_length(tick_sample_length))
|
60
|
+
assert_equal(0, test_tracks[1].intro_sample_length(tick_sample_length))
|
61
|
+
assert_equal(18537, test_tracks[2].intro_sample_length(tick_sample_length))
|
62
|
+
assert_equal(0, test_tracks[3].intro_sample_length(tick_sample_length))
|
63
|
+
assert_equal(24716, test_tracks[4].intro_sample_length(tick_sample_length))
|
64
|
+
assert_equal(12358, test_tracks[5].intro_sample_length(tick_sample_length))
|
65
|
+
end
|
66
|
+
|
42
67
|
def test_sample_length
|
43
68
|
tick_sample_lengths = [
|
44
|
-
W.sample_data.length, # 13860.0
|
45
|
-
(W.sample_rate * SECONDS_IN_MINUTE) / 99 / 4, # 6681.81818181818
|
46
|
-
(W.sample_rate * SECONDS_IN_MINUTE) / 41 / 4 # 16134.1463414634
|
69
|
+
W.sample_data.length, # 13860.0 - FIXME, not correct
|
70
|
+
(W.sample_rate * SECONDS_IN_MINUTE) / 99 / 4, # 6681.81818181818 - FIXME, not correct
|
71
|
+
(W.sample_rate * SECONDS_IN_MINUTE) / 41 / 4 # 16134.1463414634 - FIXME, not correct
|
47
72
|
]
|
48
73
|
|
49
|
-
tick_sample_lengths.each {
|
74
|
+
tick_sample_lengths.each {|tick_sample_length| helper_test_sample_length(tick_sample_length) }
|
50
75
|
end
|
51
76
|
|
52
77
|
def helper_test_sample_length(tick_sample_length)
|
53
78
|
test_tracks = generate_test_data()
|
54
79
|
|
55
|
-
assert_equal(test_tracks[0].sample_length(tick_sample_length)
|
56
|
-
assert_equal(test_tracks[0].
|
80
|
+
assert_equal(0, test_tracks[0].sample_length(tick_sample_length))
|
81
|
+
assert_equal(test_tracks[0].sample_data(tick_sample_length)[:primary].length, test_tracks[0].sample_length(tick_sample_length))
|
57
82
|
|
58
|
-
assert_equal(test_tracks[1].sample_length(tick_sample_length)
|
59
|
-
assert_equal(test_tracks[1].
|
83
|
+
assert_equal(tick_sample_length.floor, test_tracks[1].sample_length(tick_sample_length))
|
84
|
+
assert_equal(test_tracks[1].sample_data(tick_sample_length)[:primary].length, test_tracks[1].sample_length(tick_sample_length))
|
60
85
|
|
61
|
-
assert_equal(test_tracks[2].sample_length(tick_sample_length)
|
62
|
-
assert_equal(test_tracks[2].
|
86
|
+
assert_equal((tick_sample_length * 4).floor, test_tracks[2].sample_length(tick_sample_length))
|
87
|
+
assert_equal(test_tracks[2].sample_data(tick_sample_length)[:primary].length, test_tracks[2].sample_length(tick_sample_length))
|
63
88
|
|
64
|
-
assert_equal(test_tracks[3].sample_length(tick_sample_length)
|
65
|
-
assert_equal(test_tracks[3].
|
89
|
+
assert_equal((tick_sample_length * 8).floor, test_tracks[3].sample_length(tick_sample_length))
|
90
|
+
assert_equal(test_tracks[3].sample_data(tick_sample_length)[:primary].length, test_tracks[3].sample_length(tick_sample_length))
|
66
91
|
|
67
|
-
assert_equal(test_tracks[4].sample_length(tick_sample_length)
|
68
|
-
assert_equal(test_tracks[4].
|
92
|
+
assert_equal((tick_sample_length * 4).floor, test_tracks[4].sample_length(tick_sample_length))
|
93
|
+
assert_equal(test_tracks[4].sample_data(tick_sample_length)[:primary].length, test_tracks[4].sample_length(tick_sample_length))
|
69
94
|
|
70
|
-
assert_equal(test_tracks[5].sample_length(tick_sample_length)
|
71
|
-
assert_equal(test_tracks[5].
|
95
|
+
assert_equal((tick_sample_length * 32).floor, test_tracks[5].sample_length(tick_sample_length))
|
96
|
+
assert_equal(test_tracks[5].sample_data(tick_sample_length)[:primary].length, test_tracks[5].sample_length(tick_sample_length))
|
72
97
|
end
|
73
98
|
|
74
99
|
def test_sample_length_with_overflow
|
75
100
|
tick_sample_lengths = [
|
76
|
-
W.sample_data.length, # 13860.0
|
77
|
-
(W.sample_rate * SECONDS_IN_MINUTE) / 99 / 4, # 6681.81818181818
|
78
|
-
(W.sample_rate * SECONDS_IN_MINUTE) / 41 / 4 # 16134.1463414634
|
101
|
+
W.sample_data.length, # 13860.0 - FIXME, not correct
|
102
|
+
(W.sample_rate * SECONDS_IN_MINUTE) / 99 / 4, # 6681.81818181818 - FIXME, not correct
|
103
|
+
(W.sample_rate * SECONDS_IN_MINUTE) / 41 / 4 # 16134.1463414634 - FIXME, not correct
|
79
104
|
]
|
80
105
|
|
81
106
|
tick_sample_lengths.each { |tick_sample_length| helper_test_sample_length_with_overflow(tick_sample_length) }
|
@@ -86,69 +111,50 @@ class TrackTest < Test::Unit::TestCase
|
|
86
111
|
test_tracks = generate_test_data()
|
87
112
|
|
88
113
|
sample_data = test_tracks[0].sample_data(tick_sample_length)
|
89
|
-
assert_equal(test_tracks[0].sample_length_with_overflow(tick_sample_length)
|
90
|
-
assert_equal(
|
114
|
+
assert_equal(0, test_tracks[0].sample_length_with_overflow(tick_sample_length))
|
115
|
+
assert_equal(sample_data[:primary].length + sample_data[:overflow].length, test_tracks[0].sample_length_with_overflow(tick_sample_length))
|
91
116
|
|
92
117
|
sample_data = test_tracks[1].sample_data(tick_sample_length)
|
93
118
|
if(wave_sample_length > tick_sample_length * test_tracks[1].beats.last)
|
94
|
-
assert_equal(test_tracks[1].sample_length_with_overflow(tick_sample_length)
|
119
|
+
assert_equal(wave_sample_length, test_tracks[1].sample_length_with_overflow(tick_sample_length))
|
95
120
|
else
|
96
|
-
assert_equal(test_tracks[1].sample_length_with_overflow(tick_sample_length)
|
97
|
-
assert_equal(
|
121
|
+
assert_equal(tick_sample_length.floor, test_tracks[1].sample_length_with_overflow(tick_sample_length))
|
122
|
+
assert_equal(sample_data[:primary].length + sample_data[:overflow].length, test_tracks[1].sample_length_with_overflow(tick_sample_length))
|
98
123
|
end
|
99
124
|
|
100
125
|
sample_data = test_tracks[2].sample_data(tick_sample_length)
|
101
126
|
if(wave_sample_length > tick_sample_length * test_tracks[2].beats.last)
|
102
|
-
assert_equal(
|
103
|
-
assert_equal(
|
127
|
+
assert_equal((tick_sample_length * 4).floor + (wave_sample_length - tick_sample_length.floor), test_tracks[2].sample_length_with_overflow(tick_sample_length))
|
128
|
+
assert_equal(sample_data[:primary].length + sample_data[:overflow].length, test_tracks[2].sample_length_with_overflow(tick_sample_length))
|
104
129
|
else
|
105
|
-
assert_equal(test_tracks[2].sample_length_with_overflow(tick_sample_length)
|
106
|
-
assert_equal(
|
130
|
+
assert_equal((tick_sample_length * 4).floor, test_tracks[2].sample_length_with_overflow(tick_sample_length))
|
131
|
+
assert_equal(sample_data[:primary].length + sample_data[:overflow].length, test_tracks[2].sample_length_with_overflow(tick_sample_length))
|
107
132
|
end
|
108
133
|
|
109
134
|
sample_data = test_tracks[3].sample_data(tick_sample_length)
|
110
135
|
if(wave_sample_length > tick_sample_length * test_tracks[3].beats.last)
|
111
|
-
assert_equal(
|
112
|
-
assert_equal(
|
136
|
+
assert_equal((tick_sample_length * 8).floor + (wave_sample_length - (tick_sample_length * 2).floor), test_tracks[3].sample_length_with_overflow(tick_sample_length))
|
137
|
+
assert_equal(sample_data[:primary].length + sample_data[:overflow].length, test_tracks[3].sample_length_with_overflow(tick_sample_length))
|
113
138
|
else
|
114
|
-
assert_equal(test_tracks[3].sample_length_with_overflow(tick_sample_length)
|
115
|
-
assert_equal(
|
139
|
+
assert_equal((tick_sample_length * 8).floor, test_tracks[3].sample_length_with_overflow(tick_sample_length))
|
140
|
+
assert_equal(sample_data[:primary].length + sample_data[:overflow].length, test_tracks[3].sample_length_with_overflow(tick_sample_length))
|
116
141
|
end
|
117
142
|
|
118
143
|
sample_data = test_tracks[4].sample_data(tick_sample_length)
|
119
|
-
assert_equal(test_tracks[4].sample_length_with_overflow(tick_sample_length)
|
120
|
-
assert_equal(
|
144
|
+
assert_equal((tick_sample_length * 4).floor, test_tracks[4].sample_length_with_overflow(tick_sample_length))
|
145
|
+
assert_equal(sample_data[:primary].length + sample_data[:overflow].length, test_tracks[4].sample_length_with_overflow(tick_sample_length))
|
121
146
|
|
122
147
|
sample_data = test_tracks[5].sample_data(tick_sample_length)
|
123
|
-
assert_equal(test_tracks[5].sample_length_with_overflow(tick_sample_length)
|
124
|
-
assert_equal(
|
148
|
+
assert_equal((tick_sample_length * 32).floor, test_tracks[5].sample_length_with_overflow(tick_sample_length))
|
149
|
+
assert_equal(sample_data[:primary].length + sample_data[:overflow].length, test_tracks[5].sample_length_with_overflow(tick_sample_length))
|
125
150
|
end
|
126
|
-
|
127
|
-
def test_sample_data_overflow
|
128
|
-
track = generate_test_data()[2]
|
129
|
-
tick_sample_length = W.sample_data.length # 6179.0
|
130
151
|
|
131
|
-
overflow = W.sample_data[(W.sample_data.length / 2)..W.sample_data.length]
|
132
|
-
expected_sample_data = zeroes(tick_sample_length * 3) + W.sample_data
|
133
|
-
expected_sample_data[0...overflow.length] = overflow
|
134
|
-
actual_sample_data = track.sample_data(tick_sample_length, overflow)
|
135
|
-
assert_equal(actual_sample_data[:primary], expected_sample_data)
|
136
|
-
|
137
|
-
# Call sample_data() again with different overflow, to verify that cached
|
138
|
-
# sample data only contains the primary sample data.
|
139
|
-
overflow = W.sample_data[0..(W.sample_data.length / 2)]
|
140
|
-
expected_sample_data = zeroes(tick_sample_length * 3) + W.sample_data
|
141
|
-
expected_sample_data[0...overflow.length] = overflow
|
142
|
-
actual_sample_data = track.sample_data(tick_sample_length, overflow)
|
143
|
-
assert_equal(actual_sample_data[:primary], expected_sample_data)
|
144
|
-
end
|
145
|
-
|
146
152
|
def test_sample_data
|
147
153
|
sample_data = W.sample_data
|
148
154
|
|
149
155
|
tick_sample_length = W.sample_data.length # 6179.0
|
150
156
|
test_tracks = generate_test_data()
|
151
|
-
assert_equal(
|
157
|
+
assert_equal({:primary => [], :overflow => []}, test_tracks[0].sample_data(tick_sample_length))
|
152
158
|
helper_test_sample_data(test_tracks[1], tick_sample_length, sample_data[0...tick_sample_length], [])
|
153
159
|
helper_test_sample_data(test_tracks[2], tick_sample_length, zeroes(tick_sample_length * 3) + sample_data, [])
|
154
160
|
helper_test_sample_data(test_tracks[3], tick_sample_length, (sample_data + zeroes(tick_sample_length)) * 4, [])
|
@@ -158,7 +164,7 @@ class TrackTest < Test::Unit::TestCase
|
|
158
164
|
|
159
165
|
tick_sample_length = (W.sample_rate * 60.0) / 220 / 4 # 3006.818181818181818
|
160
166
|
test_tracks = generate_test_data()
|
161
|
-
assert_equal(
|
167
|
+
assert_equal({:primary => [], :overflow => []}, test_tracks[0].sample_data(tick_sample_length))
|
162
168
|
helper_test_sample_data(test_tracks[1], tick_sample_length, sample_data[0...tick_sample_length.floor], sample_data[tick_sample_length.floor...sample_data.length])
|
163
169
|
#helper_test_sample_data(test_tracks[2], tick_sample_length, zeroes(tick_sample_length * 3) + sample_data[0..tick_sample_length.floor], sample_data[(tick_sample_length.floor)...sample_data.length])
|
164
170
|
#helper_test_sample_data(test_tracks[3], tick_sample_length,
|
@@ -172,7 +178,7 @@ class TrackTest < Test::Unit::TestCase
|
|
172
178
|
|
173
179
|
tick_sample_length = (W.sample_rate * 60.0) / 99 / 4 # 6681.818181818181818
|
174
180
|
test_tracks = generate_test_data()
|
175
|
-
assert_equal(
|
181
|
+
assert_equal({:primary => [], :overflow => []}, test_tracks[0].sample_data(tick_sample_length))
|
176
182
|
helper_test_sample_data(test_tracks[1], tick_sample_length, sample_data + zeroes(tick_sample_length - W.sample_data.length), [])
|
177
183
|
helper_test_sample_data(test_tracks[2], tick_sample_length, zeroes(tick_sample_length * 3) + sample_data + zeroes(tick_sample_length - sample_data.length + 1), [])
|
178
184
|
helper_test_sample_data(test_tracks[3], tick_sample_length,
|
@@ -187,12 +193,12 @@ class TrackTest < Test::Unit::TestCase
|
|
187
193
|
def helper_test_sample_data(track, tick_sample_length, expected_primary, expected_overflow)
|
188
194
|
sample_data = track.sample_data(tick_sample_length)
|
189
195
|
|
190
|
-
assert_equal(sample_data.class
|
191
|
-
assert_equal(sample_data.keys.map{|key| key.to_s}.sort
|
192
|
-
assert_equal(sample_data[:primary].length
|
193
|
-
assert_equal(sample_data[:overflow].length
|
194
|
-
assert_equal(sample_data[:primary]
|
195
|
-
assert_equal(sample_data[:overflow]
|
196
|
+
assert_equal(Hash, sample_data.class)
|
197
|
+
assert_equal(["overflow", "primary"], sample_data.keys.map{|key| key.to_s}.sort)
|
198
|
+
assert_equal(expected_primary.length, sample_data[:primary].length)
|
199
|
+
assert_equal(expected_overflow.length, sample_data[:overflow].length)
|
200
|
+
assert_equal(expected_primary, sample_data[:primary])
|
201
|
+
assert_equal(expected_overflow, sample_data[:overflow])
|
196
202
|
end
|
197
203
|
|
198
204
|
private
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beats
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joel Strait
|
@@ -9,20 +9,11 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-
|
12
|
+
date: 2010-07-13 00:00:00 -04:00
|
13
13
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
16
|
-
|
17
|
-
type: :runtime
|
18
|
-
version_requirement:
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
20
|
-
requirements:
|
21
|
-
- - "="
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.3.0
|
24
|
-
version:
|
25
|
-
description: A drum machine that uses text files. Feed it a YAML file, and it will produce a Wave file.
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: A command-line drum machine. Feed it a song notated in YAML, and it will produce a precision-milled Wave file of impeccable timing and feel.
|
26
17
|
email: ""
|
27
18
|
executables:
|
28
19
|
- beats
|
@@ -33,24 +24,162 @@ extra_rdoc_files: []
|
|
33
24
|
files:
|
34
25
|
- LICENSE
|
35
26
|
- README.markdown
|
27
|
+
- lib/beats.rb
|
28
|
+
- lib/beatswavefile.rb
|
36
29
|
- lib/kit.rb
|
37
30
|
- lib/pattern.rb
|
38
31
|
- lib/song.rb
|
32
|
+
- lib/songoptimizer.rb
|
39
33
|
- lib/songparser.rb
|
34
|
+
- lib/songsplitter.rb
|
40
35
|
- lib/track.rb
|
36
|
+
- lib/wavefile.rb
|
41
37
|
- bin/beats
|
38
|
+
- test/examples/combined.wav
|
39
|
+
- test/examples/split-agogo_high.wav
|
40
|
+
- test/examples/split-bass.wav
|
41
|
+
- test/examples/split-hh_closed.wav
|
42
|
+
- test/examples/split-snare.wav
|
43
|
+
- test/examples/split-tom2.wav
|
44
|
+
- test/examples/split-tom4.wav
|
45
|
+
- test/fixtures/expected_output/example_combined_mono_16.wav
|
46
|
+
- test/fixtures/expected_output/example_combined_mono_8.wav
|
47
|
+
- test/fixtures/expected_output/example_combined_stereo_16.wav
|
48
|
+
- test/fixtures/expected_output/example_combined_stereo_8.wav
|
49
|
+
- test/fixtures/expected_output/example_split_mono_16-agogo.wav
|
50
|
+
- test/fixtures/expected_output/example_split_mono_16-bass.wav
|
51
|
+
- test/fixtures/expected_output/example_split_mono_16-hh_closed.wav
|
52
|
+
- test/fixtures/expected_output/example_split_mono_16-snare.wav
|
53
|
+
- test/fixtures/expected_output/example_split_mono_16-tom2_mono_16.wav
|
54
|
+
- test/fixtures/expected_output/example_split_mono_16-tom4_mono_16.wav
|
55
|
+
- test/fixtures/expected_output/example_split_mono_8-agogo.wav
|
56
|
+
- test/fixtures/expected_output/example_split_mono_8-bass.wav
|
57
|
+
- test/fixtures/expected_output/example_split_mono_8-hh_closed.wav
|
58
|
+
- test/fixtures/expected_output/example_split_mono_8-snare.wav
|
59
|
+
- test/fixtures/expected_output/example_split_mono_8-tom2_mono_8.wav
|
60
|
+
- test/fixtures/expected_output/example_split_mono_8-tom4_mono_8.wav
|
61
|
+
- test/fixtures/expected_output/example_split_stereo_16-agogo.wav
|
62
|
+
- test/fixtures/expected_output/example_split_stereo_16-bass.wav
|
63
|
+
- test/fixtures/expected_output/example_split_stereo_16-hh_closed.wav
|
64
|
+
- test/fixtures/expected_output/example_split_stereo_16-snare.wav
|
65
|
+
- test/fixtures/expected_output/example_split_stereo_16-tom2_stereo_16.wav
|
66
|
+
- test/fixtures/expected_output/example_split_stereo_16-tom4_stereo_16.wav
|
67
|
+
- test/fixtures/expected_output/example_split_stereo_8-agogo.wav
|
68
|
+
- test/fixtures/expected_output/example_split_stereo_8-bass.wav
|
69
|
+
- test/fixtures/expected_output/example_split_stereo_8-hh_closed.wav
|
70
|
+
- test/fixtures/expected_output/example_split_stereo_8-snare.wav
|
71
|
+
- test/fixtures/expected_output/example_split_stereo_8-tom2_stereo_8.wav
|
72
|
+
- test/fixtures/expected_output/example_split_stereo_8-tom4_stereo_8.wav
|
73
|
+
- test/fixtures/invalid/bad_repeat_count.txt
|
74
|
+
- test/fixtures/invalid/bad_rhythm.txt
|
75
|
+
- test/fixtures/invalid/bad_structure.txt
|
76
|
+
- test/fixtures/invalid/bad_tempo.txt
|
77
|
+
- test/fixtures/invalid/no_header.txt
|
78
|
+
- test/fixtures/invalid/no_structure.txt
|
79
|
+
- test/fixtures/invalid/pattern_with_no_tracks.txt
|
80
|
+
- test/fixtures/invalid/sound_in_kit_not_found.txt
|
81
|
+
- test/fixtures/invalid/sound_in_track_not_found.txt
|
82
|
+
- test/fixtures/invalid/template.txt
|
83
|
+
- test/fixtures/valid/example_mono_16.txt
|
84
|
+
- test/fixtures/valid/example_mono_8.txt
|
85
|
+
- test/fixtures/valid/example_no_kit.txt
|
86
|
+
- test/fixtures/valid/example_stereo_16.txt
|
87
|
+
- test/fixtures/valid/example_stereo_8.txt
|
88
|
+
- test/fixtures/valid/example_with_empty_track.txt
|
89
|
+
- test/fixtures/valid/example_with_kit.txt
|
90
|
+
- test/fixtures/valid/no_tempo.txt
|
91
|
+
- test/fixtures/valid/pattern_with_overflow.txt
|
92
|
+
- test/fixtures/valid/repeats_not_specified.txt
|
93
|
+
- test/fixtures/yaml/song_yaml.txt
|
42
94
|
- test/includes.rb
|
95
|
+
- test/integration.rb
|
43
96
|
- test/kit_test.rb
|
44
97
|
- test/pattern_test.rb
|
45
98
|
- test/song_test.rb
|
99
|
+
- test/songoptimizer_test.rb
|
46
100
|
- test/songparser_test.rb
|
101
|
+
- test/sounds/agogo_high_mono_16.wav
|
102
|
+
- test/sounds/agogo_high_mono_8.wav
|
103
|
+
- test/sounds/agogo_high_stereo_16.wav
|
104
|
+
- test/sounds/agogo_high_stereo_8.wav
|
105
|
+
- test/sounds/agogo_low_mono_16.wav
|
106
|
+
- test/sounds/agogo_low_mono_8.wav
|
107
|
+
- test/sounds/agogo_low_stereo_16.wav
|
108
|
+
- test/sounds/agogo_low_stereo_8.wav
|
109
|
+
- test/sounds/bass2_mono_16.wav
|
110
|
+
- test/sounds/bass2_mono_8.wav
|
111
|
+
- test/sounds/bass2_stereo_16.wav
|
112
|
+
- test/sounds/bass2_stereo_8.wav
|
47
113
|
- test/sounds/bass_mono_16.wav
|
48
114
|
- test/sounds/bass_mono_8.wav
|
49
115
|
- test/sounds/bass_stereo_16.wav
|
116
|
+
- test/sounds/bass_stereo_8.wav
|
117
|
+
- test/sounds/clave_high_mono_16.wav
|
118
|
+
- test/sounds/clave_high_mono_8.wav
|
119
|
+
- test/sounds/clave_high_stereo_16.wav
|
120
|
+
- test/sounds/clave_high_stereo_8.wav
|
121
|
+
- test/sounds/clave_low_mono_16.wav
|
122
|
+
- test/sounds/clave_low_mono_8.wav
|
123
|
+
- test/sounds/clave_low_stereo_16.wav
|
124
|
+
- test/sounds/clave_low_stereo_8.wav
|
125
|
+
- test/sounds/conga_high_mono_16.wav
|
126
|
+
- test/sounds/conga_high_mono_8.wav
|
127
|
+
- test/sounds/conga_high_stereo_16.wav
|
128
|
+
- test/sounds/conga_high_stereo_8.wav
|
129
|
+
- test/sounds/conga_low_mono_16.wav
|
130
|
+
- test/sounds/conga_low_mono_8.wav
|
131
|
+
- test/sounds/conga_low_stereo_16.wav
|
132
|
+
- test/sounds/conga_low_stereo_8.wav
|
133
|
+
- test/sounds/cowbell_high_mono_16.wav
|
134
|
+
- test/sounds/cowbell_high_mono_8.wav
|
135
|
+
- test/sounds/cowbell_high_stereo_16.wav
|
136
|
+
- test/sounds/cowbell_high_stereo_8.wav
|
137
|
+
- test/sounds/cowbell_low_mono_16.wav
|
138
|
+
- test/sounds/cowbell_low_mono_8.wav
|
139
|
+
- test/sounds/cowbell_low_stereo_16.wav
|
140
|
+
- test/sounds/cowbell_low_stereo_8.wav
|
141
|
+
- test/sounds/hh_closed_mono_16.wav
|
50
142
|
- test/sounds/hh_closed_mono_8.wav
|
143
|
+
- test/sounds/hh_closed_stereo_16.wav
|
144
|
+
- test/sounds/hh_closed_stereo_8.wav
|
145
|
+
- test/sounds/hh_open_mono_16.wav
|
51
146
|
- test/sounds/hh_open_mono_8.wav
|
147
|
+
- test/sounds/hh_open_stereo_16.wav
|
148
|
+
- test/sounds/hh_open_stereo_8.wav
|
149
|
+
- test/sounds/ride_mono_16.wav
|
52
150
|
- test/sounds/ride_mono_8.wav
|
151
|
+
- test/sounds/ride_stereo_16.wav
|
152
|
+
- test/sounds/ride_stereo_8.wav
|
153
|
+
- test/sounds/rim_mono_16.wav
|
154
|
+
- test/sounds/rim_mono_8.wav
|
155
|
+
- test/sounds/rim_stereo_16.wav
|
156
|
+
- test/sounds/rim_stereo_8.wav
|
157
|
+
- test/sounds/sine-mono-8bit.wav
|
158
|
+
- test/sounds/snare2_mono_16.wav
|
159
|
+
- test/sounds/snare2_mono_8.wav
|
160
|
+
- test/sounds/snare2_stereo_16.wav
|
161
|
+
- test/sounds/snare2_stereo_8.wav
|
162
|
+
- test/sounds/snare_mono_16.wav
|
53
163
|
- test/sounds/snare_mono_8.wav
|
164
|
+
- test/sounds/snare_stereo_16.wav
|
165
|
+
- test/sounds/snare_stereo_8.wav
|
166
|
+
- test/sounds/tom1_mono_16.wav
|
167
|
+
- test/sounds/tom1_mono_8.wav
|
168
|
+
- test/sounds/tom1_stereo_16.wav
|
169
|
+
- test/sounds/tom1_stereo_8.wav
|
170
|
+
- test/sounds/tom2_mono_16.wav
|
171
|
+
- test/sounds/tom2_mono_8.wav
|
172
|
+
- test/sounds/tom2_stereo_16.wav
|
173
|
+
- test/sounds/tom2_stereo_8.wav
|
174
|
+
- test/sounds/tom3_mono_16.wav
|
175
|
+
- test/sounds/tom3_mono_8.wav
|
176
|
+
- test/sounds/tom3_stereo_16.wav
|
177
|
+
- test/sounds/tom3_stereo_8.wav
|
178
|
+
- test/sounds/tom4_mono_16.wav
|
179
|
+
- test/sounds/tom4_mono_8.wav
|
180
|
+
- test/sounds/tom4_stereo_16.wav
|
181
|
+
- test/sounds/tom4_stereo_8.wav
|
182
|
+
- test/sounds/tone.wav
|
54
183
|
- test/track_test.rb
|
55
184
|
has_rdoc: true
|
56
185
|
homepage: http://beatsdrummachine.com/
|
@@ -79,18 +208,151 @@ rubyforge_project:
|
|
79
208
|
rubygems_version: 1.3.5
|
80
209
|
signing_key:
|
81
210
|
specification_version: 3
|
82
|
-
summary: A drum machine
|
211
|
+
summary: A command-line drum machine. Feed it a song notated in YAML, and it will produce a precision-milled Wave file of impeccable timing and feel.
|
83
212
|
test_files:
|
213
|
+
- test/examples/combined.wav
|
214
|
+
- test/examples/split-agogo_high.wav
|
215
|
+
- test/examples/split-bass.wav
|
216
|
+
- test/examples/split-hh_closed.wav
|
217
|
+
- test/examples/split-snare.wav
|
218
|
+
- test/examples/split-tom2.wav
|
219
|
+
- test/examples/split-tom4.wav
|
220
|
+
- test/fixtures/expected_output/example_combined_mono_16.wav
|
221
|
+
- test/fixtures/expected_output/example_combined_mono_8.wav
|
222
|
+
- test/fixtures/expected_output/example_combined_stereo_16.wav
|
223
|
+
- test/fixtures/expected_output/example_combined_stereo_8.wav
|
224
|
+
- test/fixtures/expected_output/example_split_mono_16-agogo.wav
|
225
|
+
- test/fixtures/expected_output/example_split_mono_16-bass.wav
|
226
|
+
- test/fixtures/expected_output/example_split_mono_16-hh_closed.wav
|
227
|
+
- test/fixtures/expected_output/example_split_mono_16-snare.wav
|
228
|
+
- test/fixtures/expected_output/example_split_mono_16-tom2_mono_16.wav
|
229
|
+
- test/fixtures/expected_output/example_split_mono_16-tom4_mono_16.wav
|
230
|
+
- test/fixtures/expected_output/example_split_mono_8-agogo.wav
|
231
|
+
- test/fixtures/expected_output/example_split_mono_8-bass.wav
|
232
|
+
- test/fixtures/expected_output/example_split_mono_8-hh_closed.wav
|
233
|
+
- test/fixtures/expected_output/example_split_mono_8-snare.wav
|
234
|
+
- test/fixtures/expected_output/example_split_mono_8-tom2_mono_8.wav
|
235
|
+
- test/fixtures/expected_output/example_split_mono_8-tom4_mono_8.wav
|
236
|
+
- test/fixtures/expected_output/example_split_stereo_16-agogo.wav
|
237
|
+
- test/fixtures/expected_output/example_split_stereo_16-bass.wav
|
238
|
+
- test/fixtures/expected_output/example_split_stereo_16-hh_closed.wav
|
239
|
+
- test/fixtures/expected_output/example_split_stereo_16-snare.wav
|
240
|
+
- test/fixtures/expected_output/example_split_stereo_16-tom2_stereo_16.wav
|
241
|
+
- test/fixtures/expected_output/example_split_stereo_16-tom4_stereo_16.wav
|
242
|
+
- test/fixtures/expected_output/example_split_stereo_8-agogo.wav
|
243
|
+
- test/fixtures/expected_output/example_split_stereo_8-bass.wav
|
244
|
+
- test/fixtures/expected_output/example_split_stereo_8-hh_closed.wav
|
245
|
+
- test/fixtures/expected_output/example_split_stereo_8-snare.wav
|
246
|
+
- test/fixtures/expected_output/example_split_stereo_8-tom2_stereo_8.wav
|
247
|
+
- test/fixtures/expected_output/example_split_stereo_8-tom4_stereo_8.wav
|
248
|
+
- test/fixtures/invalid/bad_repeat_count.txt
|
249
|
+
- test/fixtures/invalid/bad_rhythm.txt
|
250
|
+
- test/fixtures/invalid/bad_structure.txt
|
251
|
+
- test/fixtures/invalid/bad_tempo.txt
|
252
|
+
- test/fixtures/invalid/no_header.txt
|
253
|
+
- test/fixtures/invalid/no_structure.txt
|
254
|
+
- test/fixtures/invalid/pattern_with_no_tracks.txt
|
255
|
+
- test/fixtures/invalid/sound_in_kit_not_found.txt
|
256
|
+
- test/fixtures/invalid/sound_in_track_not_found.txt
|
257
|
+
- test/fixtures/invalid/template.txt
|
258
|
+
- test/fixtures/valid/example_mono_16.txt
|
259
|
+
- test/fixtures/valid/example_mono_8.txt
|
260
|
+
- test/fixtures/valid/example_no_kit.txt
|
261
|
+
- test/fixtures/valid/example_stereo_16.txt
|
262
|
+
- test/fixtures/valid/example_stereo_8.txt
|
263
|
+
- test/fixtures/valid/example_with_empty_track.txt
|
264
|
+
- test/fixtures/valid/example_with_kit.txt
|
265
|
+
- test/fixtures/valid/no_tempo.txt
|
266
|
+
- test/fixtures/valid/pattern_with_overflow.txt
|
267
|
+
- test/fixtures/valid/repeats_not_specified.txt
|
268
|
+
- test/fixtures/yaml/song_yaml.txt
|
84
269
|
- test/includes.rb
|
270
|
+
- test/integration.rb
|
85
271
|
- test/kit_test.rb
|
86
272
|
- test/pattern_test.rb
|
87
273
|
- test/song_test.rb
|
274
|
+
- test/songoptimizer_test.rb
|
88
275
|
- test/songparser_test.rb
|
276
|
+
- test/sounds/agogo_high_mono_16.wav
|
277
|
+
- test/sounds/agogo_high_mono_8.wav
|
278
|
+
- test/sounds/agogo_high_stereo_16.wav
|
279
|
+
- test/sounds/agogo_high_stereo_8.wav
|
280
|
+
- test/sounds/agogo_low_mono_16.wav
|
281
|
+
- test/sounds/agogo_low_mono_8.wav
|
282
|
+
- test/sounds/agogo_low_stereo_16.wav
|
283
|
+
- test/sounds/agogo_low_stereo_8.wav
|
284
|
+
- test/sounds/bass2_mono_16.wav
|
285
|
+
- test/sounds/bass2_mono_8.wav
|
286
|
+
- test/sounds/bass2_stereo_16.wav
|
287
|
+
- test/sounds/bass2_stereo_8.wav
|
89
288
|
- test/sounds/bass_mono_16.wav
|
90
289
|
- test/sounds/bass_mono_8.wav
|
91
290
|
- test/sounds/bass_stereo_16.wav
|
291
|
+
- test/sounds/bass_stereo_8.wav
|
292
|
+
- test/sounds/clave_high_mono_16.wav
|
293
|
+
- test/sounds/clave_high_mono_8.wav
|
294
|
+
- test/sounds/clave_high_stereo_16.wav
|
295
|
+
- test/sounds/clave_high_stereo_8.wav
|
296
|
+
- test/sounds/clave_low_mono_16.wav
|
297
|
+
- test/sounds/clave_low_mono_8.wav
|
298
|
+
- test/sounds/clave_low_stereo_16.wav
|
299
|
+
- test/sounds/clave_low_stereo_8.wav
|
300
|
+
- test/sounds/conga_high_mono_16.wav
|
301
|
+
- test/sounds/conga_high_mono_8.wav
|
302
|
+
- test/sounds/conga_high_stereo_16.wav
|
303
|
+
- test/sounds/conga_high_stereo_8.wav
|
304
|
+
- test/sounds/conga_low_mono_16.wav
|
305
|
+
- test/sounds/conga_low_mono_8.wav
|
306
|
+
- test/sounds/conga_low_stereo_16.wav
|
307
|
+
- test/sounds/conga_low_stereo_8.wav
|
308
|
+
- test/sounds/cowbell_high_mono_16.wav
|
309
|
+
- test/sounds/cowbell_high_mono_8.wav
|
310
|
+
- test/sounds/cowbell_high_stereo_16.wav
|
311
|
+
- test/sounds/cowbell_high_stereo_8.wav
|
312
|
+
- test/sounds/cowbell_low_mono_16.wav
|
313
|
+
- test/sounds/cowbell_low_mono_8.wav
|
314
|
+
- test/sounds/cowbell_low_stereo_16.wav
|
315
|
+
- test/sounds/cowbell_low_stereo_8.wav
|
316
|
+
- test/sounds/hh_closed_mono_16.wav
|
92
317
|
- test/sounds/hh_closed_mono_8.wav
|
318
|
+
- test/sounds/hh_closed_stereo_16.wav
|
319
|
+
- test/sounds/hh_closed_stereo_8.wav
|
320
|
+
- test/sounds/hh_open_mono_16.wav
|
93
321
|
- test/sounds/hh_open_mono_8.wav
|
322
|
+
- test/sounds/hh_open_stereo_16.wav
|
323
|
+
- test/sounds/hh_open_stereo_8.wav
|
324
|
+
- test/sounds/ride_mono_16.wav
|
94
325
|
- test/sounds/ride_mono_8.wav
|
326
|
+
- test/sounds/ride_stereo_16.wav
|
327
|
+
- test/sounds/ride_stereo_8.wav
|
328
|
+
- test/sounds/rim_mono_16.wav
|
329
|
+
- test/sounds/rim_mono_8.wav
|
330
|
+
- test/sounds/rim_stereo_16.wav
|
331
|
+
- test/sounds/rim_stereo_8.wav
|
332
|
+
- test/sounds/sine-mono-8bit.wav
|
333
|
+
- test/sounds/snare2_mono_16.wav
|
334
|
+
- test/sounds/snare2_mono_8.wav
|
335
|
+
- test/sounds/snare2_stereo_16.wav
|
336
|
+
- test/sounds/snare2_stereo_8.wav
|
337
|
+
- test/sounds/snare_mono_16.wav
|
95
338
|
- test/sounds/snare_mono_8.wav
|
339
|
+
- test/sounds/snare_stereo_16.wav
|
340
|
+
- test/sounds/snare_stereo_8.wav
|
341
|
+
- test/sounds/tom1_mono_16.wav
|
342
|
+
- test/sounds/tom1_mono_8.wav
|
343
|
+
- test/sounds/tom1_stereo_16.wav
|
344
|
+
- test/sounds/tom1_stereo_8.wav
|
345
|
+
- test/sounds/tom2_mono_16.wav
|
346
|
+
- test/sounds/tom2_mono_8.wav
|
347
|
+
- test/sounds/tom2_stereo_16.wav
|
348
|
+
- test/sounds/tom2_stereo_8.wav
|
349
|
+
- test/sounds/tom3_mono_16.wav
|
350
|
+
- test/sounds/tom3_mono_8.wav
|
351
|
+
- test/sounds/tom3_stereo_16.wav
|
352
|
+
- test/sounds/tom3_stereo_8.wav
|
353
|
+
- test/sounds/tom4_mono_16.wav
|
354
|
+
- test/sounds/tom4_mono_8.wav
|
355
|
+
- test/sounds/tom4_stereo_16.wav
|
356
|
+
- test/sounds/tom4_stereo_8.wav
|
357
|
+
- test/sounds/tone.wav
|
96
358
|
- test/track_test.rb
|