Transmission Line Modelling Software

Thanks for letting me know. Can you see any pattern to when this happens?
This was brought up once but I thought I fixed it. I don't get it anymore...

It's only happened once since I updated to the latest version. So I can't determine a pattern from that but I thought you'd like to know that it did happen.


I'm not sure what you mean by this? Exponential growth is f(t) = a.b^t
a is the starting point (i.e. Start Area). B is the growth factor (i.e. Taper Ratio) and t is how far along you are, i.e. position (x / L)

Exponential t = 1. (I believe that's true, I'm not really up to date on all the math and definitions.)

Then there's Salmon family Hyperbolic Exponential flares with adjustable t.
Vincent Salmon introduced the hyp-ex family of horns in US patent number 2338262.
Espacenet - Original document

I don't think anybody really uses a pure exponential t=1 flare at all for anything. Marshal Leach's math, which is the most widely used math used to design horns, produces hyp-ex flares and I think almost all the experts (like Edgar, etc) prefer to work with hyp-ex.

I can provide links to Leach's math, Edgar's math (which I believe uses Leach's math) etc (to show that all the experts prefer hyp-ex flares and not exponential flares) but I think all the math needed to describe hyp-ex flares is available in the patent link above.

If you have a copy of Hornresp, you can see that when the "System Design" tool is used, Leach's math is utilized to produce a hyp-ex flare. Also, you can design your own (without the help of the System Design tool) by selecting "Hyperbolic Exponential" for a segment flare type and then you can choose your desired t.
 
Last edited:
Yeah it's always useful know of errors. I'll keep an eye out for what could be causing it. If you could send me the error message next time it happens again (if it does happen again!), that'd be great.

Regarding the exponential. I have looked at the hyp-ex formulas and I can't get it to work for a fixed length and start/end areas. I thought it would help to look at how it works in HornResp, so I downloaded it and it seems you can only choose Parabolic, Exponential and Conical flares..

Could you go through how to use a Hyp-Ex flare? I've not used HornResp before and I'm struggling to get to grips with it...
 
Yeah it's always useful know of errors. I'll keep an eye out for what could be causing it. If you could send me the error message next time it happens again (if it does happen again!), that'd be great.

Regarding the exponential. I have looked at the hyp-ex formulas and I can't get it to work for a fixed length and start/end areas. I thought it would help to look at how it works in HornResp, so I downloaded it and it seems you can only choose Parabolic, Exponential and Conical flares..

Could you go through how to use a Hyp-Ex flare? I've not used HornResp before and I'm struggling to get to grips with it...

Ok, I've figured out how to do it in HornResp, though I can't figure out how to rearrange the equations :(

I'll start a thread in main forum I think
 
If any is interested in offering a hand with it, or knows how it's done:

The formula is:

SL = So(cosh[L/xo] + Tsinh[L/xo])²

L is the length of the element
So is the start area
SL is the end area
T is the exponential/hyperbolic form

We know all the above and need to find xo. I can't do it... :(
 
Ok, I've simplified it a little

SL = So(cosh[L/xo] + T.sinh[L/xo])²

For now lets set L/xo to k (just for simplicity)

sinh(k) = [(e^k - e^-k)/2]
cosh(k) = [(e^k + e^-k)/2]

so...

SL = So([(e^k + e^-k)/2] + T.[(e^k - e^-k)/2])²
SL = So([(e^k + e^-k)/2] + [(T.e^k - T.e^-k)/2])²
SL = So((e^k + e^-k + T.e^k - T.e^-k)/2)²
SL = (So/4).(e^k + e^-k + T.e^k - T.e^-k)²
SL = (So/4).([1+T]e^k + [1-T]e^-k)²
4.SL/So = ([1+T]e^k + [1-T]e^-k)²
sqrt(4.SL/So) = [1+T]e^k + [1-T]e^-k
sqrt(4.SL/So) = [1+T]e^k + [1-T]e^-k

I can't get much further with it though...
 
in the patent x0 = speedOfSound / (2 * pi * f0) where f0 is the cut off frequency
this is a very simple newton's iteration to solve for x0

x0 = 0.001;
step = 1.0;
diff = 1.0;
n = 0;
while (diff > 1.0e-5)
n = n + 1;
sx = si * (cosh(x/x0) + T * sinh(x / x0))^2;
diff = sx - s;
if (diff < 0.0)
step = step / 2.0;
x0 = x0 - step;
else
x0 = x0 + step;
end
diff = abs(diff);
end
 
OK, I've pretty much got this working now with the t parameter.
I have a few other things I need to work on before I release it though.

Thanks for doing this.

Any other requests for the next update?

Is there a way to use multiple drivers in a design? (Multiple identical drivers, not different drivers.) I couldn't find out how to do this, so if it's not already available, that would be a great feature. I use up to 12 drivers in a sim so it would be good to be able to specify the number of drivers in series/parallel groups.

Other than that it's starting to look pretty complete. There's a huge list of things that you could add (like impulse response, etc) but nothing really important.
 
Thanks harperrc but an absolute solution is more robust and doesnt take up processing time with loops.

Just a guy: I could add a feature to simulate a number of identical speakers in one position. It would just model a single driver with the equivalent t/s parameters of multiple speakers. Fairly simple to do.

A list of other things is useful too. I want to add an impulse response graph, but I haven't got round to working it out yet. Its harder than I thought it would be.
 
Just a guy: I could add a feature to simulate a number of identical speakers in one position. It would just model a single driver with the equivalent t/s parameters of multiple speakers. Fairly simple to do.

That would be perfect. I assume that's how all the other simulation programs handle it too, but I'm not a programmer and I really don't know.

A list of other things is useful too. I want to add an impulse response graph, but I haven't got round to working it out yet. Its harder than I thought it would be.

You want me to write up a list of things you could include? I'm a bit hesitant to do that since you have just about every feature that I regularly use already, and I don't want to sound like a spoiled, unsatisfied complainer. But if that's what you want so you can pick and choose possible upgrade paths, it's easy enough to compile a list.
 
There's been an update since post 489, maybe you could try downloading directly from leonardaudio.co.uk - I don't know if that would help your issue or not but it can't hurt to try. It's not a large program, it shouldn't take more than a few seconds to download with a high speed connection.
 
Yeah! Go for it! ;)

Well ok then...

First I'm rereading through this entire thread partly for nostalgia about how this all came together and partly to get ideas about possible new features. Then I'm going to go through my favorite simulators and make a list of features that they have that TL.app does not.

Before I start a list, allow me a moment to give an award for Most Valuable Feature. First place goes to AUTO-UPDATE. I almost forgot that this program didn't have an auto-update feature for a long time. So many people fought so hard against it. But you managed to find a way to include it and keep everyone happy. If it wasn't for auto-update I would have stopped using this program a long time ago. As great as this program is, that update button drove me so nuts.

Ok, so here's a short list of stuff just off the top of my head so far. At the beginning of the description of each proposed new feature I will add a number (X/10) to show how important I feel this feature is.

1. (10/10) Boundary conditions - 0.5pi, 1pi, 2pi is the default, 4pi. This allows a quick and easy way to simulate corner loading or flown speakers. Maybe a drop down menu by the text boxes?

2. (7/10) An actual boundary simulator - similar to what this spreadsheet does.
Loudspeaker Design Software
There's screenshots and a description in that link but the main idea is that boundary reflections from the three nearest walls are simulated (boundary gain and reflection nulls). If this feature and the previous feature were added, the boundary condition would have to be 2pi for this feature to work properly.

3. (4/10) Baffle step and diffraction - If the baffle dimensions and driver and port location on the baffle were input, the program could calculate the effects of baffle step and diffraction. (Technically baffle step and diffraction are the same thing.) Since this program will probably mainly be used for subwoofers this feature doesn't rate very high, but it could be useful for very large subs or midbass speakers.

4. (6/10) Printout of cross sectional area vs length in selectable increments. This is useful for the horn guys. Hornresp has this feature. Hornresp includes a lot more info in this printout too but the only thing I look at (and the only thing that's absolutely essential) is csa vs length.

5. (4/10) Calculate the effect of enclosures that are not infinitely rigid - This would probably actually be kind of easy - just internally specify a small amount of loss for the entire enclosure based on modulus of elasticity specs for different panel materials. I'm not sure how this would be tested against reality though, unless you have some very high quality measurements of a cab built with several different materials.

6. (3/10) Multiple drivers in multiple locations - I realize you already said you would do multiple drivers in a single location but if you are really looking for stuff to add... While you are at it, maybe you want to tackle multiple DIFFERENT drivers in multiple locations? Akabak can do it...

7. (2/10) More horn flare types - This one is rated very low because I only use hyp-ex flares, but Hornresp can do all kinds of different flare types. If you are looking for a challenge...

That's just a few ideas but I have to work tomorrow so I have to stop there. I'll continue this list at a later date.
 
Last edited:
8. (10/10) Subtract volume of branch from surrounding elements - This one is so important I would have rated it (26/10) but that would have messed up my rating scheme. The current procedure is to have branches external to the enclosure but that's rarely how ports are built, they are almost always inside the box. It would be nice to have a selection check box to indicate internal or external branches, and when the branch is internal the volume of the branch would be subtracted from the affected elements.

BUT simply subtracting the volume and reporting the new volume isn't really enough, the space taken up needs to be accounted for, so the user would need to draw the branches exactly where they need to be and the program would have to recreate the affected elements to preserve the correct 1/4 wave simulation. Here's a picture to make it more clear.

icpsfa.png


1st box - looking at the baffle, we see there is a round port
2nd box - looking at the side view cutaway, we see the port is straight (this port would be fairly simple to work with)
3rd box - also side view, this port is more complex, it bends and goes up (the red arrow would indicate the branch end port location)

The port in these pics is fairly large, so the volume and location of the port would make a considerable difference in the 1/4 wave simulation. The only way this could be properly addressed by the program is if all the surrounding elements were resized, and a bunch of new elements would probably have to be created to surround the port properly. This could be done by the user but it is a complex process and the schematic drawing would look weird. It would be a lot easier if you could draw the schematic to look like the picture and have the program do the work.

This is probably the most useful feature that you could possibly add but I imagine it would be complex to implement, especially for round ports.
 
Last edited:
A couple more -

9. (8/10) Auxiliary windows not always on top - It would be nice if the Enclosure window (for example) was not always on top of the main window. I want to be able to click the main window and have it be on top. My screen resolution is limited and I don't have enough room to view both of them side by side so if I want to see the whole main window I have to close the Enclosure window.

10. (8/10) Compare previous - It would be nice to be able to select a graph and hold that current design in memory. Then make changes and while looking at an updated graph, click "Compare previous" to bring up the old graph information as an overlay on top of the new one.

11. (10/10) Check to see why the TL.app and Hornresp results don't agree perfectly - It's ok if different programs calculate things different internally, and that will lead to different results. But it would be nice to know why the results are different and which is more accurate. For example, please review posts 431, 432, 437. Direct link to 431 - http://www.diyaudio.com/forums/soft...n-line-modelling-software-44.html#post3397872

As noted, the results are almost identical between 80 - 200 hz in this particular example, but below 80 hz the TL.app results are a couple db lower and above 200 hz the TL.app results are a few db higher. IIRC, Akabak reports higher db output at higher frequencies than Hornresp and I'm not sure if Akabak is showing power response or on axis response. I'm not particularly concerned about the higher frequency response anyway, it's the response discrepancy below 80 hz that I'm mostly interested in. I don't think you ever commented on this issue.

First of all, are you aware of this? Second, is TL.app showing on axis response or power response? (MJK's software shows on axis response, Hornresp shows power response.)

This one is so important I would rate it (43/10), but again that would screw up my rating system. Nothing is more important than accuracy.

12. (3/10) Update bar stays green when updates are finished. This is a bit unsettling, I would expect it to clear (turn back to white) when updating is complete. This isn't a really big deal and I realize several people have asked about this already. If you like it the way it is that's fine, just say so and I'll stop asking about it.

More to come later. Or do you want me to stop now? This could go on for quite awhile. :)
 
Last edited: