Nice results..Has anyone explored further designs using the superformula feature? I know there were some posts early on in the thread about it, but it seems like interest died off. It may be a dead end, but given that the complexity increases substantially once you add in the superformula variables, I've been using a genetic algorithm to improve on this style waveguide over a few hundred iterations. Drawing inspiration from @Patrick Bateman's extensive research on the image control waveguide. This one measures at 320x320x140mm with a 1" throat.
I've got a few other variations of this that I've printed and tested, but so far this one looks to be the most promising, so I'll start on a physical prototype next week.
View attachment 1351347 View attachment 1351348 View attachment 1351349 View attachment 1351350
View attachment 1351354
Regarding the wide-narrow-wide radiation pattern problem in the 1-2kHz region, a large enough rounding around the edges of the waveguide might help to significantly reduce it..
I've tried it with a 6mm, 12 and 18mm roundover with slightly improving results, but not sure if its worth it given the additional material it would require in the cabinet. The goal is to hopefully house this in a 12mm baltic birch enclosure.Nice results..
Regarding the wide-narrow-wide radiation pattern problem in the 1-2kHz region, a large enough rounding around the edges of the waveguide might help to significantly reduce it..
Optimization outcomes mostly. I had it generate shapes with 4, 6, 8, and 10 petals and it just turned out that the 8 petal variants seemed to perform the best. What was surprising was how consistent the polars were. I simulated at 0 (horizontal), 11.25, 22.5, and 45 degree inclinations and all seemed pretty similar, so it seems that there is some kind of "smoothing out" effect that having a larger number of petals gives you - which then results in a reasonably symmetrical conical pattern. Below are the 11.25, 22.5 and 45 degree polars. There seems to be the most deviation at 45 degrees, which I guess makes sense given that its a square mouth and the corners have the most different path lengths. Ignore the bump at 1.7khz - I'm fairly certain that was due to me not setting a mesh density value low enough.galutcha, what made you decide on 8 "petals", was it the optimization outcomes? Also, is it just me or does this configuration scream to be used on a coaxial driver?
Regarding the coaxial driver - I really want to try that out. I've got a 12CXN88 on hand that needs reconing and the size/dimensions seem to work out quite well.
I really want to explore more 2-way full range MEHs, but the issue has always been balancing the position of taps and getting the drivers physically close enough to the throat. Like - you can do it if you go with a really wide pattern horn, but then you don't get enough impedance for the CD. So this design lets you have decent impedence at the throat while also providing enough real-estate to mount larger woofers. In addition it keeps the woofer tap path lengths short.
Ok.. In my case for a horn with approx 380mm width and 320mm height, only when I had greater than 40mm roundovers, I started to notice appreciable difference w.r.t that wide-narrow-wide radiation behaviour.. Maybe it could be optimised in some way so that similar effects can be obtained with less radius edge terminations but I have not been successful in finding such a contour in my build as well. I had tried out cubic super elliptic curves, cubic bezier curves with minimal curvature variations, and simple rounding.. But for all of it to make any effect, I needed 40mm + size curves.I've tried it with a 6mm, 12 and 18mm roundover with slightly improving results, but not sure if its worth it given the additional material it would require in the cabinet. The goal is to hopefully house this in a 12mm baltic birch enclosure.
But you are right, it will take up significant amount of space/additional material as well. I also don't know about the audibility of it..
All the best for your project
This sounds super interesting, I would love to hear about your genetic optimisation. I work in deep learning and have access to some pretty large compute at times.Has anyone explored further designs using the superformula feature? I know there were some posts early on in the thread about it, but it seems like interest died off. It may be a dead end, but given that the complexity increases substantially once you add in the superformula variables, I've been using a genetic algorithm to improve on this style waveguide over a few hundred iterations. Drawing inspiration from @Patrick Bateman's extensive research on the image control waveguide. This one measures at 320x320x140mm with a 1" throat.
I've got a few other variations of this that I've printed and tested, but so far this one looks to be the most promising, so I'll start on a physical prototype next week.
View attachment 1351347 View attachment 1351348 View attachment 1351349 View attachment 1351350
View attachment 1351354
When the JBL M2 came out, Geddes basically warned that the design was likely just cosmetic; the improvements that JBL speculated didn't seem to make sense.Has anyone explored further designs using the superformula feature? I know there were some posts early on in the thread about it, but it seems like interest died off. It may be a dead end, but given that the complexity increases substantially once you add in the superformula variables, I've been using a genetic algorithm to improve on this style waveguide over a few hundred iterations. Drawing inspiration from @Patrick Bateman's extensive research on the image control waveguide. This one measures at 320x320x140mm with a 1" throat.
I've got a few other variations of this that I've printed and tested, but so far this one looks to be the most promising, so I'll start on a physical prototype next week.
View attachment 1351347 View attachment 1351348 View attachment 1351349 View attachment 1351350
View attachment 1351354
I tend to agree with that assessment now.
Basically, after 3D printing and testing a bunch of waveguides, I was never able to create anything that could exceed the performance of the rectangular QSC waveguide that was used in the Econowave Deluxe. I still have a box full of those waveguides in my garage. And note that the JBL waveguides have become increasingly more "normal" looking; the aggressive "beaks" of the M2 are long gone, and their current waveguides look (mostly) conventional. There's a little bit of a diffraction slot, still, but nothing close to what the M2 had. I wouldn't be surprised to learn that the M2 was designed without the software that we have now. (Note that the CURRENT JBL waveguides are DEFINITELY optimized in software; Samsung (owner of JBL) published a paper on their process.)
The ONE exception to this rule was triangular waveguides.
This was completely unexpected, but the triangular waveguides performed about as well as circular waveguides do, but they're especially ideal for sticking in a corner of a room or the dash of a car.
Basically, no matter what the orientation was, a triangular waveguide behaved quite similar to a circular waveguide.
One could likely optimize this by having a smooth transition from a circular throat to a triangular mouth.
Of course, the only "real" reason to use a triangular waveguide would be:
1) If you intend to stick the speaker into a corner; triangular works really well because you can jam it right into a corner. Even a rectangular waveguide will suffer from 'floor bounce' to a degree, but a triangular waveguide can go ALL the way into a corner. (This assumes the waveguide meets the floor or the ceiling.)
2) It may be possible to get tighter than normal center-to-center spacing with a triangular waveguide. The difference wouldn't be "huge" but you can visualize how it would be possible to get two mids really close to the center of a triangular WG
It's a bit odd that no manufacturer has every made anything like these, AFAIK
It's a pretty crude implementation of python and autohotkey at this point, but the basic idea is to start by generating a randomized first generation of waveguides by varying values in the config scripts. For the genes I varied the values such as the OS parameters, slot length, morph rates, each of the superformula values, etc. to generate 50 candidates that were highly varied. Each of these values had an upper and lower range that they could fall into. The length and mouth area was constrained at a fixed value to prevent waveguides from quickly becoming too large.
For measuring, I made an autohotkey script that would open each of the ABEC projects and automatically solve, open VACS, and export the polar data into a CSV.
The fitness function then evaluates the polar data against a target -6dB and -3dB line. In my case for the aforementioned waveguide, I was after a 45 degree constant directivity pattern, so the function calculated the delta between the measured and target polars. There are also some other "penalties" built in that help to prevent certain things like directivity errors and some weighting that prioritizes pattern control >2khz more than <2khz.
Then its simply a matter of selecting the best performers for breeding/mutation and slowly working into less and less varied waveguides until reaching a point of diminishing returns.
I've got a Ryzen 5700x on my PC and am able to do about 14 generations of 50 waveguides a day (the mesh density is moderately optimized but not perfect). Of course runtime increases substantially once you start measuring polars at different inclinations and simulating enclosures, so I don't turn those settings on until later generations. Again, its a crude implementation and more of a proof of concept at this point, but I think the methodology has legs.
For measuring, I made an autohotkey script that would open each of the ABEC projects and automatically solve, open VACS, and export the polar data into a CSV.
The fitness function then evaluates the polar data against a target -6dB and -3dB line. In my case for the aforementioned waveguide, I was after a 45 degree constant directivity pattern, so the function calculated the delta between the measured and target polars. There are also some other "penalties" built in that help to prevent certain things like directivity errors and some weighting that prioritizes pattern control >2khz more than <2khz.
Then its simply a matter of selecting the best performers for breeding/mutation and slowly working into less and less varied waveguides until reaching a point of diminishing returns.
I've got a Ryzen 5700x on my PC and am able to do about 14 generations of 50 waveguides a day (the mesh density is moderately optimized but not perfect). Of course runtime increases substantially once you start measuring polars at different inclinations and simulating enclosures, so I don't turn those settings on until later generations. Again, its a crude implementation and more of a proof of concept at this point, but I think the methodology has legs.
You don't suppose that was the thinking in developing these do you? Sometimes I look at designs like this and wonder if they were chosen due to cosmetics or because they actually offer any advantage.The ONE exception to this rule was triangular waveguides.
But you do raise an interesting point on the center to center spacing. I imagine it may be a bit tighter than the round alternative.
Last edited:
Phew, this was not easy. Printing the first batch for verification now...I'm testing a new idea of the assembly scheme. [...]
None of the more exotic shapes I tried ever worked satisfactorily to my taste, so that I would pursue it further. I don't think anymore that it offers any advantage, given how good can be a pure axisymmetric device. Maybe in a box (i.e. baffled) non-axisymmetric can have an advantage, but not in absolute terms.Has anyone explored further designs using the superformula feature? I know there were some posts early on in the thread about it, but it seems like interest died off.
Very organic! FIFA might sue you, though...Phew, this was not easy. Printing the first batch for verification now...
View attachment 1352457 View attachment 1352458 View attachment 1352459
@mabat despite being smaller, this way of breaking apart the horn looks harder to print than the petal + base approach. I might be missing something but these parts don't seem to have a natural orientation for printing without support. I do not wish to discourage your experimentation though, I 100% love it!!!
IF you are going down the road of clips you may find that it is useful to break apart the shape using a range of tolerances. Then people can do a tolerance test (built into most slicers) and then print the set that has been cut with that tolerance.
IF you are going down the road of clips you may find that it is useful to break apart the shape using a range of tolerances. Then people can do a tolerance test (built into most slicers) and then print the set that has been cut with that tolerance.
Thanks for the explanation, especially the fitness function, that is well done and gives me some ideas. It really is a shame that the packages don't have linux and GPU support it is 2024 after all.It's a pretty crude implementation of python and autohotkey at this point, but the basic idea is to start by generating a randomized first generation of waveguides by varying values in the config scripts. For the genes I varied the values such as the OS parameters, slot length, morph rates, each of the superformula values, etc. to generate 50 candidates that were highly varied. Each of these values had an upper and lower range that they could fall into. The length and mouth area was constrained at a fixed value to prevent waveguides from quickly becoming too large.
For measuring, I made an autohotkey script that would open each of the ABEC projects and automatically solve, open VACS, and export the polar data into a CSV.
The fitness function then evaluates the polar data against a target -6dB and -3dB line. In my case for the aforementioned waveguide, I was after a 45 degree constant directivity pattern, so the function calculated the delta between the measured and target polars. There are also some other "penalties" built in that help to prevent certain things like directivity errors and some weighting that prioritizes pattern control >2khz more than <2khz.
Then its simply a matter of selecting the best performers for breeding/mutation and slowly working into less and less varied waveguides until reaching a point of diminishing returns.
I've got a Ryzen 5700x on my PC and am able to do about 14 generations of 50 waveguides a day (the mesh density is moderately optimized but not perfect). Of course runtime increases substantially once you start measuring polars at different inclinations and simulating enclosures, so I don't turn those settings on until later generations. Again, its a crude implementation and more of a proof of concept at this point, but I think the methodology has legs.
You may find these posts of interest:It's a pretty crude implementation of python and autohotkey at this point, but the basic idea is to start by generating a randomized first generation of waveguides by varying values in the config scripts. For the genes I varied the values such as the OS parameters, slot length, morph rates, each of the superformula values, etc. to generate 50 candidates that were highly varied. Each of these values had an upper and lower range that they could fall into. The length and mouth area was constrained at a fixed value to prevent waveguides from quickly becoming too large.
For measuring, I made an autohotkey script that would open each of the ABEC projects and automatically solve, open VACS, and export the polar data into a CSV.
The fitness function then evaluates the polar data against a target -6dB and -3dB line. In my case for the aforementioned waveguide, I was after a 45 degree constant directivity pattern, so the function calculated the delta between the measured and target polars. There are also some other "penalties" built in that help to prevent certain things like directivity errors and some weighting that prioritizes pattern control >2khz more than <2khz.
Then its simply a matter of selecting the best performers for breeding/mutation and slowly working into less and less varied waveguides until reaching a point of diminishing returns.
I've got a Ryzen 5700x on my PC and am able to do about 14 generations of 50 waveguides a day (the mesh density is moderately optimized but not perfect). Of course runtime increases substantially once you start measuring polars at different inclinations and simulating enclosures, so I don't turn those settings on until later generations. Again, its a crude implementation and more of a proof of concept at this point, but I think the methodology has legs.
The chain in Gnu Octave genetic algorithm -> Ath -> ABEC -> Gnu Octave genetic algorithm etc.
I ran some trials up to three days for 12k individuals total...
Good luck!
https://www.diyaudio.com/community/...he-easy-way-ath4.338806/page-468#post-6943450
https://www.diyaudio.com/community/...he-easy-way-ath4.338806/page-470#post-6957318
https://www.diyaudio.com/community/...he-easy-way-ath4.338806/page-489#post-6991655
https://www.diyaudio.com/community/...he-easy-way-ath4.338806/page-561#post-7224639
https://www.diyaudio.com/community/...he-easy-way-ath4.338806/page-575#post-7237263
It may not look so but it's all printable without any supports. Quite a care was put into this.@mabat despite being smaller, this way of breaking apart the horn looks harder to print than the petal + base approach. I might be missing something but these parts don't seem to have a natural orientation for printing without support.
Last edited:
- Home
- Loudspeakers
- Multi-Way
- Acoustic Horn Design – The Easy Way (Ath4)