Introduction: *Tiny* High-Fidelity Desktop Speakers (3D Printed)

I spend a lot of time at my desk. This used to mean that I spent a lot of time listening to my music through the awful tinny speakers built into my computer monitors. Unacceptable! I wanted real, high-quality stereo sound in an attractive package that would fit underneath the monitors on my small desk. Typical "computer speakers" are always a let-down, so I set out to apply some basic loudspeaker design and engineering principles to build a pair of no-compromise (okay, more like low-compromise) speakers that, for their size, will impress any audiophile.

Introducing the newest addition to my HiFi family, the "Kitten" Nano-HiFi Desktop Speakers. (Now accepting submissions for better names)

These speakers measure approximately 4.25 in (10.8 cm) tall, 2.75 in (7 cm) wide, and about 4.5 in (11.4 cm) deep including the binding posts, and are designed for great sound in a tiny package. They're made using a typical extrusion 3D Printer, using PLA filament. Let's get into it!


Parts and Materials:

  • 4x Aura "Cougar" NSW1-205-8A 1" speaker drivers
  • 2x 0.2 mH crossover inductors
  • 2x 2.4 Ohm "audio grade" resistors
  • 'Plastic Wood' or similar wood filler
  • 'Perfect Plastic Putty' or similar filler
  • Spray primer and paint
  • Super glue
  • RTV silicone sealant or similar
  • 4x Wire terminals / binding posts
  • Approx. 3-4 feet of 18-20 ga insulated wire
  • Female spade connectors
  • 4x M2x12 machine screws
  • 4x M2 nuts
  • 4x M2 Washers
  • Two small pieces of 1/8" - 1/4" thick plywood or similar sturdy board


  • 3D printer and filament of choice
  • Soldering iron and solder
  • Sand paper and/or nail files, various grits from 200-1000
  • Wire strippers/cutters, xacto knife, and a few other basic tools will be helpful

Step 1: Goals and Constraints

Whether I know it or not, when I build something I start, fundamentally, with two things. Goals and Constraints. So here they are.


  • Bass extension as low as possible. Hopefully, 90 - 100 Hz before the bass starts to get too quiet.
  • Acceptable listening volume. There are already lots of tiny speakers that sound great at all frequencies; These are called headphones. The problem is, you have to stick them to your head. That's obviously not what I'm after, and making them listen-able at a distance is a little more difficult to pull off.
  • Flat frequency response. Try to eliminate big resonances, peaks, and valleys that most small speakers suffer from.


  • Size. The speakers must fit under my computer monitors, so can't be more than about 4 inches tall and 5 inches deep. I determined that an internal volume of about 500 mL is a good target. Additionally, because I used a 3D printer at my university, I was limited to about 250 grams of printing material.
  • Cost. I don't have a million dollars to spend on these speakers, so no exotic materials, tools, or parts.
  • Complexity. This somewhat aligns with cost, but also my skill level and time. This probably limits me to a 'fullrange' design because it's vastly simpler than a 2- or 3-way design and doesn't require expensive crossover components.
  • Aesthetically pleasing design. Because I have to look at these things all day.

Step 2: Driver Selection

With goals and constraints in mind, it's time to.... go shopping?

That's right. Because drivers are the heart of any speaker, I chose a driver first and designed the rest of the speaker around it. Because I planned on putting some thought into these, I not only needed drivers that fit, but also have decent specs and measurements provided by the manufacturer. I'll get into why these are important in a minute, but without them my speaker design becomes basically a complete guess.

So I pulled up my favorite site to buy speaker components, Parts Express, and looked for "fullrange" drivers in the 1" - 2" range. I found these, the AuraSound "Cougar" (this is where I derived "Kitten" from for the name of my speakers. Get it?) which have a few good qualities.

  • Small size. The smaller the better.
  • Cheap. Only about $10.50 each.
  • Excellent midrange and treble performance, and amazingly low bass response for such a small driver.
  • Good power handling, so I can hopefully crank them up a bit without worry.

With these drivers in mind, it was time to download the data sheet and get simulating.

Step 3: Speaker Simulation

With a potential driver candidate selected, I needed a couple pieces of software in order to run simulations and judge the effectiveness of my speaker choice and enclosure design. So I followed a few steps to create a simulation of a single driver in a basic enclosure.

