@@ -215,22 +215,9 @@ impl ConvolverNode {
215
215
1.
216
216
} ;
217
217
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
-
232
218
let mut samples = vec ! [ 0. ; buffer. length( ) ] ;
233
- samples. iter_mut ( )
219
+ samples
220
+ . iter_mut ( )
234
221
. zip ( buffer. get_channel_data ( 0 ) )
235
222
. for_each ( |( o, i) | * o = * i * scale) ;
236
223
@@ -258,169 +245,6 @@ impl ConvolverNode {
258
245
}
259
246
}
260
247
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
-
424
248
struct ConvolverRenderer {
425
249
inner : Option < FFTConvolver < f32 > > ,
426
250
}
@@ -482,13 +306,6 @@ mod tests {
482
306
483
307
use super :: * ;
484
308
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
-
492
309
#[ test]
493
310
#[ should_panic]
494
311
fn test_buffer_sample_rate_matches ( ) {
0 commit comments