Tractrix Horn Generator

by mechadense, published

Tractrix Horn Generator by mechadense Jan 3, 2014
0 Share
Download All Files

Thing Apps Enabled

Open in Customizer Order This Printed View All Apps


A part of these Groups

View All


Use This Project

Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag.

Print Thing Tag

Thing Statistics

4674Views 1239Downloads Found in Audio


(for now keep crop factor >0.9 in customizer - for reason see below)
This is a generator for horns with tractrix crossection.
Those are not the same as spherical wave horns. See here:
under: Horn Theory: An Introduction, Part 1
and: Horn Theory: An Introduction, Part 2
Horns act as acoustic impedance matching transformators
transformating high pressure low speed to low pressure high speed sound waves or vice versa.
Note that the sizes that are printable on common personal 3D printers are only suitable for rather high frequencies (even for whistles).
Well as it turns out low frequencies get amplified as well.
See: http://www.thingiverse.com/thing:389700
Example horn:
cutoff frequency: 4500Hz
inlet inner diameter: 20mm
inlet outer diameter: 24mm
inlet pipe length: 5mm
horn length cropped to: 80%
cropped horn mouth diameter: 126.5mm
complete horn length: 129.9mm
tractrix segment length: 124.9mm
known problem: customizer can't deal with this file :(
found out: crop factor above 0.9000 works

More from Audio

view more

All Apps

Customizer is the easiest way to take great 3D printable designs and make them your own. Make your OpenSCAD designs infinitely more valuable by empowering the community to customize them.

App Info Launch App
Customizer Thing App

3D Print your file with 3D Hubs, the world’s largest online marketplace for 3D printing services.

App Info Launch App

Auto-magically prepare your 3D models for 3D printing. A cloud based 3D models Preparing and Healing solution for 3D Printing, MakePrintable provides features for model repairing, wall thickness...

App Info Launch App

Kiri:Moto is an integrated cloud-based slicer and tool-path generator for 3D Printing, CAM / CNC and Laser cutting. *** 3D printing mode provides model slicing and GCode output using built-in...

App Info Launch App
KiriMoto Thing App

With 3D Slash, you can edit 3d models like a stonecutter. A unique interface: as fun as a building game! The perfect tool for non-designers and children to create in 3D.

App Info Launch App

Print through a distributed network of 3D printing enthusiasts from across the US, at a fraction of the cost of the competitors. We want to change the world for the better through technology, an...

App Info Launch App

Quickly Scale, Mirror or Cut your 3D Models

App Info Launch App

3D Print a wide range of designs with Treatstock. Easy to use tools to get the perfect result. The global 3D printing network that connects you with high-quality and fast working print services nea...

App Info Launch App

I would like to use this, but im worried about what runthroughthejungle said.
I have checked the source code and I cant understand this lines regarding mouth radius:

//lower cutoff wavelength
lambda_c = c_sound/fc;
// horn mouth radius
rm = lambda_c1000;
//echo("Horn mouth diameter is: ",2

Shouldn't it be.......?

//lower cutoff wavelength
lambda_c = c_sound/fc;
// horn mouth radius
rm = (lambda_c1000)/(2pi);
//echo("Horn mouth diameter is: ",2*rm);

As runthroughthejungle said, i think the code is generating a mouth radius 2*pi times bigger.

Hi mechadense, i spent some time using your generator , and i like it a lot.
i observed that the horns generated were too big , and looking at the traktrix mouth radius' formula (Rm=C/2piF),where c is speed of sound ,pi is 3,14142.. , and F is cutoff frequency, i think that the frequency coded in the generator is 2*pi times bigger.
Hope this helps, thanks for your great job.

Thanks, I will look into this when I find the time.

It could also be that customizer doesnt like cylinder(r1=<>, r2=<>,h=<>), maybe try replacing with cylinder(<r1>. <r2>, <h>, [0,0,<iterated height="">])</iterated></h></r2></r1>

sorry that got busted, the message board thought i was trying to type xml

Thanks for looking into the code,

r_add=0 is just a default value - this should work - I think I've done that before.
Also that r1= r2= h= ... input value assignment markers should work.
I too suspect too many polygons as the cause or the many almost coplanar surfaces.
Playing with the eps value for "co-planarity reduction" does not help.

I could heavily change the model to make a 2D cross-section and rotate extrude it 360°
but than I would have to choose a fixed resolution (due to the lack of mutable/dynamic arrays in OpenSCAD) :S

Interestingly in customizer the inlet cutting cuboid is visible as if the
tactrix-outer-hull-main-body where not recognized at all and the cuboid where the
first object in the difference. Also the cuboid seems to not be shifted to the inlet side.

I took a look at the code. Looks like you are just stacking cylinders. It could be that there are too many polygons, it could also be that odd calling of "module tractrixhorn_shape(r_add=0)". It is possible that openscad knows how to handle that but customizer doesn't. Seems to me that nothing should be defined in the input of a module. Hope it helps.