3d print your own speaker enclosures!

This OpenSCAD / Thingiverse Customizer script lets you:
– Generate a box of any desired volume / ratio / wall thickness- Determine optimal sealed box size for any driver using Thiele / Small parameters (Qts, Vas and Fs)- Include cutouts for speaker / terminal (and screw holes)- Include a bass port of any dimensions

Click Here to use SpeakerGen online or download the OpenSCAD script.

With a wide variety of inexpensive full-range drivers – you can easily 3d print a set of speakers that sound great.

SpeakerGen provides a built-in tool that can automatically create an optimized sealed box for your driver’s parameters. Speaker drivers’ acoustic properties are described using “Thiele/Small” parameters (Qts, Fs and Vas). You can use these parameters to help determine what kind of box will work well for your speakers.

While printing speaker boxes is slow – and only really an option for smaller enclosures – it has several advantages. Assembly is almost instant – and printed enclosures intrinsically don’t have issues with panel fit. They are almost certain to be air-tight. If your speaker doesn’t seem solid enough – just reprint with a higher infill percent!

So far I’ve only printed in enclosures in PLA. I can only speculate how boxes made with materials like rubber, wood, nylon or bronze would perform.

Notes on loudspeaker design / printing

Sealed Boxes

Sealed boxes are the simplest to design with primarily one variable: size. They are also very flexible. A speaker driver that sounds good in a 1.0 liter sealed box probably sounds pretty decent in a 1.25 liter sealed box.

A sealed box / driver system is acoustically described using a number of parameters – an important one being “Q.” A box’s Q describes behavior around its resonance frequency – and hence helps dictate F3 value (bass frequency with a 3db drop in response). Sealed box speakers commonly have Q values in the 0.7 to 1.4 range. The Q of a sealed enclosure system will always be larger than its driver’s Qts. The Q of a box decreases as its size goes up – and vice versa.

A Q of 0.7 provides the lowest possible F3 value – and by that argument is the optimal value for sealed speaker design. That said – accepting a larger Q value (say 0.9) allows of a significantly smaller box – with only some loss in bass response. Larger Q values still (say 1.4) result in a further loss in low-end response – but also introduce an upper-bass response peak – which can result in a boomy sound.

SpeakerGen uses some simple math to estimate what box size a given driver needs to obtain a certain Q value – and what F3 frequency that will result in. It works similarly to other online closed box calculators – such as this one:


Ported Boxes

“Ported” boxes utilize a tuned port to enhance bass response (aka bass reflex, vented, etc.). These boxes are more finicky to design – and aren’t too hard to get “wrong” (thin bass, boomy bass, etc.). Diameter and length of the port need to be calculated with a moderate degree of precision – otherwise things can go very badly (don’t guess).

Ported boxes tend to be larger (and hence take longer to print). However – they can significantly extend the bass range of smaller full-range drivers – which can make them a good choice for a 3d printed single-driver system.

SpeakerGen can easily produce a speaker box including a bass port of any specification you can print. However – since the math is a bit trickier – I’m leaving it up to other people who know better. To determine the correct dimensions for your vented box and bass port – check out these resources:


Print Tips / Pictured Speaker

The pictured speaker uses an AuraSound NS3-193-8A in a 1.7 liter enclosure with a bass port tuned to 70hz. This provides a calculated F3 frequency of 66hz – not bad for a 3″ driver! It sounds great – but falls off a bit over 12khz – so treble adjustment is recommended. The speaker box weighs about 1lbs – and took about 17 hours to print.

For my first attempt – I printed a box at 10% infill with only 2 shells. The speaker sounded OK – but subjectively seemed a bit flimsy. For my second print (the one pictured) – I used 20% infill and 3 shells. This produced a solid feeling speaker cabinet. I think these are reasonable settings for smaller speakers (maybe under 1.75 liter). Larger speakers may do better with more infill / thicker walls.

Both prints were at 300 micron with 7mm walls. The inside top of the first print came out a little flimsy feeling (I believe due to having to “bridge” such a large area). For the second print I increased the floor and ceiling thicknesses from the default 0.8mm to 1.5mm – this seemed to address the issue. My gut is this might not be needed for a 200 micron print.


Cabinet assembly is pretty easy! Jut use wood screws to mount the speaker. Be careful not to over-tighten to avoid cracking. If the screws seem difficult to screw-in – try chasing out the holes with a drill bit.

Stuffing your cabinet with “polyfill” is highly recommended as it can reduce resonances – and slightly increase the effective size of your enclosure.

Driver Selection

There are lots of great full-range speakers available on parts-express.com in the $10-30 range. A few good candidates:

Have fun!

3 thoughts on “SpeakerGen – Parametric 3d Printed Speaker Enclosures

  1. Good job, man. That’s really cool. Are you selling those 3D printed speaker. Btw, is it made from ABS filament? The material looks similar to what I used in my Lego collection, I’m talking about this: ABS filament

  2. Talking about fill: can you leave the web open enough to be able to fill the gaps with another product? In other words, make a double shell with lightweight supports, and fill it with plaster of Paris, or a low-viscosity silicone. Talk about a non-resonant enclosure!

  3. Do you have any good recommendations for the rest of the hardware? Audio inputs and stuff? Also, could I build a surround sound system with these?

Leave a Reply to Anonymous Cancel reply

Your email address will not be published. Required fields are marked *