Acoustic Horn Design – The Easy Way (Ath4)

Code:
function drawRosse(R, a, r0, a0, k, r, m, b, q, th)

  n = 1001;
  t = linspace(0, 1, n);

  [x, y, curvature, dxdt, dydt] = rosse(R, a, r0, a0, k, r, m, b, q, t);


  figure(1)
  subplot(3, 1, 1:2)
  plot(x, y)

  subplot(3, 1, 3)
  plotyy(t, curvature, t, 1./curvature)

  subplot(3, 1, 1:2)
  hold on
  [x, y, curvature, dxdt, dydt] = rosse(R, a, r0, a0, k, r, m, b, q, th);
  radius = 1./ curvature;
  t2 = linspace(atan2(dydt, dxdt)-pi/2, 1.5*pi, 102);
  x2 = radius*cos(t2);
  y2 = radius*sin(t2);
  plot(x2-x2(1)+x, y2-y2(1)+y, 'r')
  hold off

  axis equal
  xlim([0 150])
  ylim([0 230])

endfunction
 
Sorry polluting but this looks nice to eye https://www.desmos.com/calculator/dkvi8skmdf
Same as above just took z out from bezier curve control point y coordinate calculation.
smooth.png
 
I have been trying something similar but instead of starting with a standalone WG with a good termination and build the enclosure from there, I tried to design an enclose that would add a nice termination and the back of the box to a “flat terminated” WG.
That can be done with the custom enclosure map map feature. I didn’t try to build an axisymmetric box, I don’t know if it is possible from within Ath.

With the custom enclosure map, in addition to simple arcs and ellipses, one can build any shape using “linear interpolation” (many segments to approximate a contour) but the size of the model become large and there may be numerical errors when too many close points are used.
Furthermore the current custom enclosure feature doesn’t allow to round the top and bottom edge of the enclosure (only in the shoebox case that can be done), or at least I don’t know how to do it, that creates diffraction so it makes it debatable to try this way as I am pretty sure that the diffraction will spill on the horizontal plan as well…

The goal is to design low/optimized to minimize diffraction enclosure.
 
Last edited:
Same phenomenon as before, as you roundover the edge better and better diffraction related secondary sound reduces, also on the low frequencies. Whats left now is sound around the device, which makes the off-axis wavyness. Add big backside to smoothen that as well. The device backside would need to be a bullet or sphere shape and enclose the driver.

I tried to explain this but my ouput is poor I think, sorry about it.

You must balance diffraction related secondary sound source with sound around the device, for smooth response and DI. If you reduce diffraction the balance is off and DI suffers.

Devices so far, like ST260 and similar utilize this nicely, but there is diffraction.

If goal is to eliminate diffraction then you have to optimize waveguideprofile that has none AND reduce interference ripple due to sound around the device, increase pathlength around the device. Also round shape on the back helps to redistribute sound leaving almost no sign of it on the sims and ruler straight DI. Basically on a wide coverage device the compression driver needs to be enclosed within the backside. Using ROSSE with tmax, for wide coverage devices, dont enable this, the curve gets too tight to really increase path length aroubd the box, also the driver doesnt fit in.

If you have relatively shallow mouth rollover in comparison to mouth diameter, there seems to be lots of sound around the device and you need the diffraction to smoothen it out. So do not go past 180 deg rollover with this kind of devoces without fully enclosing backside. 180deg rollover seems to balance diffraction right and works fine as it is.

To tackle the diffraction R-OSSE is fine but the backside with tmax is not. Check out desmos links I posted yesterday. Idea is to be able to optimize the waveguide part up to 180deg rollover independently of the backside and then optimize backside separately to fit driver inside it. This should allow optimization of ROSSE parameters for zero diffraction and what ever pattern you like. Purpose of the backside is to deal sound around the device, enable to use the zero diffraction as target for ROSSE.

And again, by removing diffraction altogether we lose some narrowing on the device sized wavelengths so expect waveguides be bit bigger than before, for similar DI.

I suspected yesterday the circular mouthover wouldn't be very usefull as planned, the backside needs to be big, we need to approximate sphere with the device for smoothest graphs.
 
Last edited:
Yeah thats the penalty, we'd be using only the size of the device to intially narrow pattern from omni to our target say 90 deg nominal. This shouldn't be a problem as the same thing happens with direct radiating woofers for example, response narrows first due to size of the device (baffle) and past that by beaming. Difference here is that we have small transducer and waveguide controlling its pattern, possible no beaming. Anyway, such device should still mate well with direct radiating woofers so not big penalty.

If one wants small device fear not to use ST260 or alike, DI is mighty fine and diffraction is doing work allowing relatively small device for the pattern.

I try to come up with an example. I'm not able to make ABEC sims to accompany, had to ask ChatGPT for python script to plot nodes.txt :D but don't have code yet to manipulate it outside what ath gives me. I'll try to prepare good written example from the data we already have on the thread.
 
hello,

is someone interested in a python software (open source) to compute optimal waveguides?

