A SOMEWHAT UNUSUAL APPROACH TO LUMPED ELEMENT MODELING: TIME DOMAIN IMPLEMENTATION OF COMPUTER-AIDED POLYNOMIAL SOLUTIONS TO LTI SYSTEMS VIA THE BILINEAR TRANSFORM (LUMPED ELEMENT TRANSDUCER EDITION)

INTRO

Imagine you want to simulate a speaker, utilizing Thiele-Small parameters. It’s traditional and “easy” to obtain a Frequency Response, but we live in the time domain, and you can’t hear a graph. I’ve stumbled into a method for directly translating any lumped element model of an LTI system into a set of filters which allow you to model the system’s response in time! Not only can we obtain the frequency response of a driver, but we can listen to it directly. Imagine being able to simulate a few speakers and select the one that sounds best!

In addition to an efficient means for auralization directly from the lumped-elements, I offer a unique solution to simulating the impedance of a loudspeaker.

THE LUMPED ELEMENTS

In the basic assumption of a lumped element model for a loudspeaker, where the 3 domains of a speaker are “analogized” to circuit elements, coupled via a gyrators (transformer shown due to Kicad limitations), the above circuit can be simulated (choose your poison) to examine transducer behavior in any of the three domains. The trick here is that the behavior of a speaker in the time domain is a mess of differential equations but circuit elements themselves have very nice solutions once you flip over to the frequency domain. Let’s start with a simple example.

A SIMPLE EXAMPLE AS A JUSTIFICATION FOR USING FREQUENCY DOMAIN

For example, for an RLC circuit ((R=0Ω for simplicity, resistance is not differential with frequency)

The time domain analysis looks something like this, where I is current and V is voltage.

written in keynote because LaTex

The main issue here is that to calculate current you must evaluate an expression which itself requires knowledge of the derivative of the current. This is a differential equation! It’s not impossible to compute this numerically (that is, assume a small δ and step through time little by little) but obtaining an “analytical” solution to the equation requires a special set of skills.

If instead you instead do some clever stuff with frequency, based on 1) Euler’s Identity and 2) the understanding from the Fourier Theorem that any signal may be represented by an infinite series of sine waves, there are some very handy and very useful solutions to differential equations. (warning: I’m using j notation for imaginary numbers)

Here’s my mini proof, where j is the square root of negative 1, ω is frequency, and t is time:

By taking advantage of the Euler identity and the very special property of e that it’s derivative is itself, we can evaluate the differential equations and reduce them to simple polynomial math (more on that later).

Since we now know the complex impedance of these circuit elements, the series circuit can be “solved” as such:

The final expression is a fully accurate solution to the circuit, and it tells us a lot about the behavior of the circuit. For instance: for a given current and frequency, increasing capacitance will lower voltage (the capacitor will proportionately charge less) and lowering frequency will increase voltage (capacitor will charge more!) but this is counteracted by the decreasing impeance of the inductor. Makes sense, but let’s visualize it to get the wholes story!

If the poison you so choose is a frequency domain analysis, you can easily plot the frequency domain response by substituting s = j*2*pi*f where f is an vector of sample points in Herz (e.g. f=[1,2,3…48kHz]). Here’s some simple Matlab code to do this:

f = 1:fs; %sample points
omega = 2*pi.*f; %convert to angular frequency
s = 1i*omega;
C=100e-6; %Farads
L=10e-4; %Henries
R=1; %Ohms
Z=1./(s*C)+s*L+R; %series circuit impedance

An interesting note before we go to the Laplace domain: the impedance of this circuit looks a lot like a graph of a quadratic function. In fact, if we replace with a variable…say s, it can be written as:

So, we’ve turned a differential equation into a polynomial equation!

BUT WHAT ABOUT TIME?

Bing, bang, boom! Frequency response of a lumped element circuit with an elegant polynomial solution! But what about time the time domain filter I promised? Armed with a frequency response (hitherto known as FR), it is certainly possible to create a time domain transfer function or filter. Here are some methods I’ve tried:

Methods to convert a Frequency Response (FR) to a time-domain filter

methodbig Opros, cons
IFFT(FR) → time domain convolution with signal O(m*n)
m is resolution of FR
n is signal samples
+ simple, rather direct
– accuracy limited by FR resolution
– super slow
DFT(signal) x FRO(m log n)+ relatively easy to understand and implement
– not “real-time” i.e. requires “frames” with overlap and add
– time domain artifacts due to finite signals, finite resolution
FIR2: Frequency sampling-based FIR filter designO(m log n)?+ brute force solution
– memory intensive filtering: very high order filter required for any reasonable accuracy (N==Fs)
– accuracy limited by FR resolution
filter coefficient optimization:
run steepest descent optimization on filter coefficients until filter matches FR
∞ for optimization (optimality not guaranteed)
O(n)* once filter is converged∞
*technically O(m*n) but filter order can be kept as low as order of system
+ kind of cool
+ extra brute force solution
– optimizing the filter is not a guaranteed-to-work process depending on FR complexity

None of these are especially satisfying to me because they’re all rather messy approximations with a few levels of abstraction. This is the meat and potatoes of this post. There are two handy dandy pieces of math we need: the Laplace transform, which converts from time domain to the complex frequency s-domain, and the bilinear transform which converts directly from the LaPlace s-domain equation to the discrete time domain of digital signals (airhorn noises). This is huge! We already did the frequency domain math for Rs, Ls, and Cs!

There’s just one thing: the Laplace domain is in terms of the complex frequency variable 𝑠 where 𝑠=𝜎+𝑗𝜔. We are allowed to convert from the Fourier domain to the LaPlace domain if we set 𝜎=0, which is more-or-less an assertion that the system is stable and the input is continuous (in time) and real (in frequency). Then we can simply replace every 𝑗𝜔 with an 𝑠:

This last expression is what is sometimes referred to as the polynomial solution. Let’s take that into the time domain:

Example code:

C=100e-6; %Farads
L=10e-4; %Henries
R=1; %Ohms

%polynomial expression
a=[L R 1/C] %denominator
b=[0 1 0] %numerator

[B,A]=bilinear(b,a,fs);