The first program I used is called SplTrace. A version of it is available here for free. This is a very simple little program. To use it, I first imported an image of the frequency response and impedence response graphs of my chosen driver. Then, by tracing the plots with my cursor, I was able to convert images of the plots into files which the simulation software can use.

Next, I used a program called Boxsim. The latest English version is available here. I created a new project and followed along with the initial setup. Then, referencing the data sheet I downloaded for my driver, I filled in all the required driver data. At the bottom, there's the option to input frequency and impedence response data. This is where I loaded in the files that I created using SplTrace. Then I clicked through the tabs and added initial estimates for enclosure type, dimensions, and tuning frequency, since I decided on using a ported enclosure. A vented enclosure provided two benefits for me. First, the ability to tune the port for a low frequency, hopefully extending the bass response a bit. Second, it allows the driver to move more freely and should be a bit more efficient compared to a sealed enclosure. Given that the vent will be precisely designed and printed as an integral part of the enclosure, it's a no brainer.

With all the required information entered into Boxsim correctly, I connected the single driver to the amplifier under the 'Amplifier 1' menu and when I hit "Ok" I was presented with an interesting graph that looks something like the one shown here. Success! I now had a baseline frequency response simulation to start tinkering with.

Step 4: Developing the Loudspeaker Design

With my first simulation done, it was time to understand how this information could guide my design choices.

I'm presented with a typical frequency response plot, with SPL (loudness, in dB) on the y-axis and frequency on the x-axis. A perfect speaker would have a straight line across this graph, all the way from 20 Hz to 20,000 Hz. Thus, my goal now was to tweak whatever parameters I could to make my speaker be as close to this imaginary ideal speaker as possible.

With that, two problems immediately presented themselves.

First was the significant bump in the graph above about 1000 Hz. With some equalization and/or a few analog filters, this could be a simple problem to solve... If it weren't for my second problem.

Clicking over to the Max. SPL tab I saw a similar looking frequency response plot. However, unlike the other one, this plot shows the loudest the speaker can play at a given frequency before either exceeding its maximum power limit or maximum excursion limit. Thus, even if I did use some equalization (finnicky and doesn't 'stick with' the speakers if they're moved around) or analog filtration (expensive, complicated, and bulky) to get the mids treble more in line with the bass, I'd only be able to play my music at about 80 dB at the absolute loudest. While 80 dB is actually fairly loud (think vacuum cleaner or garbage disposal), keep in mind that this would be at the very limit of the speakers ability, which isn't a good place to be. To keep the speakers from self-destructing or sounding like distorted junk, I wanted a decent amount of headroom before they'd hit their limits. The only way to get there was to either pick a different (almost certainly bigger) driver or double down.

Step 5: Finalizing the Loudspeaker Design

So, as you surely noticed at the beginning of this Instructable, I chose to double down. In comparison to the available 2" drivers on Parts Express, two of these should provide as much or more performance for the price. And, to be honest, I liked the look of two stacked drivers. Aesthetics matter too :)

Adding a duplicate driver in Boxsim was pretty easy. I made a new project in Boxsim, copied the driver upon initial setup, and used the "common outer housing" settings to define the enclosure and baffle. With that done, the results looked much more promising. I now had 5-10 dB of additional headroom, and a smoother overall curve. I fooled around with the enclosure volume, tuning frequency, and stuffing until I found a combination I really liked at 0.45 liters, 125 Hz, and 'lightly stuffed'.

While in the process of designing these, I learned about a phenomenon called baffle step, a.k.a. diffraction loss which apparently is a major consideration for most high quality speakers. Essentially, when sound waves come from a speaker, they attempt to radiate in all directions. Including behind the speaker. Because high frequency sounds have a very short wavelength, they bounce off the front surface of the speaker box and are shot back at the listener. But lower frequency sounds, with their much longer wavelengths, will easily bend around the speaker enclosure. Thus, high frequency sounds appear to be a bit louder to the listener. Luckily, this is easily fixed with just one resistor and inductor. This online calculator will tell you the values you need given a few inputs. From there, I could add my baffle step correction circuit in the crossover section of my simulated amplifier and see the new results. I fiddled with the calculator a bit until I got a response I liked with component values that were available from Parts Express.

