Line arrays. Understanding their behavior through simple modeling.

After years of designing various types of line arrays at McIntosh, Snell and Bose, I thought I would start a conversation about what I've learned over the years, specifically in how simple modeling can lead to an understanding of line array phenomena.

While I am not a Matlab wiz I have found that Excel is good for modeling simple arrays and will give you a good understanding of what is going on. Through some simple models I intend to illustrate all of the line array phenomona and explain their root causes. Through an understanding of basic phenomona we can take steps to control polar patterns and achieve the performance that we might want.

This is not going to be a discussion about "if I put 10 Vifa units in a row, will that sound real good?". What this is is more about "what causes the lobing ('lobe-ing") and how do I control it?"or "What determines my vertical directivity?".

Hopefully some will find this interesting and those of you that are better at mathematical modeling than me may be inspired to work up some better array models than I have.

How do we calculate the performance of a line array. The basic array model

Lets say we have the simplest possible line array, 2 elements set some small distance apart. If we stack them in a vertical line and then go out from the elements and upwards so that we are 30 degrees above the elements, then how would we calculate the response of the pair of elements? Or if we want to know the polar response for some frequency, how would we calculate that?

The basic premise of array modeling is that the individual elements can be thought of as vectors that are added in space. They are assumed to be independent of each other (i.e. no mutual coupling or other interactions) but the phase of each element must be taken into account. If we take our geometry and calculate the distance difference as viewed from our 30 degree observation point, take that distance difference and convert it to a phase difference we can predict response. All we have to do is think of the 2 elements as 2 vectors with some relative phase shift between them that we (vectorially) add to get a combined array response.

If you don't remember how to add vectors it is quite simple. Start with a magnitude and phase for each element and then convert to rectangular format (using cosines and sines of the angle) and them add the "real" parts and the "imaginary" parts together. The Pythagorean Theorem will then let us convert that back to a magnitude. Once added we can convert the results to dB if desired. This is really all the spreadsheet does.

I'll confess that I am not Matlab proficient so I like to use excel to set up spreadsheets for any particular array. I've included a 2 element polar curve example. In this example column A gives the viewing angle that steps from 0 to 358 in 2 degree steps. Columns D and E define the actual geometry that defines the excess path length of each element (here only 2 elements). This is the calculation of phase difference between the 2 units. Columns H and J define real part of the radians of delay, L and M the imaginary, and P through T the magnitude of the pythagorean theorum sum. By breaking into real and imaginary parts we can sum any number of vectors as called for by the complexity of our array.

So the desired result is column T that is plotted as an Excel "radar" plot. This is an overhead view of the typical array. Up on the graph is 0 degrees and down is 180. In normal conditions the array directivity would have driver directivity added to it. In fact, if all elements aim in the same direction then total directivity is simply the sum of array related directivity plus driver directivity. So, typically, the front to back directivity is significant. Its never bothered me to see plots with no driver directivity, I just view that as the "second factor".

Note also that the polar plot is a cross sectional view of a solid of rotation. For one wavelength spacing as shown you would have a top like shape with a fat rim and narrower axle. (We can talk about why the rim is fatter later.)

The spreadsheet has 2 fields where you enter a number, one for Lambda (applied wavelength) and the second for "Dee" or distance between elements. Our first check of the array math working right is that when Lambda = Dee then our two units are one wavelength apart and see a full height peak at +-90 degrees. This would make sense in that rotating 2 elements to 90 degrees, with them one wavelength apart, should see them come back into phase. Something that should eventually make sense is that frequency doesn't really matter at all but the relationship between spacing and frequency is key. That is, the array definitions will always have a "Lambda/Dee" factor. Doubling Lambda and Dee at the same time will always return the same polar curve. This is just a way of saying that all arrays are scalable...

Also note that the height of the 4 peaks of our plot are all 2.00, this coming from the value of the in-phase sum of 2 unit vectors.
I've attached 4 sims with various ratios between wavelength and physical spacing.

This seems like enough to digest for our first look at array modeling so I'll let that soak in for a while and see if there are any questions or comments.
David Smith


  • dee equals 2 lambda.jpg
    dee equals 2 lambda.jpg
    82.5 KB · Views: 163
  • lambda equals 2 dee.jpg
    lambda equals 2 dee.jpg
    112.2 KB · Views: 163
  • lambda equals 3 dee.jpg
    lambda equals 3 dee.jpg
    76.5 KB · Views: 150
  • lambda equals dee.jpg
    lambda equals dee.jpg
    212.7 KB · Views: 165
  • Like
  • Thank You