%results — this is all you need to filter any signal!
B = 0.0103 0.0000 -0.0103
A = 1.0000 -1.9751 0.9794

Checking the results shows alignment (of course!)

Ain’t that great? What’s great about this method is that this is the exact answer to “how will this circuit behave in response to a signal?” There are no cons (except for sampling frequency)!

methodbig Opros, cons
Bilinear transform of polynomial solutionO(n)*
technically m*n where m is the order of the system
+ it’s the exact solution
+ super fast
+ gives you F(f) and F(t)
+ sounds cool
– you have to “solve” the circuit

To bring it home, we can also filter any time signal with our RLC circuit, giving us the time response. Here’s a 10V stepped input:

Or a stepped sine wave:

Admittedly, the bilinear transform is a discrete time approximation of a continuous time object—and so is a digital signal— but in comparison, say to a the FIR2 approach, which requires, for reasonable levels of accuracy, a 48,000-term filter, I find it much more satisfying to have a 6-term filter derived directly from the physical properties of the circuit.

APPLYING THIS METHOD TO ACOUSTICS

Now that we have a method that’s copacetic for a simple example, let’s apply this to the electro-mechano-acoustic domain! This is where the cons come in. While the math is simple and exact, the algebra quickly becomes nightmarish for complex systems. A simple transducer model is relatively simple until you chase down the acoustic terms, and then it becomes hellish, but I have a solution for that, too. Observe:

Factoring this chonky conglomeration to obtain coefficients yields something so grotesque it cannot be displayed readably with LaTex:

But using the power of the symbolic library, we can easily collect the terms and calculate the coefficients:

Turning Z(s) into a time domain filter Z(t) is as simple as taking the bilinear transform of 1/Z again! The results are validated with a comparison to a full speaker simulation software. If you’re wondering where the orange line is, it’s directly beneath the yellow line.

Admittedly, the model with acoustic impedance added is very close to the one without, but we’re here for precision anyway!

Inverting to impedance:

Checking it against a real transducer (I switched TS parameters for this one to the ND91-4 by Dayton Audio, a classic mini-woofer)—overlaying the simulated response on top of the DATS measured impedance response (blue line) by Dayton Audio vs our orange polynomial line, it looks pretty damn close up to 1kHz! The loss off accuracy above 1k is most likely due to the secondary inductance/resistance of the magnetic circuit, which is not typically reported by manufacturers in the TS parameters or datasheets and therefore not modeled.

Et voila! with a little bit of computer assisted algebra, we can take a lumped element model and convert it into a time-domain filter to be applied directly to incoming signals. In this case, we solved the algebra to get us the time-domain impedance of a transducer model, but with some simple re-arranging and a little code we can convert voltage to excursion, SPL, velocity, transmitted force, and much more!

RETURN II-II: THE ELECTRIC BOOGALOO

Back by popular demand. Here’s how I designed the electronics to power the 120 dBSPL (@ 1m, ±3dB 40Hz-20kHz) beast to defeat the new generation of super mid “Soundboks” type devices.

As you can tell there are some peculiarities to this design, including a dual battery rails supporting the “low power” section.

POWER

THE AMP
The first thing to do is to down-select the amplifier chip-set to deliver the hundreds of watts required to hit target levels.

There are very few amplifiers in this power range that will meet this need.

  • IRS 2092 with ±50V rails and adequate MOSFETs
    • ruled out for the reason that I don’t want to source ±50V
  • WONDOM AA-AB31395: 1 X 1000Watt Class D Audio Amplifier Board – T-AMP – LV
    • Out because 500W into 4 Ohms @ 10% THD @ 60V
    • No THD/Power curves
  • WONDOM AA-AB35511 3 X 500Watt Class D Audio Amplifier Board – T-AMP
    • Out because it actually can only sink 300W into 3 ohms @ 50V @ 10% THD
  • ICEpower 300A1: single channel 300W @ 1% THD @ 55V
    • this is a strong contender, but it’s single channel and requires a ±12V input and is therefore slightly more expensive and complicated than the TPA3255
  • ICE Power 500ASP
    • Honestly more than perfect but requires 120V AC
  • ICEpower 300A2
    • Also an incredible amp but requires ±35-65V which is annoying with batteries
  • TPA3255 Capable of 500W into 4 ohms (PBTL) @ 50V @ 1% THD
    • best contender
    • 3e-audio sells a balanced input version which is great for low noise!

The TPA3255 chip-set is the winner here for cost and simplicity while maintaining high quality.

In my experience, a lot of these amps will “overspec” their power output, as they’ll rate their amp in a very specific set of conditions. Let’s dive further into the TPA3255 to confirm it can meet our needs. There are a few dimensions we care about:

  • power required by speaker to hit target SPL
  • impedance of speaker at frequencies of highest power
  • voltage/current required by amplifier at highest power

Woofers are almost always the least efficient and most power intensive part of an acoustic system, so we’ll focus on the woofers for now. To determine “how much power into what impedance” we refer to the target response from the simulation in part 1 and check power required and impedance:

So we need 270W into 4.3 ohms at 355Hz and 230W into 4.5 ohms at 35 Hz! Then we refer to the TPA3255 data sheet to determine if it can deliver that power:

Based in the data sheet, it looks like we can do 260W into 4 ohms, which is precisely 231W into 4.5 ohms—perfect!. The amp will not be able to deliver the full power required at 355Hz, but that’s OK—that’s firmly in the lower vocal range, where I expect less general signal level in normal use. The data sheet also informs us that the amplifier expects 54V to deliver this wattage. We can then refer to the efficiency curves to understand the maximum current the amplifier will draw:

Based on these two graphs we can expect that for two woofer channels we’ll be looking at a maximum power draw of about 700W. We can apply this same process to the mid-range and tweeter to determine the total power draw of all 4 channels of this speaker, but to cut to the chase, we’re looking at a power draw of about 1kW peak.

From Ohms law, we can determine that 1000W at 54V is about 18 Amps, which we’ll use to spec the power supply portion. For now, we can be confident that the TPA3255 amplifier will suit our needs.

