This is an update of my "unorthodox and affordable" system (
https://www.diyaudio.com/community/threads/an-unorthodox-and-affordable-1st-class-system.357779/), though this is condensed to highlight the system as it stands today. The description, like the system itself, has been simplified which is always a good idea. Besides realism, the mission statement continues to be (a) getting as much of the audible band as possible to play through the ideal driver form, and (b) eliminating phase shift from source material entry to loudspeaker entry.
Re-edited continually with latest info. New info here is again an update of xover points
1. Overview
a. Speakers
Loudspeakers are as follow.
Subwoofer (1): This has not changed from 2020. A Peavey 18" Pro Rider is mounted in a Seismic Audio 18" downfiring (about 20* from vertical) sub cabinet with internal crossover bypassed.
Woofer (2): Also unchanged; each woofer consists of a vintage Altec 421A mounted in a Seismic Audio 15" slot-loaded cabinet, again with internal crossovers bypassed.
Midrange (2): Each mid is an Atlas DR-72 re-entrant horn loading an Atlas PD60A driver. The horn has a very long 61" path length and a big 30" diameter round mouth, enabling a very low horn cutoff. Rope caulk is used on the exterior to damp ringing.
Tweeter (2): The very affordable (~$30) Dayton D40T driver, which was modified by bypassing the transformer, is loaded by a DS18 PRO-H110 exponential horn with a 5.43" diamater mouth and a roughly 6.43" path length. Like the mid horn it was chosen to load the driver effectively to a low range. Like the mid horn it is damped with rope caulk. Its near-0 price belies its performance. And the D40T has been enough of an eyeopener that I have replaced my Atlas PD5VH with it. It has me taking a 2nd look at all Dayton equipment.
Supertweeter (2): My Beston RT002a ribbon tweeters have been replaced by a pair of Fostex 025h27. Despite the excellent performance of the Bestons, I was forced to cross over higher than I liked so I decided to give the Fostex tweeters, lying around for a couple of years, a shot. Despite the fact that they needed more equalization than the ribbons (which needed almost none) they permitted me to drop the xover point by about 2khz, and I am tickled with their resonant frequency (1.9khz) being another 2k or so below the range for which I use them.
b. Power Amplification
As before, the speakers are driven by class-T chip amps. Two 1U 19-inch industrial surplus rack mount boxes each house two Sure AA-AB32971 stereo boards and a switching power supply, each input run through a noninductive potentiometer for attenuation and tuning of input impedance. I have compared their specs to those of the initial generation of GaN boards and find them to be at least as good; e.g. the switching frequency is 770khz compares to the GaNs being generally spec'd around 800khz. Distortion figures are at least as good, dead time or no dead time. I'll check back on GaN in a few years.
c. Crossover
The crossover is 'housed' in a refurbished HP 8300 Elite with Intel I7-3770 4-core by 8-thread processor (running Win11 up-to-date) supplied with a simple Vantec PCIe 7.1 sound card (CMedia 8828 chip set), used for both its optical input and multichannel analog output. Driver is provided by MS.
d. Front End
The front end, another HP desktop, is used to stream external sources and play recorded sources off a fast NVME SSD. The machine lacks M2 boot capability so the disk is mounted in a PCIe caddy for music storage. An Xonar 5.1 PCIe soundcard (CMedia 6620a chipset) is used only for its optical SPDIF output; the output is converted to coax (my data link to the crossover computer requires coax input and is mounted high, requiring a ~20' cable thus making coax preferable anyway). The original machine, identical to the crossover machine, was rendered inoperative (somehow) by an ISO windows update and has been replaced by another, an HP Prodesk with Intel I5-4590. Expansion cards were transferred to this 4 core 4 thread machine. I detect no issue. Thankfully I had the foobar configuration files (in 'roaming') backed up on a USB disk by a timer-driven batch file script.
e. Data Link (optical cable substitute)
SPDIF stereo is sent from the front end to the crossover machine via optical means. It consists of a simple 74HC04-based optical-to-coax converter (with a faster 74AC04 hex inverter substituted) which, via a cable-grade 20' cable, connects to a second converter. PCIE-based soundcards with coax SPDIF are getting hard to find, necessitating the 2 converters. The second converter, coax-to-optical, also has the 74AC04 substitution and is modified to drive a 6mm 650-nm laser module instead of the Toslink output module. The laser is aimed at the open end of an optical cable connected to the Vantec optical input on the crossover machine, some 40' away. It is a superior alternative to a long optical cable. I do not know its upper limit, though I have in the past verified 384k.
2. System Setup
a. Front End Machine
The purpose of the front end computer is to supply source material, process it and send it to the outside world as an SPDIF stereo signal. Foobar2000 v2 (32 bit) is the vehicle of choice. Source material is stored as mentioned above, except for that which is directly streamed from the web. Downloads, CDs etc. are converted to FLAC for storage. The DSP stack contains these plugins, in order:
i. Foobar's 'amplify' level control cuts input signal level by ~18dB to ensure no clipping in the signal processing chain.
ii. Sox resampler upsamples to 192k for all further processing.
iii. Foobar's 'set sample rate' declares 192k here. This may be unnecessary but since I don't know, it's there.
iv. Reaxcomp, a compressor, is configured as a 18-band expander to enhance/restore dynamics. The ideal would be of course one band per frequency, which is impossible, but division into bands minimizes the dependence of a high frequency's expansion on a much lower frequency's level (since the former rides on the latter). The compression ratio is 0.88:1, which is about 1.14:1 expansion.
v. Two instances of Foobar "Convolver" apply equalization from curves built in RePhase as phase-linear FIRs at 192k samplerate and 256k (as a power of 2) taps. In the first engine two curves are used, the first to apply amplitude correction for the slightly nonflat response curve from Reaxcomp and the second a phase-correction curve for the phase shift induced by Reaxcomp, which can be measured by several VST test tools. The second engine is for application of a loudness contour curve.
vi. A second 'amplify' instance may be put here if I want to boost the level.
The output stage is WASAPI push (the Xonar card doesn't like 'event' for some reason) with copious buffering as latency is not a big concern for me. Driver is set to 192k 24 bit and exclusive mode.
b. Crossover Machine
Here, the Vantec 7.1 PCIe card with CM8828 chipset is used, acting as default input on its optical-in and as default multichannel output on the 7.1 (analog) outs. The driver is configured for 7.1 surround with full range on all outputs (again exclusive mode), thus an 8-channel output card, perfect for a 5-way crossover with a single sub and paralleled woofers. Foobar2000 output is configured to WASAPI event. I suggest trying this practically free all-in-one PCIE output solution before you spend a lot on hi-end DACs etc.
The DSP stack of Foobar2000 is as follows, in order:
i. 'set sample rate' is set to 192k.
ii. The major plugin, ConvolverVST, provides 2 to 8 channel multiplexing, 10 filters to 8 active outputs. In addition, the config text file for ConvolverVST also specifies per-channel delay times to align the drivers (and compensate for differing latencies among the filters should that occur; see below), and a number of other useful parameters. Also, I use 8 partitions and 'patient' optimization, which are set in the small GUI interface of ConvolverVST. I have not found an alternative that does as much or performs as well. Major notes on usage are in the original post. Each filter file includes (besides the filter itself) a driver-specific phase curve to precorrect measured phase shift at the loaded amp output, and (for mid, hi, and super units) an amplitude curve overlaid onto the filter which is the inverse of the published amplitude response of the driver.
The addition of the two supertweeters was accomplished using my 8 available outputs (and amps) by paralleling the woofers onto one mono channel which, with a 150-hz low-pass, is indistinguishable from stereo anyway, and the long wavelength of 150hz obviates any noticeable parallactic smear. That left me with 2 outputs for stereo supertweeters (the single sub also taking up just one mono channel). The config file for Convolver VST was modified with 10 input filter entries demultiplexed down to my available 8 outputs. Note that the spec for input/output channel number remains at 2/8, with the delay list still having 8 entries (the number of physical outputs). You can specify any number of filters in the list (in this case 10, L/R for each of the 5 frequency ranges, with outputs directed to the 8 available outputs by downmixing each of the woofer outputs to the single mono output channel; same for the sub.
iii. Next is Matrix Mixer, a convenient multichannel level control that works well to balance output levels for varying reasons.
iv. Foobar's 'amplify' may be used to further modify (increase) level on output as most processing is held at low levels to prevent clipping on the DSP stack (the only place I have ever observed clipping). It handles multichannel.
3. Other Stuff
a. The choice of crossover frequencies and filter parameters is based on what sounds best but also tries to give consideration to a few axioms:
i. The lowest frequency asked of a horn should not have a wavelength that exceeds the path length of the horn. Call this 'full wave' loading. I find that half-wave loading is fine and try not to exceed that. It gives me another octave.
ii. The lowest frequency asked of a horn should have a wavelength that does not exceed the circumference of the (round) horn. If your horn is not round, compute its mouth area and calculate the circumference of a round horn of equal area.
iii. No horn should be asked to provide more that 3 octaves. I observe this limit on the mid and hi-mid horns. I take the mouth area ("circumference = lowest wavelength" rule) as the reference frequency.
iv. Beranek's horn equations provide an in-depth characterization of a horn, but also tend toward full-wave loading and may be too restrictive.
Back to the crossovers. They are Linkwitz-Riley filters set as steeply as possible with a parameter of 996 (a 166th order filter, approximating a brickwall). Windowing is Albrecht 11-term.
The crossover points are
Sub/Bass: f=65.
Bass/Mid: f=150.
Mid-Hi: f=850.
Hi-Super: f=3400.
I have tried to observe half-wave loading for the horns (the DS18 horn goes into quarter-wave loading at 1050hz, so half wave is violated, but the big driver doesn't seem to care). I take the base frequency of the big horns at 143hz, the limit dictated by a 30" mouth diameter (they are still within 1/2-wave loading at this point). This gives a 3-octave limit of 1144hz, which as seen is observed. I got my large horns in hopes of lowering the hi-pass point as much as possible; I never dreamed I could get it cleanly down to 150hz.
I chose the DS18 HF horns because I saw an unusually long path length for a tweeter in the photos. They have proven excellent, The mouth size predicts a 794hz low end before loss of control, thus they should pass 3 octaves at 6352hz, well above the low-pass currently in use.
The Fostex horns are running well within their limits for path length and mouth size.
I found that the filter latency may differ for different bands if 'energy' centering is chosen, so be sure to note all latencies shown in RePhase upon filter generation if you use that centering format. You will not only have to add delay(s) to the filters for appropriate physical alignment ("absolute phase") but also augment them with compensation for differing filter latencies should they occur. However, use of 'middle' centering (perhaps the better option anyway) seems to obviate this issue, with latency apparently dependent only on the number of taps and/or sample rate, which will be the same for all bands.
b. The "Foo_record" plugin permits Foobar to play the default sound input (in this case the optical input of the Vantec). Its playlist entry is set using 'add location' and entering "record://". This will read the default input, set in MS audio config.
c. A word on running foobar2000: Since I have multiple processors on each machine, I start Foobar with a batch file that specifies priority and affinity in the 'start' command. Priority is set at Realtime. To get that you must right-click your batch file icon and confirm administrative privilege since MS wants to be sure you know what you are asking (if you simply double-click your batch icon MS will default you to High priority). The magic trick is that I also set affinity to run Foobar only on the last half of the processor set (hex F0 on the crossover machine with 8 threads, hex C on the front end with 4 threads). I've been running this way without incident for a long time so if you have enough processors you are highly unlikely to "brick" even a fully-functional machine, which mine are (they are also backed up with Macrium, and the ever-expanding music collection plus the foobar directories are backed up directly as files each few days using a batch script). Some adjustments to foobar will be required for Realtime; e.g. do NOT use MMCSS on WASAPI; it will prevent the spun-off WASAPI process from inheriting Realtime priority and things won't sound pretty.
d. Foobar2000, up-to-date, is run in its longtime 32-bit format. With the advent of version 2, a 64 bit format is also available, but it will be some time before the various plugins are available in 64 bits, and some of my VSTs (which are critical) may never be. When/if I find that I can smoothly incorporate my 32-bit plugins to the 64-bit version I may switch to it. Or not. I firmly prefer the old VST adapter version 2.4 over the new adapter, which reinstantiates itself as a process every time a signal appears, in my case creating latency that even I can't tolerate. Moreover, despite inheriting affinity from the parent process, it fails to inherit priority(?), at least according to task manager.
e. A note on Sox resampler: Under advanced preferences, its initialization parameters include the somewhat mysterious "Service Priority." Attempts to find an explanation have in the past not been helpful. I have found recently while playing "hi-def" music test recordings (those things can actually be useful sometimes) that setting it below its default of 100 (say ~90) resulted in a good deal of relatively quiet detail emerging in the music, telling me that it may be an actual thread priority. However, I was able to eliminate most of this effect by manipulating my 'push' buffer size in advanced/output, in this case making it smaller.
That's it in a nutshell. Here's a pic of the speakers. Note that the small horns don't show the D40T drivers, nor are the Fostex tweeters evident; I'll update the photo at some point.