Audio History DVD-A Player High-Density IR Speaker Polarity CinEQ Filter Acculinear
Zin Bootstrap LCD Graphics HT GUI Design SEF Detector Audio Jitter

TECHNOLOGY INNOVATION & DESIGN                                               Main Menu

1) Carving Out a Little Piece of Audio History...

Where:  Winter CES, Las Vegas, NV
12-15 January 1995
Who:     Enlightened Audio Designs (EAD)
What:    Demonstration of production samples of the EAD TheaterMaster, the very first home theater 5.1-channel
              Dolby Digital AC-3 surround sound processor. This breakthrough product was also an audiophile preamplifier
              with HDCD digital filtering, true 20-bit AccuLinear low TIM dual-differential digital-to-analog conversion circuitry,
              advanced jitter reduction using a VCXO-based Digital Flywheel reclocking circuit, advanced 20-bit delta-sigma
              oversampling analog-to-digital conversion circuitry, dual-converter digital balanced outputs, switched resistive
              array volume control utilizing Vishay precision metal-foil resistors, class A analog stages, HF-EQ cinema
              equalization, and AutoSetup using a hand-held setup microphone.

Significance:    The TheaterMaster was not only the very first consumer product in the race to market a decoder
                           for Dolby Lab's technologically advanced Dolby Digital/AC-3 5.1-channel digital surround sound, but
                           through its state-of-the-art circuitry, was also a milestone in audiophile preamplifier and digital audio
                           processor design
. Among its other accomplishments, TheaterMaster single-handedly proved the
                           audiophile potential of Dolby Digital AC-3 encoding and decoding, and the validity of combining
                           5.1-channel AC-3 decoding with high-end audiophile digital and analog processing techniques.
A year after its introduction, the TheaterMaster Classic, as it is often referred to, was still receiving
                           accolades for its best-in-class audio performance.
TheaterMaster's ability to reproduce multi-channel
                           movie soundtracks at resolution levels and sonic accuracy in excess of that obtainable with previous
                           digital stereo LPCM audio recordings and enhancement methodologies such as HDCD, made
TheaterMaster a golden standard against which all other processors were compared. The later
                           addition of DTS 5.1-channel decoding only served to enhance that reputation.
Edward J. Foster of
                           Audio magazine (March 1996) said:
"If technological masterpieces intrigue you, look no further than
                           the Enlightened Audio Designs TheaterMaster. The TheaterMaster is unique. (I rarely use that word,
                           and never lightly.) of the most remarkable--dare I say the most remarkable--audio products to
                           have entered my lab, my listening room, or my viewing room." "Its converters rank among the best I've
                           tested or heard, and its analog electronics are superb." "With Dolby Pro Logic...the results are
                           exceedingly good...", however, "Dolby AC-3 sounds flat-out clearer and has more impact and vastly
                           wider bandwidth than Pro Logic. That comes through loud and clear with the EAD TheaterMaster."
                          "I doubt that you'll find anything else that exploits AC-3's potential like this unit does." Gary Reber of
                          Widescreen Review
(Nov/Dec 1995, Issue 17) said:
"The TheaterMaster is a fabulous 5.1 processor
                          ...It's performance capabilities are flawless and  the sound is rich musically."

                          The TheaterMaster Classic shipped to customers February 1995.

                          In another industry first,
TheaterMaster's DTS Digital Surround 5.1-channel decoding update was
                          introduced in August 1996, Bangkok, Thailand at an audio/video show sponsored by Laser Definition
                          (R.S.G.B. Co. Ltd.).

TheaterMaster Classic sales volume 800 units.

Dream Team:
 Alastair Roxburgh (systems architect, project manager, product manager, h/w, f/w);
                             Andres Reial (h/w, f/w, DSP f/w); John Hagelin (h/w, f/w); Greg Palma (h/w test).

Introductory pricing for Standard model: $5,950, Signature model $9,995.
Regular pricing: $6,995 (Standard model in black or silver)
                        $9,995 (Signature model with gold, "A" DAC and ADC + Teflon boards, and Vishay 0.1% metal foil resistors).