3e-audio’s TPA3255 boards are also beautiful, compact and expensive. Here they are in the (as typical for every project I do) completely undersized electronics box.

THE BATTERY
Based on the acoustic simulations above, the power draw for the whole system looks something like this:

The peak load of about 1kW is an absolute maximum— all of the driver’s stated power handling exceeds their actual linear excursion (in simulation). We need to be able to deliver 1kW for transients but an actual input (sine wave being the worse case equating to 1kW peak) would destroy the speakers rather quickly. I accidentally verified this fact when I mis-programmed the DSP, which caused it to output full-scale white noise; the tweeter burnt immediately. Armed with this knowledge, I can happily specify a 48V 1kW battery to handle the peak demands. The continuous load—i.e. the crest factor (or the ratio between the RMS value and peak value of a signal)—for very loud music content will be <-10dB below this peak, so the battery will be chillin’. Not only is -10dB the 99th percentile of music loudness (more on this later), but most playback environments (e.g. Spotify) have a metadata normalization scheme that limits CF to < -14dB.

Moving on to runtime, my target was “a while” at max volume, 6 hours for party usage and ~all day for normal-to-loud listening levels. I added a quick calc in the bottom of the power table—a typical battery capacity in the 48V range is 20Ah, which yields about 2.75 hours at maximum power output with music, and 5.63 hours at a click or two down from that (-6dB). Keep in mind, this is still using -10dB CF, which is, like, hella loud. For reference, the crest factor of a loud metal song like System of a Down’s “Take the Power Back” is -14.2dB. Taking that into account, 20Ah seems like a reasonable capacity.

Writing this from the perspective of having already built the device and used it for parties, the battery life is great. Max volume is enough to irritate the house next door and more than enough to cover a 30 person party on the beach, the battery typically lasts for about 6 hours in this usage, so -10dB CF is certainly a very aggressive estimator for battery life.

One thing not mentioned so far: a 20Ah 48v battery is massive. I had trouble fitting it into box in any orientation that did not interfere with the isolated electronics box, so I had to glue it in at an angle and take a chunk out of the electronics box:

big white rectangle is battery
electronics box from above with a nice miter through it

DSP AND TUNING

SIGNAL CHAIN

The beauty of the TPA3255 by 3eAudio is that it runs a differential input which is massive for noise management. At the time, 3eAudio also sold a beautiful differential-out DSP board with an integrated Bluetooth chip. The integration of the BT chip eliminates BT radio noise at the source while the differential signal chain allows the removal of any injected EMI or ripple noise on the voltage sources.

from 3e-audio’s website

This nearly fully integrated solution simplifies a lot of the process for creating a low noise signal chain. The amps themselves have a 12V line to run the DSP off of! However, I ended up forgoing this 12V rail for something much more ridiculous (see noise section)

Tuning with ADAU1701 is a breeze once you figure out SigmaDSP’s interface and how to write to EEPROM (hint: you have to right click).

Here’s an overview of the DSP employed to get this beast of an acoustic system sounding good at all levels:

The first block labeledx-over handles several global EQs as well as some volume-tone compensation. Here’s the signal flow:

Inside the first parametric EQ, the analytical for the midrange and tweeter takes out the resonance peaks (occurring from horn loading, and the rear-mounted design of the mid-range).

Inside the second EQ block is an absolute mess of peaking filters to carefully control the excursion and system resonances of the woofers and the woofer box.

After the parametric EQs are a bunch of volume control filters which have a very specific and unusual function: to enable party mode. The intent of the party mode knob is to shape the output of the whole system to be focused on higher output. Ideally, the whole system has been tuned for a very pleasant Hi-Fi response, with rich, deep bass, balanced vocals, and sizzling highs. But sometimes you just want a little extra punch, and that’s what party mode is for.

X-over, as low as possible for the midrange and tweeter to limit directivity effects. Two notes:

  1. Typically crossovers are a bit higher for this kind of application (800-900Hz), I am of the personal preference to push crossovers as low as possible for better efficiency and directivity. Generally I think the worry for low crossover is either distortion due to high excursion at resonance, but with careful calculation and proper DSP, this can be easily avoided.
  2. The LR alignments often prefer a phase inversion for the TW for proper summation, which can be confirmed in real life by measuring in the farfield.

Moving on the the next section: the master volume!

These essentially are optimized to allow maximum excursion at a variety of levels, while also respecting the equal-loudness contours (in short, our perception of a “flat” frequency response changes with a change in output level; lower listening levels require more bass/treble to sound balanced). The HP filter moves down as volume moves down, while the low shelf increases LF gain, allowing deep bass at lower listening levels and controlling over excursion at high levels. A similar behavior is required for high frequency.

Finally, the output stage requires some gain reduction for the more sensitive mid-range/tweeter, an overall lowpass for the subwoofers, and a soft clipper to limit digital distortion:

THERMALS, NOISE AND ACCESORIES

THERMALS

While in theory the idle losses of the TPA3255 (2.5W) should only imply a 6°C rise with Junction-to-ambient thermal resistance of a fixed 85°C heatsink, it turns out that 1) thermals are much more complicated than that and dependent on a multitude of design factors 2) in reality the TPA3255 with a heatsink gets quite hot at idle.

Further still, the power dissipated by the amplifier rises non-linearly with output power, and at the (woofer) rated 600W total output power, the amplifier will be dissipating nearly 90W in heat. While 600W is the upper boundary (consider duty cycle, crest factor, etc), again, in practice, what I observed is that the amplifier gets hot hot. For instance, standard wire (PVC) temperature ratings are ~80°C which only allows a maximum output power of 100W total (assuming ambient at 25°C and an ideal heatsink).

To combat this, I installed thermo-couple controlled 80mm case fans to the heatsinks, with exhaust vents in the electronics box, to enhance the heat dissipation capacity of the system and prevent heat-soak. I also upgraded some the wiring for this project to silicone-sleeved wires, which besides tasting great being luxurious in quality and feel are much easier to route, handle and bundle.

in this terrible picture you can see the Arctic F8 TC case fan nestled right above the heatsink

ACCESSORIES AND NOISE

