Acoustic Horn Design – The Easy Way (Ath4)

Thanks.
What I mean by "Bullhorn" is illustrated very well at Wikipedia:
Reflex_loudspeaker_animation_2.gif

It is the horn of choice for megaphones and PA systems due to the shortened dimensions. So not really a horn for audiophiles probably. And all are not circsym either even if most megaphones are.
 
Member
Joined 2004
Paid Member
No problem. You may need to divide the volume of air inside the horn into several smaller subdomains. There's (undocumented yet) possibility to do so in the script. Attached is an internally generated script of the ESP demo using these features ('subdomain' and 'interface' keywords, starting definitions of the corresponding sections). I'm not sure it makes sense now but that's just what's possible. "EXIT" is the default keyword for the exterior subdomain.
 

Attachments

  • sds.txt
    14.1 KB · Views: 59
In some ways R-OSSE parameters can still be understood with the set of important parameters of the previous release: s, n, k, and coverage angle, and q being a modifier to s. The new set of m and b are working in the domain of s now, giving more and complexer control and q has changed its function slightly, even if it is basically still controlling the steepness of s.

So the new abilites can be investigated in the relationship that m, b and q offer. Apart from this I would assume that a sketchy table that I had worked with is still saying something usable:



In which the effects of s in low frequencies ("LF") is understood as narrow-banded, of n (LF, again) as broadband, k effecting the loading between 5 to 10 kHz, traded in against linear distortion. All share the same area and therefore compete. N is effecting both the transition form throat (k) to walls as well as walls to mouth (s), so bigger changes in the ratio between s and n will also influence what can be done with k. Often one will find something that maiky76 has called 'local minimum'.

Especially to linearize HF behavior, I found it useful to start with a too-wide pattern, which was set up with a significantly wider than intended nomimal coverage angle, which was then "filled in" with the parameters s, n, q, k until a linear pattern was achieved, only to narrow it down afterwards. This flattened out the peak which otherwise would appear between 5 to 10 kHz with more loading applied by parameter k.
Hi,

I have compiled some trials to see roughly the effect of each parameters of the OSSE formula on the CE260.
It may be helpful for manual iteration.
First, just the profile with 3 steps 50% of the initial parameter, 100% and 150%
OSSE_3steps_CE260_WG_profile.png


Then parameter by parameter with the impact on the global performance the name of the parameter is in the title of the profile subplot.
For the directivity contour
Code:
-- = 50%, - = 100%, : = 150%

Coverage Angle as an example:
CoverageAngle_OSSE_3steps_CE260_WG_profile.png

etc.

They are all in the attached zip.
I hope this helps.
 

Attachments

  • 20220224_OSSE_Param_Impact.zip
    6.3 MB · Views: 96
Last edited:
  • Like
Reactions: 1 user

TNT

Member
Joined 2003
Paid Member
But it is the same parameters - right?

I think this seem to be very helpful in understanding the impact of each param. I plan to do a text version to express in words using some prioritised properties (mine) and then what seem to be critical and what can be fixed in EQ...

I think I have to build myself a pair of WGs this summer - can't resist anymore :)

//
 
Member
Joined 2004
Paid Member
With the old approach you need Ath to calculate and export the profile. With the parametric equation you can easily use e.g. Excel (or whatever) alone. Remember that it was motivated by using optimization routines outside Ath/ABEC. There's no such implementation at the moment but that can change (COMSOL?).
 
Last edited:
For the next release of Ath I implemented a new parameter/feature: Slot.Length
It basically adds a flat segment before the actual OS-SE profile, of which the length can be continuously variable (along with all the other parameters). It will be fun watchig what people come up with :)

I found a bug, unfortunately:

Basically if you use the "slot" feature, you can wind up with holes between the diffraction slot and the waveguide.

See the attached pic.

Here's my config file.

I confirmed the bug exists in ath 4.7.1 and 4.8.0

I believe it may be because I used a function for both the slot length and the throat angle and the software is having a hard time coming up with a spline between where the horn meets the diffraction slot. I tried increasing and decreasing the resolution of the mesh to see if that helped, it didn't.




Throat.Profile = 1
Throat.Diameter = 34 ; [mm]
;Throat.Angle = 20 + 10 * sin(p)^2
Throat.Angle = 18.5 - 5 * sin (p)^2
;Coverage.Angle = 45 - 30*sin(p)^2 + 20*cos(p)^4 + 30*sin(p)^8
;Coverage.Angle = 10 + 38*cos(p)^4
;Coverage.Angle = 72 - 36*sin(p)^4 - 20*cos(p)^4
Coverage.Angle = 57 - 28 * sin(p)^4 - 12*cos(p)^4