DVD upgrade (late 1996 increasing Dolby Digital sampling rate capability from LD's 332 kb/s to 448 kb/s) $495.
DTS upgrade (October 1996) $795.
Pricing for DVD/DTS models: $7,790 (Standard model in black or silver)
                      $10,790 (Signature model  with gold, "A" DAC and ADC + Teflon boards, and Vishay 0.1% metal foil resistors).

Alastair & Andres working on 68HC711 and ZR38001 firmware updates for the TheaterMaster Classic (arrow),
in my living room, early March 1995.

A Tale of Two CESs

All who visited the EAD show room in the Sahara Hotel's Alexandria Towers, January 12-15, 1995, were enthralled by the sound of the TheaterMaster. The visitors included three Dolby sound engineers who had been involved in the AC-3 development. The high quality of TheaterMaster's playback from a pre-release copy of U2's Rattle and Hum laserdisc created an emotional moment for this VIP audience. One of them, Steve Thompson (supervisor of the AC-3 encode for the critically acclaimed remastered 5.1-channel Rattle and Hum concert soundtrack recordings), said, "I've never heard AC-3 sound so good!" 

In fact, as recounted in the February 1995 issue of Home Theater Technology magazine (HTT) by Technical Editor Corey Greenberg, January 1995 was the second showing of TheaterMaster at CES. The first was in Chicago at the June 1994 Summer CES, six months before. Corey wrote: "The [emphasis Corey's] High-End company, Enlightened Audio Designs, however, jumped the gun on everyone when they introduced their muy expensivo AC-3-ready TheaterMaster surround preamp/processor at CES back in June: this dazzling gem should be in the salons now..." And then with reference to actual working Dolby Surround AC-3 introduced at winter CES, in Las Vegas just weeks before, Corey wrote further that, "Dolby 5.1 is finally here, and it's really something incredible. At HTT, we've got Runco's 5.1-ready IJR II laserdisc player and the EAD TheaterMaster right now.... Hey, somebody's got to be Number One. And we like the way the hat fits." (HTT Feb 1995, p. 89)  The TheaterMaster shown six months before, at the summer CES in Chicago, was a functional prototype, equipped with the same DSP hardware as the production TheaterMaster introduced in Jan 1995 at the Winter CES, but differing in details such as D/A converters, remote control, etc. At that time Dolby still had not released the home version of AC-3 to manufacturers, and so our June 1994 CES demonstration instead used an available digital Pro Logic decoding firmware for Dolby Surround encoded stereo sound tracks.

"The differences are so slight, I'm not even sure I can find words to describe them!"

On Saturday, February 14th, 1995, with an EAD TheaterMaster in hand, Gordon Shackelford and myself, both from EAD, became unofficial representatives for Dolby AC-3 Surround Digital at the world's first "shootout" between competing discrete surround sound formats. This event was sponsored by Widescreen Review (WSR) magazine, and took place at the home of the magazine's owners, Gary and Marlene Reber. Many industry experts were there, including the late Brad Miller (d. 1998; live sound recordist, and founder of Mobile Fidelity Sound Labs), the late Peter Mitchell (d. 1996; President of the Boston Audio Society), Tom Norton (Senior Technical Editor, Stereophile magazine), Terry Beard (founder of DTS), Ian Paisley (Chief audio design engineer, API), Gary Reber (co-founder of Widescreen Review magazine), Stephen Smyth (Principal engineer, DTS Zeta Digital system), Alastair Roxburgh (Director of Engineering, chief architect of EAD TheaterMaster, and co-founder of EAD), Les Edelberg (President, Filter Concepts), and Gordon Shackelford (Director of Operations, EAD).  

All present seemed to be impressed at how transparent the TheaterMaster, with its 20-bit fixed-point Zoran DSP AC-3 decoder, sounded against the DTS Zeta Digital decoder (32-bit Analog Devices floating point DSP), and also (in the case of one soundtrack) against the original 6-track PCM Hi-8/DA-88 printmaster recording (containing the exact data from which the AC-3 and DTS soundtracks had been created). At one point in the all-day session, long-time audiophile Peter Mitchell said, "The differences [between DTS and AC-3] are so slight, I'm not even sure I can find words to describe them," an opinion that was echoed by all those present.

I remember mentioning to AlgoRythmic Technology's Stephen Smyth, principal engineer for the DTS Zeta Digital system, that based on the results of the WSR-sponsored listening tests, and to compete effectively against Dolby AC-3, DTS needed to do whatever it would take to port DTS Zeta onto a low cost fixed point DSP, even if this required a slight lowering of the audio performance. Six months later, this is indeed what happened, and TheaterMaster went on to also become one of the first, if not the first, home surround sound processors to incorporate DTS decoding, using a Motorola 24-bit fixed-point DSP.

The original TheaterMaster model, with the front panel LEDs and push buttons, shown in the photographs below, is now known as the TheaterMaster Classic. Thirty TheaterMaster Classics were sold to the film industry, who used it both for QC in the manufacture of laserdisc AC-3 soundtracks, and in the 5.1-channel soundtrack mastering process. This was made possible by an addition to the  TheaterMaster firmware that enabled decoding of professional formats for S-PDIF/AES. A companion EAD-designed AC-3 RF demodulator (the SmartCable) was also available. Scoring a triple win as the first consumer Dolby Digital decoder, the first high-end decoder, and the  first commercial decoder that could also handle the professional data formats used in laserdisc production, the TheaterMaster quickly gained a solid reputation for sound quality, accuracy, and flexibility. It remained in wide use until, lacking THX processing (which I've always been adamantly opposed to because its Re-EQ is not compatible with 5.1 and its decorrelation is not compatible with music), the studios were put under extreme pressure to stop using TheaterMaster. The pressure, which some have said bordered on duress, came from a certain party who toured the professional facilities that were using TheaterMaster. As told to me by an insider at one of the studios, this "tourist" purported to show that TheaterMaster did not hold its calibration, and then (in a very Steve Jobsian manner) added that if use of TheaterMaster did not cease, then no more Tom Holman experiment projects would come to that studio. It seems likely that this same dog and pony show was repeated at various studios. By this time, TheaterMaster was earning a well-deserved reputation for home theater sound quality, reproducing feature film and music video soundtracks with a near-field immediacy and point-source holosonic accuracy that cannot be achieved in cinema spaces, and was frequently used as the standard against which all new-comers were judged. Widescreen Review magazine was foremost in listing the TheaterMaster Classic as part of its Reference Home Theater setup for several years.

Foreground (L to R): Alastair Roxburgh (sofa), Gordon Shackelford (sofa), Brad Miller, Terry Beard (on floor).
Background (L to R):  Les Edelberg (stairs), Stephen Smyth, Richard Hardesty, Ian Paisley, Jim Ketchum.
Also attending the event (not pictured): Gary Reber, Marlene Reber, Tom Norton, the late Peter Mitchell, Mike Smyth, Ron Dycks.
[Pictures originally published in Widescreen Review, Compression Madness part 3, pp. 98-108, Vol.4 (1), Jan/Feb 1995]

EAD TheaterMaster Timeline

June 1994: EAD's summer CES demonstration of AC-3-ready TheaterMaster functional prototype, running digital Pro Logic.
January 12-15, 1995: EAD's winter CES demonstration of a production TheaterMaster equipped with Dolby Surround AC-3 digital decoding (now called Dolby Digital).
February  4, 1995: EAD's TheaterMaster unofficially represented Dolby Surround AC-3 Digital at the first 5.1-channel surround sound shootout: AC-3 vs. DTS vs. 6-track printmaster PCM recording. These sessions were sponsored by Widescreen Review magazine.
February 1995: EAD shipped TheaterMaster to first customers.
August 1995: Pioneer shipped their first AC-3 A/V receiver, the VSX-99.
February 1996: By this date, TheaterMaster had been used in the sound mixing of the following Dolby AC-3 laser disc titles:
Alien (20th Century Fox Home Entertainment) 11/95
Aliens (20th Century Fox Home Entertainment) 11/95
Die Hard (20th Century Fox Home Entertainment) 11/95
Die Hard with a Vengenace (20th Century Fox Home Entertainment) 01/96
Don Juan DeMarco (New Line Cinema) 09/95
Guys and Dolls (Image Entertainment) 10/95
In the Mouth of Madness (New Line Cinema) 07/95
My Family (New Line Cinema) 11/95
Show Girls (MGM/UA) -/-
The Madness of King George (Goldwyn) 09/95
Towering Inferno (Image Entertainment) -/-
Mortal Kombat (Image Entertainment) 02/96

August 1996: EAD demonstrated the production TheaterMaster DTS upgrade at Laser Definition audio/video in Thailand, beating high-end arch-rival ADA by days or weeks, and other early adopters by months.



as advertised in Widescreen
Review, Jan/Feb 1995

Video magazine, in its 1995 CES recap. issue (April 1995, vol. XVIV #1):
"A couple of manufacturers previewed AC-3 in prototype form at last year's show, but demonstration glitches left some observers wondering how good the new format would be. This year there were few doubters. Several manufacturers--including ADA, Enlightened Audio Designs, Denon, JBL, Kenwood, Perreaux, Pioneer and Yamaha--demonstrated AC-3 sound in ways that left big smiles on their faces. It looks as if the first to market will be Enlightened Audio Designs' TheaterMaster, a versatile control center with switching for analog, conventional digital and AC-3 sources, and an integral digital-to-analog converter."

Video magazine, September 1995:
"AC-3 products are already in A/V shops. Enlightened Audio Designs (EAD), an American audiophile manufacturer, was the first out of the gate; their TheaterMaster ($6,995) is a sophisticated component comprised of a D/A converter, digital preamplifier, and AC-3/Dolby Pro Logic (DPL) processor. Denon, Pioneer, and Yamaha among others, are only a few weeks or months behind..."

The AC-3 demonstrations at the 1995 Winter CES had an immediate effect...
...turning the creaking "TOWER OF MATRIX SURROUND" into toast:


ADA Olympus III  $29,000 (sic) 
   Dolby AC-3-ready, vacuum tube Home Theater Controller 
(As of Jan/Feb 1995, the Olympus III was only equipped with Pro Logic decoding for Dolby Surround via optical input. Although advertised at CES as upgradeable to 5.1, it is not clear when and if that upgrade ever happened. At the astronomical asking price for the Olympus III, perhaps they sold 3 units? Most likely the upgrade didn't make it into production, since later in 1995 ADA was instead shipping a 5.1 AC-3/Dolby Digital upgrade to their existing SSD-66 Pro Logic processor, adding the DTS-1 decoding chassis in June 1996, one  year after the EAD TheaterMaster began shipping DTS decoding to customers)

Meridian 565  $3,600
   Dolby Surround Pro Logic matrix surround processor. (Meridian digital powered speakers also required)

McIntosh MX130  $3,600  
   A/V Tuner Control Center with Dolby Surround Pro Logic matrix surround processor. Introduced Feb. 1995.

Proceed PAV  $4,195
All-digital Dolby Surround Pro Logic matrix surround processor.

Angstrom HED  $3,500  
All-digital Dolby Surround Pro Logic matrix surround processor. Introduced Jan. 1995.

Citation Model 7.0   $3,700 
6-axis matrix surround by Fosgate + Dolby Surround Pro Logic matrix surround. Due Q1 1995.

Fosgate-Audionics Model Four  $1,000
Digital servo logic matrix surround processor with Dolby Surround Pro Logic matrix surround.

Kenwood KC-X1  $300
   Digital A/V Control Amplifier/Tuner with Dolby Surround Pro Logic matrix surround.

Lexicon CP-3 Plus  $3,200
   First DSP-based matrix surround sound processor. Uses a proprietary logic matrix and
   Dolby Surround Pro Logic matrix surround + Home THX.

Fosgate-Audionics Model Three A  $3,000 
   Digital servo logic matrix surround processor with Dolby Surround Pro Logic matrix surround + Home THX.
   Introduced January 1995.

B&K AVP2000R  $1,000
   Dolby Surround Pro Logic matrix surround processor.

Kinergetics KSP-2  $4,500
Dolby Surround Pro Logic matrix surround processor.

Parasound P/SP-1000   $850
Dolby Surround Pro Logic matrix surround processor.

Soundstream C-2 THX  $2,995
   Dolby Surround Pro Logic matrix surround processor. (Uses Fosgate Model Three A logic board)

ADA SSD-66THX (not pictured)  $3,000
Dolby Surround Pro Logic matrix surround processor.

Proton SD-1000 (not pictured) $1,000
   Dolby Surround Pro Logic matrix surround processor. (A 10-year-old design by Aphex)

AudioSource SS-Four (not pictured)  $300
Dolby Surround Pro Logic matrix surround processor.

2) Award-Winning DVD-A Player: Audio & Video Improvements

Alastair Roxburgh (L) and Garry Lambert (R) of Alpha
Digital Technologies, Ashland, OR, receive
the Stereophile Guide to Home Theater
2003 Editors' Choice award from Editor Thomas J. Norton:
Platinum Award DVD Player, for EAD DVDMaster 8000Pro.


Alpha Digital won the coveted Stereophile Guide to Home Theater (now Home Theater) 2003 Editors' Choice Award: Platinum Award DVD Player, for the EAD DVDMaster 8000Pro, the first DVD-Audio player with full 5.1-channel bass management. Capable of true audiophile quality performance with 24/192 stereo, and multi-channel 5.1 or 6.0 24/96 recordings, the player was also equipped with Silicon Image 480p video processing with RGBHV (VGA) or Y Pr Pb component video outputs.

All player functions including the integrated "MultiBass" bass management circuitry, and the high-quality analog volume control, can be easily controlled using the provided IR remote control, or RS-232 commands. It may be connected directly to a multi-channel power amplifier (sans preamplifier) for "minimalist" listening. All incoming IR is sensed by the original Panasonic IR receiver, but from there is rerouted to the EAD add-in board. There it is decoded and merged with any incoming RS232 commands. Those commands corresponding to the DVD-Audio players original IR command set go to an IR re-encoder on the EAD board, and from there are output just downstream from the original Panasonic IR sensing circuit, for final decoding by the player. EAD commands (such as volume up/down and surround mode, or requests for status to be output on the RS232) are processed immediately, with no retransmission. The Panasonic remote control conveniently had extra keys for volume up/down, etc., with the only (minor) hurdle being the use of a different type of IR code format for these additional functions. The EAD add-in board determined on-the-fly which IR code set it was receiving by examining the respective frame headers.  The additional delay due to the additional layer of IR decode and re-encode was not noticeable.

MultiBass bass management operating modes:

  1. Dolby Digital (uses Dolby's own digital bass management).
  2. PCM 2.0 (2-ch. stereo) mode (LFE gain = 0.496; 0.496 x 2 channels summed = 0.991 ≈ 1); 2nd-order 100 Hz LPF for the subwoofer output.
  3. DTS/DVD-Audio 5.1-channel mode: LFE gain same as other channels (total subwoofer gain = 0.176 x 6 = 1.06, ≈ 0 dB); 2nd-order 100 Hz LPF for the subwoofer output.
  4. DVD-A 6.0 flat mode, in which all channels pass full-range signals, at equal gain (gain = 1 ≈ 0 dB). This mode is suited to full-range speakers, and can be used with either standard DVD-Audio releases or with Chesky Records' unconventional 6.0-channel speaker layout (L/R front, L/R sides, L/R rear—no center or subwoofer).

Level trims are provided for all bass-management modes, but channel-delay adjustments are available only for Dolby Digital.
In all non-Dolby Digital modes, the bass management circuitry ideally requires a natural 100 Hz bass rolloff in the 2 or 5 main channels. In high-end systems that have 5 full-range speakers plus a subwoofer, DTS 5.1 should be played back in the 6.0 flat mode. The current bass management mode and volume up/down activity are indicated on the front panel display. All audio is delivered to the user via eight XLR balanced audio line-level outputs on the rear panel, L, C, R, LS, RS, SUB1, SUB2, and an extra surround (ES) output compatible with Dolby Surround EX- and DTS ES (matrix)-compatible signals  (see picture of rear panel, below).


3) High Fidelity Wideband IR Repeater System

United States Patent Application Publication US 2010/0258729 A1, filed April 13, 2009, published Oct 14, 2010.
Inventors: Alastair Roxburgh, Richard Lenser, Bill Cawlfield.
[View the published patent application]

"An infrared sensor includes a photodiode receiving an infrared signal. A first amplifier is connected to the photodiode. A second amplifier is connected to the first amplifier. A DC servo is connected in a feedback loop between the output of the second amplifier and the positive side of the first amplifier. An analog-to-digital signal converter (data slicer) is connected to the second amplifier. An output driver is connected to the analog-to-digital signal converter. The infrared sensor may receive and retransmit an infrared signal and may be incorporated in an infrared repeater system."

In an effort to inject new life into infrared (IR) remote control signaling, a variety of new higher data rate codes have been developed by Philips, UEI, and others. These codes use the same 38 kHz carrier frequency as has become standard for conventional IR codes, yet operate at 2x or 4x the data rate within shorter frame times. For this reason they are called high-density codes. Unfortunately, these new IR codes break the majority of conventional IR repeaters, which have been found to decode unreliably over very limited distance ranges, or not at all.

The significance of this new IR repeater methodology is that it is one of the first to work reliably with the new high-density IR codes. Conventional IR repeaters are are designed for 30 or 40 modulation cycles per code pulse, whereas the new codes use only six cycles per code pulse. Such a short pulse is at the mercy of amplifier overshoot, ringing, and attendant recovery time, whereas a long pulse is not. The eureka moment was my realization that by using a reduced the number of capacitors in the signal path, there is a lower "Q" and consequently less overshoot, ringing, and waveform amplitude and phase distortion, all of which need to be minimized to accurately repeat the new high-density IR codes. Examples of the new codes are RC-MM and XMP, which respectively use 4-ary and 8-ary symbol coding, rather than the conventional binary (2-ary) format. The corresponding code symbols are respectively 2 and 3 bits long, rather than the 1 bit used in conventional 2-ary or binary signaling. However, due to the much lower number of carrier cycles per pulse, and the method of encoding the extra symbol bits is in the precise timing of these pulses (four different timings per symbol for 4-ary, and eight for 8-ary), signal fidelity becomes much more important to avoid intersymbol interference. Compared to conventional binary signaling, the timing precision needs to be maintained 4x better for RC-MM, and 8x better for XMP. It is difficult to maintain this degree of accuracy in high-gain amplifier circuits that have too much low frequency roll-off in the wrong places in the sensor circuit, even while maintaining a high frequency roll-off that is adequate for the highest modulation frequencies, but which may roll off too steeply. A low-Q circuit helps in these respects. Some degree of low frequency roll-off is desirable to help eliminate the 120 Hz power line modulation of incandescent lighting, but this is best added after the DC-coupled high-gain input stage. The amplifier 'Q' is also minimized by using high-gain amplifiers with a higher-than-usual gain bandwidth product. 

The problem with conventional IR repeaters occurs as follows: When attempting to repeat a high-density IR code there is a troublesome artifact caused by baseline shift which occurs when the in-directional IR signal charges all of the sensor's AC coupling capacitors. This pulse, which is affectionately known as a "pigtail pulse," occurs typically within a frame time of the trailing edge of the high-density IR frame, adding an extra pulse to the repeated IR frame, causing a bad decode. It is typically more prevalent at short range, when the signal is stronger, than at greater distances. The pigtail pulse does not affect conventional IR codes because the code pulses are encoded in a modulation envelope that is 8- to 10-times longer. As a result, the pigtail occurs often within the initial start pulse envelope, and is effectively masked, and does not result in a bad decode. The new design solves the problem by reducing the amplitude of baseline shift-induced overshoot and ringing in the amplifier stages so that the amplified raw IR signal remains below the data slicer threshold, thereby preventing the unwanted "pigtail" output pulse. A number of complementary techniques further enhance the behavior or the circuit. The DC servo, for example, that allows the high-gain input stage to be DC coupled, also serves to reduce or eliminate the effects of indirect and direct sunlight on the sensor. A very specialized tailored-response automatic gain control loop, which goes by the name of Universal Noise Suppressor circuit, also improves the performance of the IR sensor. 

A new Niles IR sensor based on this technology, the MS220, was named a Finalist for the 2010 CEA Mark of Excellence Award, Installation Product of the Year, cited as the first sensor in the industry to utilize high fidelity wideband amplification to ensure compatibility with virtually all current and emerging IR code formats, including the new Philips RC-MM code structure.

4) Measuring speaker polarity using a setup microphone

A unique feature of the 2nd-generation (Encore/Ovation/Signature or EOS) TheaterMaster is the use of a small electret microphone placed at the principal listening position, to automate the setup of speaker levels (gain) and distance (time alignment), together with automated measurement of polarity (absolute phase).

For the levels measurement, the microphone captures band-limited pink noise and by using a simple servo mechanism adjusts it to the regulation set point of 80 dB SPL.

For the distance measurement, the microphone captures the time-of-arrival of "sonar" pulses, from which it adjusts buffer pointer offsets to arrange for coincident time-of-arrival of sound from the main channels. The microcontroller triggers the DSP to output a sine2 pulse on all channels (directed to a particular speaker by manipulating the volume controls), and starts a hardware timer. The microcontroller then polls the microphone ADC, looking for the peak of the pulse. Assuming that the speaker under test has correct polarity, when the peak is detected, as indicated by the next ADC sample being smaller than the previous one, the timer is stopped, and its value read.  Suitably scaled, this value gives the time in ms, and the distance in m. Distance accuracy is typically two ADC sample times. Sampling at 7.8 kS/s, which gives a time accuracy of 0.256 ms. Assuming 344 m/s for the speed of sound, this translates to 0.1 m, or 3.5 inches. Distances greater than 20 m are flagged as 20 m.

Speaker polarity checking, which informs the user of any speakers that are out of phase with the others, or any that have inverted polarity, is a straightforward extension of the distance measurement procedure. Best reliability for the delay and polarity measurements is achieved if the sonar pulses are spectrally-tailored to avoid driving the tweeter transducer and associated cross-over filter, and focus on the midrange. A suitable choice of  waveform is a sine2 pulse (for example, consisting of 50 samples output at 48 kS/s, which gives a frequency response that decreases monotonically to its first zero at 0.96 kHz). This smooth waveform is more consistently reproduced by most speakers than (theoretically superior) alternatives such as a truncated or tapered sinc function. At any rate, the main lobe of the sine2 pulse's frequency spectrum is sufficiently flat for the purpose at hand, and rolls-off fast enough to avoid significant drive to the tweeter, as shown in the following figure:

Sine2 pulse

The 2 ms sine2 pulse (left) has Fourier transform (right), plotted here as log magnitude, comprising a main lobe with an asymptotic roll-off of -18 dB/octave. The main lobe width is 1 kHz. The side-lobe roll-off is -48 dB (0.4%) by 2.2 kHz, and about -100 dB (0.001%) by 20 kHz.

The polarity measurement idea came about one day while I was working on an improvement to the speaker distance algorithm, when I happened to notice that the measured time-of-arrival was wrong if the speaker polarity was inverted. The aha! moment occurred when I realized I only needed to invert the sonar pulse to get the correct distance on an in correctly phased speaker. Investigating, we found that by using an appropriate threshold, say S, to reject a smaller opposite polarity, speaker-dependent, precursor in the microphone signal, we could get a sensible, repeatable distance from a speaker that has correct polarity but not so easily from a speaker that is reversed (an inverted polarity speaker inverts the polarity of the precursor, and were it not for the threshold detector, the precursor pulse could get accepted and yield a consistent distance).

Two polarities of sine2 pulse are used
to determine speaker polarity.

In the event that both polarities still succeed (e.g., if the precursor is very large for a particular speaker model, exceeding S), it is clear that the correct distance is the later one. Hence, by keying the DSP chip to transmit several normal sine2 pulses, about 1 second apart, until a consistent delay is measured (or not), and then about 1 s later several inverted pulses similarly, we can infer the speaker polarity from whether a sensible, repeatable distance was obtained from the first (positive) group of pulses, or the second (inverted) group, and if both are sensible and consistent, we take the larger delay, because that will generally be due to the main sine2 response, which always follows the precursor response. If the larger delay is from the inverted sine2 pulses, the the speaker is flagged as having inverted polarity. At the completion of the distance/polarity measurement procedure, the EOS TheaterMaster displayed a pictorial representation of the speaker array, in which correct polarity is flagged with a "+" and inverted speakers with a "-". The user then need only invert the wiring to any "-" speakers, and repeat the test as a double-check.

Speaker polarity relates to absolute phase, where audiophiles (and the Dolby specifications) specify that a positive impulse signal on a recording should create an increase in sound pressure when it is acoustically reproduced. For stereo reproduction, it is very important that all speakers in a discrete surround sound system have the same phase. However, for greatest audio realism, the ideal of positive absolute phase should also be adhered to.

A problem for THX dipole speakers is that there is no direct sound, which means that the first sound hear by the setup microphone has arrived later due to reflection from a room boundary (or not arrived at all, as in an open-air situation). Rotate 90 degrees, run  test, then rotate back. A corollary of this problem is that THX dipole surrounds cannot reproduce "holosonic" sound fields. (Holosonic is a word coined by Gary Reber of Widescreen Review magazine, in analogy to optical holography).

5) CinEQ - Cinema EQ filter for taming over-bright film soundtracks

CinEQ cinema equalization curve based on Jim Fosgate's HF shelf filter. Realized as a 2o-order IIR digital filter, the CinEQ filter deviates less than 1 dB from the measured amplitude response of the higher-order THX ReEQ filter. Unlike THX's Re-EQ filter, this filter does not care about phase. Also unlike THX's Re-EQ filter, CinEQ was applied to all full-range channels, a necessary requirement for full multi-channel "holosonic" reproduction. (Holosonic is a word coined by Gary Reber of Widescreen Review magazine, in analogy to optical holography). Considering that THX's ReEQ filter was developed in the context of matrixed Dolby Surround, in which the surround channel is already rolled off, and that most 5.1-channel material is full-range in all five channels, ReEQ is generally inappropriate for 5.1 music, especially if recorded from the musician's perspective (music all around you), and is far less than optimum for 5.1-channel movies sound tracks. It is a minor mystery why the THX company did not extend ReEQ to all five main channels for 5.1-channel material.  



6) AccuLinear - the promise of zero T.I.M. amplifiers