The fans themselves consume enough wattage that the TPA3255 onboard 12V line was not sufficient. I also wanted a battery meter, and a backlight VU meter. I trialed a HV DC-DC step down to run all the 12V auxiliary bits; in most applications, I would use a simple low noise buck converter like an LM2596, but these tap out around 36V. To step down the 50V battery voltage, I had to find specialty voltage converters, but the ones I found for reasonable prices tended to inject too much noise into the signal path. Due to the high gain and high efficiency of the acoustic section, the whole set up caused tons of quiescent noise, which only increased with the power draw of the aux electronics (e.g. fans). So I opted for a truly ridiculous solution.

‘DC-DC converters do come in various flavors of ground-loop isolation, ranging from 0 isolation (cheap) to kV of isolation (very expensive for higher ampacity), but you know what’s cheap and intrinsically highly isolated? A completely floating power supply.

Having lost all sense in the pursuit of FAT bass, I built a separate 3S battery pack to run all auxiliaries which has the advantage of excellent isolation and the massive disadvantage of added complexity. In addition to having to have two battery management boards, two separate grounds, carefully calculated battery capacities, the device now requires two separate chargers and a 4-pin charging connector.

But it was all worth it for the VU meters, which flick to the beat independently:

FINISHING THE BUILD

At this point, all that was left was to put everything together

Testing the cut outs for the rear electronics panel:

The VU meters look amazing:

Adding stuffing, and a mess of wiring

The wiring can only get more messy

Sound testing before finally assembly:

Finished product:

LIGHT WORK

When I was 6, my parents gave me my first disposable camera and I ran outside into the sunny Stanford afternoon and immediately took, in rapid succession, 26 blurry photos of a bush. I wanted pictures of it growing. For some unfortunate reason, I eventually grew up and I stopped paying attention to plants. I think you once told me—or gushed, most likely—that you had plants. I don’t remember specifically. I can only recognize the presence of plants by plant-shaped gaps in my memory. I can’t remember the actual plants themselves. That is, itself, a sign of those times.

But then, mid pandemic, I was suddenly re-beguiled by their verdant wiles. Plants are beautiful, delicate, mute repositories of life and yet they absolutely bustle. Quitely, they bustle. Sometimes I look at them and imagine how imperceptibly they are growing, with fragile inevitability. Even if I can’t see them grow, they are, without doubt, growing. They even represent sort of perceptual paradox for me: having observed them quite often, I am required to conclude that they are growing day over day, but I can never see them grow. Only when I am not looking. It fascinates me. Absolute dopamine factories, they are.

What’s also cool about plants is that they act as a reciprocal canary-vessel for self-care. Vessel: as they bring me oxygen and joy, taking care of them benefits me, and in the time I set aside to tend to them, I am required to chill the fuck out for a second. Canary: if I don’t chill the fuck out and tend to them, they wilt, which gives me an easy visual representation of my fraying sanity. In this way they embody and promote good vibes all around, which is dope. Plus, girls love plants. Basically, plants are lit.

But plants take like fooooorever to grow and while, yes, the last paragraph is all about the mindfulness of the green goobers, didyouknowplantsgodormantinthewinterwheretheymightnotgrowatall? That’s dumb. After some careful questioning of the local college kid who staffs the overpriced ~vibey~ nursery by my house, I figured out that the dormancy of the plants is only dependent on 3 factors: heat, humidity, and light/dark cycles. It wouldn’t feel right to engage in mindfulness without a little bit of optimization, right? And that’s how I got into making lamps. Plants need light. Loads of it. And so now my new thing is lamps, because they help plants grow, and also because this one girl from hinge said “like, isn’t everyone into plants now? But lamps are underrated.” Lamps are lit.

DESIGN

So the commission for this was a rescue grow-lamp for a Pothos stranded in a corner of a sterilely lit house my friends built themselves. Their house includes a lot of warm tones, light wood, and minimal design accents. Therefore, the key aspects of the lamp were: minimal, modern, super-warm, bright-but-indirect lighting (plants love bright-indirect) in the >800 lux region with a >1 foot light dispersal area.

I’ve seen a lot of halo lamps for grow lights; the circular arrangement is actually quite efficient for even light dispersal over a large area, but they always look a bit Christmas-kitch to me. I needed something to break up the IG lowest-common-denominator design and root it solidly in minimal post-modern, so I slapped some emergent complexity on the halo with easy-to-fab rectilinear slats.

Conceptual render

My major innovation in this space is using an infill-only slicing (0-wall gyroid infill support block @ 11% infill, thanks to Cura’s easy slicer interface) to create a fully solid yet translucent PLA shade.

Cura slicer preview

I paired this with the very warm-toned and very exciting fully compostable NonOlien PLA from Filamentum, printed hot (189°C) on the Ender 3 V2 (super affordable entry-tier printer, very easy to use). It came out smashingly, although at this temperature, the flow compensation and print accuracy was poor, so I had to undersize the zero-clearance interfaces by a whopping 370µm on each side. 5 hours of printing later, though, I had exactly what I had hoped for:

Test fit

The slats are 3 strips of 1×5″ poplar with the middle slat cut down to a 1.5″ relief, laminated longitudinally and then cut in 8mm strips transversely. I finished the poplar with 4 coats of Waterlox (soft wood is super thirsty) and a finish coat of semi-gloss Polycrylic, slapped some super warm high density 2700k LED strip lights in there and added a 2.1mm barrel connector for an easy 12V connection to an affordable 2A power supply (due to the 1.5m of installed LEDs). The results:

Stunning
Installed with the happy owner and happy plant—easy style!

MARRIAGE SOUNDS GOOD

What’s the right wedding gift with 30 days of lead time when your friends are stranded across the Canadian border because of a global pandemic but they’re willing to risk it all for love and get married in a DMZ? I went with an Ikea cutting board. Well—to start.

It turns out that in places where border boundaries are blurred the acoustic offerings are slim. Without loud music (and strong drinks) no party is bompin, and without a bompin party, it’s not a wedding, so there was really only one thing to do: make a matching & linkable set of portable, hi-fidelity bluetooth speakers:

DESIGN SPECS