;Slot.Length = 2 + 48*cos(2*p)^2
;Slot.Length = 6 + 57.5*cos(2*p)^2
Slot.Length = 25.4 - 19.05*sin(2*p)^2
Length = 88.9

Rollback = 0
Rollback.StartAt = 0.5
Rollback.Angle = 180
Rollback.Exp = 1.25

;OS.k = 1.3
OS.k = 2.2 - 1.8*cos(2*p)^2

Term.n = 4
Term.q = 0.996
Term.s = 1.35

; Source.Velocity = 2 ; move in axial direction

Source.Contours = {
zoff -2

point p1 4.68 0 2
point p2 0 13 0.5
point p3 1 15 0.5
point p4 0 16.5 0.5
point p5 0 17 1
cpoint c1 -18.59 0
cpoint c2 0 15

arc p1 c1 p2 1.0
arc p2 c2 p3 0.75
arc p3 c2 p4 0.25
line p4 p5 0
line p5 WG0 0
}

; -------------------------------------------------------

Mesh.AngularSegments = 96
Mesh.LengthSegments = 500
Mesh.ThroatResolution = 4.0 ; [mm]
Mesh.InterfaceResolution = 8.0 ; [mm]
Mesh.InterfaceOffset = 5.0 ; [mm]

; -------------------------------------------------------

ABEC.SimType = 1
ABEC.f1 = 500 ; [Hz]
ABEC.f2 = 16000 ; [Hz]
;ABEC.SimProfile = 0
ABEC.NumFrequencies = 61
ABEC.MeshFrequency = 1000 ; [Hz]

ABEC.Polars:SPL = {
MapAngleRange = 0,90,19
Distance = 2 ; [m]
}

Report = {
Title = "Dec 8 2021 circular waveguide"
Width = 2880
Height = 1620
NormAngle = 0
}

Morph.TargetShape = 0
Morph.FixedPart = 0.6
Morph.Rate = 3
Morph.CornerRadius = 12.7

; -------------------------------------------------------

Output.SubDir = "demos"
Output.STL = 1
Output.ABECProject = 1
 

Attachments

  • 2022-02-24 15_08_20-Autodesk Meshmixer - feb24.stl.png
    2022-02-24 15_08_20-Autodesk Meshmixer - feb24.stl.png
    773.3 KB · Views: 136
I didn't go through the demos yet with 4.7.2, there may be something wrong as the reporting changed a bit in the meantime. I recommnend not to start with the demos this time.


- Ah, I see the issue now. In the script file there must be a 'Report' item defined, even if empty, otherwise the 'static.txt' file is not written:

Report = {
}


(Note that you can modify the report properties with this item.)

I found another bug:

If you define "output.subdir" in the config file for your horn, it breaks the reporting function. Basically the text files named "static.txt" and "coords.txt" do not get produced.
 
Member
Joined 2004
Paid Member
[...] 3 steps 50% of the initial parameter, 100% and 150%
For some of the parameters this is obviously a very large step, so some of the results are just too extreme, IMO. Perhaps it would be better to adjust the step individually per parameter so the resulting profiles don't differ that much. Just my observation.

Also, for the nominal (100%) case it would be nice to select some already well-performing profile, like the one Tom has posted here: https://www.diyaudio.com/community/...-design-the-easy-way-ath4.338806/post-6942005
 
Last edited:
I kinda did that; +-10% for a number of parameters.

https://www.diyaudio.com/community/...-design-the-easy-way-ath4.338806/post-6943131
I ran some batches over time and I noticed some things.

1) You need some conical shape to get the LF directivity up and make it constant.
2) Make the round over as smooth/large as possible to eliminate wiggles halfway the interesting frequency range.
3) Waveguide (minus roundover) needs to be large for LF directivity.

Otherwise, it seems remarkably forgiving. However, I'm might just not know what to look for. :)

1) & 3)
R-OSSE_k=6.47546958643943_r=0.125076335621998_m=0.826569197420031_b=0.388033892959356q=1.72112...png

2)
R-OSSE_k=5.71881870273501_r=0.54261415055953_m=0.779140177788213_b=0.41503227641806q=1.0721747...png

1) & 3)
R-OSSE_k=7.14404357830063_r=0.116095908218995_m=0.910517226275988_b=0.0627460770774633q=3.1747...png

And a nicely balanced one (posted earlier):
R-OSSE.png
 
Last edited:
  • Like
Reactions: 1 user