Below is the initial interactive test program in the FAUST language for integer-delay PBAP on the eight-channel array described in §2.15 on page . Integer delays are extremely efficient computationally, but assume fixed source positions. The lowpass filter is provided to facilitate experiments with the perception of spatial aliasing at various cutoffs.
N = 8; // number of channels (speakers) MAXDELAY = 1024; // maximum delay-line length for each channel lpf = lowpass(3); // Butterworth lowpass filter to use (filter.lib) declare name "Far Field Wave Field Synthesis (FFWFS) Simple Tests"; declare author "Julius O. Smith (jos at ccrma.stanford.edu)"; import("oscillator.lib"); // saw2, pink_noise import("filter.lib"); // lowpass, smooth, ... // GUI: level = hslider("v:FFWFS/[0]Level (dB)", -10, -70, 10, 0.1); del = hslider("v:FFWFS/[1]Interspeaker Delay (samples)",0,-misd,misd,1) with { misd = int(0.5*MAXDELAY/N);}; // max inter-speaker delay freq = hslider("v:FFWFS/[2]Frequency (Hz)",440,20,10000,1); cutoff = hslider("v:FFWFS/[3]Lowpass Cutoff (Hz)",1000,20,20000,1); nsw = checkbox("v:FFWFS/[4]Sawtooth (instead of Pink Noise)"); // Signal Processing: amp = level : db2linear : smooth(0.999); signal = _ + select2(nsw,pink_noise,saw2(freq)) : lpf(cutoff); ffwfs(i) = delay(MAXDELAY,int(MAXDELAY/2)-i*del); process = signal * amp <: par(i,N,ffwfs(i));
http://arxiv.org/abs/1911.07575
.