Cost of parts: $150 (ea.)
Loudness: 96dBSPL, 1m, @ 10% THD, A-weighted
Frequency Response: 50Hz to 20kHz ±5dB (but look at the curves down below)
Connectivity: Bluetooth 5.0
Battery: 3S Lithium-Ion, 37Wh
Runtime: 10 hours at “half volume” input (92dBA output)
Amplifier: 2x50W TPA3116D2 running @ 24V
Difficulty of Build: Dummy high—approx 120hrs from start to finish, requiring 2 CNCs and a 3D printer

In a lot of ways, this was a 2020 capstone project for me: to make something that’s loud, compact, and full of deep bass, with a 30-day conception to finish timeline, I had to pull out at least half of the dirty tricks I’ve learned over the last six years. Here’s how it went down.

ACOUSTIC DESIGN

When it comes to compact loudness with a lot of bass, excursion and efficiency are the belles of the ball, and although I simulated almost every 2-4″ driver I could find, the Dayton ND91-4 drivers (descended from long-gone AuraSound’s Neo-Radial IP) are nearly unbeatable when you factor in magnet strength, Fs, Xmax, price and weight. E.g. Peerless SLS-85S25CP04-04’s (catchy name huh) are potentially 1dB louder for a similar box size but weigh 285% more, while the Fountek FR89EX win for Xmax but need too much back volume and are 2dB less efficient…etc and so on. Just trust me on this one. In a 1.5-2.5 litre box: ND91-4, tuned low.

Tweeters are a fair sight more efficient, so down selection should be mostly driven by crossover frequency, dispersion and ease of integration. The ND91s break up right after 3kHz:

While the ND16/ND20 tweeters are truly amazing, they have to be crossed higher, and they come with a bunch of extra plastic, which clashes with the ultra compact layout I pushed.  LaVoce’s TN100.70 did the trick and can be crossed over at 1.5kHz, which was perfect—the lower a tweeter can be crossed (disclaimer: within its volume displacement limit), the better. Finally, the TN100.70 dispersion is on par with the ND20FA tweeter @ 20kHz (-15dB):

As for the port, in order to maintain compactness and b-b-bass, I had to fit 250mm of port into a 2.5L box while keeping a holdable 4-inch width so I folded it around the ND91 and then crushed the port geometry until it fit in between the driver and borders of the speaker. Tweeter in green, port/body in pink, and woofer in yellow below:

Driving the woofer and tweeter is a 3S 3500mAh battery pack (I use LG 18650s that I order B2B from the factory) paired to a 2x50W Class D TPA3116 D2 amplifier through DC-DC step up converter for maximum power delivery. WONDOM makes a wonderful TPA3116 board with the DSP integrated, which merges with their 3S MPPT Battery Management Board, although to my late-stage chagrin neither of the boards have a step up to power the TPA chipset at an adequate 24V.

BUILD PROCESS

With the acoustic design tucked away 15 days from the deadline, it was time to build. The octagonal outer shell is just a set of 22.5° mitres, tape-clamped, with the patent-pending dual-bevel 8th wall precision cut to match:

The front face was a 2 sided CNC operation, which required calibrating features for aligning the Shaper Origin I used.

Merging the two pieces with the speakers and the front mounted the port was rather easy except for some minor mishaps with a few missing microns; the t-nut I planned to use to rear-mount the woofers were exactly 300 microns short of the planned front face thickness, so after sanding I had two t-nut holes showing on the front face. The port itself had to be printed in 3 pieces because of the complexity of the geometry to fit it both on the border and between the woofer and the back panel:

With space at a premium, but also for aesthetics, I used an LED array for status lights and integrated the on switch into the potentiometer. With that in mind, I also fabbed an ultra slim 6mm bracing/sealing ring for the rear panel mounting, as a butt joint would’ve been ugly but the shell was too thin/weak for threaded inserts. Those loose microns got me again and the flange on the port interfered with the built dimensions of the rear panel, so I slotted that out, but after some truly painstaking finagling of circuit boards, 5 days before the wedding ship date, I was ready for sound test.

That’s when I realized neither the BMS nor the Amp was using a boosted rail which was causing very noticeable voltage clipping, so I had to rip everything open and shove not only a DC-DC buck converter but a giant LC ripple filter (1.3mH L and 100µF C) onto the voltage rail. The only DC-DC buck converters I had in house were straight outta Hua Qiang Bei which means the were both cheap and poorly designed. Buck converters are in general awesome, and about as efficient as one could hope (for 12 to 24V boost, I saw ~85% efficiency depending on load), but the switching causes a lot of load-dependent ripple, which adds both noise and intermodulation into the signal chain. But with that bullet bitten, and with 1 day until ship, it was time to tune. And boy does this design sound good. Sparing the details of the tuning, here’s the final frequency response with a -3dBFS sine sweep @ half input “volume.”

The 2nd harmonic distortion looks pretty high @ 50Hz but this is mostly due to the aggressive non-linear processing I added in for extra kick; a more reasonable measure of THD in this scenario are the 3rd order harmonics, which I kept below 8%. The dips in the mid band (400Hz, 800Hz) are regrettable from a data standpoint (probably due to product baffle dimensions) but overall, these speakers deliver supple bass, smooth vocals, crisp treble, and excellent definition from 50Hz all the way to 20kHz. I added a little bit of level-dependent EQ, so at maximum volume these speakers are loud enough to kick off a backyard party, and at reasonable volumes they deliver a little extra extension for a very full, deep, frequency response. In my book, a thermos-sized speaker that can fill a room down to 50Hz ticks the “bigger than it looks” box; even from another room I found my self saying “damn, these sound good.”

RETURN II

There are far more than five senses available to you in this awful wonderful human sensorium and one of them is the sense that You Could’ve Done Better. But this was not one of those times.

You ever see something and think “I bet I could make that, but better, and more cost-effective”? You ever think “I could make a portable, hi-fi, PA speaker with shit-your-pants bass, noise-complaint SPL, and art-gallery looks”? You ever sit at home and wonder “what if I went all out? What if it was way too big and way too loud and way too pretty?” Yeah, me too. This time I did it.

SCOPE

