Horn Loudspeaker Simulation part 1: Radiation and TMatrix
Many readers may be familiar with the free software Hornresp, which can, given driver parameters and some geometrical parameters for the horn and cabinet, can simulate a wide variety of horn, direct radiator and bandpass systems. This may be enough for most people, while others (like me) are curious about the math and algorithms behind it. So in this little series, I plan to explain how to implement a simple "Hornresp" code in Octave/Matlab. It will of course not have all the bells and whistles of Hornresp, but will be able to simulate the power response, electrical impedance and diaphragm displacement of a basic horn loudspeaker.
Radiation Impedance
We will work our way from the horn mouth, which means we start with the radiation impedance. The simplest model, which is used in Hornresp for many of the horn flares, is the circular piston in an infinite baffle. This is a reference model that is easy to calculate using builtin functions. The equation for the acoustic impedance for a piston of radius a and area S is
It uses two socalled special fuctions, the Bessel function of order 1, and the Struve function of order 1. The Bessel function is a builtin function in Octave/Matlab, but the Struve function can fortunately be approximated using other standard functions:
Our first functions will therefore be
function Znorm = circularPistonIB(ka) R = 1  besselj(1,2*ka)./(ka); X = struveH1(2*ka)./(ka); Znorm = R+1i*X;
function H1 = struveH1(x) % Using a Struve function approximation from http://mathworld.wolfram.com/StruveFunction.html H1 = 2/pi  besselj(0,x) + (16/pi  5)*sin(x)./x + (1236/pi)*(1cos(x))./x.^2;

These can be placed in the same file since H1 is't used for other things. Note that the function returns the normalized impedance, and the argument is ka, not frequency and area. We will see why later.
We can now test our radiation impedance function easily like this:
ka = logspace(1,2,500);
Z = circularPistonIB(ka);
figure(1); loglog(ka, real(Z), ka, imag(Z));

This will produce the following plot:
The blue line is the real part of the impedance, the orange line is the reactive part.
TMatrix
Relations between the pressure and volume velocity at one end of the horn to pressure and volume velocity at the other end can be describes by transfer matrices (Tmatrices):
The numbers of the matrices can be read like this: T_12 is the matrix producing p_1 and U_1 given p_2 and U_2. We can find the values of the matrix elements for a number of horns: conical, exponential, hypex and bessel. One advantage of the Tmatrices is that they can be multiplied together to form composite matrices for multisegment horns, or a horn with no analytical solution can be represented by a large number of small (typically conical) segments approximating the horn profile.
Exponential Horn
Here we use the following definition for the exponential horn:
where
The reason for using 2mx rather than mx in the exponent is that it makes m equal to the cutoff wavenumber of the horn. It's my personal preference, but it makes the equations cleaner; some derivations define a second variable equal to m/2 and so on to simplify notation.
Apart from the cylindrical tube, the expontial horn has one of the simplest expressions for the Tmatrix:
where
which becomes imaginary below cutoff. Fortunately, Octave/Matlab handles complex numbers directly without us having to think about it, so this poses no problem. We can implement this as a function:
function [a,b,c,d] = expoHornMatrix(k,Zrc,S1,S2,L)
m = log(S2/S1)/(2*L); gamma = sqrt(k.^2m^2); gL = gamma*L;
singl = sin(gL); cosgl = cos(gL);
emL = exp(m*L); a = emL*(cosglm./gamma.*singl); b = emL*1j*Zrc/S2*k./gamma.*singl; c = emL*1j*S1/Zrc*k./gamma.*singl; d = emL*S1/S2*(cosgl+m./gamma.*singl);

