ATH CORE



© 2026 by Marcel Batík, licensed under CC-BY-4.0
(Free to share, adapt, and use this work for any purpose, including commercially, as long as appropriate credit is given.)


Here's what I would consider a cornerstone design for large compression drivers. I've been playing with big-diaphragm drivers for some time (rather old-school, I should say), and the appeal is immense. The design is simple, effective (and pretty efficient), and highly customizable, so I decided to publish the recipe.

Below is the full Ath script for a 2-inch version, which is also available as a baffle-mounted kit:


STL kit via Cults3D

To simulate the horn and observe the results of your modifications, you can copy & paste the script directly to Boundary Lab. You will probably need the most recent build of Ath, which can be downloaded here (simply replace the file ath.exe in the 'ath' subdirectory of BoundaryLab).


; ATH CORE Waveguide ; (C)2026 Marcel Batík, licensed under CC-BY-4.0 ; The original 2-inch version ; Extended OS-SE horn contours OSSE = { L = 260 r0 = 25.0 a0 = 1.2 a = 5 + 35*sf(4,12,15,16,1,0.618,p) - 15*cos(p)^10 n = 6.0 + 1.5*cos(p)^2 q = 0.996 s = 0.6 + 0.23*cos(p)^2 s1 = 1.14 s2 = 0.025 } Morph.TargetShape = 1 ; morph to a rounded rectangle Morph.FixedPart = 0.0 ; start the morphing at the throat Morph.Rate = 3.0 ; the morph-rate exponent Morph.CornerRadius = 16.5 ; [mm] Mesh.Roundover = { Radius = 42 Segments = 6 } Mesh.RearShape = 3 Mesh.RearShape.FrontOffset = 40 Mesh.RearShape.Step = 50 Mesh.Quadrants = 1 Mesh.AngularSegments = 100 Mesh.LengthSegments = 20 Mesh.CornerSegments = 4 NAC = 10 Mesh.ThroatResolution = 6 ; [mm] Mesh.MouthResolution = 11 ; [mm] Mesh.RearResolution = 25 ; [mm] Mesh.InterfaceResolution = 8 ; [mm] Mesh.WallThickness = 15 ; [mm] ; Disable subdomain interface, i.e. set this to an empty value Mesh.SubdomainSlices = ABEC.SimType = 2 ; free space ; The following items are not used anymore in the latest version(s) of Boundary Lab ;Output.ABECProject = 1 ;ABEC.f1 = 200 ; [Hz] ;ABEC.f2 = 16000 ; [Hz] ;ABEC.NumFrequencies = 40 ;ABEC.MeshFrequency = 1000 ; [Hz]

Of course it's possible to freely modify the horn for a different throat diameter, the overall size, nominal coverage angle, etc. I haven’t tried many different variations myself, and would be interested to see where this design may lead. If you don’t know how to convert your script into a CAD model, I can always make STEP or STL files from it as a custom service.

ATH CORE - BEM simulation, Boundary Lab

The results of the simulations confirm a feature common to all ATH designs: extremely low diffraction in the direct sound. It is achieved by using the smoothest profiles in every section of the horn - the true virtue of OS-SE.

ATH CORE - STL kit, 2-inch throat version

The script step by step