This was probably a time that I should’ve done less, but didn’t. In scoping out a project on commission I usually discuss

  • Portability
  • Loudness
  • Bass/quality
  • AssAesthetics

The discussion should and usually does occur late at night over libations which contributes to some amount of scope creep—in a good way—and in this case we started at:

  • Portable enough
  • Loud enough the neighbors want to come to the party too
  • Yass bass
  • Museum worthy

I was thinking of a very reasonable design—1 cu ft, 36V battery, maybe 2 W6-1138 (but with Neo woofers for weight). But then something terrible happened. I saw a targeted Facebook ad for the Soundboks 2; it was was full of shitty marketing claims and absurd dBSPL/battery life statements and poorly mixed dubstep (like, dubstep is fine, just don’t mix it badly or use it to tout sound quality). Here are some reference claims:

I’m not an acoustic engineer, but—wait, no, no I am. These are bullshit metrics. What kind of half-assed sound company specifies a “dB” value but no reference for the units (SPL? Re?), distance, or weighting (A? K?). I could fart at 122 “dB” for a battery life of 40 hours if I’d put the mic by my arse.

For the un-initiated this is the equivalent of saying “Oh yeah my car is sick, it goes 150.” 150…what? MPH? KPH? Like when you drive it? Or when you throw it off a cliff?

Anyway fair to say this bothered me slightly and the new goal was to make a speaker that was better than the Soundboks 2. A portable party in a box. My specific objective goals were:

  • 122dBSPL (Re) @ 1m in the passband
  • Passband 40Hz to 20 kHz
  • f3 @ 38 Hz
  • Directivity controlled ± 4 dB up to 15 kHz

*For the sake of clarity, if not otherwise specified, all dB numbers in this document will be dBSPL @ 1m relative to 20 µPa.

ACOUSTIC DESIGN

Speakers assembled to front face

BASS

On the spectrum of “large/efficient” and “small/inefficient” for a constant bandwidth target, there are three main real-life ways to achieve this in the range of “reasonably portable.”

“Pro” speakers in a large box, i.e. lots of magnet, low moving mass, stiff surround. Think FaitalPro12XL

  • + efficient as hell
  • – generally 8 ohms
  • – $$
  • – Fs is often quite high

“Tang band” style in small box, i.e. lots of magnet, lots of coil, tons of moving mass, allowing for really low free-air resonance and massive linear excursion space.

  • + compact 
  • + always impressive for size
  • – $$
  • – low efficiency

“Dayton Audio” style in a medium box: Medium BL, medium mms, heavy magnet

  • + cheaper
  • + pro-sumer design means well controlled directivity, well designed in-band response
  • + reasonably efficient
  • – heavy
  • – has potential to be “worst of both worlds”

Here’s a quick comparison of the three designs plotted at a very reasonable 100Wrms:

Simulated FR @ 1Wrms

The Iron Law clearly demonstrated here: The Dayton design is in the middle for sensitivity but sacrifices on size to get extra bass. The Tang Band, which will never have the sensitivity of the DA or the FP design, loses a little bass to be small, but has overall good LF extension. The Pro design is huge and efficient but loses on LF extension. But wait! This is battery powered! We’re voltage limited! How do 2 4 ohm drivers shake out against 1 8 ohm driver?

@ Battery Nominal Voltage

The Dayton Audio design clearly wins out (dotted lines are theoretical response vs Pmax/Xmax limited response). The final question: can we kill the Soundboks? If we disregard all concerns for safety, in theory—nearly:

At 1100 Watts of input power (rms), 2 DCS205s are capable of outputting 121.2 dBSPL @ 1m @ 100Hz. The Xmax limitation cuts heavily into the bass output below that. But this design will sound better, look better, and be smaller, so DCS205 it is!

The final choice for bass—sealed, ported or passive? A simple one; sealed sucks for battery-powered. The port would’ve had to have been huge to handle the requisite volume velocity with grace, so after modeling every single DSA, I opted for 2x DS315 12″ PRs + 100g to tune to 38 Hz. These are quite wonderful passives—huge xmax, Rms for days, low enough Fs, and their ID matches the DS205s.

Full send:

MIDRANGE

Knowing that we’re in the neighborhood of 115 dBSPL@1m @ 50V input makes things a bit tricky from 300Hz to 20kHz. Pro sound options are mainly focused on output efficiency, with the sacrifice being directivity and flatness of response (DA PK165-8 below, which had neither the efficiency nor the response I was looking for):

What a terrifying directivity curve

which would essentially demand that you cross it over at 2kHz—untenable for a tweeter capable of 115 dBSPL.

Luckily, there weren’t that many options, and when one can’t sacrifice loudness, quality, or size (i.e. directivity), you must pay a lot of money. I landed on the beautiful and beautifully expensive FaitalPro M5N8 which measures like:

Their claimed efficiency of 99dB @ 1W/1m is a little short of the truth (95dB@1W/1m) but they manage an easy 117 dBSPL with xmax and plim constraints:

Throw it in (a 3D printed back volume to separate it comes in later):

HF

There was really only one option: the Peerless by Tymphany BCS25SC08, a silk dome tweeter + a (small) horn for efficiency. 98 dB, 100W of power handling (they get ragged before that, though), and the horn rather small so the directivity actually rather pleasant (this is in 30 deg intervals compared, the midrange plot was at a 45 deg intervals).

Throw that in the bag too:

And then for a back volume, the passives, and a rainbow inlay:

The base material (gray) is an engineered wood called ForesCOLOR which is basically MDF+ sold in fancy colors — in America it’s sold as Valchromat and solid B2B only (be forewarned: I ordered a few sheets online and a few days later an 18-wheeler pulled up to my house, dumped off several hundred pounds of Valchromat and charged me $600 for shipping). The rainbow inlay is a laminated plywood sold by CWP, and it’s awesome.

Next up is an (incredible delayed) article on the specifications of the mechanical and electrical design. UPDATE—Finally posted. Read more here:

RETURN II-II: THE ELECTRIC BOOGALOO

TESSELATION

There are far more than five senses available in the bleak sensorium of human existence, and one of them is the sense that you could’ve done better. Could I have done better? Let’s find out.