Under construction.

7) Positive feedback anti-aliasing filter bootstraps amplifier input impedance

Under construction.


8) A graphics driver for 2-line LCD/VFD Displays

The EAD Encore/Ovation/Signature (EOS) TheaterMasters use a graphics driver intended to wring as much performance as possible out of 2-line x 20-character LCD displays that use a Hitachi HD44780 or compatible driver chips (the HD44780 supports various display sizes up to 20 chars x 4 rows in an 80-Byte DDRAM, 240 fixed chars in a 9290-bit CGROM, 8 custom chars in a 64-Byte CGRAM, and R/S, R/W, E clock, 8 data). Despite the limited resource of only 8 custom characters, due to careful design of the GUI screens, the EOS TheaterMasters are able to display a remarkable variety of screens, including many eye-catching graphical elements, multi-channel graphical VU meters, and big-sized graphical volume numbers, as the photographs and diagrams in this section of the website attest (also see the next section on GUI design).

My display experiments suggested how to automate loading of custom character bit maps into the Hitachi custom graphics random access memory (CGRAM), overwriting the custom character identifier (e.g., 'T' for capital T) and font attribute (e.g., 'B' for chalkboard style bold ) with a 3-bit (0-7) pointer to the appropriate part of the CGRAM bit map:

As an example, consider that the LCD screen is displaying the following string at position 0 on the LCD screen: '^^^TheaterMaster^^^^'. This consists of 13 bold custom characters, and 7 spaces denoted by '^'. Out of the 13 custom characters, exactly eight are unique, consisting of TB, hB, eB, aB, tB, rB, MB, sB, where the 'B' attribute denotes the bold font.