At this point it's important that I come clean and say that, well, I cheated a bit. :( But here's how I cheated and why, in this case, it's ok.

Thanks to building these myself, I knew exactly where and how they'll be used. This afforded me a little knowledge that I could use to my advantage. Both speakers will be on my desk, backed right up against a big wall, and underneath two big, flat computer monitors. You might see where this is going. These flat surfaces will act somewhat like a big ol' baffle,boosting the bass in ways that Boxsim isn't able to know about. So I told Boxsim a little white lie and pretended that my baffles are actually 100 cm tall and wide. Sorry not sorry, Boxsim. More of an art than a science I suppose :)

However, since I did this it was important to keep in mind that the real life results would probably actually lie somewhere in-between the "tiny baffle" and "huge baffle" simulations.

Step 6: Enclosure and Assembly Design (CAD)

At no surprise to anyone, I already had some ideas for the shape and design of my speakers from the very beginning. Thus, this design process actually began around step 2 when picking out drivers and evolved dramatically as drivers changed, enclosure volume and port length were tweaked, and new ideas and considerations like the baffle step correction circuit came to mind. However, only after the loudspeaker design and simulations were all finished could I move on to finalize the mechanical design of the assembly. I used an educational license of Solidworks to do all the CAD work here but there are a bunch of suitable alternatives, two of my favorites being Autodesk Inventor or Fusion.

To start, I made sure to create an accurate model of the Cougar driver. This was important to judge how the driver will sit on the face of the speaker, and for accurately determining the overall enclosure volume. I had to remember that the enclosure volume I used in my simulations is actually the volume of air inside the enclosure. Thus, anything else that went inside the enclosure, driver included, had to be taken into account and subtracted from the internal volume.

Overall rigidity of the speaker enclosure is important to reduce unwanted vibrations and resonances, so I took some care to stiffen each of the six sides of the box as much as I could. The front baffle is most important, so I made it fairly 3-dimensional for strength. The large sides are another problem and not much could be done on the outside, so I planned on adding some internal braces later. Wall thickness of the entire structure was 0.09", as thick as I could make it without using too much material.

I used Boxsim's port dimensioning calculator to determine the port length and diameter required for the tuning frequency I wanted. I wanted the diameter of the port to be large enough (I've read that 1/4 to 1/2 of the driver area is a good target) so I focused on a 1.27 cm diameter and adjusted the length accordingly. Since Boxsim can only simulate round or rectangular ports, I calculated the equivalent cross-sectional area and designed a more oval shaped port to match.

Overwhelmed by enthusiasm for how my little speakers were shaping up, I modeled the baffle step filter components, binding posts, and a back panel which would be made of plywood. I even went so far as to design a tiny front grille which I haven't actually brought into existence yet, but I think would look pretty rad :)

STL files are available for download here and on Thingiverse so you can check it out yourself!

Step 7: 3D Printing the Enclosures

Both enclosures were printed together on an Ultimaker3, using PLA filament. The layer height was set to 0.2 mm for a balance between surface finish and print speed. Infill was 100% They were oriented to reduce the amount of support material needed. Even then, this print took three days to complete. I was given free material and time on the printer to complete this project, but in the future if I had to pay for material and/or time I might try to reduce the layer resolution or print in multiple parts and assemble later to somewhat reduce material and increase speed.

After removing them from the printer I had to do a little post processing to remove all support material. Unfortunately, doing so revealed some nasty print errors at the corners of the front face, right where the support material should have been touching. I'm not sure exactly what caused this or how it could have been mitigated, but the only consequence was that I had to spend a little extra time fixing it in the next step.

Step 8: Filling, Finishing, and Painting

To fill the imperfections and print lines I used two different products. First, a beige wood filler called Plastic Wood did a great job filling in the big gaps. However, this stuff was still fairly rough and porous after being sanded so I followed up with a very fine cream filler called Perfect Plastic Putty to smooth things out, sharpen the edges, and fill in tiny holes and cracks.