Obligatory finished product first:

IMG_3752.JPG

I think the journey began confidently over beers, but the tolerances involved in interpreting what someone means by “portable and loud but doesn’t have to be too loud but also make it look really cool” can allow for a lot of design doubt (by no fault of their own–it’s just hard to gauge what reference points people have for “small” and “loud”), and so by the time I packed the Tesselator out, I had built 6 separate designs, each one but the last dusted in a fine sheen of “not-quite-good-enough.” This is their story (dim the lights).

ROUND 1: TOO BIG

Try 1 was actually pretty awesome. Basically, I wanted to see what the hype was about with the HiVi B4N’s. Ports in small boxes often of chuff me the wrong way and the client wanted “big circles on the front,” which I interpreted to mean speakers. Plus, I go for passive radiators when I can…and so I went for a passive radiator design. I had been having luck with asymmetry, and I wanted to carry a “T” motif through the design.

IMG_2487.JPG

The problem with the B4N’s that all the fanboys won’t admit is there’s an insanely high Q 15 dB break up mode right at 3kHz, and it likes to jump around depending on boundary conditions, air temperature, zodiac sign, etc. [For the uninitiated, basically the B4N is the classic DIY beginner speaker design because it sounds and looks good, is cheap to make, and because so many other people have built it. However, the all metal cone it’s based around tends to “ring” like a bell at annoying frequencies]. So I wanted to be at least 15 dB down by 3kHz which meant a tweeter that could hit 1.5 kHz, and for directivity reasons, I decided on a 500 Hz crossover, which obviously meant I was going to use the Aurasound NS1s.

Then I found a sweet spot of plywood that I could waterfall from top to front face to edge, cut with confidence, laid out some paper circles for test fit, and very poorly lock-mitered the shit out of the wood.

Lock miters as promised:IMG_2498.JPGThe separated volume is for the electronics–lesson learned from previous projects is when trying to attain a good seal, either get better at electrical engineering, or compartmentalize your bad work.

Of course, I still overestimated my abilities and placed the batteries in the acoustic chamber for space reasons. The white boxes are the enclosures for the NS1s.IMG_2522.JPG

I also had the idiotic notion that using banana plugs as pass-throughs would be simplest, but not only did I get the polarities wrong, it turns out banana plugs are super expensive and take up tons of space:IMG_2503.JPG

I didn’t manage to fuck up the miters too much and the face is perhaps lovable by more than it’s mother:IMG_2947.JPG

I cut out some purple heart and embedded some glow in the dark for the volume knob:

IMG_2690.JPG

With all that shit sorted, it was time to make an absolute mess of the ASP. The signal chain starts with a power-source isolated bluetooth chip, which is split by an op-amp active crossover, the low frequencies going to a china-market bought TDA7492 class D amp and then to the B4N’s while the high frequencies are padded down by potentiometer and sent to a similarly procured TPA3118D2 amp. The TDA7492 is rated for 40W into 8 ohms @ 25V @10% THD, which works reasonably with the B4N’s 25W RMS rating. Typically it’s better to spec an amp with more headroom (@ less THD) over the continuous power rating of a woofer in order to match the crest factor of music, but I didn’t think of that at the time.

IMG_2530.JPG

This is the last build I used analog signal processing on, partially because of the above mess of wires. Here’s the terrible wire management in context:

IMG_3299.JPG

I opted for a glow in the dark,  3D printed, inset handle to preserve the form factor, and then slapped some spar varnish all over that bad boy and called it a day.

IMG_3346.jpg

ROUND 2: TOO QUIET

Sometimes things come together, and sometimes they come together perfectly. This was not either of those scenarios; the “Tesselator” it’s actually just a decent name pun. Honestly, I was pretty happy with Round 1, but it was just not quite there. It was a little too big, and the lock miter bit I used for the edging was one of those cheap amazon finds that reflect their pricing in their quality. So, I started completely anew…by taking an old project that had been called into half-hearted existence with 3 other siblings in a similarly iterative process that finally yielded the Krump Kanon and cutting it in half. In general, this approach is poor.

It sucked for multiple reasons, some of which were that it was ugly and sounded bad and was still too big. Essentially, it failed to meet any of the criteria laid forth.

IMG_8529.jpg

ROUND 3: TOO LITTLE BASS

I then tried a new design that was basically Round 1 but with half the stuff in half the space. It also sucked. I was convinced that it wouldn’t because of my experiential lesson on KK Round 2–“efficiency is king”–but it turns out that only works if you have a pleasing natural response or some good DSP.

It was doubly a shame because the wood that went into the box was beautiful, but for some misguided reason, I used the cheap lock miter bit from Round 1 and, completely to my surprise, it didn’t work well the second time either.

IMG_8530.jpg

ROUND 4: TOO HAMMERED

I then decided that everything I had decided was wrong, that efficiency wasn’t king, and it was all about extension. I went back to some of my “super-compact design” notes and decided to drag some micro-subwoofer Tang Bands into wretched existence. The only problem is that tuning a small box to subwoofer frequencies requires a long-ass tube (because the air spring in a small box is relatively stiff, you need a lot of acoustic mass in the resonating port to get a low resonance frequency), and long-ass ports are very inconvenient to fit into small boxes (not a problem encountered in my daily life). I had a minor stroke of brilliance stroke and decided to make a port that was both a long-ass tube AND a handle, therefore circumnavigating this issue.  Here is the relatively tiny box, which looks shitty because I had also come up with the terrible idea that I’d wrap the whole thing in carbon fiber once assembled:

IMG_2774

And the incredibly sleek and not at all awkwardly protruding port/handle design. IMG_2794

I set the thing up, hit play and was, for the first time in a long time, pleasantly surprised. Here’s a casual video of it in a living room (turn ya sound up and throw on some head phones to appreciate the FIDELITY that’s SPEWING out of this BOOMBOX).

For such a tiny little thing, it was really moving air. It had real potential until I hit it with a hammer.

ROUND 5: TOO UGLY

Not really much to go on about here. It was ugly. I underestimated how weird it would look to have the speakers sticking out of the face instead of flush mounted, and the thing looks like a damn bug-eyed pug.

