a digital signal processor with integrated multi-channel amplifier for high-fidelity speakers.
This project was created on 08/11/2014 and last updated 8 months ago.
in the previous update, i fretted about the 146Hz node in my listening room, and wondered if i could fix it. you can't just fix it by turning up the gain at 146Hz - it's like pouring sand into a black hole. the problem has to be fixed acoustically, so it's time to try bass-trapping.
bass-trapping is the process of shoving huge amounts of foam and/or fiberglass into the edges and corners of a room to dampen a room's low-frequency modes. it's a popular thing to do in listening rooms and/or home studios, and some people think it's the very first thing you should do. i'm not convinced. that much damping material is really going to cost you, and mounting it in a habitable space is quite non-trivial. but i like science, which means i have to try. i have to try to do it right.
so here's the experiment - get one block of acoustic foam at a decent price, mount it in the most theoretically sound place (ha), and see if the change is worthwhile enough to justify further expense. here we go!
i want to damp the 146Hz mode specifically. i have one big foam block, and it has to count. where should i mount it?
here's where some science comes in. sound travels through orthogonal fluctuations in pressure and velocity. my foam block should have the maximum effect if i place it in a high-velocity region of the 146Hz mode. somewhere in the room, the 146Hz mode has a velocity antinode. how can i find this antinode?
well, my speakers are pressure sources. my microphones are pressure sensors. and velocity is orthogonal to pressure.
so if i play a 146Hz tone through my speakers, and i can find a spot somewhere in the room where the sound pressure is abnormally low, that should be a high-velocity spot - the best spot to place my block of foam.
here's a needlessly complicated way to probe the room for sound pressure:
that's a Nexus 5 running AudioTool, connected to a calibrated Dayton iMM-6 measurement microphone. i probe the room with the phone mounted at the end of a long stick. it streams video (screen mirroring) through a Chromecast so that i can wirelessly watch the spectrum. and all of this works, but you know what.. forget it.
this is what i actually used:
[a $20 SPL meter and a long stick.]
the speakers are now blasting 146Hz. some rummaging reveals a spot in the room where sound pressure is >15dB lower than almost everywhere else. it's a winner!
up there is our low-pressure spot, which should also be our high-velocity spot. it's about 2 feet away from each wall, which is not very surprising. i mean, the wavelength of sound at 146Hz is 7.6 feet. it's like this:
[diagram of a 146Hz standing wave at a wall. a quarter-wavelength from the wall, velocity (red) is maximum and pressure (blue) is minimum.]
if 146Hz is reflecting off each wall, physics dictates that the lowest-pressure region is 1.9 feet from the wall. so far, everything makes sense. how can i put a foam block up there?
yes. all things are possible through my prodigious tripod collection.
[hammer a 1/4-20 T-nut through some scrap plywood, and up it goes.]
[it almost looks cool!]
my first step is to place the SPL meter at each of my four listening positions, and record the loudness of the 146Hz tone with and without the foam block.
here are the results (before and after):
that's.. not good? the difference is so small that it might as well be noise. so let's break out the real microphones, and compared averaged room measurements.
[left speaker frequency response, averaged over 4 listening positions, with 1/6-octave smoothing. without (blue) and with (red) foam block.]
[right speaker frequency response, averaged over 4 listening positions, with 1/6-octave smoothing. without (blue) and with (red) foam block.]
aside from slightly less treble (i left the 8.7kHz filter on) they're essentially the same curve....Read more »
i think i've hit the point where electronics and speaker design can only do so much. it's time to talk about acoustic room treatment.
two weeks ago, i was having sidewall-reflection problems. this means i was hearing too much reflected sound that had bounced off of the sidewalls of my listening room. this sound was interfering with the direct sound which traveled directly from the speakers to me.
of course, you're always hearing reflected sound. in fact, almost all the sound you hear in a typical living room is reverberated sound, which travels from the speakers to you after multiple reflections. without those reflections, you'd only hear a tiny part of your speaker's output, and you'd need enormous speakers to hear much at all. this is why outdoor speakers are enormous.
there is, however, one kind of reflected sound which i do need to control, and that is the first-reflection off of the sidewalls. it looks like this:
[direct sound (travelling directly to ear) and first-reflection (travelling from wall to ear).]
unlike the multiply-reflected reverberated sound, the first-reflection is much louder, arrives at the ear with a much shorter time delay, and is highly correlated with the direct sound. i find it quite audible and not very fun. so how can you control the first-reflections?
[sidewall with 1" of acoustic absorption materials - absorbing just the reflected highs.]
most people's first instinct is to cover their sidewalls with a thin layer of absorptive material. after some research they may also use 'fancy materials', such as 703 fiberglass. but a thin layer will only absorb the highest frequencies! if you are using mostly-omnidirectional speakers (as most of us are), that reflected sound is a big part of what you hear, and you're essentially cutting the highs out of the mix. what if you use thicker materials, to attenuate a wider range of frequencies?
[sidewall with 4" of acoustic absorption materials - absorbing the reflected mids and highs.]
here we've spent our money on much thicker layers of absorptive material, and can absorb both the mids and highs. sometimes this is a good solution, but i agree with certain experts that it generally is not, unless your room is tiny and desperately needs more absorption to reduce the reverberation time. this approach could leave you with a very dead-sounding listening space, and a huge disparity between the loudness of reverberated bass versus mids & highs!
one might ask - why not keep adding thicker and thicker layers of absorption until you can absorb the bass as well? you can indeed do that with bass traps, which are huge pieces of foam which can be mounted in the corners of rooms. the problem is, by then you've spent all your money, and you end up with a super-dead room which now requires enormous speakers, just like the great outdoors.
so instead of mounting absorbers on the sidewalls, i use diffusers instead. these are geometrically-complex surfaces which reflect sound in many directions. it looks like this:
[sidewall with acoustic diffuser - scattering the reflected mids and highs. nothing stops the bass!]
this also reduces the amount of sound which is reflected right at you. however, the rest of the sound is dispersed around the room, which adds to reverberation and doesn't upset the room's spectral balance.
so how does one construct these diffusers? if your blood is rich, you could buy and install professional diffusion panels. or you could construct your own (admittedly beautiful) Skyline diffusers. but even Floyd Toole just uses bookcases in his own house, and so shall i.
[right speaker is next to a bookcase with actual books.]
[if you own more e-books than books, you may have to use boxes and wooden panels instead.]
have you wondered why cinemas have padded seats? it's because people are squishy, and if the seats were less squishy than people, an empty cinema would sound substantially different than a full cinema. i take cues from cinema design, with an exceptionally squishy listening...Read more »
i built the DSP 01 as a platform for my audio projects. so now let's use it for something.
here's a speaker which i designed & built almost four years ago. i didn't know what i was doing back then, but the pair came out alright regardless.
it's a 3-way closed-box design, built to minimize distance between tweeter and (dual) midrange drivers. with a midrange-tweeter crossover at 2kHz, the off-axis performance is quite nice. the woofer crosses over at 300Hz, with a maximally flat (Q=0.71) roll-off below 57Hz.
on the left is the terrible analog signal processor which i built for them. it can go away now.
it's like getting a Bentley to replace a rusty bike.
so let's begin!
the newest version of DSP 01 uses a 16kB EEPROM with a 64-Byte page size. the EEPROM settings are tweaked accordingly:
my new chassis has four knobs, so i have pins MP2, MP3, MP8 & MP9 all connected to the auxiliary 8-bit ADC. MP1 is an 'output GPIO' to control the clip-detect LED. MP0, MP4 & MP5 are configured to receive I2S audio from the CS8422. the other settings are about the same as last time:
so here's a crude first-try at building a signal flow for these speakers.
there's now four 'ticks' on the Input block because we have four input channels. Inputs 0 & 1 are our analog inputs, whereas inputs 2 & 3 are our SPDIF inputs.
i'm still using the same clip-detection method as before.
the Mix block allows the mix control knob to adjust the relative mix of analog & digital inputs .
there's only two frequency filter blocks here - they are Crossover_300_2k and LinkwitzTransform.
Crossover_300_2k is (unsurprisingly) the crossover between the tweeter, midrange and woofer drivers. it looks like this:
[woofers are attenuated by 7.1dB to compensate for the higher output voltage of the AK4430 DAC. polarity is inverted because the woofers are wired backwards internally.]
LinkwitzTransform implements a Linkwitz Transform on the woofer. it is essentially a biquad filter which cancels out the 57Hz roll-off of the woofers, and moves it down to 35Hz. as Sigmastudio doesn't have a 'Linkwitz Transform' filter block, i implemented it as a custom IIR filter. it looks like this:
those coefficients are calculated with the awesome biquad calculation spreadsheet from the MiniDSP website. bear in mind - the spreadsheet & Sigmastudio use different definitions of coefficients a1 and a2. multiply the spreadsheet's a1 and a2 values by -1 before plugging them into Sigmastudio. the end result is a precise bass-boost in the frequency response of the DSP:
[DSP frequency response with first-try signal chain: woofer (red), midranges (green) and tweeter (blue)]
now let's measure them speakers!
step one is to scrutinize the tweeter/midrange crossover at 2kHz. this is measured 18" away, on the tweeter's vertical axis, at horizontal angles of 0, 45 and 90 degrees.
[frequency response of left speaker, 18" distance, on tweeter's vertical axis. 1/20 octave smoothing. horizontal angles (in degrees) of 0 (red), +45 (green) and +90 (blue).]
as expected, the 2kHz crossover works alright. off-axis dips at 2kHz are fairly well-controlled due to the tight spacing between tweeter and midrange drivers.
now to examine the 300Hz midrange/woofer crossover. this is measured 2 feet away, between midranges and woofer, at horizontal angles of 0, 45 and 90 degrees.
[frequency response of right speaker, 18' distance, between midrange/woofer vertical axis. 1/20 octave smoothing. horizontal angles (in degrees) of 0 (red), -45 (green) and -90 (blue).]
the 300Hz crossover itself is fine. however, we're close enough to the wall to see some lively room modes.
what about measuring from the listening position?
let's measure the response of each speaker at four different positions on the couch.
[the microphone thinks it's people!]
[frequency... Read more »