I want to make one for a few years now but never finish it.
Currently I can:
  • take some parameters and generate a mesh (via gmsh)
  • for a mesh compute freq/phase information and build spinorama or whatever graph you want. Solver is Fenics
  • distribute the computation with MPI
  • have a cost function to optimise and compute a gradient (with firedrake) -> this is not working well
  • iterate and minimise the function wrt to the shape

I need to write a lot of tests first. I am currently restarting development and cleaning up the code. I will upload to github
soon.

Pierre
 
  • Like
Reactions: 5 users
Member
Joined 2004
Paid Member
I thought about that but it's not as straightforward as it seems. If you already have the coordinates, it should not be a problem to generate the files 'nodes.txt' and 'solving.txt' directly (and simply overwrite the existing ones). The structure is very simple, nodes.txt are the points and solving.txt connects them into mesh elements. I modified these files manually many times, it's really simple.
 
Uh, cannot come up with anything simple. First bit of a backstory describing the issue and then what I think could be a solution. Hopefully it is not too hard read.

-------------
Issue:

These results are from mabat, posted here: https://www.diyaudio.com/community/...-design-the-easy-way-ath4.338806/post-7225299
mabat-rback1-4.png mabat-rback1-4_polar_fall.png

Above is example of a waveguide that has no edge diffraction. Sound around the device makes only minor interference ripple outside listening window around 500-1000Hz. This is our target smoothness.

The smoothness is result of removing two sources of interference ripple: 1) edge diffraction on the mouth lip and 2) sound around the device. What we see here is smooth extended waveguide curve that makes kind of an enclosure increasing path length around the device and removes edges. Result is very clean and smooth graphs on pass band, no interference, no secondary sounds, no homs, no diffraction.

However, issue on these results is that the waveguide beams, DI shoots up.

On the example above smoothness and beaming are connected. The curve starting from driver throat extends seamlessly to make the backside ( * ). It was made with current ATH script by extending R-OSSE curve with tmax parameter. This means that shape of the backside depends on shape of the waveguide itself. Done like this optimal backside results beaming waveguide curve. Conversely, if we optimize the waveguide curve for our target directivity the backside is not optimal ( ** ).

I think there is no way to make smooth graph like above with directivity we want without separately adjustable backside.
What I'd like to see in ATH is ability to adjust curve / parameters of the backside independently from the R-OSSE curve.

* With backside of the waveguide I mean extension of the R-OSSE curve beyond tmax > 1. For those who haven't been playing with the script: parameter tmax=1 makes end of R-OSSE curve pointing 180deg backwards. Increasing tmax past 1 continues the curve making continuous backside reducing diffraction and potentially increasing path length around the device.

** few experiments I've made indicate that more constant directivity waveguide with tmax > 1 makes too shallow backside with too short path length around it and graph doesn't smoothen out, ripple stays on pass band.

--------------
Example solution:

I think almost any smooth curve extension to R-OSSE tmax=1 curve will reduce diffraction. Round smooth extension would clear the graphs from diffraction (like we see above). Make the extension long and round enough and also sound around the device smoothens out on the graphs (like we see above).

I think the curve extension doesn't take part of directivity because its 180deg and beyond when R-OSSE tmax=1. I think the curve extension doesn't have to continue perfectly (ROSSE with tmax>1 is perfect) and we can use almost any smooth curve there.

Here example of simple way to control backside in Desmos https://www.desmos.com/calculator/dkvi8skmdf
It is simple (liner or quadratic, don't know :D ) bezier curve extension allowing simple control of the back side independent from R-OSSE curve. On Desmos example there is two additional parameters on the bottom (xb2 and z, excuse me bad naming) to control size and shape of the backside while transition from R-OSSE tmax=1 curve stays smooth.

I suspect sometimes there would be some diffraction where the curve changes but optimization algorithms (and humans) should be able to tweak R-OSSE parameters for good directivity while backside stays optimal for low interference due to mouth edge / device size. Expected outcome is smooth graphs with desirable direcitivity without any diffraction.
 
Last edited:
Member
Joined 2004
Paid Member
hello,

is someone interested in a python software (open source) to compute optimal waveguides?
Hi Pierre,

Of course I'd like to see someone else's approach, mainly to parametrization of the shape, and of course some results.
I don't work with Python, don't know any of the APIs you mention, so I can't contribute in that regard.
 
Member
Joined 2004
Paid Member
What I'd like to see in ATH is ability to adjust curve / parameters of the backside independently from the R-OSSE curve. [...] Expected outcome is smooth graphs with desirable direcitivity without any diffraction.
I'll implement cubic Bezier curve as a "back cover" (I virtually have that already) but in any case be prepared to be disappointed. Acoustics seldom works as expected. :)

- At the moment, I still see a rounded edge for tmax=1 as the best solution. Prove me wrong.
 
Last edited:
Yeah, edge rounding for tmax=1 definitely best, yet :) Well its the pinacle right now and perhaps in the future, reduced diffraction ripple for high frequencies while utilizing the narrowing effect on the lows like before.

If you publish ath version with cubic bezier back side then we can investigate more possibilities :)