ROUND 6: NOT BAD

In a surprisingly reflective and narratively satisfying moment, I decided to combine the lessons of the last 5 iterations. I drew up a plan for a small, relatively efficient boombox with precise waterfall miters, inset speakers, DSP, and a port handle. And no fucking carbon fiber.

IMG_3748.JPG

THE DESIGN

On to the even more boring stuff. Yes, yes, I know the stereo image is going to be ruined by placing the “tweeters”  on top of each other. But it looks cool, and there’s no point in attempting to get stereo width out of a box narrower than one’s head.

Anyway, it’s got 2x TB W3-1876 in a mono “sub” configuration, sitting in a 3.7L box stuffed with light polyfill, tuned to 48 Hz with a 12″ long by 1.2″ diameter port. This theoretically gives an f3 of 42 Hz. The port is a 3D printed 3-section design that was epoxied together for surface finish and adhesion. It’s flared on both sides equally for symmetry. The “tweeters” are 1″ W1-1070SH, which are sitting in a 0.1L box and crossed over in a 48 dB/oct LW DSP crossover at 500 Hz. The outer dimensions are approx 4.5″Hx4.5″Dx14″ and the 80Wh battery supplies 24V (nominal) to a China Black Market TDA7492 (to run the woofers) and a CBM TPA3118D2 (for the tweeters) for about 8h of quite listening and 4 hours of TURNT listening  MiniDSP 2×4 runs the tuning, and the bluetooth is run by an APT-X Bluetooth 4.0 chip. The advantages of this chip are high quality transmission with surprisingly low radio noise, but by some trick of China-blackmarket circuitry, it manages to clip it’s output stage at maximum source volumes. I suspect they added a NE5532 output buffer but didn’t manage the gain properly. The numbers on the edge display battery voltage, which is my lazy solution for a battery gauge.

The wood itself is is 1/4″ maple ply, reinforced on the interior with another 1/8″ of ultra-stiff epoxy and some bracing. I finished the wood Water-Lox high gloss finish, which I enjoyed for the simplicity of use and quality of finish. It brings out the grain and luster of the wood beautifully, and it dries quickly into a reasonably durable exterior finish.

THE SUMMARY

Subjectively, the thing is awesome. It sounds far bigger than it looks, and with DSP trickery, there are little concerns of over-excursion despite a relatively low tuning for such small woofers and such a small box. It’s a good feather in the cap for extension over general sensitivity, though it seems that the “high-moving mass, giant coil, really strong magnet” combination that Tang Band is throwing into their designs does a decent job of balancing sensitivity with extension, and this design ends up being a good compromise of the two. The stereo image is shit for previously mentioned issues, but it manages to have pretty laid-back directivity, which is all you could hope for from a small source.

Final assessment: can fill a living room with danceably loud music, yet it is small enough to hand carry to a barbecue. Ship it.

RELEASED INTO THE WILD!

 

IMG_2730.JPGMuch like worried parents will fuss over a child before sending them off into the world, I fidgeted over the details of this lil guy, attempting to delay the inevitable departure, filled with pride and worry at the rigors he’ll face out in the real world. Unlike most worried parents, I eventually said “fuck it,” and dropped this fucker off at the local Fedex, to be shipped cross country in a large cardboard box.

 

The details were particularly sweat-able on this build, as this was essentially the third iteration on the concept, starting with a beast of the beats that went to Keith, and then a semi-pro configuration that went nowhere. Here are the vague details of the build:

 

img_2203

Obviously, the first detail to isolate is the Lego theme. Legos, by the way, are a fairly mediocre permanent construction material. Turns out the 10-micron precision makes them fairly expensive from a cost/volume stand point (a small enclosure requires a lot of legos). Had my little siblings help me build lego boxes to compare the looks. Turns out rainbow is a crowd favorite

IMG_2208.JPG

Fast forward a few days, after much designing, some deliberation, and then cutting, I’ve got a wood box to match the lego box. I believe I designed for 4L internal volume for each NS3 driver, which, in retrospect, I feel was too much. However, once the wood is cut…alea acta est. I went for a seamless miter approach on this build, to avoid the ugly “end-grain” of the birch plywood. I wrapped the grain around the “depth” of the box, but the grain of the “face” does not flow into the edges. So far I haven’t figured out a solution to this that works out in our boring 3 dimensional Euclidean / Newtonian universe.

IMG_2272.JPG

Here we can see the translucence of the 3d prints, pre assembly. Originally, I had not planned for there to be a VU lightstrip in this build, but then I realized that since I built all the electronics off of the wood box, fitting them into the lego box, which had 5/6 faces constrained already, would be extremely difficult. At this point, I also realized I miscalculated the amount of space wires take up. Medusa rears her ugly cable management head yet again.

IMG_2413.JPG

Now you see what I mean.

IMG_2277.JPG

Analog signal processor demonstrating that I am the particular type of person that loves neat things but does not love making things neat, and so I live in a constant torment of my own devising. I chose a scheme that allows for a bass shelf at lower volumes, but flattens the EQ towards higher volumes—it’s essentially a loudness compensation circuit, except that since I have no reference for the actual loudness of the output (due to lack of information about source gain, listener position). I call it the “party” compensation circuit, because while one might enjoy deep sonorous extension at lower listening levels, once your friends roll through, 14 beers deep each, you’re cranking that fucking volume knob. And while the NS3’s have a lot of allowable excursion before crashing, the garbage bass lines that litter the hip hop soundscape are essentially glorified sine waves that will fuck your shit up. The obvious and simple solution to this is a simple dynamic gain-tied or signal-adaptive high-pass for excursion limiting, or a multi-band compressor. I leave these endeavors as an exercise to the reader until I have the time to implement them on the next build.IMG_2409.JPG

Pre-wood finishing. After disliking the gumminess and amber tint of marine spar varnish, I chose to use tung oil to bring out the figure. Then I sealed the box+3d printed parts with epoxy (bar top) for strength/durability, and finally, for UV protection and hardness, I finished with a clear gloss polycrylic. Here’s what it looks like finished:

IMG_2864.JPG