This is an exponential horn library for OpenSCAD. I made it to amplify the sound from my son's watch alarm (fittings for that are here). You can use the library in your projects, or just generate horns with the demo Customizer here.
To generate a horn programmatically, do
use <horn.scad>; and call
horn(). You will also need my tubemesh library (it's bundled in the demo).
There are lots of optional arguments:
length=x: length of horn, from mouth to throat
throat=[w,h]: width and height of throat (narrow end)
mouth=[w,h]: width and height of mouth (wide end)
wallThickness=x: thickness of walls
numSections=n: number of strips to use (more is slower but better quality)
rectangular=b: set to
falseto do a round/elliptical horn (very slow); default:
flangeLength=x: length of flange around mouth, for mounting mouth into something; set to 0 to omit flange
flangeFlare=x: how far the flange flares out