Octave/Matlab handles matrix multiplication directly, so we could generate 2x2 matrices, and multiply them together as needed. Instead I have decided to implement the horn matrices as vectors of matrix entries, and do the matrix multiplication "by hand". It is possible to implement "vectorized matrix multiplication", where you have a 3D matrix consisting of an array of matrices, and make a functions that multiply them together and other operations, but using vectors like here utilises the vectorized operations in Octave/Matlab in, I think, a more efficient way.
Now that we have our Tmatrix and radiation impedance, we can find the throat imedance as
We are now ready to calculate the throat impedance of an exponential horn.
% Define medium properties (Hornresp default values)
rho = 1.205; c = 344;
% Define frequency range fmin = 10; fmax = 20e3; freq = logspace(log10(fmin), log10(fmax), 533); k = 2*pi*freq/c;
% Define horn dimensions S1 = 80e4; S2 = 5000e4; L12 = 150e2;
% Calculate radiation impedance a = sqrt(S2/pi); Z2 = rho*c/S2 * circularPistonIB(k*a);
% Calculate horn matrix Zrc = rho*c; [a12,b12,c12,d12] = expoHornMatrix(k,Zrc,S1,S2,L12);
% Calculate and normalize throat impedance Z1 = (a12.*Z2 + b12) ./ (c12.*Z2 + d12); Z1norm = Z1*S1/(rho*c);
figure(1); semilogx(freq, real(Z1norm), 'k', freq, imag(Z1norm), 'r'); xlim([fmin, fmax]); ylim([0.5, 2.5]); xlabel('Frequency (hertz)'); title('Acoustical impedance'); grid

The result is shown below, together with the same horn simulated in Hornresp:
I have stretched the Octave figure to match the aspect ratio of the Hornresp plot. The impedance has been normalised before plotting, since this is what is done in Hornresp. Normalized impedance always approaches 1 at high frequencies, and it makes it easier to se how the ripple changes for different profiles, even if they have different throat areas.
The .m files for this post can be found here.
Big BenD Bass Horn: Driver Update
[Previous: Installation; Main]
This update is actually long overdue, and related to a project at Celestion I wasn't able to finish: a cone driver specifically designed for bass horns. It follows the ideas I outlined under My Approach to Bass Horn Design, and is a 12" driver designed for a compression ratio of about 1:2. As I wanted it to be easy for Celestion to put it into production, I used as many standard parts as possible, either directly or something that could be easily machined from standard parts. But I also added a feature that aren't easy to find in modern drivers: an underhung edgewound voice coil.
Here are a some of the features of this driver:
 Underhung 3" edgewound voice coil
 Copper sleve on pole piece
 Focused magnetic gap
 Low moving mass
 Vented pole piece and back plate
 250W power handling
 Large ferrite magnet
 Inverted dustcap to allow for phase plugs if desired
And for those who worry about the high power rating being detrimental to other qualities important for horn speakers, rest assured: this power rating was a result of the voice coil size and venting, not of "beefing up" the driver (which typically makes the moving assembly lighter) to take higher temperatures and forces.
Here's a side view of the driver, without the front segments. It's built on a Celestion FTR chassis.
The magnet system:
The gap flux is slightly above 1Tesla, which is quite good for a gap this size. It takes a substantial amount of magnet to produce that, especially when you lose gap width to a copper cap.
Comparisons with old DIY driver
Below are a couple of photos comparing the new driver to a DIY project I used to begin with, referred to as 12" DIY driver in the performance measurements. The DIY driver used the motor system from a pair of Celestion NTR082009D 8" woofers I found in the bin. They had the cones cut out, but the motor was salvageable (even the voice coil), and I used them to build a pair of 12" drivers using available parts. I used the lightest 12" by 2" cones I could find, and a fairly soft spider. They turned out to be quite good, with the BL^2/Re being a good match for my bass horns. But the new drivers are more robust, and also give a very good performance and produces very clean bass in the Big BenD horns.
Parameter 
Old DIY driver 
New driver 
Re [Ohms] 
4.46 
5.8 
Le [mH] 
0.065 
0.086 
BL [N/A] 
12.3 
17.0 
Mms [g] 
39.2 
64.5 
Rms [Ns/m] 
3.4 
0.63 
Cms [m/N] 
4.36e4 
1.88e4