Lots of sanding with varying grits of sandpaper and nail files happened between applications of filler, until I added a coat of grey primer to help show flaws, then more filler and sanding ad nauseum. I designed the speaker holes slightly undersized, so those were sanded as well for a snug fit and good seal on the drivers.

Once I was finally happy with the surface finish I added the final coat of Krylon primer, and topped it off with several coats of Rustoleum metallic paint. I considered finishing it with a few coats of clear at the end, but decided it's glossy enough without.

Step 9: Wiring It Up

The speaker circuit is fairly simple. Both drivers were wired in parallel, for an overall impedence of 4 Ohms. This falls right at the lower limit of the recommended speakers for my amplifier.

The baffle step compensation part of the circuit, consisting of a 2.4 Ohm resistor and a 0.2 mH inductor in parallel, is wired in series with the drivers. These components were purchased from Parts Express.

The inductor, resistor, and binding posts were all mounted on the back panel, which is a small piece of thin plywood cut to fit. The inductor and resistor were glued down securely with a bit of epoxy. I sealed up all holes through the back panel with a few dabs of RTV silicone. I could have mounted these components inside the speaker (like most speakers), but this saves precious internal volume and, I think, looks pretty cool.

The actual harness was built with some spare wire I had laying around. It doesn't need to be particularly heavy gauge, 18-20 ga is probably plenty. I added spade connectors to the speaker connections in case I wanted to remove it later, but the harness could have been soldered directly to the drivers before they're installed in the enclosure if desired.

Step 10: Assembling and Final Touches

With the wiring completed, I moved on to the final assembly.

Because I designed the drivers to be very close to each other when mounted, I filed down the top and bottom of each driver's flange a millimeter or so, to give myself some wiggle room when installing them. I then applied a liberal amount of RTV silicone sealant to the mounting flanges of each driver and carefully pressed the drivers into each enclosure. I made sure to align the top and bottom drivers so that positive and negative terminals are on the same sides for easier wiring.

Next, I cut four wooden dowels to form a nice tight fit against the inside walls of the enclosures. I didn't want them to press so hard on the enclosure that it bows out, but tight enough that it won't fall down. Then the dowels were glued in using hot glue.

Then I added a little bit of polyfill to each enclosure, also with hot glue. Because I'm cheap and only needed a very small amount, I sourced my polyfill from a stuffed animal I found at the dollar store. The important part was the "polyester fiber" line on the tag. For $1, I got about 2x more polyfill than I ended up using.

I made sure not to cover the back of the drivers or the bass port at the bottom, so air has an unimpeded path. The exact amount added is a matter of taste, so I added just enough to cover the walls and bottom. If you wanted, you could experiment with the amount and see if you notice how it affects the sound.

With that finished, I carefully connected the wiring, making sure to get my polarities correct and not bend up a terminal. It was a little cramped in there at this point, so long fingers and needle nose pliers really helped me out.

Finally, it was time to put on the back plate and seal it all up. I designed the enclosure to have hex-shaped holes on the backside of the mounting tabs, but they didn't turn out great so instead I glued the M2 nuts to the back with a few tiny dabs of superglue. Then I put another liberal application of RTV silicone on all the mating surfaces to prevent leaks, and screwed the back plate on. I let the speakers sit for several hours before fully tightening all the screws, then hooked them up for the first listen.

Step 11: Listen!

Within just a few songs, I could tell these were keepers. The mids and highs are nice and clear, and the bass was surprisingly strong and punchy. I ran a sweeping sine wave signal through them and didn't notice any egregious peaks or resonances to my ear, so I pulled out my handy iMM-6 measurement microphone and hooked it to my laptop, pulled up the Room EQ Wizard software, and did my first ever "in situ" speaker measurement ever, with the speakers at their normal position underneath my monitors, and the microphone at the approximate position of my head when listening.

Results are good, with a few small dips at 150 Hz, 1500 Hz, and 4000-5000 Hz. Since these measurements are in situ, without any special sound treatment to the room or my desk, I'm fairly encouraged by my first ever speaker build.

With that, I'm going to stop writing and get back to listening. Thanks for reading, and if you attempt this build or something similar I hope you enjoy! If you have any questions, leave a comment and I'll be sure to reply.

First Time Author Contest

First Prize in the
First Time Author Contest