Reactions: 18 users
Since each driver is radiating into 3D space, the magnitude of each vector will be affected by distance. How does your model account for the inverse square law?
Hi Neil,

Thats a good question. I will evolve a near-field model and a far-field model. We can start with the far-field model because it is simpler and ignores level shift due to distance.
I covered a lot of ground yesterday so let's keep it simple today and try and clarify some of yesterday's concepts.

We started with 2 elements and moved around an observation circle while measuring the phase difference between the elements. Using this phase difference, we could add the vectors in every direction to figure out the polar curve. If there is a goodly distance between elements or the wavelength radiated is short (remember dee over lambda) then there may be multiple wavelengths between the 2 elements. That is, the path length difference between the 2 elements may be, say, 3.5 wavelengths. If it was 3.5 only the 0.5 would matter. The phase shift between elements that we care about is the remainder percentage of a wavelength because that is what determines how the 2 vectors of our array add up. Any integer quantity of wavelengths delay is immaterial because an integer amount would bring the elements back into phase.

The phase clock tape measure...

I like to imagine each element having a phase clock tied to a tape measure. Picture a tape measure with a dial that rotates once for every wavelength under consideration. (We will need a tape measure for every frequency, could get expensive.) As we pull out the tape measure the dial indicator circles around once for each full wavelength of extension. If we want to see response off at 30 degrees above perpendicular we could pull out the phase clock tape measure to some constant distance in 30 degrees off of broadside. Since we are pulling the tape out to a common plane (the rays are parallel rather than converging, (remember: far field model) then the phase clock will rotate less for the nearer top elements and more for the lower elements. What we want to know is the difference in wavelengths from the 2 elements to some point a ways away. Per above, it is noteworthy that the clock may turn around numerous times but we don't care. We only need to know the partial rotation amount.


  • TapeMeasurePhaseMeter.jpg
    485.1 KB · Views: 60
  • Like
Reactions: 1 user
If I am following the instructions correctly the attached Zip folder should have a spreadsheet for the 2 element example.

Could someone try and open it and see if it runs for them? Plug any numbers into the yellow fields and it should recalculate a polar curve or response curve.


    61.5 KB · Views: 37
  • Like
Reactions: 1 user
5 element weighted coefficients array

We started with a simple 2 element array to see how 2 loudspeaker units interact and the variation we get as we vary the ratio of their spacing to the applied wavelength. Let's make it a little more interesting with a 5 element array in which we can vary the strength of each element. That will give us a lot of variables to play with.

The latest spreadsheet has both a polar response tab and a frequency response tab. As before you can calculate a polar curve at a given frequency or a frequency response at a given polar angle (are you starting to see the relationship?). In addition, there is a yellow field where you can put in 5 weighting coefficients. I use numbers from 0 to 1 although there is no limit to the range and negative numbers are okay too. Setting a coefficient to 0 is the same as deleting the element. Note that setting any element to less than 0.1 (-20dB) is probably near enough turning it off so there wouldn't be much benefit to paying for that element, might as well leave a gap!

I'm thinking, rather than droning on interminably, it would make more sense to "assign some homework". So here are some problems for you to simulate and comment on. Don't feel you have to answer them all but hopefully you will do a couple and discuss in the forum what it all means...

1) Model a 1, 2, 3, 4 and 5 element array by using the right number of coefficients of 1 (turns on an element) and the right number at 0 (turns off an element). What changes between the 5 options? What doesn't change?

2) If you model a 2 element array, does it matter which columns (E10 through I10) have the "1" coefficients? Can you skip a column between 1s? Why?

3) Experiment with the 5 coefficients until you find what you think offers a nice polar curve. Explain what is good about it.

4) Can you find a good reason to use a negative (reverse polarity) weighting coefficient?

5) Enter the weighting coefficients 0.5, 1, 1, -1, 0.5. What is going on there? Why?

6) For all these examples, what is the relationship between the polar curves and the response curves? Does this suggest anything?

  • Like
Reactions: 1 user
I have used Akabak to simulate a 25 driver array in Wesayso’s Two Towers thread. I recall the vertical comb effects were predicted well. Also, the overall frequency response that showed the EQ needed to flatten the response was also predicted quite well. It was pretty easy to stack 25 sealed full range drivers. The trick was the limit of 55 nodes in the early version of Akabak.