@@ -215,22 +215,9 @@ impl ConvolverNode {
215215 1.
216216 } ;
217217
218- // Pad the response buffer with zeroes so its size is a power of 2, with 2 * 128 as min size
219- // let length = buffer.length();
220- // let padded_length = length.next_power_of_two().max(2 * RENDER_QUANTUM_SIZE);
221- // let samples: Vec<_> = (0..number_of_channels)
222- // .map(|_| {
223- // let mut samples = vec![0.; padded_length];
224- // samples[..length]
225- // .iter_mut()
226- // .zip(buffer.get_channel_data(0))
227- // .for_each(|(o, i)| *o = *i * scale);
228- // samples
229- // })
230- // .collect();
231-
232218 let mut samples = vec ! [ 0. ; buffer. length( ) ] ;
233- samples. iter_mut ( )
219+ samples
220+ . iter_mut ( )
234221 . zip ( buffer. get_channel_data ( 0 ) )
235222 . for_each ( |( o, i) | * o = * i * scale) ;
236223
@@ -258,169 +245,6 @@ impl ConvolverNode {
258245 }
259246}
260247
261- // fn roll_zero<T: Default + Copy>(signal: &mut [T], n: usize) {
262- // // roll array by n elements
263- // // zero out the last n elements
264- // let len = signal.len();
265- // signal.copy_within(n.., 0);
266- // signal[len - n..].fill(T::default());
267- // }
268-
269- // struct Fft {
270- // fft_forward: Arc<dyn RealToComplex<f32>>,
271- // fft_inverse: Arc<dyn ComplexToReal<f32>>,
272- // fft_input: Vec<f32>,
273- // fft_scratch: Vec<Complex<f32>>,
274- // fft_output: Vec<Complex<f32>>,
275- // }
276-
277- // impl Fft {
278- // fn new(length: usize) -> Self {
279- // let mut fft_planner = RealFftPlanner::<f32>::new();
280-
281- // let fft_forward = fft_planner.plan_fft_forward(length);
282- // let fft_inverse = fft_planner.plan_fft_inverse(length);
283-
284- // let fft_input = fft_forward.make_input_vec();
285- // let fft_scratch = fft_forward.make_scratch_vec();
286- // let fft_output = fft_forward.make_output_vec();
287-
288- // Self {
289- // fft_forward,
290- // fft_inverse,
291- // fft_input,
292- // fft_scratch,
293- // fft_output,
294- // }
295- // }
296-
297- // fn real(&mut self) -> &mut [f32] {
298- // &mut self.fft_input[..]
299- // }
300-
301- // fn complex(&mut self) -> &mut [Complex<f32>] {
302- // &mut self.fft_output[..]
303- // }
304-
305- // fn process(&mut self) -> &[Complex<f32>] {
306- // self.fft_forward
307- // .process_with_scratch(
308- // &mut self.fft_input,
309- // &mut self.fft_output,
310- // &mut self.fft_scratch,
311- // )
312- // .unwrap();
313- // &self.fft_output[..]
314- // }
315-
316- // fn inverse(&mut self) -> &[f32] {
317- // self.fft_inverse
318- // .process_with_scratch(
319- // &mut self.fft_output,
320- // &mut self.fft_input,
321- // &mut self.fft_scratch,
322- // )
323- // .unwrap();
324- // &self.fft_input[..]
325- // }
326- // }
327-
328- // struct ConvolverRendererInner {
329- // num_ir_blocks: usize,
330- // h: Vec<Complex<f32>>,
331- // fdl: Vec<Complex<f32>>,
332- // out: Vec<f32>,
333- // fft2: Fft,
334- // }
335-
336- // impl ConvolverRendererInner {
337- // fn new(response: AudioBuffer) -> Self {
338- // // mono processing only for now
339- // let response = response.channel_data(0).as_slice();
340-
341- // let mut fft2 = Fft::new(2 * RENDER_QUANTUM_SIZE);
342- // let p = response.len();
343-
344- // let num_ir_blocks = p / RENDER_QUANTUM_SIZE;
345-
346- // let mut h = vec![Complex::default(); num_ir_blocks * 2 * RENDER_QUANTUM_SIZE];
347- // for (resp_fft, resp) in h
348- // .chunks_mut(2 * RENDER_QUANTUM_SIZE)
349- // .zip(response.chunks(RENDER_QUANTUM_SIZE))
350- // {
351- // // fill resp_fft with FFT of resp.zero_pad(RENDER_QUANTUM_SIZE)
352- // fft2.real()[..RENDER_QUANTUM_SIZE].copy_from_slice(resp);
353- // fft2.real()[RENDER_QUANTUM_SIZE..].fill(0.);
354- // resp_fft[..fft2.complex().len()].copy_from_slice(fft2.process());
355- // }
356-
357- // let fdl = vec![Complex::default(); 2 * RENDER_QUANTUM_SIZE * num_ir_blocks];
358- // let out = vec![0.; 2 * RENDER_QUANTUM_SIZE - 1];
359-
360- // Self {
361- // num_ir_blocks,
362- // h,
363- // fdl,
364- // out,
365- // fft2,
366- // }
367- // }
368-
369- // fn process(&mut self, input: &[f32], output: &mut [f32]) {
370- // self.fft2.real()[..RENDER_QUANTUM_SIZE].copy_from_slice(input);
371- // self.fft2.real()[RENDER_QUANTUM_SIZE..].fill(0.);
372- // let spectrum = self.fft2.process();
373-
374- // self.fdl
375- // .chunks_mut(2 * RENDER_QUANTUM_SIZE)
376- // .zip(self.h.chunks(2 * RENDER_QUANTUM_SIZE))
377- // .for_each(|(fdl_c, h_c)| {
378- // fdl_c
379- // .iter_mut()
380- // .zip(h_c)
381- // .zip(spectrum)
382- // .for_each(|((f, h), s)| *f += h * s)
383- // });
384-
385- // let c_len = self.fft2.complex().len();
386- // self.fft2.complex().copy_from_slice(&self.fdl[..c_len]);
387- // let inverse = self.fft2.inverse();
388- // self.out.iter_mut().zip(inverse).for_each(|(o, i)| {
389- // *o += i / (2 * RENDER_QUANTUM_SIZE) as f32;
390- // });
391-
392- // output.copy_from_slice(&self.out[..RENDER_QUANTUM_SIZE]);
393-
394- // roll_zero(&mut self.fdl[..], 2 * RENDER_QUANTUM_SIZE);
395- // roll_zero(&mut self.out[..], RENDER_QUANTUM_SIZE);
396- // }
397-
398- // fn tail(&mut self, output: &mut AudioRenderQuantum) -> bool {
399- // if self.num_ir_blocks == 0 {
400- // output.make_silent();
401- // return false;
402- // }
403-
404- // self.num_ir_blocks -= 1;
405-
406- // let c_len = self.fft2.complex().len();
407- // self.fft2.complex().copy_from_slice(&self.fdl[..c_len]);
408- // let inverse = self.fft2.inverse();
409- // self.out.iter_mut().zip(inverse).for_each(|(o, i)| {
410- // *o += i / (2 * RENDER_QUANTUM_SIZE) as f32;
411- // });
412-
413- // output
414- // .channel_data_mut(0)
415- // .copy_from_slice(&self.out[..RENDER_QUANTUM_SIZE]);
416-
417- // roll_zero(&mut self.fdl[..], 2 * RENDER_QUANTUM_SIZE);
418- // roll_zero(&mut self.out[..], RENDER_QUANTUM_SIZE);
419-
420- // self.num_ir_blocks > 0
421- // }
422- // }
423-
424248struct ConvolverRenderer {
425249 inner : Option < FFTConvolver < f32 > > ,
426250}
@@ -482,13 +306,6 @@ mod tests {
482306
483307 use super :: * ;
484308
485- // #[test]
486- // fn test_roll_zero() {
487- // let mut input = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
488- // roll_zero(&mut input, 3);
489- // assert_eq!(&input, &[4, 5, 6, 7, 8, 9, 10, 0, 0, 0]);
490- // }
491-
492309 #[ test]
493310 #[ should_panic]
494311 fn test_buffer_sample_rate_matches ( ) {
0 commit comments