Now I just hope Celestion will finialize this project and put the drivers into production, as I think this would be a good driver for bass and midbass horn use, especially for domestic use.
[Previous: Installation; Main]
Big BenD Bass Horn: Installation
[Previous: Performance Measurements; Main; Driver Update]
Finally, the last article about the Big BendD bass horn! This part will cover the installation and setup of the horn, with some comments on the subjective performance at the end.
Installation
Although the DIY 12" driver showed the most promise during outdoor testing, I still wanted to try the Altec 5158G when setting up the horn. It was mounted in the rear chamber, the chamber was filled with wool, and the rear wall covered with pieces of an acoustic celing tile.
Then came the process of carrying all the parts into the living room, setting it up, adding gaskets, bolting it all together, installing the drivers, wiring it up and put the rest of the system back together. In the process I had help from my good friend Harry. This is really a twoperson job, because carrying the big parts into the house isn't easy to do by oneself. The parts were all designed to fit through a standard door, but they are still a bit difficult to move around.
With two people working, the setup was done in a couple of hours. There are a lot of bolts, about 70 per horn, so or ratchet spanners got a real workout.
The complete setup is shown below. The white middle/throat sections blend in with the walls, making the bass horn less dominating in the room. It does work, some people have not recognised it as part of the bass horns.
The First Test: Where's the Bass?
Just setting up the horn and putting some music on, without any crossover or EQ, left us wondering: Where's the bass? Isn't this supposed to be a bass horn? There's a lot of lower midrange, but the sound was a bit thin.
The measurements made it obvious what the problem was: the output fell below 70Hz, and apart from a peak at 50Hz, the response was more like a midbass horn than a 30Hz bass horn. What was going on?
We swapped the Altec for the DIY 12", and that helped significantly; the better impedance match between the horn and driver was definitely an issue in the presence of room modes. Which turned out to be the real problem.
Room Modes
My living room is about 7m long and 3.54m wide. This means that the second mode in the length direction and the first mode in the width direction are both at about 50Hz, which is also clear from the measurement above. Between these two modes, energy transfer in the room is quite limited. A wider room would definitely be an improvement, but you have to work with what you've got.
In the modal region in a room, the response can vary quite a lot from position to position. Some listening positions have a smoother response, while others place the listener at peaks or nulls of modes. To find the best starting point for EQing the response, I measured the response in the room at a 2.5 by 3m grid, every 0.5m. The results for all positions are shown below.
It turned out that the response was quite smooth about 3m from the horns mouths, somewhat behind the middle of the room. The responses at this line are shown below. Annoyingly, the response drops quite sharply below 45Hz, due to the lack of modes between 25Hz and 50Hz, but apart from rebuilding the room (which I'm sure the landlord wouldn't like), there's not much to be done.
I have applied some EQ to lift the response a bit, but one should be very careful with EQing dips caused by room modes. And I'm not going to spend the rest of my life in this house, so hopefully my nest home will have a more beneficial distribution of modes int eh listening room!
Listening Tests
So, after all this work, how does it sound? The lack of output below 45Hz is only noticable on music where you know there should be something down there. Apart from that, the response in the listening position is quite smooth, and it has the traits of bass horns that I have been missing for so long: proper impact  even at low volumes , and responsive, detailed and tight bass. Low frequency details in the recordings are quite easy to hear, and there's no overhang or resonance. It sounds effortless even at very high volumes too. The horn integrates well with the fast and detailed midrange of the Axi2050, making it a good combination. I also tried a delayderived subtractive crossover, as described in the Horn Book, and it made a worthwile improvement to the coherence and naturalness in the lower midrange.
All in all, I'm very satisfied with the performance.
[Previous: Performance Measurements; Main; Driver Update]
Big BenD Bass Horn: Performance Measurements
[Previous: Belts and braces pt. 4; Main; Next: Installation]
With one horn finished, I took it outside to do some frequency response measurements. First thing to do is to measure the horn under conditions similar conditions to the simulations. This is a very important part of designing speakers, if you want to use simulation tools in the process. You need to verify that your simulation is correct, and if not, in what way. It is especially important if you are writing your own simulation software. I think people are getting better at it, but there have been many cases on DIYaudio of people complaining about their simulations being wrong, when the actual problem is that they have not simulated what they have actually built.
Corner
The actual condition of a horn built into an "infinite corner" (3 infinite baffles perpendicular to each other) isn't easy to achieve in practice. The best I could do was to use the walls of my house and garage:
And then put some extra sheets of plywood between the buildings to try to close the gap.
So, finally the first measurements, with and without baffles. The difference isn't huge, This may be because the garage is still close enough in terms of wavelengths to contribute to the baffle effect. (I'm not sure if the levels are actually correct, trying to do the calibration in ARTA gave some confusing results.)
So how well does this fit with the simulations? Actually pretty good, see below. The Response below 200Hz is almost spot on, the response at higher frequencies deviates, probably because of the simple model used for simulating the curving, and because I used a different driver than in the measurements.
What I'm quite happy with is that the curving approach worked as intended: there are no sharp dips and peaks or suckouts in the response, and it doesn't roll off until about 500Hz. This creates a nice overlap with the midrange horn. At the lower end, the response starts to fall off rapidly below 30Hz, which was the intended lower limit. The response is a bit uneven, but we'll see that this changes with a different driver.
Wall
The second test condition is in front of a wall. Neither of the two are fully representative of the operation conditions in actual use, but it will show the effect of placing the horn in front of, instead of flush with, a wall.
The effect of one missing side wall and the increased distance to the back wall is evident: a loss of level at low frequencies that was predicted by both the simulations and scale model measurements.
Driver Tests
The next measurements were done with REW as I found it easier to do a level calibration there than when using ARTA. Four different drivers were tested:
Altec 5158G, a 15" driver built in a Celestion FTR3070 chassis, A 12" guitar speaker, and a 12" high efficiency woofer built using various parts available. The results are shown below.
There is a clear difference between the drivers; the guitar speaker clearly fails and has a very peaky response (not all musical instrument drivers are suitable for bass horn use, even if Dr. Bruce Edgar had good results with EVM12). The 15" drivers perform about the same. The best results comes from the 12" driver I built. This isn't actually very surprising, since it has the best impedance match with the horn of all the drivers.
The dips in the response at 483Hz and 870Hz are from standing waves in the empty rear chamber.
Distortion
Following is some distortion meausrements of the drivers tested. I measured at 95, 105 and 115dB SPL at a 2m distance. Only the results for 115dB (114dB for the 12" prototype) are shown.
The 15" drivers are quite similar in response, but the Altec clearly has lower distortion. The guitar driver has very high distortion (not surprisingly, since it has a stiff paper surround and only 1mm overhang on the voice coil), and is best left to what it was designed to do: create distortion for electric guitars.
The 12" DIY driver has the smoothest response, and while the distortion is slightly higher than the Altec, they are both quite at "sane" listening levels.
[Previous: Belts and braces pt. 4; Main; Next: Installation]
Big BenD Bass Horn: Mouth Section
[Previous: Belts and Braces, part 3; Main; Next: Belts and Braces, part 4]
The final (and largest) part of the horn is the mouth section with its bracing. The mouth section was designed to consist of mainly straight panels, with only the lower panel being curved.
Since the mouth section is quite big, I figured the best way to build it was by using the bracing and flanges as a jig. Below is the lower flange and the support for the rear of the mouth section. The two are spaced apart according to the design, and held in place temporarily by a couple of scrap pieces.
Then the lower braces are put in place and screwed to the throat flange and the lower mouth flange.
The extra support can now be removed, and the first layer of the lower wall can be fixed to the braces by nails and glue.
Two more layers of 6mm plywood are laminated onto the first.
Note the routed slit in the lower mouth flange. This is to make a proper and good looking termination for the laminated lower panel. By doing this carefully, there is no gap between the panel and the flange.
Side and top panels in place. Since the side panels flare outward, they have to be cut in a way that makes the top and bottom panels flush with the cut. See the Midrange Horn for one way to do it using a band saw. For this horn, I made a small jig to tilt the jig saw the right amount (equal to the angle of the side walls) when doing the cuts.
Side braces and a top brace are added and fixed using wooden dowels.
With the mouth section done, a support frame for the mouth bend was made. It is bolted to the outer braces of the mouth bend.
And finally the horn can be assembled. Here is the first mockup without using any bolts. The next stage now is to add braces to the mouth section, and the acoustic performance of the horn can be checked.
[Previous: Belts and Braces, part 3; Main; Next: Belts and Braces, part 4]