As Ath may be a bit difficult at times (frustrating I've heard), let's go step by step and explain all the lines of the code. There are also some features not described before.

The horn is built on top of a basic OS-SE definition that goes like this:

OSSE = { L = 260 ; horn length [mm] r0 = 25.0 ; throat radius [mm] a0 = 1.2 ; throat angle [deg] a = 5 + 35*sf(4,12,15,16,1,0.618,p) - 15*cos(p)^10 ; wall angle [deg] n = 6.0 + 1.5*cos(p)^2 ; superellipse exponent q = 0.996 ; truncation coefficient s = 0.6 + 0.23*cos(p)^2 ; superellipse aspect ratio }

This is the latest syntax of an OS-SE definition, all clearly arranged in one item. The function sf() is an expression for a superformula of the form sf(m, n1, n2, n3, a, b, p), where 'p' is the angular variable, as used in the other math functions in Ath scripts (here's a Desmos script of the superformula used). A similar overall shape could be probably obtained using the guiding curve approach, as described in the User Guide (document not maintained for quite some time, but still useful for the basic concepts). This is just a bit more straightforward.

If you look carefully, two lines are still missing, compared to the full script:

s1 = 1.14 ; extension length coefficient s2 = 0.025 ; sharpness of the transition

This is the throat-extension feature, described probably only in some of the many posts of the large diyAudio thread. The value of s1 sets the extension length and the value of s2 how sharp/localized is the transition. There's nothing better to get the idea than just to try and see — you can also try a Desmos interactive plot.

There's one downside to this approach, however (and it's the reason why this is not used in some other ATH designs, like Opus 12 or the TwinRays) — we lose control of the exact throat angle we set with a0. But as this feature is meant to be used with slow-expansion drivers anyway, it doesn't matter much in the end, as the resulting angle will be just someting close to zero. If you really want to keep the throat angle defined by a0, you need to use a different approach. Should a wide-opening driver be used with an extended throat, the best solution is to start the horn contour right at the phase plug exit and effectively bypass the conical exit section.

Mouth outline morphing

Morphing the mouth to a rounded rectangle is already a feature that has been in Ath for years unchanged. It is used here in the classic way:

Morph.TargetShape = 1 ; morph to a rounded rectangle Morph.FixedPart = 0.0 ; start the morphing at the throat Morph.Rate = 3.0 ; the morph-rate exponent Morph.CornerRadius = 16.5 ; [mm]

Mouth roundover

There's a possibility to round the mouth edge of an arbitrary horn shape with a simple radius via the item Mesh.Roundover. If you leave this out, there will be a sharp edge.

Mesh.Roundover = { Radius = 42 ; [mm] Segments = 6 }

Rear side modeling

The next section defines how is the rear side of the horn modeled. The shape type 3 was implemented especially for rectangular free-standing horns, as we need the rear side to match the real device, if possible, or at least approximately. I've added this when I developed the Opus 12.

Mesh.RearShape = 3 Mesh.RearShape.FrontOffset = 40 ; [mm] Mesh.RearShape.Step = 50 ; [mm]

Again, there's nothing better for getting a feel for it than to try different values. Just be aware that Ath may not check the user input in every situation. If you enter values leading to impossible geometries later, there's a high chance the BEM mesh won't be generated.

BEM mesh resolution

The rest of the items is no longer about the horn shape, but sets the properties of the generated mesh.

Mesh.Quadrants = 1 ; --> quarter-symmetry ; The basic division into segments Mesh.AngularSegments = 100 Mesh.LengthSegments = 20 Mesh.CornerSegments = 4 ; This sets the angular index of the diagonal. ; It should match the final diagonal direction for the best results. NAC = 10 Mesh.ThroatResolution = 6 ; [mm] Mesh.MouthResolution = 11 ; [mm] Mesh.RearResolution = 25 ; [mm] Mesh.InterfaceResolution = 8 ; [mm] - not used here, kept just in case ; This is only for Mesh.RearShape = 1 Mesh.WallThickness = 15 ; [mm]

Adding an enclosure

To model the horn in an enclosure, item Mesh.Enclosure can be used, and some other items omitted. For convenience, this is the whole script with the horn placed in a simple rounded box:

; ATH CORE Waveguide / Enclosure script ; (C)2026 Marcel Batík, licensed under CC-BY-4.0 OSSE = { L = 260 r0 = 25.0 a0 = 1.2 a = 5 + 35*sf(4,12,15,16,1,0.618,p) - 15*cos(p)^10 n = 6.0 + 1.5*cos(p)^2 q = 0.996 s = 0.6 + 0.23*cos(p)^2 s1 = 1.14 s2 = 0.025 } Morph.TargetShape = 1 ; morph to a rectangular mouth outline Morph.FixedPart = 0.0 ; start at the throat Morph.Rate = 3.0 ; this affects how gradual is the morphing Morph.CornerRadius = 16.5 ; [mm] Mesh.Enclosure = { Spacing = 40,40,40,40 ; margins: left, top, right, bottom [mm] Depth = 370 ; enclosure depth [mm] EdgeType = 1 ; rounded EdgeRadius = 30 ; [mm] } Mesh.Quadrants = 1 Mesh.AngularSegments = 100 Mesh.LengthSegments = 20 Mesh.CornerSegments = 4 NAC = 10 Mesh.ThroatResolution = 6 ; [mm] Mesh.MouthResolution = 11 ; [mm] Mesh.RearResolution = 25 ; [mm] Mesh.InterfaceResolution = 8 ; [mm] Mesh.WallThickness = 15 ; [mm] Mesh.SubdomainSlices = ABEC.SimType = 2 ; free space ABEC.f1 = 200 ; [Hz] ABEC.f2 = 16000 ; [Hz] ABEC.NumFrequencies = 40 ABEC.MeshFrequency = 1000 ; [Hz] Output.ABECProject = 1
Enclosure added, Boundary Lab



Back to the main page

Marcel Batík, Czechia, August 2026