These custom characters are stored in the host processor and the LCD CGRAM, as follows:

T, h, e, a, t, r, M, s. (An 8-element pointer array to the bold custom char bitmaps)
1, 1, 3, 2, 2, 2, 1, 1. (an 8-element byte array containing the # of occurrences)
  array index: 0, 1, 2, 3, 4, 5, 6, 7.

screen_image (hex):
Actual appearance:               T   h   e   a   t   e   r   M   a   s   t   e   r

Let's imagine that we then want to overwrite "Master" with bold "EQ^^^^", i.e. at screen position 10.

Step 1: Detect all occurrences of custom characters in the section of the screen to be overwritten, and decrement relevant entries in the 8-element occurrences table. This leaves the above two 8-element arrays as follows (the changes are high-lighted in red):
T, h, e, a, t, r, M, s.
 1, 1, 2, 1, 1, 1, 0, 0.
array index:   0, 1, 2, 3, 4, 5, 6, 7.

Step 2: Determine if each custom characters in the new string is already in use. If not, do nothing to CGRAM. If so, locate the bitmap and update the CC_table arrays. For bold 'E' the bit map looks like this:

                 dc.b 'E'
                 dc.b %
11111    \
                 dc.b %
11000     \
                 dc.b %
11000      \
                 dc.b %
11110       +---- This bitmap is loaded to CGRAM location 6.
                 dc.b %
11000      /
                 dc.b %
11000     /
                 dc.b %
11111    /
                 dc.b %00000

At the end of this process, the CC_table arrays look like this (changes high-lighted in red):
T, h, e, a, t, r, E, Q.
 1, 1, 2, 1, 1, 1, 1, 1.
array index:   0, 1, 2, 3, 4, 5, 6, 7.

And the screen image looks like this (changes high-lighted in red):
screen_image (hex): $00,$20,$20,$00,$01,$02,$03,$04,$02,$05,$20,$06,$07,$20,$20,$20,$20,$20,$20,$20.
Actual appearance:               T   h   e   a   t   e   r       E   Q

Thus you can see how the CC_table_num array and decrementing mechanism, in effect, maintains a list of "free" CGRAM characters; whenever a section of the display is to be overwritten, any custom characters found there causes the relevant element of this table to be decremented. Any element that is zero, represents a free CGRAM code, and whenever that code is used for a new custom character, that zero element is incremented for each use of that custom character. Remarkably, the most dynamic and complex-seeming display, the 6-channel VU meter, requires exactly all eight custom characters, re-used for each audio channel. Since the VU meter uses 16 different custom characters, although for six channels, only six at a time (and in the next generation of TheaterMaster, 8 channels, 8 at a time), the CGRAM and CC_table update process occurs frequently, on average about (6/16)*10 Hz = 3.75 Hz for six channels, and (8/16)*10 Hz = 5 Hz for 8 channels, given a typical 10 Hz update rate for the VU meter. Due to the high efficiency of the program code, the 2 MHz 68HC11 host processor can keep up with these rates with no apparent impact on other housekeeping functions.

Experiments completed, I wrote up a spec. and gave it to Sunil Rawal, who had volunteered to write the final driver code (and did so over one weekend). Sunil's speed can be attributed as much to his skill as a programmer, as to my insistence that he use stack frames for all local variable storage. This latter technique is valuable for processors having only a handful of registers, because it can effectively multiply the number of registers many times over, and furthermore give each one a meaningful name, which appears right in the code as an index offset into the stack frame (e.g., cpd CC_id,x points to the third word in the SCREENS local variable stack frame, see below), helping eliminate coding errors. Stack frames for local variable storage are particularly efficient in the Motorola 68HC11 processor used in the EOS TheaterMasters, because the instruction set was expressly designed to facilitate this approach. The following code fragment, which has six local variables accessed this way (high-lighted in red) will help make it clear how this  works:

;********* LCD Driver *********
screen_image:  ds.b  40
CC_table_char: ds.b  16  ;Set of 8 custom char pointers to the font bitmaps.
CC_table_num:  ds.b   8  ;Number of occurrences of up to 8 custom characters on the LCD screen.

                 . . .

;* Summary of main driver subroutines:
;*     screen_position   A = position on screen (0-39).
;*     Section_clear     Clears screen section. A = start (0-39), B = end (0-39), A < B.
;*     LCD_config        Configures the LCD mode.
;*     LCD_init          Initializes display manager and clears screen. (called by screen_out)
;*     LCD_init0         Initializes display manager only.
;*     start_blinking    Uses blink positions in 'blink_posns'
;*     SCREENS           Write formatted string to screen. A = position (0-39), Y = pointer to string.
;*     screen_out        Write formatted 40-character string to screen. Y = pointer to string.
;* Error flags shown on LCD screen:
;* * --- CGRAM overload (more than 8 custom characters; additional custom chars are displayed as '*')
;* # --- Custom character not found in specified font (char is displayed as '#')
;* @ --- Font not found in font tables (char is displayed as '@')

                 . . .

SCREENS:    ;Called with parameters: A = display position (0-39), Y = pointer to formatted string.

;* Stack frame offsets for local variables allocated on the stack:
chars_ptr:       equ  0   ;Pointer to screen-data string
attrb_ptr:       equ  2   ;Pointer to font/attribute line
CC_id:           equ  4   ;Custom Char identifier (2 bytes, e.g., 'gL')
font_beg:        equ  6   ;Font beginning pointer
font_end:        equ  8   ;Font end pointer

len:             equ 10   ;String length (up to the '|' marker)
len2:            equ 11   ;String length copy
CC_space:        equ 12   ;Character number (0-7)
CGRAM:           equ 13   ;CGRAM character pointer (0-7)
curr_posn:       equ 14   ;Current position on screen
end_posn:        equ 15   ;String end position on screen
start_posn:      equ 16   ;String start position on screen

                 pshx     ;Save register base pointer.
                 pshy     ;Save pointer to string (parameter passed in Y)
                 psha     ;Save screen start position (parameter passed in A)
                 subd #17 ;Reserve 17 bytes on stack for 12 local variables.
                 txs      ;X now points to local variables stack frame.

chars_ptr,x ;Store screen data pointer

;* Determine length of string to be output and set positions:

start_posn,x ;Get screen start position.
curr_posn,x ;Initialize current position
end_posn,x ; and end position

                 . . .
                 addd #17 ;Restore stack

                 puly     ;Restore string pointer.
                 pulx     ;Restore register base pointer.

Formatted strings to be written to the LCD using this driver use the following general format, in which the plain ASCII character codes are optionally augmented by a "font" code. For example, to write Dolby Corporation's trademark "Double Dee" followed by "Digital" with an improved lower case "g", requires three custom characters, two for the Dolby "Dee", and one to give "g" a true descender:

DD_blurb:        dc.b ')(^Digital|'
                 dc.b 'SS^^^L^^^^'

                 . . .
                 ldaa #4           ;Parameter 1 = screen position (0-39).
                 ldy  #DD_DD_blurb ;Parameter 2 = display string pointer.
                 jsr  SCREENS      ;Write a short string to the screen at position 4.

where '^' indicates a space, and is used here purely for clarity. Spaces on the second line indicate the standard character set resident in the LCD’s CGROM, and the other characters indicate which custom character sets are to be used. In this example, ‘S’ indicates Symbol font, and ‘L’ indicates an improved lowercase descender font. The display string must end with a '|' marker. The driver gives control over the starting position, which we chose to be 4 in this example. Control of the starting position allows the convenient definition of short strings that often must be written to a particular position on the screen (see second example, below), or constructed on the fly, as in the case of the multi-channel VU meter. Note that the ‘)’ and ‘(‘ display characters in the Symbol font are used to denote the two halves of the Dolby double-D symbol, named Ldee and Rdee (see custom font data example, below). This would be rendered on the screen, as follows:

This screen template would typically be over-written with an array of six characters that represented the audio channel configuration (a "daisy" shape that uses four unique custom characters, showing 5.1 channels in this example), together with other information which would normally be displayed, such as the source selection and the volume level. The following string definition and call to the display driver subroutine shows how the Dolby Digital screen shown above may be modified on the fly. Behind the scenes, the display string is loaded into a display buffer; the three custom characters are loaded into unused locations in the LCD display's CGRAM; the custom character ASCII codes in the display buffer are overwritten with CGRAM address values in the range 0 to 7; and finally the display buffer is written to the DRAM in the LCD display device. In this simple example we assume that the display was initially cleared, so that there is no need to determine which of the eight custom characters must be preserved because they are still in use). The code for the other screen items is similar.

                 dc.b '232|'       ;3/2/.1 daisy (5.1 channels)
                 dc.b 'CCC'
                 dc.b '1e1|'
                 dc.b 'CCC'

                 . . .
                 ldy  #LCD_init    ;Clear screen.
                 ldaa #4           ;Parameter 1 = screen position (0-39).
                 ldy  #DD_blurb    ;Parameter 2 = display string pointer.
                 jsr  SCREENS      ;Write to the screen.

                 . . .
                 ldaa #0           ;Parameter 1 = screen position (0-39).
                 ldy  #daisies     ;Parameter 2 = display string pointer for upper half of daisy.
                 jsr  SCREENS      ;Write to the screen.
                 ldaa #20          ;Parameter 1 = screen position (0-39).
                 ldy  #daisies     ;Parameter 2 = display string pointer for lower half of daisy.
                 jsr  SCREENS      ;Write to the screen.

                 . . .             ;Write other formatted items to the screen.

The final screen is shown below. The total number of unique custom characters is seven, leaving one unused:

In a few cases, eight custom characters was short of requirements. For instance, while "Encore" (6 unique chars) and "Ovation" (7 unique chars) can be rendered in an attractive "chalkboard" bold (uses a double vertical column of pixels on the LHS), "Signature" cannot, since it has 9 unique chars. On the other hand, "TheaterMaster", which is much longer, can be rendered in bold using all eight (TheatrMs). Another example is the CinEQ flag, which would have required one custom char. However, since sometimes there are sometimes eight already in use, it was rendered as "EQ" using standard characters. A few tricks were necessary, such as using standard lowercase (cosuvwxz) to fill out a custom small caps font.  The custom character storage format was as follows:

XDEF font_pointers, fonts_end

;Pointers to custom character sets:
                 . . .
                 dc.b 'L'
                 dc.w Lowercase
                 dc.w End_Lowercase

                 dc.b 'S'
                 dc.w Symbol
                 dc.w End_Symbol

                 dc.b 'C'
                 dc.w Channel
                 dc.w End_Channel
                 . . .

;Custom font data:
Ldee:            dc.b ')'
                 dc.b %
  dc.b %10011
  dc.b %10001
  dc.b %10001
  dc.b %10001
  dc.b %10011
  dc.b %11111
  dc.b %00000

Rdee:            dc.b
  dc.b %11001
  dc.b %10001
                 . . .
                 . . .
  dc.b '3'
  dc.b %11111
  dc.b %11111
  dc.b %11111
  dc.b %01110
  dc.b %00000
  dc.b %11111

                 dc.b 'e'
                 dc.b %
                 dc.b %01110
                 dc.b %00000
                 dc.b %01110
                 dc.b %10001
                 dc.b %10001
                 dc.b %10001
                 dc.b %01110

                 . . .


Note: Some VFD displays (e.g., Noritake), unlike the majority of LCD displays, do not allow custom chars to use the last pixel row, which requires modification of some characters, for example, descender characters squashed by one pixel row (to avoid going above row three or below row seven).

A wide variety of custom character sets were required for the EOS TheaterMasters, named as follows:
Lowercase, Logos, Symbol, Channel, Small_Caps, Bold,  Reverse, Sml_Rev, Bar_Graph, Frequency, Big_Nums0,1,2,3,4,5,6,7,8,9, IR_Learn, HDCD_font, Invader_out, Invader_in, Laser, UFO (these latter three were part of a display test).

The Big_Nums fonts were used for a large-sized dB volume pop-up, easily readable at a distance. To make it easy to construct Big_Nums display screens, ten different fonts are used, one per numeral, each containing four custom character bitmaps, written as 'A' (upper LH), 'B' (upper RH), 'C' (lower LH) and 'D' (lower RH). Due to the limit of eight custom characters on screen at a time, the volume readout was limited to two big digits (requiring all eight CGRAM bit maps), plus a normal sized digit for the decimal fraction, the minus sign, the decimal point, and the "dB", e.g., -23.2 dB.

The Bar_Graph character set (see below), at 6 dB per step, together with the help of a DSP peak-detector routine, shows the peak value of channel signals from 0 dB (full scale) to -90 dB. Two small details: The gap between the LCD character rows counts as 6 dB, and the bars are split down the center so that they may be paired without any visual impairment due to the inter-character gaps. Only eight custom characters are required to show activity on multiple channels, e.g., LS, LF, C, RF, RS, and SW, or LF, and RF. 

9) GUI Design for a Home Theater Controller (As used in the E/O/S TheaterMasters)

Under construction.


10) A pattern-matching heuristics-based “Spectral Edge Frequency” detector for the human EEG

I was the developer of a pattern-matching heuristics-based “Spectral Edge Frequency” EEG analysis strip chart output for the BMC, a pioneering Intel 8080A-based embedded clinical EEG analysis computer, useful in the detection of ischemic events during carotid endarterectomy.

Under construction.



11) Audio Jitter Reduction: "Digital Flywheel"

Under construction.