170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
|
# File 'lib/picotune.rb', line 170
def buffer
@buffer ||= begin
tune_buffer_length = @sequence.reduce(0) do |acc, phrase_name|
acc + @phrases.find { |p| p.name == phrase_name }.buffer_size
end
offset = 0
samples = Array.new(tune_buffer_length) { PicoTune::Sample.new }
@sequence.each do |phrase_name|
phrase = @phrases.find { |p| p.name == phrase_name }
phrase.buffer.each_with_index do |phrase_sample, index|
tune_sample = samples[offset + index] || PicoTune::Sample.new
tune_sample.add phrase_sample
samples[offset + index] = tune_sample
end
offset += phrase.buffer_size
end
samples
end
end
|