Acoustic Horn Design – The Easy Way (Ath4)

gnuplot script responsible for the above pictures, for those interested -

Code:
set terminal pngcairo font "Helvetica,12" size 800,1000

rt=12.7        # throat radius [mm]
L=150.0        # length of the horn [mm]
alpha=90.0     # coverage angle [deg]

set angles degrees
set size ratio -1
set grid

ta = tan(alpha/2.0)

set samples 500
wg(x,s,q,n) = sqrt(rt*rt + ta*ta*x*x) + L*s/q * (1.0 - (1.0 - (q*x/L)**n)**(1/n))

set yrange [0:300]
set xtics 20
set ytics 20
set key left top
set xlabel "x [mm]"
set ylabel "y [mm]"

# s
set xrange [0:L+10]
list = "1.5 1.25 1.0 0.75 0.5 0.25"
set output "OSWG-SE-param-s.png"
set title "L=150, N=5, q=0.998"
plot for [s in list] wg(x,s,0.998,5.0) lc rgb "black" t "s=".s

# q
set xrange [0:L]
list = "1.0 0.95 0.9 0.85 0.8"
set output "OSWG-SE-param-q.png"
set title "L=150, N=5, s = 1.0"
plot for [q in list] wg(x,1.0,q,5.0) lc rgb "black" t "q=".q

# N
set xrange [0:L+10]
list = "3.0 4.0 5.0 6.0 7.0 8.0"
set output "OSWG-SE-param-N.png"
set title "L=150, s=1.0, q = 0.998"
plot for [n in list] wg(x,0.8,0.998,n) lc rgb "black" t "N=".n
 
Here is maybe better visible the influence of q. It affects the angle at which the wall reaches front baffle.
 

Attachments

  • OSWG-SE-param-q.png
    OSWG-SE-param-q.png
    49.5 KB · Views: 611
For anyone's interest, this is the radius of curvature of the OS profile for the first 100 mm - for 1" and 2" throats, 90 deg coverage.

Code:
# Gnuplot code

set terminal pngcairo size 1200,1000 font "Helvetica,12"
set output "oswg.png"

rt = 25
alpha = 45

set angles degrees
k = rt*rt
q = tan(alpha)
q = q*q
pow3(x) = x*x*x

wg(x) = sqrt(k + q*x*x)		                # OS profile
wg1(x) = atan(q*x / (sqrt(k + q*x*x)))          # first derivative
wg2(x) = q*k / sqrt(pow3(k + q*x*x))            # second derivative
rk(x) = sqrt(pow3(k + (q + q*q)*x*x)) / (q*k)   # radius of curvature

set title sprintf("OSWG radius of curvature: dt=%g mm, alpha=%g deg", 2.0*rt, alpha)
set xrange [0:100]
set xtics 10
set xlabel "x [mm]"
set logscale y
set ylabel "R [mm]
set grid

plot rk(x) lw 2 not


Looking at this and out of curiosity whats the codebase of software? You write things in octave or Cpp/linear library etc?
 
Would you really want to put this in front of your driver? But I still don't get it - it seems you have the code needed to produce the shape, right?

Looking at this and out of curiosity whats the codebase of software? You write things in octave or Cpp/linear library etc?
This is just a gnuplot script for a quick look on the charts. I use gnuplot all the time in my professional work, it's incredible tool. Otherwise I write in C/C++. There's no need for any special library. I don't do the BEM myself.

How will this work if the transition is not to a flat baffle?
Say a rolled back surface, or in a corner.
It won't. In that case connecting a clothoid may be the solution :) As I think about it, it may be actually better to connect it to a curve like this (instead of a pure OS), in a point where the curvature is already increasing. That's also the reason why I considered the point "B" before. Otherwise the connection is not as smooth as it could, but we are talking about a third derivative here - maybe way too cautious.
 
Last edited:
Would you really want to put this in front of your driver? But I still don't get it - it seems you have the code needed to produce the shape, right?

Code is for constant aperture. For compression driver we need different code. I haven't printed it yet because working on printer right now. Author spent whole week on printing these :)

Thanks for modified OS equation - it works directly in CAD. I've got request on printing round STH, got STL file but must redraw it anyway so equation will help. Will try write macro in Solidworks.

Any OpenSCAD users here?
 
The above is an equation for a smoothly terminated OS waveguide. All the letters except x and y are parameters determining how it will look like. I will definitely implement it in the tool and elaborate more in the manual.

Will this kind of smooth termination avoid the on-axis dip that round horns are famous for?

One can rotate that equation around the axis to create a round horn. How would you go about obtaining an elliptical mouth shape?
 
Will this kind of smooth termination avoid the on-axis dip that round horns are famous for?
Yes. If not completely, then to a high degree.

One can rotate that equation around the axis to create a round horn. How would you go about obtaining an elliptical mouth shape?
The same way as it is done now - see Appendix A in the manual (it may be poorly written however - I'm going to rewrite that). It's difficult to describe in a short post. The Ath4 tool will do this for you (and for any other shape, for that matter).
 
Last edited:
How would you go about obtaining an elliptical mouth shape?
Well it's not so difficult after all: You gradually vary the coverage angle around the circumference for the desired cross-sectional shape (be it an (super)ellipse or anything else). You may vary other parameters as well.

- One could even put together a function for the whole horn surface of any shape (similar to eq.3 in the manual). It will be a lot more complex but nothing hard for a computer to evaluate.
 
Last edited:
Thanks for the explanation. I'm embarrassed not to have seen that appendix.
I've tried to do this round to rectangular conversion in CAD (Sketchup) without much luck. Its easy enough to start the throat out on an OS profile matching up to the exit angle of the CD but all that is available (other than manual) to stretch the circle out to an ellipse is a so called lofting tool that at least in Sketchup isn't up to the task (although others have had success in other CAD tools). Your approach is more compelling. Of course it is always easier to say than to do and we still have the challenge of implementing the shapes thus defined. Thanks for ATH4 which at least gives us a chance.
 
I had a look at Autodesk Fusion 360 (which is readily available) and the "loft" feature seems promising. I've already prepared a script that imports splines generated by the tool as cross-sectional cuts along with some guide curves to be used with the loft command. Didn't try it all together yet but I hope that could work very well.