The excellent in-room sound of good speakers (LXMinis, Kii THREEs) is due to their control of the dispersion pattern of the speaker energy. In both cases this is achieved by inter-speaker unit interference, such that peaks and troughs of output from one unit coincide with troughs and peaks from the other, resulting in no effective output in certain directions. To achieve this, they use different but related techniques (I think...):
I used a base file for gnuplot (sinc.plot) - I'm using the sinc function to plot a simple sine wave in 3 dimensions, but not spherical - that's too hard to visualise, and plot!
Let's move the source, and see what that looks like...
Now let's add these two sources.
To be honest, I'm not quite sure what this is telling me at the moment. I have w = 2pi i.e. 1 Hz. I'd have to use fw where f = Hz. I also need to have the X/Y axes meaning something useful in relation to time or distance, otherwise it'll be incomprehensible.
There's definitely something going on, but it's hard to see what it is... However, it is pretty interesting, because it's very different from the result of just applying the same signal out of phase, which results in no signal at all! Weird.
We have yet to add the delay to the second signal to correspond to the distance between them. Basically, as a peak from Unit 1 passes Unit 2, Unit 2 will be emitting a trough of exactly the same depth as the peak's height, because of the delay. How do we do that?? I think I'm missing something, because I need to take off the factor I added to move Unit2 over. Hmm.
Time for some sleep.
- LXMinis
- Use the mid-range (MR) and full-range (FR) units at right angles to each other, with the MR wired out of phase relative to the FR and SW
- There is also some delay of the signal to the FR relative to the MR, about 0.06ms, or 21mm, according to miniDSP app
- Checking this: speed of sound 21deg, sea level = 1238 km/h => 343.88889 m/s => 0.349 m/msec => 0.06*349mm = 20.63mm, so pretty close
- I'm not sure the delay has anything to do with the cardioid output in this case, as it represents only 2cm, which isn't anywhere close to the distance between the speaker centres
- Kii 3s
- Two pairs of woofers, with DSP delays applied between the units in each pair, between the pairs, and between the pairs and the MR unit
- See SL's note below for how these work
The amazing Siegfried Linkwitz's website discusses many useful things, cardioid output speakers being one of them:
A cardioid speaker can be made with two opposite polarity monopole sources separated by a distance D, and with the signal to one of the sources delayed by a time T = D/c. An implementation of this concept could be a driver in a box of depth D where the rear wall is an acoustic resistor R. At long wavelengths the box internal air volume behaves as a compliance or acoustic capacitor C. The acoustic output from the rear of the box is low-passed by the RC filter and delayed relative to the front output by T = RC.So let's have a go at modelling such a thing, and actually building something. I've got lots of DSP power, not least because I have a computer, some modelling software (gnuplot), a few amplifiers, lots of MDF (!), and some allegedly identical chassis speakers.
I used a base file for gnuplot (sinc.plot) - I'm using the sinc function to plot a simple sine wave in 3 dimensions, but not spherical - that's too hard to visualise, and plot!
# set terminal png transparent nocrop enhanced size 450,320 font "arial,8"This just sets up the plot display and a few variables to make it easier. The last command generates the following plot - pretty cool!
# set output 'surface1.16.png'
set dummy u, v
set view 70, 20, 1, 1
set samples 51, 51
set isosamples 101,101
set style data lines
set ztics -1.00000,0.25,1.00000 norangelimit
set xlabel "X axis"
set xlabel offset character -3, -2, 0 font "" textcolor lt -1 norotate
set xrange [ -1.00000 : 1.00000 ] noreverse nowriteback
set ylabel "Y axis"
set ylabel offset character 3, -2, 0 font "" textcolor lt -1 rotate by -270
set yrange [ -1.00000 : 1.00000 ] noreverse nowriteback
set zlabel "Z axis"
set zlabel offset character -5, 0, 0 font "" textcolor lt -1 norotate
set zrange [ -5.00000 : 5.00000 ] noreverse nowriteback
sinc(u,v) = sin(sqrt(u**2+v**2))
GPFUN_sinc = "sinc(u,v) = sin(sqrt(u**2+v**2))"
x = 0.0
## Last datafile plotted: "$grid"
w = 2 * pi
splot [-10*w:10*w] [-10*w:10*w] sinc(u,v)
![]() |
Single source output |
Let's move the source, and see what that looks like...
![]() |
Single source, moved 10 units |
Now let's add these two sources.
givingsplot [-10*w:10*w] [-10*w:10*w] sinc(u,v) + sinc(u, v+10)
To be honest, I'm not quite sure what this is telling me at the moment. I have w = 2pi i.e. 1 Hz. I'd have to use fw where f = Hz. I also need to have the X/Y axes meaning something useful in relation to time or distance, otherwise it'll be incomprehensible.
Assume X/Y is seconds, so a 1Hz sine will show a full cycle every 1 unit => x*2*pi, y*2*pi:
splot [-10:10] [-10:10] sinc(u*w,v*w)
gives
![]() |
Single source, 1 Hz sine |
Let's try a higher frequency (f = 10):
gnuplot> freq = 10gnuplot> splot [-1:1] [-1:1] sinc(freq*u*w,freq*v*w)
![]() |
Single source, 10 Hz |
Note the changed x- and y-axis labels - this is basically a 10x zoom on the previous shot. I found using the same axis limits too confusing. Let's assume that this is 100Hz, just multiply the x- and y-axis labels by 0.1. This is now interesting to play with, because this is the frequency area of Kii cardioid behaviour. At 100Hz, the wavelength is 3.44m!! The Kii rear drivers are about 200mm or 0.2m apart. Let's model this by having the sources that far apart in time, which is about 0.58msec or 0.00058 sec. Jeez, that's hardly even going to show, especially when I multiply by 0.1! But obviously it's critical. So I need (Unit 1) - (Unit 2) - they are out of phase i.e. one wired +/-, the other wired -/+.
splot [-1:1] [-1:1] sinc(freq*u*w,freq*v*w) - sinc(freq*u*w,(freq*v*w)+ 0.000058)
![]() |
2 sources out of phase, 200mm apart, 100Hz |
We have yet to add the delay to the second signal to correspond to the distance between them. Basically, as a peak from Unit 1 passes Unit 2, Unit 2 will be emitting a trough of exactly the same depth as the peak's height, because of the delay. How do we do that?? I think I'm missing something, because I need to take off the factor I added to move Unit2 over. Hmm.
Time for some sleep.
No comments:
Post a Comment