# Crazy Wide Soundstage



## Patrick Bateman (Sep 11, 2006)

_Gary Summers clued me into some new processing that Cadillac is doing here.*
My guess was that they were doing ambio, and all the ambio experts are over at diyaudio. I posted a thread there and it went over like a lead balloon**, so I decided to bring it back here.

This is way too good to ignore, trust me, you can get a sound stage that's in the top 10% with very little effort or expense.


* http://www.diymobileaudio.com/forum...audio-discussion/174748-future-car-audio.html

** New Frontiers in Crosstalk Cancellation with MiniDSP - diyAudio

Here's the first post from the diyaudio thread : 

_

I really enjoy the sound of ambiophonics. If you use a spreadsheet to calculate your delays, and you're listening to a good recording, a miniambio can make the room seem to disappear.

There's a new array available in the new Cadillac, and while they haven't revealed how it works, I believe it's a variation on ambio.

If anyone wants to give this a try, here's my hypothesis on what they are doing, and why you might want to tinker with it.

_If you are already familiar with crosstalk cancellation, skip the next two paragraphs._









The way that crosstalk cancellation works is that a signal is played that's out of phase with the opposite channel. The reason that we do this is that some sound from the left channel reaches your right ear, and vice versa. *Crosstalk cancellation uses an inverted signal to cancel that out.*

Subjectively, the soundstage gets wider. When everything is working REALLY well, it's almost like you're transported to where the original recording was made. Crosstalk cancellation is very very VERY room dependent, and this is the reason that a lot of speakers that do it are very directional. (Both Polk and the Ambiophonics institute used vertical arrays; Choueri(sp?) uses Gedlee speakers with waveguides.










In the Polk SDAs, *the crosstalk cancellation happened at the source of the sound.* In other words, the cancellations speakers are in the same enclosure as the "main" speakers. There is a speaker in the loudspeaker cabinet that plays the left signal, and there's a speaker in the cabinet that plays the right signal (but inverted.) And vice versa.

I think that the Cadillac is doing the same thing, but they've moved the cancellation speakers to where the listeners are. The reason that this is practical in 2015 is because amps and DSP are cheap. In order to do what they're doing in the Cadillac, you must take the signal and delay it.









I think that we could do the same thing at home. Yes, it would quite odd to have a headrest on your listening chair, but I think it would work.

With mini DSP, it is easy to do:

1) You have four channels of sound
2) The left and the right channel are plain ol' stereo
3) There is a second set of outputs. One channel is the left, but inverted. The second is the right, but inverted.
4) Because the speakers by your head are closer than the speakers far away, *you have to delay the speakers that are far away.* For instance, if the speakers on the far side of the room are two meters away, then you would delay them by 5.92 milliseconds.

Any questions?


----------



## cajunner (Apr 13, 2007)

you would dedicate a miniDSP just to produce the nearfield ambio, in a 2 channel system? I guess I could dig it, and you could use another miniDSP to do the front 3-ways, or you could just get a 2X8 and do it that way?


----------



## Patrick Bateman (Sep 11, 2006)

cajunner said:


> you would dedicate a miniDSP just to produce the nearfield ambio, in a 2 channel system? I guess I could dig it, and you could use another miniDSP to do the front 3-ways, or you could just get a 2X8 and do it that way?


Right now I'm throwing together some diagrams, stay tuned...


----------



## Patrick Bateman (Sep 11, 2006)

Most of the information that describes how to do this is in the first post.

Here's some more detail.









First off, here's how we do the digital delay in a conventional car stereo these days. Basically the right channel has no delay, *and we delay the left channel so that the two channels arrive simultaneously.* (Because the left channel is closer, it gets delayed.

If there's any questions on that, LMK.
Note that the measurements in the pic above are two dimensional; in the real world the pathlengths would be longer because the speakers aren't at ear level. In my car the pathlengths are nearly two meters to the far speaker.


----------



## Patrick Bateman (Sep 11, 2006)

Here's what the delays look like in a setup like this.

The left channel is delayed 1 millisecond.
The right channel isn't delayed.
The left headrest speaker is delayed 3.381ms.
The right headrest speaker is delayed 3.381ms.

Here's how we do the math:
First, our right speaker is zero. That's because it's furthest away; we're delaying everything else to make it line up. *We want every single speaker to arrive simultaneously.*

Our left speaker is delayed 1ms. That's because it's .35 meters closer than our right. (Again, the right speaker is "zero".) Sound travels 2.94 meters in one second. So .35 of a meter gives us 0.9996 ms. (.35 of a meter * 2.94 meters in one sec)

We do the exact same math with the headrest speakers:
The headrest speakers are 0.2 meter away. Our right speaker is 1.35m away. So we have to delay the headrest speakers so that they're in sync with the right speaker:
(1.35m - 0.2m) =
(1.15m * 2.94ms)
[/b]= 3.81ms[/b]

There's a couple more things to do:

The right headrest speaker is there to null out the LEFT. So the right headrest speaker isn't getting the left channel, it's getting the right channel, and it's inverted. And vice versa.


----------



## Patrick Bateman (Sep 11, 2006)

I'm heading off to go to a show shortly, but here's a couple more things to think about :

I was able to get really good results just using a tape measure. When I set it up, it sounded so good it was just plain infuriating. *I really hate it when something as basic as this works that well.* I'm a fan of complex solutions, and this isn't complex at all, this is dead-simple and it works.

I showed it to the kids, and both of them noticed the difference IMMEDIATELY. Our 14 year old listened for ten seconds and immediately stated "can you do this in the living room?" (That's where my home theater is.)

To get that last ten percent, you need to get out a microphone and line up the impulse responses with a mic instead of a tape measure.

I did that too. I'll post some measurements later.


----------



## schmiddr2 (Aug 10, 2009)

That's interesting. One question: I assume the headrest speakers would be best if they did not have reflections, is this accomplished using attenuation or by using special drivers?


----------



## Patrick Bateman (Sep 11, 2006)

schmiddr2 said:


> That's interesting. One question: I assume the headrest speakers would be best if they did not have reflections, is this accomplished using attenuation or by using special drivers?


I failed to mention it in the last post, but the only frequencies we really care about for this application are about two octaves:

250hz - 1000hz.

I'm not saying the other octaves are *completely* unimportant here. But for the most part, they are.

Here's why:

Above 1khz, our soundstage cues are based on amplitude. Basically, *if you match the frequency response of the left tweeter and the right tweeter* you're going to get an accurate soundstage.

Below 1khz, our soundstage cues are mostly based on phase. That means that *there are five octaves where phase dictates soundstage cues.*

Here's the thing though -
below 250hz, the sound waves are so long, they start to dwarf the cabin itself. For instance, 250hz is 1.36 meters long, or about the width of the car.

Put all of these things together, and you see that 250hz-1khz is where you get the most 'bang for your buck' with crosstalk cancellation. Below 250hz, the waves are so long, they're getting to be bigger than the car. And above 1khz, they're too short. (That's why we use amplitude cues above 1khz.)



What it all boils down to is that you have these two octaves that are critical. 250hz is 1.36meters long, and 1khz is .34 meters long.

As far as reflection and diffraction goes, a sou(ndwave just "wraps" around an object when it's larger. 

TLDR: you don't have to worry too much about reflections and diffraction around the headrest; the waves are so long they (mostly) just wrap around. 1khz is 0.34 meters long.



Naturally, the devil is in the details. For instance, 1khz is .34 meters long. But when we're doing crosstalk cancellation, even 90 degrees of phase shift can destroy the effect. Due to that, if you're going to do this, you'll probably want to think long and hard about doing the adjustments for a single point in the car. If you move your head even 8.5cm (3.34") the image might snap out of 'focus', due to the nature of the processing.




Wow, that was a really long post.
In summary, I wouldn't get too worried about reflection or diffraction off the headrest. But the effect WILL be really sensitive to your location in the car. If you move even 3" it makes a difference. You can get good results with a tape measure and DSP, but doing it with a mic is ideal.


----------



## gstokes (Apr 20, 2014)

Patrick Bateman said:


> I think that the Cadillac is doing the same thing, but they've moved the cancellation speakers to where the listeners are. The reason that this is practical in 2015 is because amps and DSP are cheap. In order to do what they're doing in the Cadillac, you must take the signal and delay it.


On the Bose webpage about the new Cadillac they indicate that they are playing engine noise 180 degrees out of phase through the audio speakers, the exact same technology as noise cancelling headphones, a microphone picks up engine noise inside the car, a DSP inverts the signal and plays it back 180 degrees out of phase with the original signal and they cancel each other out..
I suspect the small speakers in the headrests are the ones responsible for the audio feedback, engine noise goes in one ear and the 180 degree out of phase signal goes in the other ear and all you hear is silence, no engine or road noises..


----------



## plushterry (Jan 22, 2015)

Thanks Patrick. This is great reading.


----------



## Wesayso (Jul 20, 2010)

Patrick Bateman said:


> The right headrest speaker is there to null out the LEFT. So the right headrest speaker isn't getting the left channel, it's getting the right channel, and it's inverted. And vice versa.


Wouldn't the right headrest get an inverted left channel signal to drown out the left speaker crosstalk :surprised:?


----------



## cajunner (Apr 13, 2007)

due to the speed of processing having caught up to the demands of "sound quality" with the latest processors and the circuits that control feedback/cancellation having been optimized by the headphone builders for several years now, it's natural for a progression to include a derivation, where headphone-like sound is introduced via nearfield DSP using small speakers at the headrest.

What caught us off-guard I believe, is that simple "see it, believe it" aspect of having so many sound sources within the vehicle and yet still able to introduce great sound at each listening position.

DSP now makes it possible to do basically whatever we want to manipulate the stereo field within the monocoque shell that stereo should provide to include multiple listening positions within that shell.

So we may be witnessing hard to replicate technology using aftermarket goods at our disposal, in these acoustic feedback, cancellation and ambiophonic recreation, we may have to man up and dig a box out of the pull-a-part and reverse engineer the old-fashioned way, just using what's available, haha..

but I have to be encouraged at the technological marvel that we thought was the domain of the most spirited competitors at aftermarket sound off competitions, now being in the design suites of our domestic automakers.

To accomplish the "SDA at the speakers" I believe someone was producing a car with steering using a multi-driver approach, that bridged the gap between the 62 speaker Audi and the MS-8's center channel, with perhaps 9 drivers across the front dash and the electronics to splay the sound field accordingly...

but this approach by Cadillac/Bose, seems the more elegant because at lower volume levels as when multiple people are in the car, the sense of space is no longer tied to produce best results at the driver's seat and each occupant has it's own "capsule" of listening environment, courtesy of multiple digital domain manipulations.

and that's the key, isn't it?


digital domain manipulations means that all the associated negatives with circuits that are at best, fifties technology, become moot and you don't see the artifacts and the humongous sizing of all pass networks and their limitations. You just have a digital palette and all colors are bright, all shading is perfect as long as what you do, makes sense.

So, as I finish a contemplative post on the state of the art, (which I presume the Bose system qualifies, as a kludge of technologies made possible through the advancement of digital domain manipulation not available 10 years ago) I feel like the more I know, the less I want to be left behind if indeed these technologies do the work.

Something I would expect, is that the volume dependent nature of acoustic noise coming through the cabin, means that at a standstill with the engine off, these drivers in the headrests are doing all ambio work, and not necessary for cancellation, and this would bring about a breach in purist circles since like the Bose patented dynamic equalization, it requires the circuit to manipulate the stereo signal in response to demands, it would be seen as a negative.

I think it's time we look at the way Bose negotiates their audio hardware, in their penny crunching way using low budget goods, and see how successful they are at hitting a quality point as audio success, instead of demonizing them for it.

The build quality of their subwoofers using very small neo motors, is exceptional when you consider how they are able to make low distortion drivers that simply peter out at say, 115 db of in-car bass, instead of building crappy drivers across the board that are high distortion from the start.

I would imagine that most people who build their own aftermarket system are after higher dynamics than stock systems can produce, but if we were strictly limiting ourselves for output, the distortion figures from the bose audio is actually not bad, allowing for the low materials cost of mass production.

Just how successful can this amount of sonic manipulation be, you ask... well, I feel excited to find out. 


Maybe even more so than when Steve Stern gave a MECA high score to a stock system those many years ago. I believe we may see the day when all this studio-level work by the automotive manufacturers, pays off and we are hard pressed to better their best- and premium sound options at the dealer make any aftermarket addition or exchange, a step down in performance...

but that could never happen, right?


----------



## WhiteL02 (Jul 25, 2014)

Very interesting.


----------



## jdsoldger (Feb 14, 2012)

Patrick, once the school semester is over, I am going to have to try this.

I have a 1990 Mazda Miata with the optional head rest speakers and it is going to be getting a MiniDSP in it anyway... Lack of reflections already makes it sound good (I always have the top and windows down).


----------



## bigfastmike (Jul 16, 2012)

I actually tried this in my Lexus with small drivers in the headrest. Problem was an inconsistent soundstage that pulled to left at certain frequencies. Vocals moved around depending on volume and frequency.


----------



## TheDavel (Sep 8, 2006)

I'll have to give this a go. Great write up as per usual. I always look forward to the content you bring to the site!


----------



## Patrick Bateman (Sep 11, 2006)

gstokes said:


> On the Bose webpage about the new Cadillac they indicate that they are playing engine noise 180 degrees out of phase through the audio speakers, the exact same technology as noise cancelling headphones, a microphone picks up engine noise inside the car, a DSP inverts the signal and plays it back 180 degrees out of phase with the original signal and they cancel each other out..
> I suspect the small speakers in the headrests are the ones responsible for the audio feedback, engine noise goes in one ear and the 180 degree out of phase signal goes in the other ear and all you hear is silence, no engine or road noises..


OK I guessed wrong lol

Putting the crosstalk cancellation speakers right by your head still seems to work though.

Interestingly, there's nothing stopping you from doing BOTH.

1) You could have one setting for noise cancellation
2) You could have another setting for crosstalk cancellation

Another thing that I noticed during testing is that flipping the polarity makes the stage sound *different*, but not necessarily worse. This made me think that you might try using sound IN PHASE as a means to widen the stage. IE, in stead of using a negative image of the sound to cancel out crosstalk, you could use a POSITIVE wave to exaggerate the width of the sound.


As always, the thing that sucks is the recording. All of these processing tricks illuminate how terrible recordings are. By far the best soundstage that I heard yesterday was during the intro to a song, where it was obvious that the recording engineer had used a minimal mic technique to record the singer as she walked on to the stage. For a couple seconds there, crosstalk cancellation made it sound like I was right there in the room. NEAT.


----------



## Patrick Bateman (Sep 11, 2006)

Here's how you'd do a "wife cancellation mode"

1) put a mic in her headrest
2) record her
3) delay what she's saying by the distance from you to her
4) play it back inverted over your headrest speakers


----------



## Patrick Bateman (Sep 11, 2006)

I thought about this for a minute, and I think that gstokes has a really good idea there.

*What we're dealing with here is very similar to noise cancellation, and we can leverage innovations from the research done on that.*









Here's what I mean. In the 1980s, Polk did crosstalk cancellation at the source. By "the source", I mean that the crosstalk cancellation speakers are right there by the source of the sound.

Patent US5229556 - Internal ported band pass enclosure for sound cancellation - Google Patents








Twenty two years ago, noise cancellation was *also* done at the source. For instance, Ford motor company integrated loudspeakers into the muffler, to cancel out the output.

BTW, you might notice a familiar name on that patent, Earl Geddes. Interesting how a lot of the best loudspeaker designers have an industrial background.

In 2015, it seems to me that the most common way to do cancellation isn't at the source, it's at the target. (our ears.)

Based on that logic, it might be worthwhile to make a few tweaks here. For instance, in my experiments I noticed that the frequency of the left cancellation speaker and the right cancellation speaker varied A LOT. By about 10dB. I think this is due to the fact that one speaker is right by a surface, and that surface is increasing it's efficiency. (Same thing that happens when you put your phone on a table, it gets louder because it's radiating into half the space.)

Luckily, miniDSP can do all of this. In my situation, I measured the left speaker, the right speaker, the left cancellation speaker, and the right cancellation speaker. And then I EQ'd the cancellation speakers so that their frequency response was basically identical to what they were cancelling out.

If you don't have a mic, and you want to mess with this, I think that a plain ol' phone RTA should get you in the ball park. This is one of those situations where a nearfield measurement will be quite usable, because we're listening to the cancellation speakers at a distance of about a foot or less.

Also, the cancellation speakers can be quite small, because they're playing significantly lower in SPL than the mains, because they're so close. I'm using 3" sealed speakers for the cancellation, but you could probably go smaller. You don't need to play much lower than 250hz, so a plain ol' sealed box works fine.

If you wanted to do cancellation down to 125hz you could use something bigger, but then it gets to be tricky to fit them in the headrest. Geddes used bandpass boxes at Ford, that's a compelling option here too. But the phase gets a lot trickier with a bandpass.


----------



## 14642 (May 19, 2008)

Here are a few of other things to consider:

1. It's certainly possible to mix a cancellation signal for the engine in with the rest of the audio and play it back over the entire system.
2. The objective for OE audio systems is to provide the SAME soundstage for all the seats in the car. They probably aren't going to use standard delays for left and right to optimize for the driver's seat and blow off the other seats.
3. Why use a cluster of small drivers for the front and rear center channels? Beam-forming. several small drivers are more expensive than one larger one, so it isn't cost. 
4. The holy grail for OEMs is four independent zones in which all of the passengers can enjoy different program material without wearing headphones and without annoying the other passengers. 

I think #4 is the objective.


----------



## brett (Apr 27, 2005)

all of this is why i love car audio, regardless of how much/well i understand it


----------



## Bmxnick101 (Dec 1, 2009)

I'm in for this.


----------



## gstokes (Apr 20, 2014)

You don't need to buy a Cadillac to incorporate Bose's Active Noise Cancellation, just add microphones and stir..

You can thank me later for this one 

Bose noise cancelling now available for cars without Bose stereos

http://www.nxp.com/products/media_processors/car_radio_audio_dsp_solutions/

Group purchase for 2,450 TEF6657HN/V102K DSP Chips @ $8.59/apiece ?


----------



## Rrrrolla (Nov 13, 2008)

So why just get rid of crosstalk, might as well get rid of everything that shouldnt be there. Put a mic in each side of the headrest too, delay appropriately, and compare the unprocessed signal to the signal received, then play the difference out of phase.


----------



## oabeieo (Feb 22, 2015)

It's why I've always been of fan of not angling speaker pods passenger, it's crazy what delays and amplitude and phase can do if carefully worked to reinforce the fronts and sound image, I already have 2 separate sound systems installed don't make me do 3 lol


----------



## Patrick Bateman (Sep 11, 2006)

Rrrrolla said:


> So why just get rid of crosstalk, might as well get rid of everything that shouldnt be there. Put a mic in each side of the headrest too, delay appropriately, and compare the unprocessed signal to the signal received, then play the difference out of phase.


That's been bugging me too.

The circuit that I'm using is an inverse of what is being played at the speakers, bandwidth limited to about two octaves. (188hz - 750hz)

Subjectively, when the circuit is off the soundstage is confined to the space between the two loudspeakers. Turn it on, *and the stage expands to a semicircle that stretches from just left of me, to just right of me.*

It's like a switch that "expands" the stage. The great thing is that there's still focus; for instance I can still pick out left, right and center.

Depth suffers a little bit, but not much. You'd really think that having speakers a foot from your head would wreck the depth, but it doesn't.



Long story short, this project raises a lot of strange questions:

1) Is the depth of the sound stage defined by the tweeters? Or the midranges? Or both? (I'm really starting to think that the tweeters define the depth to a great extent.)

2) I've long noticed that you can't really tell how far away a sub woofer is if it's properly integrated. For instance, in my setup near my computer at home I'm literally six inches away from one of the subs. (I have three.)


Basically it makes me wonder if you could really bend over backwards to get the treble correct, and then use DSP 'correction' to fix everything else.

The reason that you can't fix the treble is because the wavelengths are so short. For instance, 2khz is 17cm long. Due to the length being so short, you'd have to keep your head in a vise (literally) for DSP correction to work. If you moved your head a quarter wavelength (4.25cm, or 1.5") the DSP wouldn't work any more.

The nice thing is that we have tons of ways to get smooth treble. There are dozens of inexpensive tweeters that can do 2khz - 20khz. You can add in a waveguide if you'd like to improve the polars.

But midrange and midbass have always been a real p.i.t.a. in the car.

Maybe this solution can address that?


----------



## Rrrrolla (Nov 13, 2008)

So if tweeters define the depth, you could just play L and R midrange and midbass from your headrest, have a sub in the trunk and tweets on the dash for depth. Curious how that would sound...


----------



## gstokes (Apr 20, 2014)

Rrrrolla said:


> So if tweeters define the depth, you could just play L and R midrange and midbass from your headrest, have a sub in the trunk and tweets on the dash for depth. Curious how that would sound...


Used to think about mounting speakers on the ceiling and thought that was silly, not anymore.. 
Wouldn't go so far as to rip open the headrest but having the highs / mids / woofers mounted directly in front or directly above might not be such a bad idea.. 
All the speakers would be the distance from the ears and eliminate any time alignment issues, take it one step further and mount one channel in ceiling in front and to the left of my head and the other channel in front and to the right of my head.. 
Unless I added another amplifier to keep the existing full-active setup 2 component sets would be ideal. 
Two 3-way component sets for left side and the same for right side so the passenger could enjoy it too.. 
My full-size van has a raised roof with overhead console that extends just beyond the back of the front seats and there is even enough room for a subwoofer directly above and behind each seat, all i would need to do is make a new back panel where the TV currently resides and seal up the entire overhead console.

The following images (in most ways) echo my thoughts..


----------



## ajsmcs (Jan 26, 2015)

I wonder how easy it would be to take the phase cancellation idea to get a perfect soundstage from _both_ front seats? 

I've been thinking about that for awhile now, and how to implement it.

Despite being an engineer professionally, I'm still pretty new to the study of acoustics. I'd love to figure out how to make that work.


----------



## Patrick Bateman (Sep 11, 2006)

Rrrrolla said:


> So if tweeters define the depth, you could just play L and R midrange and midbass from your headrest, have a sub in the trunk and tweets on the dash for depth. Curious how that would sound...


This is about to get technical as ****, so please PLEASE ask questions if this makes no sense.

First off, let's ignore everything above 1khz. Our cues above 1khz are dominated by frequency response, and we already know how to fix that.

Below 1khz, it's phase. Phase is what tell us where a sound is coming from.









Here's an example of what I mean. In New York City the recording studios are tiny, but in Los Angeles we used to have a big ol' recording studio out in the San Fernando valley called "Sound City." If you've ever heard the big drum sound on a Fleetwood Mac or Nirvana record, you're familiar with what I'm talking about. IMHO the 'secret sauce' to that sound was this big ol' room they had at Sound City, which allowed for a kind of drum sound that you could never achieve in a tiny NYC studio. And, obviously, this is a sound you could never achieve with a synthesized drum from a bedroom studio.

If you play a Nirvana CD over headphones, you'll get an appreciation of that studio, because the room isn't there to wreck the sound. You'll hear the decay of the drum beats and you'll get a sense of the acoustic space that the drums were recorded in.









Now play that same recording back in a car, and you're going to get an early reflection off of the floor, the opposite side of the car, the ceiling, etc.

Now move the midrange to the headrest, and the proximity effect is going to help out here a lot; because the speakers are so close to your head, the Haas effect dictates that the sound of the room will be lessened.

In summary:
1) *Garbage in, garbage out.* To appreciate the acoustic space of a recording, you'll need to bring recordings that were recorded in a real space. I use Sound City as an example because it's the biggest studio that I know of, offhand, and over headphones you can get an appreciation for the size of the room and how it affects the stereo reproduction.
2) In a small space, like a small listening room or a car, that sense of space will get wrecked by early reflections. *The reflected energy is nearly as loud as the original energy.* It plays an enormous role in what we hear.

Okay, I warned you, I'm about to Math Out here 

The speed of sound is invariable. It doesn't change. And due to that, we can REINFORCE the cues that we want. Or NULL OUT the cues we don't want. Or both.









For instance, I know exactly where my midranges are. And I know exactly where my listener is. So I can time every single driver so that they arrive simultaneously.

At this point, some might wonder, "how is this any different than what we're already doing? Delaying the speakers so they arrive simultaneously is nothing new."


*The difference here is that we're doing it with multiple drivers per channel.*










We have a lot of room to 'tighten up' the sound too. For instance, let's say you're listening to a drummer play at 120 beats per minute. That's two beats per second.

That means that there's 500 milliseconds of 'space' between the notes, right?

All of the early reflections happen in a matter of milliseconds. For instance, the reflection off of the opposite side of the car happens in less than five milliseconds. (5ms = 170cm)

So our "correction" speakers are either reinforcing the notes we want, or they're nulling out the ones we don't want. Take your pick.









Here's a pic of the frequency response and the impulse response of one of my stereo speakers, and the two crosstalk speakers.

Take a look at the impulse response, *and note how I've lined up all of the impulses.* Everything is arriving simultaneously, give or take an inch. (2.5cm)




Another thing that's occurred to me, is this:
*If two cancellation speakers are good, how about four?*

IE, you can use those two headrest speakers to cancel the crosstalk. But you could also use them to reinforce the stereo. Just line up the impulses with a tape measure or a microphone, and set delays accordingly. We want everything to arrive at the listeners head simultaneously.









If you go from two extra speakers to four, you'll start to notice that you're creating an "end fire array", which is something that the prosound people do to make live shows sound better. Basically you put your subs in a long line, and then you delay them so the sound hits the listener simultaneously. It's really great for venues with concrete floors, or for festivals where you don't want one stage to "bleed" into the other.

I saw Bassnectar play on a cardioid array in Canada, and the sound was so directional, if you walked behind the stage it was about 40dB quieter. You could literally hold a conversation behind the stage, while everyone in front of the stage was getting their faces melted off by the speakers.



* side note : OP did the remixing on the 'Sound City' documentary. Go see it now. It's great. Sound City | Variety


----------



## thehatedguy (May 4, 2007)

That's Nathan Budiono's car in the picture...nice guy.


----------



## Patrick Bateman (Sep 11, 2006)

ajsmcs said:


> I wonder how easy it would be to take the phase cancellation idea to get a perfect soundstage from _both_ front seats?
> 
> I've been thinking about that for awhile now, and how to implement it.
> 
> Despite being an engineer professionally, I'm still pretty new to the study of acoustics. I'd love to figure out how to make that work.


Jon lives over the hill from me, and I've heard his bus a bunch of times. He's gone to extremes to clean up the impulse response of The Magic Bus, and it works: *it's probably the best bass I've ever heard.*








See all those blue things with the holes in them? Helmholtz resonators.*


Jon is cleaning up the impulse response passively. This is no trade secret, it's all on his website. He has a series of helmholtz resonators tuned to absorb reflections. And the sub is isolated from the car, using a clever method that's all there on the web site.

If I were gunning for a 'two seat car', here's what I'd do:

1) Get your path lengths very long. Basically do what everyone did in the 90s, put the midbasses as far away as you possibly can. If your speakers are in the door, the PLD might be as much as half a meter. But move the speakers to the kick panels and you can get the PLDs down to a quarter of a meter. To put this in perspective, 500hz is 0.68 meters long. So if you can reduce the PLD to 0.17m, that's one quarter of a wavelength.
2) To reduce the reflections, I'd stick those 'cancellation' speakers where the reflections are. For instance, *we know there's going to be a powerful reflection off of the back window*, and we know that window is about 3 meters away. And the cool thing is that the distance to that window is never going to change. Doesn't matter if we're talking about 200hz or 2000hz, the speed of sound doesn't change.

So we stick a couple of speakers back there on the rear deck, and we delay them 8.8235 milliseconds (three meters) and *we play 'em out of phase.*

Time it right and you soak up that reflection like a sponge.

Voila! The boundaries of the car disappears and you're transported to Sound City studios.





* some reading on how to build Helmholtz Resonators : https://www.gearslutz.com/board/stu...630460-panel-helmholtz-resonators-studio.html


----------



## cajunner (Apr 13, 2007)

Sound Dome Directional Speakers- Brown Innovations

this above each passenger, but alas, not enough room for a parabolic dome, haha..



so DSP does it from the headrests.


----------



## brett (Apr 27, 2005)

Patrick Bateman said:


> So we stick a couple of speakers back there on the rear deck, and we delay them 8.8235 milliseconds (three meters) and *we play 'em out of phase.*
> 
> Time it right and you soak up that reflection like a sponge.
> 
> ...




i was wondering if you would mention rear speakers. i'm trying my best to understand all of this patrick, but wouldn't rear speakers essentially be able to do the same thing as headrest speakers?


----------



## Rrrrolla (Nov 13, 2008)

If you could get all of this processing to work to eliminate crosstalk, you might have success making a 2 seat sweet spot using a Left-Right-Left approach, with Right in the middle of the car, and left on both sides. The stage would be reversed for passenger vs driver, but that shouldnt matter.


----------



## bbfoto (Aug 28, 2005)

brett said:


> i was wondering if you would mention rear speakers. i'm trying my best to understand all of this patrick, but wouldn't rear speakers essentially be able to do the same thing as headrest speakers?


IMO, the headreast is more ideal because of the inverse square law of sound. Their level at the headrests will only need to be very low because of the close proximity to your ears, so they will not create other destructive reflections and phase anomolies throughout the cabin, and will produce less of their own "crosstalk" as opposed to rear speakers that would need to be at a much higher amplitude to do their job of cancelling the crosstalk from the front stage drivers. Rear speakers would add more acoustic energy that will create more reflections and phase issues...essentially, you'll be hearing crosstalk from the anti-crosstalk rear speakers.  I'm no engineer, and that's just my layman's stab at it, so maybe I'm smokin' crack and totally wrong. :blush:

Very interesting thread. I've been meaning to follow up and research the information in Gary's original post, but things are getting very busy here now that it's spring.

And :thumbsup: on the _Sound City_ documentary. There are actually still quite a few large studios in L.A. that I've been to over the years. Many of the Motion Picture Studios have their own large soundstages for orchestral movie scoring/soundtracks, Foley work, etc..i.e. Paramount, Universal, etc.

In the early 90's I worked at Foto-Kem motion picture & video labs in Burbank, in the Color Timing department and I'd visit some of the studios every so often for different projects. Capital Records recording studios and their echo chambers that were designed by Les Paul are legendary.

Echo Chambers | Capitol Studios

Studios | Capitol Studios

Patrick, you might also be interested in this series of videos by _SOS_ about _BOP_ Studios in South Africa, and in Hollywood...EastWest Studios and more about Fairfax Studios (formerly Sound City).
















...and holy mic locker & drum room!!!...






Also check out The Power Station/Avatar Studios (NYC).

Sorry I got so off topic! :blush: Back to the OP!


.


----------



## Patrick Bateman (Sep 11, 2006)

bbfoto said:


> IMO, the headreast is more ideal because of the inverse square law of sound. Their level at the headrests will only need to be very low because of the close proximity to your ears, so they will not create other destructive reflections and phase anomolies throughout the cabin, and will produce less of their own "crosstalk" as opposed to rear speakers that would need to be at a much higher amplitude to do their job of cancelling the crosstalk from the front stage drivers. Rear speakers would add more acoustic energy that will create more reflections and phase issues...essentially, you'll be hearing crosstalk from the anti-crosstalk rear speakers.  I'm no engineer, and that's just my layman's stab at it, so maybe I'm smokin' crack and totally wrong. :blush:



I think you MIGHT be able to get a perfect null, or close to it.

Here's my thought process:

Last year I was doing some measurements in my living room. When I do that, I use a "gate" to capture ONLY the first few milliseconds of sound.

The reason that we do that is to filter out the reflections in the room.

I accidentally set the gate wrong, and I'd set it up to capture the first REFLECTION. Not the speakers themselves, but the first reflection off of the nearest wall.


And here's the part that blew my mind: *it was virtually identical to the speaker itself.* IE, if you have a hard surface, it's basically going to make a reflection that's almost EXACTLY the same as the original source.

It's a really powerful illustration of the Haas effect; that we can mentally filter out that reflection so skillfully.

BTW, that speaker was nearly omnipolar, which was the reason the reflection off the wall was so similar to the original source. With a conventional loudspeaker the highs wouldn't radiate to the back, because conventional speakers have tweeters that are directional. IE, I can't think of a good reason to run the cancellation speakers higher than 1khz, 2khz at the very most.


If you were going to run cancellation speakers on the rear deck, there's probably some good reasons to use one, not two. Basically I *think* you can get a perfect null by timing it so that the sound from the FRONT of the car is nulled by the cancellation speaker in the BACK. But if you run two of them in the back they're going to start to interfere with each other once they're more than about 1/4 to 1/3 of a wavelength apart. For instance, if your cancellation speaker is running from 125hz to 1000hz, you'll get an interference pattern if you have two that are separated my more than about 8.5cm-11.3cm (3.34" - 4.5")



TLDR: You can probably get a 'perfect' null. The reason that you can get a 'perfect' null is that the geometry of the car does not change, and the speed of sound does not change. Therefore, if you get the timing and the location correct, it will ALWAYS null out the sound at the cancellation speaker. And when that cancellation happens, *nothing is radiated.* The reflection is soaked up like a sponge. It's G-O-N-E.

If you use two cancellation speakers, you'll probably want them very close together, or else they'll begin to create their own problems, due to interference with each other. This is because there's a lot of sound that's in both the left *and* the right channel. The maximum separation will depend on how high you run them.


----------



## Patrick Bateman (Sep 11, 2006)

Actually, on second thought, if the two speakers null each other out, there's no reason to limit yourself to one speaker in the back.

Since nothing is radiated, there's no interference pattern.

Heck, if you could get a perfect null there would be nothing stopping you from running a HUNDRED cancellation speakers. Make the walls disappear lol

Obviously, this require a wee bit of DSP :O


----------



## brett (Apr 27, 2005)

thanks patrick, i hope to try some of this when things get finished up. as of now, i have two vifa pl mids in the rear deck position. my plan was to just run these as an ambient effect, but after reading this i'm thinking i might be able to get a little more creative with them.

this might be a dumb question, but would it make a difference if their balance were switched? i was wondering if having the left rear speaker play the right signal, if this would be more or less effective?


----------



## ajsmcs (Jan 26, 2015)

I watched that Sound City documentary a few months back, and it was pretty good stuff. :thumbsup:

That bus is just nuts. The last thing I need are ideas being put into me head about perforated metal door skins...my fiancee would kill me. XD

That's an interesting idea you have with the rear deck speaker, though. I'd love to see that implemented.

Because I'm an aerospace guy, and people pay me to be fussy, I do have to point out one thing: the speed of sound DOES change with temperature.


----------



## bbfoto (Aug 28, 2005)

ajsmcs said:


> Because I'm an aerospace guy, and people pay me to be fussy, I do have to point out one thing: the speed of sound DOES change with temperature.


Oh definitely, and with humidity as well, right?. But it's basically a non-issue since all of our speakers will be operating in the same environment at any given time, so any delay/alignment should be proportionate.


----------



## bbfoto (Aug 28, 2005)

Patrick Bateman said:


> Since nothing is radiated, there's no interference pattern.


But _something_ has to be radiated in order for it to be cancelled. 

The question is at what point in space does that null/cancellation take place?


----------



## cajunner (Apr 13, 2007)

bbfoto said:


> But _something_ has to be radiated in order for it to be cancelled.
> 
> The question is at what point in space does that null/cancellation take place?



you mean like, how the energy collides, right?

I remember Geddes saying something about this, something interesting.

I think it was that the room dimensions determine what happens, so I would guess that the reason a null is so hard to fix is because cancellation is infinite, not just subtracting from a baseline level...


don't hold me to that, though.


I miss lycan's easy work of this stuff, small function large function palaver...


----------



## Patrick Bateman (Sep 11, 2006)

cajunner said:


> you mean like, how the energy collides, right?
> 
> I remember Geddes saying something about this, something interesting.
> 
> ...


It's probably too much work, but it got me thinking that I might try and write my own version of the 'ripple tank' simulator to find out:

https://www.youtube.com/watch?v=N9acWJr0pfg

I've used the existing simulator to figure out how horns and waveguides and arrays work. But it can't do delays, so maybe I'll have to write my own?

Another nice thing would be if it could calculate the SPL. I believe the ripple tank simulator treats the waves like they're a liquid.

But in sound, a null is zero; if you get two sources to null each other out, there's no radiation.

Anyways, I'm seeing what I can throw together in html5.

If anyone knows about an existing piece of software that can simulate multiple sound sources WITH DELAY that would be cool. I know Old Colony Sound Lab sold one back in the 90s, but it didn't do delay. And I'm pretty sure the guys at avsforum have something for home theaters which might work with regular rooms. The key, of course, is delay.


----------



## rxonmymind (Sep 7, 2010)

Rrrrolla said:


> So why just get rid of crosstalk, might as well get rid of everything that shouldnt be there. Put a mic in each side of the headrest too, delay appropriately, and compare the unprocessed signal to the signal received, then play the difference out of phase.


Imagine the processing speed to do this "live" while rolling at 75? Would be very, very cool. Make this "portable" and black ops and tactile units could sneak up without your hearing a thing. I can imagine running through a corridor with two mini (quarter size)speakers on either side of your vest and as your running it canceling out your foot fallls, burps, farts, sneezes, gun scrapping the wall whatever. But like all thing it's a double edge sword.


----------



## garysummers (Oct 25, 2010)

Patrick,

If you look in Erin's build thread, he just did some extensive testing with moving the tweeters to several locations and its affect on stage width. His conclusion the tweeters had very little affect on stage width with their different positions. But changing the position of the midranges had a major effect on stage width. Around page 37 of his thread. Interesting testing and read.

I found the same thing when positioning the mid/tweeter in my pillars. I tried every possible combination and found that the mid positioning had a greater affect on stage width than the tweeters.


----------



## thehatedguy (May 4, 2007)

Gary, I am taking notes from your install as I will have a similar setup with the domes and multichannel stuff. Curious as to why you didn't put them in the doors as that is a physically wider spot than the dash.


----------



## garysummers (Oct 25, 2010)

I found that in all my listening tests, keeping the mid and tweeter very close together yielded the most coherent soundstage. The mids were placed in the A pillar as wide as possible and as deep as possible.


----------



## oabeieo (Feb 22, 2015)

Back in the day I had a car where the rear door speakers were about 6 inches from your head with the seat all way back where I drove, I ran speaker full range and turned volume way down on it and used delays to pull image to center , I did it on driver side and passenger side , I had horns installed and the front door speakers had no delay against each other and those rear speakers being so close to the ear made it not only image absolutely perfect for both seats but with no delay on fronts the sound stage was so rediculusly wide. I miss that car so much just for those speaker locations. It's crazy what carefull tuning on extreme near speakers can allow you to accomplish


----------



## Patrick Bateman (Sep 11, 2006)

garysummers said:


> Patrick,
> 
> If you look in Erin's build thread, he just did some extensive testing with moving the tweeters to several locations and its affect on stage width. His conclusion the tweeters had very little affect on stage width with their different positions. But changing the position of the midranges had a major effect on stage width. Around page 37 of his thread. Interesting testing and read.
> 
> I found the same thing when positioning the mid/tweeter in my pillars. I tried every possible combination and found that the mid positioning had a greater affect on stage width than the tweeters.












I rented some Synergy horns a few months ago and noticed that the "depth" of the stage was blurred to a great extent.

In the three octaves between 125hz and 1khz our perception of location is basically determined by phase.

Due to that, about the only practical way to widen the stage would be to physically move the speakers to a wider location. Width would be maximized if the left speaker was all the way to the left, and the right speaker was all the way to the right. (Similar to headphones.)

I think I know why the depth on the Synergy horns was "blurred." The horn mouth is two feet wide, and due to that, the early reflections are (mostly) absent.

But I wonder if the additional width with the "crosstalk cancellation" setup isn't just from the cancellation, but also because they're immediately to the left and to the right - where stage width would be maximized.




]


----------



## Orion525iT (Mar 6, 2011)

garysummers said:


> Patrick,
> 
> If you look in Erin's build thread, he just did some extensive testing with moving the tweeters to several locations and its affect on stage width. His conclusion the tweeters had very little affect on stage width with their different positions. But changing the position of the midranges had a major effect on stage width. Around page 37 of his thread. Interesting testing and read.
> 
> I found the same thing when positioning the mid/tweeter in my pillars. I tried every possible combination and found that the mid positioning had a greater affect on stage width than the tweeters.


I was thinking that in Erin's thread, the width is better because of the nearest reflection off of the front of the door window. Basically you get a quick bounce of the glass there, and at mid frequencies you still get a summed response. You get a virtual speaker from the bounce and a virtual center just outside and wider than the actual speaker location. 

One of a million things I would like experiment with is using an active hypercardioid, and aiming to bounce off the door glass to see what would happen.


----------



## Patrick Bateman (Sep 11, 2006)

How about a delay that varies with frequency?









Everyone's seen my Opsodis threads, and there's a lot of crossover* between these ideas:

1) Opsodis
2) Ambiophonics
3) Crosstalk cancellation

In an Opsodis setup, we put the woofers to the left, the midranges at 45 degrees, and the tweeters nearly in the center.

But what if you used delay to achieve the same effect? IE, all the speakers would be spread out in front of you, a horizontal array, but the delay would become increasingly long as the frequencies got lower. *Would that have the effect of widening the stage?*

Five years ago that would require about $10,000 worth of DSP, but we can do it cheaply nowadays with Rephase.

*no pun intended


----------



## Orion525iT (Mar 6, 2011)

Patrick Bateman said:


> How about a delay that varies with frequency?
> 
> 
> 
> ...


Not sure how that would work, because you can't change itd with delay; it's purely dependant on physical location.


----------



## thehatedguy (May 4, 2007)

That's what I was thinking too.


----------



## traceywatts (Jun 2, 2008)

Orion525iT said:


> Not sure how that would work, because you can't change itd with delay; it's purely dependant on physical location.


It might work, if you are on the centerline between all speaker pairs.


----------



## Patrick Bateman (Sep 11, 2006)

Orion525iT said:


> Not sure how that would work, because you can't change itd with delay; it's purely dependant on physical location.


Yeah not sure if it's do-able.

Here's a hypothetical example:

Let's say the recording has a drum that's 100% in the left speaker. If you were wearing headphones, the sound would come 100% from the left (9 o' clock). If you were listening in a room, using a conventional stereo triangle, *the maximum width is exactly where the left speaker is.* IE, it's not going to sound like it's coming from the left because the speaker isn't to your left, it's at 10 o' clock.

Now if you could do perfect crosstalk cancellation, you COULD move the sound to 9 o' clock. That's because the cancellation speaker on you're right, if timed perfectly, will 'null' out the "clue" that the sound isn't coming from 10 o' clock.

The fly in the ointment here is reflections. While you may be able to 'null' out the crosstalk from the first wave, doing so for the reflected waves gets tricky.


Having said that, subjectively, it SOUNDS much wider. Night and day.


----------



## TallTexan (Dec 14, 2007)

Patrick Bateman said:


> <snip>
> The fly in the ointment here is reflections. While you may be able to 'null' out the crosstalk from the first wave, doing so for the reflected waves gets tricky.
> </snip>


Wouldn't your 'nulling' wave also have to deal with reflections? And since the null speakers are in different places than the main speakers they will see different reflections. 

I'm thinking about throwing a pair of $5 ea FE buyout special Peerless TC6WD02-04 2" mid to my next order and fabing up some PVC mounts somehow attached to either side of my head rest. I've got a pair of spare miniDSP channels and just need a little amp to power them. 

My only problem is the vision I see in my head of what this would look like in my car is that it going to make me look like Mickey Mouse with two round short cylindrical speakers either side of my head


----------



## brett (Apr 27, 2005)

man, all of this is really tempting and now i may have a use for my aura cougars...

AuraSound Cougar NSW1-205-8A 1" Extended Range Driver 8 Ohm

so, patrick, my understanding is then that these speakers should be placed as close to the ears as possible as to reduce any reflections? would they be best in the top of the seat pointed up, or in the side of the head rest? I'm really curious to see if anybody has some pics of this already done so i can wrap my brain around this


----------



## TallTexan (Dec 14, 2007)

Brett: I was plan on using PVC as outlined http://www.diymobileaudio.com/forum/how-articles-provided-our-members/53732-cheap-adjustable-easily-replaceable-tweeter-pods.html and then using swivel mounts (see other posts in that thread, they used air tool swivels) to aim them. I was thinking about a flat iron/aluminum bar across the top of my seat with two holes drilled for the head rest which would also sort of hold the bar into place. On either end of the bar then the swivel mounts would go with the speakers aimed at driver's ears.

FYI: For PVC dimensions check out: Schedule 40 & 80 Pipe Dimensions also keeping in mind that couplers have inside diameters the same as outside the piece it's for. Looks like maybe 1 1/.2" diameter PVC of 1.59" might fit your AuraSound's cutout of 1.42".

With speakers this small, in the 1" to 2" range, you could also use tennis ball at 2.75" diameter which thinking about it now, is perfect for the Peerless TC6WD02-04 2" mids I want to use so I might go that direction myself.

I'm also planning on picking one of the cheap 12v Class-D/T amp boards from PE (or ebay) like in the Tripath TA2024 2x15W board to power these nulling speakers. I'm assuming that they won't require the same power (or SQ) as the mains, otherwise, I'll have to wiring in a full sized 2 channel AB amp.


----------



## Alextaastrup (Apr 12, 2014)

Interesting item - was looking after similar solution for a long time.
As I remember, there were several attempts to solve the problem of narrow stage with different hardware. Here are just few examples:

- SRS processing
- Rocktron CSA12 (Rocktron CSA12 car audio Circle Surround decoder. You say you want a revolution. Breaking the DVD logjam)
- Pioneer DEQ P800 - with its simulation of ambient environment (stadium, church, etc.)
- Hudges AK-100, AK-200, 500
- Binaural player apps for Android smartphones and some others.

Do not forget ANR systems in Honda, road noise cancelling in Alpine 800 processor...

All of them were suffering from tonality problems, so moving the technical solution closer to the listening position seems to be quite reasonable. Wait for results. I will very much appreciate any reviews on the installations in cars as home stereo is not of a highest interest at the moment.

On the other hand, I do not like the idea of installing extra speakers around the headrest. For the present moment I am using the software solution proposed by Raimonds Skuruls from Acoustic Power Lab. The idea was to deminish beaming problems of the tweeters placed in triangles (especially the left one as it is situated rather close to the listening position). I measured the total acoustic power and subtracted its direct signal. That resulted in a sound stage which is wider than the car dimensions - without mounting extra equipment. All the corrections were made above 1 kHz, just by amplitude change, not phase. Crossover point between the mids and tweeters is 3,9 kHz, meaning that both speakers are responsible for a wide stage creation. Unfortunatelly that resulted in the change of stage deepness. Sound stage became closer to a listening position, but significally wider than before. All that made me to "play" with corrections and reduce them to a certain level, when the stage is still deep, but wide at the same time. 

Still looking after simple but effective active noise reduction. Audi is using (as far as I can remember) up to 8 mics which seems to be rather complicated for the most of ameuters as I am. Any suggestions are very welcome.


----------



## cajunner (Apr 13, 2007)

on one hand, you have the maxim that all sound in-car, is early reflections so unless you digitally insert the delay, you aren't dealing with the same animal as 2-channel home audio and the 60 degrees of pure matrix-worthy, ambient material..

then there's these ideas of virtual driver expansion, controlling dispersion/directivity with a waveguide or lens, and now doing a crosstalk cancel using the nearest field of headrest mounts.

some of it, like to widen a soundstage, is to me a little bit overkill? I mean, I've heard wide, anyone can do wide at home, at a certain point the 2-channel sort of goes weird, as you move the speakers further to the sides.

and if the goal is depth, then you're kind of stuck, since depth is hard to do with the off-center mash.

if you go full retard, (pun intended?... ??? ?) and create a complete "listening station" at each occupant's 2 inches of pure, (obviously, sit right in the car and get a handle on timed arrival sets for each of the four seating positions) like this Cadillax/Bose get-up proposes, and use the close field for "Quiet Comfort" type noise control, we're talking about a level of sophistication that can best be described as "fanatical" in scope, aren't we?


at what point, should we bow out, should we just go with the 2-way + sub and a little T/A, or push no harder than the MS-8 with Logic7?

are we ready for this much strange?


obsequiousness from the edge, of space...


----------



## Alextaastrup (Apr 12, 2014)

Agree with cajunner - are we ready for huge investments like Bose-solution for all 4 passengers? Or we are just egoists improving the sound stage only for a driver seat?

It is very attractive to find a cheap and technically easy solution which will be affordable by many sound enthusiasts. Cross-talk might be one of these. Why not to try the idea in a car if it works at home? Who will be against the idea of transforming a (relative) little car cabin into a huge concert hall? But this might be more complicated as imitating a big recording studio (or unlimited listening room) one might think of tonality change in the sound with increase of distance between a speaker and ears. What about ratio of direct and reflected sound? Should this also be taken into consideration? More close you are to the loudspeaker at home, less reflections are incorporated in the process of sound perseption. Does it work the same way in a car? What about reflections and their impact on reverberation effect? I know, many articles were written about this, but still much more questions are not answered yet.

What I personally appreciate very much - is willingness of some brave people to make research, investigate, improve our world. Even if they have already a good sounded system in their car. It's a drive - a good thing to have


----------



## gstokes (Apr 20, 2014)

Alextaastrup said:


> .. Or we are just egoists improving the sound stage only for a driver seat?


Yes


----------



## Patrick Bateman (Sep 11, 2006)

TallTexan said:


> Wouldn't your 'nulling' wave also have to deal with reflections? And since the null speakers are in different places than the main speakers they will see different reflections.
> 
> I'm thinking about throwing a pair of $5 ea FE buyout special Peerless TC6WD02-04 2" mid to my next order and fabing up some PVC mounts somehow attached to either side of my head rest. I've got a pair of spare miniDSP channels and just need a little amp to power them.
> 
> My only problem is the vision I see in my head of what this would look like in my car is that it going to make me look like Mickey Mouse with two round short cylindrical speakers either side of my head


I think that's one of the reasons that putting the cancellation speakers so close to your head works. *Due to the precedence effect, the primary wave will be far more audible than the reflections.*

Also, you can use independent EQ on the primary speakers and on the cancellation speakers. I did that with my experiment at my desk here; the crosstalk speakers are EQ'd to match the primaries, and the EQ curves are different for the left and the right.


----------



## Patrick Bateman (Sep 11, 2006)

Alextaastrup said:


> Interesting item - was looking after similar solution for a long time.
> As I remember, there were several attempts to solve the problem of narrow stage with different hardware. Here are just few examples:
> 
> - SRS processing
> ...


The change in tonality is no joke.

As noted in other posts, *I used EQ on the miniDSP to match the response curve of the cancellation speakers to the mains.*

I was really enjoying the sound and the soundstage, and I was rocking out one afternoon, but noticed that distortion was quite audible.

This was unexpected, as it didn't "sound" particularly loud.

But then it occurred to me, we're putting some harsh demands on the loudspeakers. First, we're generating music at the mains. Then, we're SUBTRACTING out some sound with the cancellation speakers. 

So right there, we've upped the demand on the mains; we might need as much as ten or even twenty dB more headroom because we're cancelling a percentage of their output.

Then, to make matters worse, I'm EQ'ing the cancellation speakers to match the mains. This could create distortion in the cancellation speakers.




TLDR: you might want some big beefy mains for this experiment. 


I built some horn loaded enclosures for a pair of Aurasound 4" woofers. That project completely **** the bed, which I'll explain soon. When that failed, I kicked it up a notch and went with horn-loaded B&C eights.

My sims say that each one of the eights is capable of 120dB, so that should do the trick


----------



## Patrick Bateman (Sep 11, 2006)

Alextaastrup said:


> Agree with cajunner - are we ready for huge investments like Bose-solution for all 4 passengers? Or we are just egoists improving the sound stage only for a driver seat?
> 
> It is very attractive to find a cheap and technically easy solution which will be affordable by many sound enthusiasts. Cross-talk might be one of these. Why not to try the idea in a car if it works at home? Who will be against the idea of transforming a (relative) little car cabin into a huge concert hall? But this might be more complicated as imitating a big recording studio (or unlimited listening room) one might think of tonality change in the sound with increase of distance between a speaker and ears. What about ratio of direct and reflected sound? Should this also be taken into consideration? More close you are to the loudspeaker at home, less reflections are incorporated in the process of sound perseption. Does it work the same way in a car? What about reflections and their impact on reverberation effect? I know, many articles were written about this, but still much more questions are not answered yet.
> 
> What I personally appreciate very much - is willingness of some brave people to make research, investigate, improve our world. Even if they have already a good sounded system in their car. It's a drive - a good thing to have


It basically sounds like you're wearing headphones.
But you're not.

I know some people have actually gone the OPPOSITE route, and they've *added* crosstalk to headphones to simulate the sound you get with a stereo triangle. I haven't tried that. I imagine the effect would be to narrow and deepen the stage.


----------



## Alextaastrup (Apr 12, 2014)

Right, the problem of headroom is to be taken into account. On the other hand - from my experience with the differential correction (total minus direct sound power) it resulted in max change of 5dB above 1000 Hz (lower range was just cancelled in order to leave only amplitude correction). Not a big deal (not talking of SPL install - just for SQ). What amazed me that even such small corrections can change the shape of the scene drastically (rather audible) - even at lower frequences. Maybe it was due to different tonality before and after corrections done. Anyway it sounds different which gives a good background to continue research in this direction.


----------



## thehatedguy (May 4, 2007)

I have been thinking about flushing my L3SEs into my pillars, but leave slits on the side(s) of the pillars to make a cardiod of sorts. And it would look pretty much stock.




Orion525iT said:


> I was thinking that in Erin's thread, the width is better because of the nearest reflection off of the front of the door window. Basically you get a quick bounce of the glass there, and at mid frequencies you still get a summed response. You get a virtual speaker from the bounce and a virtual center just outside and wider than the actual speaker location.
> 
> One of a million things I would like experiment with is using an active hypercardioid, and aiming to bounce off the door glass to see what would happen.


----------



## Patrick Bateman (Sep 11, 2006)

Cardioids sound great.

Main reason I stopped doing them (for now) was that they tend to be ridiculously huge because they're so inefficient, and it's really difficult to get a reliable measurement. (Because the comb filtering probably isn't audible, but it sure is measurable.)

Due to the inefficiency and high excursion, a 3" woofer would probably need to be high passed around 1khz.









This is the response of each individual drive unit in John K's Nao Note II. *Note that the midrange covers just two octaves, and it's highpassed very very high - at 1khz.*


----------



## Rrrrolla (Nov 13, 2008)

Patrick Bateman said:


> The change in tonality is no joke.
> 
> As noted in other posts, *I used EQ on the miniDSP to match the response curve of the cancellation speakers to the mains.*


When you matched the curve of the cancellation speakers to the mains, you would want to match it to what the response is right at your ear, with your head in the way correct? I'm assuming that having your head between your ear and the opposite speaker would impact the frequency response a fair amount? Especially so at higher frequencies? Did you hold the mic up to your opposite ear as you played the sweeps from each of the mains? Curious how you pulled this off because I'd like to try it out.


----------



## Patrick Bateman (Sep 11, 2006)

Rrrrolla said:


> When you matched the curve of the cancellation speakers to the mains, you would want to match it to what the response is right at your ear, with your head in the way correct?


yes



Rrrrolla said:


> I'm assuming that having your head between your ear and the opposite speaker would impact the frequency response a fair amount? Especially so at higher frequencies?


It would if we were playing higher frequencies, but we're not. I am lowpassing at 750hz, I would recommend doing a low pass between one and two khz.

Because the wavelengths are so long, they tend to 'wrap' around our head.

By the way, this isn't a coincidence; the reason that our perception shifts around 1khz is literally because of that distance. The distance between my ears is about 20cm, 1700hz is 20cm long, and that's the exact reason that our perception changes i the octave between 1 and 2khz.



Rrrrolla said:


> Did you hold the mic up to your opposite ear as you played the sweeps from each of the mains? Curious how you pulled this off because I'd like to try it out.


Ideally you'd build a dummy head and put the mic in there, but I didn't go to that extent. 

In my measurements, the main thing that impacted the frequency response was a nearby boundary. For instance, if you have one speaker that's radiating into free space (no boundary nearby at all) the efficiency will be lower than if you have another one that's close to a wall. (The wall raises the efficiency)

You hear the same effect with bookshelf speakers, the back wall reinforces the bass.


----------



## Patrick Bateman (Sep 11, 2006)

Patrick Bateman said:


> It's probably too much work, but it got me thinking that I might try and write my own version of the 'ripple tank' simulator to find out:
> 
> https://www.youtube.com/watch?v=N9acWJr0pfg
> 
> ...


It took way longer than I'd care to admit, but I wrote a simulator in html5.

This is really basic, I've never done anything in html5 so it was a bit of a learning exercise.

The main thing here is that it does *delay*, which none of the programs I could find can currently do.

I noticed that some guys have an app that *does* do delay, and they're publishing sims, but they don't say what the app is 

Anyways, without further ado:


<!DOCTYPE HTML>
<html>
<head>
<style>
body {
margin: 0px;
padding: 0px;
}
</style>
</head>
<body>
<canvas id="myCanvas" width="900" height="450"></canvas>
<script>
window.requestAnimFrame = (function(callback) {
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||

window.mozRequestAnimationFrame || window.oRequestAnimationFrame ||

window.msRequestAnimationFrame ||
 function(callback) {
window.setTimeout(callback, 1000 / 60);
};
})();

function animate(particle, canvas, context) {
context.clearRect(0,0,canvas.width,canvas.height);
// first, figure out our new x and y co-ordinate
for (i = 0; i < 16; i++) {
if (particle_[3] < 1) {
// rotate the phase 
particle[5] = particle[5] + klaatu;

switch(particle[2]) {
case 0:
if (particle[1] > 5) {
particle[1] = particle[1] - 5;
} else {
particle[1] = particle[1] + 5;
particle[2]=4;
}
break;
case 1:
if (particle[1] < 1) {
particle[0] = particle[0] + 3.535;
particle[1] = particle[1] + 3.535;
particle[2] = 3;
} else if (particle[0] > canvas.width) {
particle[0] = particle[0] - 3.535;
particle[1] = particle[1] - 3.535;
particle[2] = 7;
} else {
particle[0] = particle[0] + 3.535;
particle[1] = particle[1] - 3.535;
}
break;
case 2:
if (particle[0] < canvas.width) {
particle[0] = particle[0] + 5;
} else {
particle[0] = particle[0] - 5;
particle[2]=6;
}
break;
case 3:
if (particle[1] > canvas.height) {
particle[0] = particle[0] + 3.535;
particle[1] = particle[1] - 3.535;
particle[2] = 1;
} else if (particle[0] > canvas.width) {
particle[0] = particle[0] - 3.535;
particle[1] = particle[1] - 3.535;
particle[2]=5;
} else {
particle[0] = particle[0] + 3.535;
particle[1] = particle[1] + 3.535;
}
break;
case 4:
if (particle[1] < canvas.height) {
particle[1] = particle[1] + 5;
} else {
particle[1] = particle[1] - 5;
particle[2]=0;
}
break;
case 5:
if (particle[1] > canvas.height) {
particle[0] = particle[0] - 3.535;
particle[1] = particle[1] - 3.535;
particle[2] = 7;
} else if (particle[0] < 5) {
particle[0] = particle[0] + 3.535;
particle[1] = particle[1] + 3.535;
particle[2]=3;
} else {
particle[0] = particle[0] - 3.535;
particle[1] = particle[1] + 3.535;
}
break;
case 6:
if (particle[0] > 5) {
particle[0] = particle[0] - 5;
} else {
particle[0] = particle[0] + 5;
particle[2]=2;
}
break;
case 7:
if (particle[1] < 5) {
particle[0] = particle[0] - 3.535;
particle[1] = particle[1] + 3.535;
particle[2] = 5;
} else if (particle[0] < 5) {
particle[0] = particle[0] + 3.535;
particle[1] = particle[1] - 3.535;
particle[2]=1;
} else {
particle[0] = particle[0] - 3.535;
particle[1] = particle[1] - 3.535;
}
break;
} 
}
else {
particle[3] = particle[3] - 5;
}

// check for a collision
//for (j=0; j<16; j++) {
// if (i != j) {
// xgap = (Math.abs(particle[0] - particle[j][0]));
// ygap = (Math.abs(particle[1] - particle[j][1]));
// // if two particles are close, average out their phase 
// if (xgap < 10 && ygap < 10) {
// newphase = (Math.round(particle[5] + particle[j][5] / 2));
// particle[5] = newphase;
// }
//	}
// }

// Find the sine of the angle
var y = Math.sin(particle[5]*Math.PI/180);

// If the sine value is positive, map it above y = 100 and change the colour to blue
if(y >=0)
{
y = 255 - (y-0) * 255;
context.fillStyle = 'rgb(' + Math.floor + ',0,0)';
}

// If the sine value is negative, map it below y = 100 and change the colour to red
if( y < 0 )
{
y = 255 + (0-y) * 255;
context.fillStyle = 'rgb(0,' + Math.floor(510-y) + ',0)';
}

context.beginPath();
//context.font="20px Georgia";
context.arc(Math.round(particle[0]), Math.round(particle[1]), diam, 0, 6.28, false);
//context.fillText(y,Math.round(particle[0]), Math.round(particle[1]));
context.fill();
}

// request new frame
requestAnimFrame(function() { animate(particle, canvas, context); });
}
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');

// We have six particles. The format of the particles is
"x","y","direction", "delay", "SPL", "phase"
// The directions 0-7 correspond to N, NE, E, etc

var particle = [
[100, 400, 0, 0, 90, 0],
[100, 400, 1, 0, 90, 0],
[100, 400, 2, 0, 90, 0],
[100, 400, 3, 0, 90, 0],
[100, 400, 4, 0, 90, 0],
[100, 400, 5, 0, 90, 0],
[100, 400, 6, 0, 90, 0],
[100, 400, 7, 0, 90, 0],
[800, 225, 0, 700, 90, 0],
[800, 225, 1, 700, 90, 0],
[800, 225, 2, 700, 90, 0],
[800, 225, 3, 700, 90, 0],
[800, 225, 4, 700, 90, 0],
[800, 225, 5, 700, 90, 0],
[800, 225, 6, 700, 90, 0],
[800, 225, 7, 700, 90, 0]
];

var diam = 50;
var frequency = 500;
klaatu = 9
//var klaatu = (diam * (360 (34000 / (frequency * 3))));

// wait one second before starting animation
setTimeout(function() {
var startTime = (new Date()).getTime();
animate(particle, canvas, context);
}, 100);

</script>
</body>
</html>

__


If you want to try this out for yourself, it couldn't be easier, just save it to a directory on your computer and open it up with a browser. Make sure you save the file with a suffix of "html". For instance, "endfire.html" (only cut and paste the code listed above, the code is what's in a fixed font.) I did it in html5 because I didn't want to use a language that required users to install a package, and I didn't want to host a program online.

I simulated the sound waves as particles. If you watch it in action, it looks quite a bit like Robotron 2084 lol

If you want to move the loudspeakers, modify the 'x' and 'y' locations in the array named "particles"


As noted, I'm rewriting the whole thing from scratch. The next version will include SPL, collision detection, etc.
_


----------



## Rrrrolla (Nov 13, 2008)

Thats pretty cool! So the color corresponds to the peak and dip in amplitide? If you could make about million more circles at about 1/10000th the size that eminate in all directions, it would be a pretty amazing simulation. Even right now, you can really see how crazy things get with just a few paths. Well done!


----------



## Patrick Bateman (Sep 11, 2006)

Rrrrolla said:


> Thats pretty cool! So the color corresponds to the peak and dip in amplitide? If you could make about million more circles at about 1/10000th the size that eminate in all directions, it would be a pretty amazing simulation. Even right now, you can really see how crazy things get with just a few paths. Well done!


Yeah, the sims have me wondering if the the 'crosstalk cancellation' speakers are actually doing much cancellation. Because you can see in the sims that the wavefronts aren't remotely coherent; basically because they speakers are so far apart, 75% of the energy of the "mains" winds up scattered against the sidewalls and the backwalls.

I did the wave as "particles" because it's really difficult to figure out collision detection otherwise.

One thing that's KILLING me with this sim is that I completely suck at trig. I was surprised how complex it is to model this stuff; found a 100 page pdf on how to do it that REALLY gets deep into the math.

GPU Gems - Chapter 1. Effective Water Simulation from Physical Models


----------



## Patrick Bateman (Sep 11, 2006)

Here's an improved version of the sim.

It includes the following:

1) a background, which makes it easier to see what's going on
2) the old sim only worked in eight directions; the new one works in 32

I still need to get the collision detection working, so it's commented out for now.

Long story short, cut and paste this html code into a file, load it up in your browser, and you can see how two sources will interact with each other in a car.

If you want to modify it for your own purposes, just change the "x" and the "y" values in the array called "particles"

You can also change the delay.

Here's a pic:










Here's the code. If you want to play around with this, just cut and paste everything that's below here.


<!DOCTYPE HTML>
<html>
<head>
<style>
body {
margin: 0px;
padding: 0px;
}
</style>
</head>
<body>
<body background="https://lh3.googleusercontent.com/-zZZoIgaFNP0/VTEcEf829cI/AAAAAAAAKYk/QunDyy4nb08/s800/112_0707_04z%252B2008_nissan_altima_coupe%252Boverhead_interior_view.jpg">
<canvas id="myCanvas" width="800" height="444"></canvas>
<script>
window.requestAnimFrame = (function(callback) {
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||

window.mozRequestAnimationFrame || window.oRequestAnimationFrame ||

window.msRequestAnimationFrame ||
function(callback) {
window.setTimeout(callback, 1000 / 60);
};
})();

function animate(particle, canvas, context) {
//clear the canvas. Comment out next line if you want to see 'trails'
context.clearRect(0,0,canvas.width,canvas.height);
// first, figure out our new x and y co-ordinate
for (i = 0; i < 64; i++) {
if (particle_[3] < 1) {
// rotate the phase 
particle[5] = particle[5] + klaatu;

switch(particle[2]) {
case 0:
if (particle[1] > 0) {
particle[1] = particle[1] - 1;
} else {
particle[1] = particle[1] + 1;
particle[2]=16;
}
break;
case 1:
if (particle[1] < 1) {
particle[0] = particle[0] + 0.195;
particle[1] = particle[1] + 0.981;
particle[2] = 15;
} else if (particle[0] > canvas.width) {
particle[0] = particle[0] - 0.195;
particle[1] = particle[1] - 0.981;
particle[2] = 31;
} else {
particle[0] = particle[0] + 0.195;
particle[1] = particle[1] - 0.981;
}
break;
case 2:
if (particle[1] < 1) {
particle[0] = particle[0] + 0.383;
particle[1] = particle[1] + 0.924;
particle[2] = 14;
} else if (particle[0] > canvas.width) {
particle[0] = particle[0] - 0.383;
particle[1] = particle[1] - 0.924;
particle[2] = 30;
} else {
particle[0] = particle[0] + 0.383;
particle[1] = particle[1] - 0.924;
}
break;
case 3:
if (particle[1] < 1) {
particle[0] = particle[0] + 0.537;
particle[1] = particle[1] + 0.843;
particle[2] = 13;
 } else if (particle[0] > canvas.width) {
particle[0] = particle[0] - 0.537;
particle[1] = particle[1] - 0.843;
particle[2] = 29;
} else {
particle[0] = particle[0] + 0.537;
particle[1] = particle[1] - 0.843;
}
break;
case 4:
if (particle[1] < 1) {
particle[0] = particle[0] + 0.707;
particle[1] = particle[1] + 0.707;
particle[2] = 3;
} else if (particle[0] > canvas.width) {
particle[0] = particle[0] - 0.707;
particle[1] = particle[1] - 0.707;
particle[2] = 7;
} else {
particle[0] = particle[0] + 0.707;
particle[1] = particle[1] - 0.707;
}
break;
case 5:
if (particle[1] < 1) {
particle[0] = particle[0] + 0.843;
particle[1] = particle[1] + 0.537;
particle[2] = 11;
} else if (particle[0] > canvas.width) {
particle[0] = particle[0] - 0.843;
particle[1] = particle[1] - 0.537;
particle[2] = 27;
} else {
particle[0] = particle[0] + 0.843;
particle[1] = particle[1] - 0.537;
}
break;
case 6:
if (particle[1] < 1) {
particle[0] = particle[0] + 0.924;
particle[1] = particle[1] - 0.383;
particle[2] = 10;
} else if (particle[0] > canvas.width) {
particle[0] = particle[0] - 0.924;
particle[1] = particle[1] - 0.383;
particle[2] = 26;
} else {
particle[0] = particle[0] + 0.924;
particle[1] = particle[1] - 0.383;
}
break;
case 7:
if (particle[1] < 1) {
particle[0] = particle[0] + 0.981;
particle[1] = particle[1] + 0.195;
particle[2] = 9;
} else if (particle[0] > canvas.width) {
particle[0] = particle[0] - 0.981;
particle[1] = particle[1] - 0.195;
particle[2] = 25;
} else {
particle[0] = particle[0] + 0.981;
particle[1] = particle[1] - 0.195;
}
break;
case 8:
if (particle[0] < canvas.width) {
particle[0] = particle[0] + 1;
} else {
particle[0] = particle[0] - 1;
particle[2]=24;
}
break;
case 9:
if (particle[1] > canvas.height) {
particle[0] = particle[0] + 0.981;
particle[1] = particle[1] - 0.195;
particle[2] = 7;
} else if (particle[0] > canvas.width) {
particle[0] = particle[0] - 0.981;
particle[1] = particle[1] + 0.195;
particle[2] = 23;
} else {
particle[0] = particle[0] + 0.981;
particle[1] = particle[1] + 0.195;
}
break;
case 10:
if (particle[1] > canvas.height) {
particle[0] = particle[0] + 0.924;
particle[1] = particle[1] - 0.383;
particle[2] = 6;
} else if (particle[0] > canvas.width) {
particle[0] = particle[0] - 0.924;
particle[1] = particle[1] - 0.383;
particle[2] = 22;
} else {
particle[0] = particle[0] + 0.924;
particle[1] = particle[1] + 0.383;
}
break;
case 11:
if (particle[1] > canvas.height) {
particle[0] = particle[0] + 0.843;
particle[1] = particle[1] - 0.537;
particle[2] = 5;
} else if (particle[0] > canvas.width) {
particle[0] = particle[0] - 0.843;
particle[1] = particle[1] - 0.537;
particle[2] = 21;
} else {
particle[0] = particle[0] + 0.843;
particle[1] = particle[1] + 0.537;
}
break;
case 12:
if (particle[1] > canvas.height) {
particle[0] = particle[0] + 0.707;
particle[1] = particle[1] - 0.707;
particle[2] = 4;
} else if (particle[0] > canvas.width) {
particle[0] = particle[0] - 0.707;
particle[1] = particle[1] + 0.707;
particle[2]= 20;
} else {
particle[0] = particle[0] + 0.707;
particle[1] = particle[1] + 0.707;
}
break;
case 13:
if (particle[1] > canvas.height) {
particle[0] = particle[0] + 0.537;
particle[1] = particle[1] - 0.843;
particle[2] = 3;
} else if (particle[0] > canvas.width) {
particle[0] = particle[0] - 0.537;
particle[1] = particle[1] + 0.843;
particle[2] = 19;
} else {
particle[0] = particle[0] + 0.537;
particle[1] = particle[1] + 0.843;
}
break;
case 14:
if (particle[1] > canvas.height) {
particle[0] = particle[0] + 0.383;
particle[1] = particle[1] - 0.924;
particle[2] = 2;
} else if (particle[0] > canvas.width) {
particle[0] = particle[0] - 0.383;
particle[1] = particle[1] + 0.924;
particle[2]= 18;
} else {
particle[0] = particle[0] + 0.383;
particle[1] = particle[1] + 0.924;
}
break;
case 15:
if (particle[1] > canvas.height) {
particle[0] = particle[0] + 0.195;
particle[1] = particle[1] - 0.981;
particle[2] = 1;
} else if (particle[0] > canvas.width) {
particle[0] = particle[0] - 0.195;
particle[1] = particle[1] + 0.981;
particle[2] = 17;
} else {
particle[0] = particle[0] + 0.195;
particle[1] = particle[1] + 0.981;
}
break;
case 16:
if (particle[1] < canvas.height) {
particle[1] = particle[1] + 1;
} else {
particle[1] = particle[1] - 1;
particle[2]=0;
}
break;
case 17:
if (particle[1] > canvas.height) {
particle[0] = particle[0] - 0.195;
particle[1] = particle[1] - 0.981;
particle[2] = 31;
} else if (particle[0] < 1) {
particle[0] = particle[0] + 0.195;
particle[1] = particle[1] + 0.981;
particle[2] = 15;
} else {
particle[0] = particle[0] - 0.195;
particle[1] = particle[1] + 0.981;
}
break;
case 18:
if (particle[1] > canvas.height) {
particle[0] = particle[0] - 0.383;
particle[1] = particle[1] - 0.924;
particle[2] = 30;
} else if (particle[0] < 1) {
particle[0] = particle[0] + 0.383;
particle[1] = particle[1] + 0.924;
particle[2]= 14;
} else {
particle[0] = particle[0] - 0.383;
particle[1] = particle[1] + 0.924;
}
break;
case 19:
if (particle[1] > canvas.height) {
particle[0] = particle[0] - 0.537;
particle[1] = particle[1] - 0.843;
particle[2] = 29;
} else if (particle[0] < 1) {
particle[0] = particle[0] + 0.537;
particle[1] = particle[1] + 0.843;
particle[2] = 13;
} else {
particle[0] = particle[0] - 0.537;
particle[1] = particle[1] + 0.843;
}
break;
case 20:
if (particle[1] > canvas.height) {
particle[0] = particle[0] - 0.707;
particle[1] = particle[1] - 0.707;
particle[2] = 28;
} else if (particle[0] < 1) {
particle[0] = particle[0] + 0.707;
particle[1] = particle[1] + 0.707;
particle[2]= 12;
} else {
particle[0] = particle[0] - 0.707;
particle[1] = particle[1] + 0.707;
}
break;
case 21:
if (particle[1] > canvas.height) {
particle[0] = particle[0] - 0.843;
particle[1] = particle[1] - 0.537;
particle[2] = 27;
} else if (particle[0] < 1) {
particle[0] = particle[0] + 0.843;
particle[1] = particle[1] + 0.537;
particle[2] = 11;
} else {
particle[0] = particle[0] - 0.843;
particle[1] = particle[1] + 0.537;
}
break;
case 22:
if (particle[1] > canvas.height) {
particle[0] = particle[0] - 0.924;
particle[1] = particle[1] - 0.383;
particle[2] = 26;
} else if (particle[0] < 1) {
particle[0] = particle[0] + 0.924;
particle[1] = particle[1] + 0.383;
particle[2]= 10;
} else {
particle[0] = particle[0] - 0.924;
particle[1] = particle[1] + 0.383;
}
break;
case 23:
if (particle[1] > canvas.height) {
particle[0] = particle[0] - 0.981;
particle[1] = particle[1] - 0.195;
particle[2] = 25;
} else if (particle[0] < 1) {
particle[0] = particle[0] + 0.981;
particle[1] = particle[1] + 0.195;
particle[2] = 9;
} else {
particle[0] = particle[0] - 0.981;
particle[1] = particle[1] + 0.195;
}
break;
case 24:
if (particle[0] > 1) {
particle[0] = particle[0] - 1;
} else {
particle[0] = particle[0] + 1;
particle[2]=8;
}
break;
case 25:
if (particle[1] < 1) {
particle[0] = particle[0] - 0.981;
particle[1] = particle[1] - 0.195;
particle[2] = 23;
} else if (particle[0] < 1) {
particle[0] = particle[0] + 0.981;
particle[1] = particle[1] - 0.195;
particle[2] = 7;
} else {
particle[0] = particle[0] - 0.981;
particle[1] = particle[1] - 0.195;
}
break;
 case 26:
if (particle[1] < 1) {
particle[0] = particle[0] - 0.924;
particle[1] = particle[1] + 0.383;
particle[2] = 11;
} else if (particle[0] < 1) {
particle[0] = particle[0] + 0.924;
particle[1] = particle[1] - 0.383;
particle[2]= 3;
} else {
particle[0] = particle[0] - 0.924;
particle[1] = particle[1] - 0.383;
}
break;
case 27:
if (particle[1] < 1) {
particle[0] = particle[0] - 0.843;
particle[1] = particle[1] + 0.537;
particle[2] = 21;
} else if (particle[0] < 1) {
particle[0] = particle[0] + 0.843;
particle[1] = particle[1] - 0.537;
particle[2] = 5;
} else {
particle[0] = particle[0] - 0.843;
particle[1] = particle[1] - 0.537;
}
break;
case 28:
if (particle[1] < 1) {
particle[0] = particle[0] - 0.707;
particle[1] = particle[1] + 0.707;
particle[2] = 20;
} else if (particle[0] < 1) {
particle[0] = particle[0] + 0.707;
particle[1] = particle[1] - 0.707;
particle[2]= 4;
} else {
particle[0] = particle[0] - 0.707;
particle[1] = particle[1] - 0.707;
}
break;
case 29:
if (particle[1] < 1) {
particle[0] = particle[0] + 0.537;
particle[1] = particle[1] - 0.843;
particle[2] = 19;
} else if (particle[0] < 1) {
particle[0] = particle[0] + 0.537;
particle[1] = particle[1] - 0.843;
particle[2] = 3;
} else {
particle[0] = particle[0] - 0.843;
particle[1] = particle[1] - 0.537;
}
break;
case 30:
if (particle[1] < 1) {
particle[0] = particle[0] - 0.383;
particle[1] = particle[1] + 0.924;
particle[2] = 9;
} else if (particle[0] < 1) {
particle[0] = particle[0] + 0.383;
particle[1] = particle[1] - 0.924;
particle[2]= 1;
} else {
particle[0] = particle[0] - 0.383;
particle[1] = particle[1] - 0.924;
}
break;
case 31:
if (particle[1] < 1) {
particle[0] = particle[0] - 0.195;
particle[1] = particle[1] + 0.981;
particle[2] = 17;
} else if (particle[0] < 1) {
particle[0] = particle[0] + 0.195;
particle[1] = particle[1] - 0.981;
particle[2] = 1;
} else {
particle[0] = particle[0] - 0.195;
particle[1] = particle[1] - 0.981;
}
break;
} 
}
else {
particle[3] = particle[3] - 1;
}

//check for a collision
for (j=0; j<64; j++) {
if ((i != j) && particle[j][6] == 1) {
xgap = (Math.abs(particle[0] - particle[j][0]));
ygap = (Math.abs(particle[1] - particle[j][1]));
// if two particles are close, determine if they null each other out
if (xgap < 10 && ygap < 10) {
isin = Math.sin(particle[5] * 0.0174532);
jsin = Math.sin(particle[j][5] * 0.0174532);
//for the moment, I'm only detecting collisions on particles where they have different polarities
if ((isin >= 0) && (jsin >= 0)) {
//particle[4] = ((isin + jsin)/2);
//particle[j][4] = ((isin + jsin)/2);
}
else if ((isin <0) && (jsin < 0)) {
//particle[4] = ((Math.abs(isin + jsin))/2);
//particle[j][4] = ((Math.abs(isin + jsin))/2);
}
else {
particle[4] = Math.abs(isin+jsin);
particle[j][4] = Math.abs(isin+jsin);
}
}
}
}



// Find the sine of the angle
var y = Math.sin(particle[5]*Math.PI/180);

// If the sine value is positive, map it above y = 100 and change the colour to blue
if(y >=0 )
{
y = 255 - (y-0) * 255;
//if (particle[4] > 0.707) {
if (particle[4] < 10000) {
context.fillStyle = 'rgb(0,0,' + Math.floor + ')';
}
else {
// make the particle inactive and color it the bg color
context.fillStyle = 'white';
particle[6] = 0;
}
}

// If the sine value is negative, map it below y = 100 and change the colour to red
if( y < 0 )
{
y = 255 + (0-y) * 255;
if (particle[4] < 10000) {
context.fillStyle = 'rgb(' + Math.floor(510-y) + ',' + Math.floor(510-y) + ',0)';
}
else {
// make the particle inactive and color it the bg color
context.fillStyle = 'white';
particle[6] = 0;
}
}

context.beginPath();
context.font="12px Georgia";
context.arc(Math.round(particle[0]), Math.round(particle[1]), diam, 0, 6.28, false);
//context.fillText(particle[4],Math.round(particle[0]), Math.round(particle[1])+10);
//context.fillText(particle[6],Math.round(particle[0]), Math.round(particle[1])+10);
context.fill();
}

// request new frame
requestAnimFrame(function() { animate(particle, canvas, context); });
}
var canvas = document.getElementById('myCanvas');
var context = canvas.getContext('2d');

// We have 64 particles. The format of the particles is
"x","y","direction", "delay", "SPL", "phase", "active"
// The directions 0-31 correspond to 90 degrees (N), 78.75 degrees, 67.5 degrees, 56.25 degrees, 45 degrees (NE), etc

var particle = [
[150, 400, 0, 0, 90, 0, 1],
[150, 400, 1, 0, 90, 0, 1],
[150, 400, 2, 0, 90, 0, 1],
[150, 400, 3, 0, 90, 0, 1],
[150, 400, 4, 0, 90, 0, 1],
[150, 400, 5, 0, 90, 0, 1],
[150, 400, 6, 0, 90, 0, 1],
[150, 400, 7, 0, 90, 0, 1],
[150, 400, 8, 0, 90, 0, 1],
[150, 400, 9, 0, 90, 0, 1],
[150, 400, 10, 0, 90, 0, 1],
[150, 400, 11, 0, 90, 0, 1],
[150, 400, 12, 0, 90, 0, 1],
[150, 400, 13, 0, 90, 0, 1],
[150, 400, 14, 0, 90, 0, 1],
[150, 400, 15, 0, 90, 0, 1],
[150, 400, 16, 0, 90, 0, 1],
[150, 400, 17, 0, 90, 0, 1],
[150, 400, 18, 0, 90, 0, 1],
[150, 400, 19, 0, 90, 0, 1],
[150, 400, 20, 0, 90, 0, 1],
[150, 400, 21, 0, 90, 0, 1],
[150, 400, 22, 0, 90, 0, 1],
[150, 400, 23, 0, 90, 0, 1],
[150, 400, 24, 0, 90, 0, 1],
[150, 400, 25, 0, 90, 0, 1],
[150, 400, 26, 0, 90, 0, 1],
[150, 400, 27, 0, 90, 0, 1],
[150, 400, 28, 0, 90, 0, 1],
[150, 400, 29, 0, 90, 0, 1],
[150, 400, 30, 0, 90, 0, 1],
[150, 400, 31, 0, 90, 0, 1],
[800, 225, 0, 700, 90, 0, 1],
[800, 225, 1, 700, 90, 0, 1],
[800, 225, 2, 700, 90, 0, 1],
[800, 225, 3, 700, 90, 0, 1],
[800, 225, 4, 700, 90, 0, 1],
[800, 225, 5, 700, 90, 0, 1],
[800, 225, 6, 700, 90, 0, 1],
[800, 225, 7, 700, 90, 0, 1],
[800, 225, 8, 700, 90, 0, 1],
[800, 225, 9, 700, 90, 0, 1],
[800, 225, 10, 700, 90, 0, 1],
[800, 225, 11, 700, 90, 0, 1],
[800, 225, 12, 700, 90, 0, 1],
[800, 225, 13, 700, 90, 0, 1],
[800, 225, 14, 700, 90, 0, 1],
[800, 225, 15, 700, 90, 0, 1],
[800, 225, 16, 700, 90, 0, 1],
[800, 225, 17, 700, 90, 0, 1],
[800, 225, 18, 700, 90, 0, 1],
[800, 225, 19, 700, 90, 0, 1],
[800, 225, 20, 700, 90, 0, 1],
[800, 225, 21, 700, 90, 0, 1],
[800, 225, 22, 700, 90, 0, 1],
[800, 225, 23, 700, 90, 0, 1],
[800, 225, 24, 700, 90, 0, 1],
[800, 225, 25, 700, 90, 0, 1],
[800, 225, 26, 700, 90, 0, 1],
[800, 225, 27, 700, 90, 0, 1],
[800, 225, 28, 700, 90, 0, 1],
[800, 225, 29, 700, 90, 0, 1],
[800, 225, 30, 700, 90, 0, 1],
[800, 225, 31, 700, 90, 1]
];

var diam = 10;
var frequency = 500;
klaatu = 1.8
//var klaatu = (diam * (360 (34000 / (frequency * 3))));

// wait one second before starting animation
setTimeout(function() {
var startTime = (new Date()).getTime();
animate(particle, canvas, context);
}, 100);

</script>
</body>
</html>

_


----------



## Patrick Bateman (Sep 11, 2006)

I don't want to spam the forum with more code, but I think I came up with a config that works really nicely:

Basically you put one midbass under the dash, and then another midbass in the door. *You delay the driver at the door.*

What happens is that the wave from the firewall is reinforced by the wave from the door speaker.

This might seem like a subtle thing, but in the sim it really appears to reduce radiation to the back of the car, which should have the effect of reducing the 'room sound.'

Basically get you closer to what's on the recording, without treating the room/car.

If anyone wants to play with that sim, lmk and I'll post it.


----------



## onebadmonte (Sep 4, 2008)

Patrick Bateman said:


> I don't want to spam the forum with more code, but I think I came up with a config that works really nicely:
> 
> Basically you put one midbass under the dash, and then another midbass in the door. *You delay the driver at the door.*
> 
> ...


Lets have a looksie.


----------



## ajsmcs (Jan 26, 2015)

So MiniDSP now has an Ambiophonics plugin. Click here!

What's interesting is that it suggests a much narrower front speaker placement angle (20degrees) than what we're used to seeing. Then you use rear speakers for the cancellation effect.

Here is an interesting thought I've had:
What if you could mount a second set of woofers - one each in the center console directly across from the ones in the doors - and a second set of tweeters on the dash, giving you two separate pairs of stereo components, one for each passenger. This would give you that narrow ~20* angle.

Then run two sets of cancellation speakers in the back. Then you would run a combined "near-field-left + far-field-right" cancellation to the right ear, and a "near-field-right + far-field-left" to the left ear. 

If you do it right, you could in theory give perfect binaural sound to both front seat occupants.


----------



## Patrick Bateman (Sep 11, 2006)

Here's some random thoughts:

It's kind of a bummer that miniDSP released an ambio plugin; that just made my miniAmbio kinda obsolete. (MiniAmbio is from the same company as miniDSP.)

I tried a bunch of similar technologies. I found that many of the ambio plugins sounded different, in fact the first one I tried sounded terrible. The miniAmbio sounded the best by far.

I would rate the sound quality like this:
#3 - Ambiophonic with miniAmbio
#2 - the crosstalk cancellation scheme described in this thread, which is basically a variant on Polk Stereo Dimensional Array (Polk Audio Stereo Dimensional Array Vintage Speakers)
#1 - OPSODIS

The thing I didn't like about ambiophonics was that the crosstalk cancellation sapped the dynamics, because it's nulling low frequencies. (Because it's out of phase.) My variant on Polk SDA fixed that problem, but it introduced a new one. *I found that it made everything huge and amorphous, even if that wasn't what the original recording sounds like.* For instance, one of my test tracks has a guitar that's panned hard to the left. On a conventional stereo, the guitar sounds like it's at 9 o'clock. On my pseudo-SDA setup, the guitar sounds almost as wide as the stage, and it's not panned hard to the left, like it should be.

Which leaves OPSODIS. Opsodis doesn't give you that crazy wide soundstage that my pseudo-SDA setup does. But when a guitar is played in the left channel, you only hear it in the left channel.

There's a fairly simple explanation for all of this, of course. The crosstalk cancellation speakers can't cancel out crosstalk perfectly. I sat there with my microphone and I modified the arrival times so that they're in sync, but to do a perfect crosstalk cancellation probably isn't physically possible, at least not passively. (Yes, you could do perfect crosstalk cancellation with miniAmbio, but then we have the dynamics problem.)

Once you start pondering all of this, you start to realize why there's so many ambiophonic variations. Basically a lot of this is subject to taste, so one crosstalk cancellation scheme might suit me, but wouldn't suit someone else. For instance, the average listener is going to be floored by the huge soundstage that's possible with the scheme described in this thread. I was floored, but critical listening started to reveal the faults. If you simply wanted to "WOW" the average listener, the scheme described in this thread is the one you want.

I have found that OPSODIS is a nice 'middle ground' between the ultra huge stage of this thread, and the narrow stage of conventional stereo. Thanks to the wonders of miniDSP, I've found that you can really improve OPSODIS with a careful selection of speaker location, xover point, and most importantly, xover slope. (That's the key!)

There's also one "improvement" to OPSODIS that I made, and when you see it, everyone is going to think I'm nuts. But this "improvement" seems to improve soundstaging and smoothness noticeably. 

Stay tuned to my build thread aka "28 Weeks Later" for more developments.


----------



## Patrick Bateman (Sep 11, 2006)

ajsmcs said:


> So MiniDSP now has an Ambiophonics plugin. Click here!
> 
> What's interesting is that it suggests a much narrower front speaker placement angle (20degrees) than what we're used to seeing. Then you use rear speakers for the cancellation effect.


haha, it would help if I actually clicked on the link; *this is the same box that I already have.*

If you want one of these, I'd purchase one fairly soon. When I ordered mine, the order included a serial number, and that serial number would imply that this product wasn't very popular at all.

So I wouldn't be surprised if this is a "one and done" kinda deal, where once they're gone, they're G-O-N-E

To make this thing sound the best, you'll need to calculate the optimal values for the DSP, the formula for doing that is at Home Page

I made a spreadsheet for it, if anyone has a miniAmbio and wants to calculate the optimal value, lmk and I'll upload it



ajsmcs said:


> Here is an interesting thought I've had:
> What if you could mount a second set of woofers - one each in the center console directly across from the ones in the doors - and a second set of tweeters on the dash, giving you two separate pairs of stereo components, one for each passenger. This would give you that narrow ~20* angle.
> 
> Then run two sets of cancellation speakers in the back. Then you would run a combined "near-field-left + far-field-right" cancellation to the right ear, and a "near-field-right + far-field-left" to the left ear.
> ...


The narrow angle of ambiophonics works surprisingly well. You'd be shocked how wide a stage you can get with two speakers that are six inches apart. (With ambio processing, particularly.)

Here's the problem:

*At low frequencies, our perception of location is based on phase.* IE, if there's a guitar in the left channel of your recording, our perception that it's in the left channel is because of a time arrival difference between your two ears.









As frequencies get lower, the crosstalk cancellation is less effective, IMHO. You'll notice that the ambio folks use some serious room treatment, and the reason they do that is because room reflections can 'clue you in' to the fact that the speakers are in front of you, not to the left and to the right.

But there's a really elegant solution to all of this. If you can't 'fake' the fact that the low frequencies aren't really coming from the left and the right, then simply *put the low frequencies to the left and to the right!*









Which is exactly what OPSODIS does. The low frequencies are to the left and to the right, and the midrange and highs are directly ahead. Due to the fact that reflections are a lot easier to treat above 1khz, it's shockingly easy to "fake" the location of midrange and tweeters.

Trying to "fake" the location of a midbass is much harder. I've found that I can perceive when my midbass is moved even a few inches. For instance, soundstage width and depth suffers noticeably when the midbasses aren't located properly. Conversely, putting your tweeters in a sub-optimum location is surprisingly easy to fix with processing. The HLCD crowd has been manipulating stage height and depth via processing since the 90s - but only above 1khz.


TLDR : you can't easily fake the location of midbass. If you put your midbass in the wrong location, it will probably sound like it, no matter how much processing you use. So midbass location is possibly one of the most important questions in an install.


----------



## khaoticle (Aug 11, 2009)

sub'd, thanks.


----------



## cajunner (Apr 13, 2007)

so, Cadillac is making a "wow!" factor system that upon more extended listening, is dependent on diffuse stage characteristics to get that wide expanse.

A competition-level system will have more defined imaging and proportional size, but sound somewhat less "busy" by comparison...

or, the complex design of the Cadillac by way of extra processing is only serving to cater to the audience of car buyer that has hard-of-hearing concerns, haha...

really, I think going back to simple will win out over these overly complex OEM premium systems, much as many people tear out 9 speaker, 340 watt stock systems to put in something else, the actual design goal of a supposed "SQ" enthusiast is mainly to produce higher volume at clarity, anyway. IMHO, of course.


----------



## XSIV SPL (Jun 24, 2014)

Thank you for sharing this!

This is something I'd never even pondered previously and am now wondering "why" I've never heard of it before, as simple as it is...


----------



## ajsmcs (Jan 26, 2015)

Patrick Bateman said:


> Here's some random thoughts:
> 
> It's kind of a bummer that miniDSP released an ambio plugin; that just made my miniAmbio kinda obsolete. (MiniAmbio is from the same company as miniDSP.)
> 
> ...


Assuming you get your midbass woofer pathlengths as equal as possible, do you think you could get perfect stereo imaging for both front occupants using two sets of tweeters/mids with ambiophonics, one for each occupant?


----------



## Patrick Bateman (Sep 11, 2006)

ajsmcs said:


> Assuming you get your midbass woofer pathlengths as equal as possible, do you think you could get perfect stereo imaging for both front occupants using two sets of tweeters/mids with ambiophonics, one for each occupant?


No, I don't think so.

I didn't really get into DSP until about a year ago, but now that I am, *I'm a believer.*

And I've found that even small amounts of delay are audible in the midrange and lower midbass.

For instance, if you use delay to get the midbasses in sync at one position, it makes an unmistakable improvement in the soundstage.

But that improvement only works at one spot - where the mic is.

If I wanted to do a two-seat car I'd buy a second miniDSP, and I'd put them on a USB switch. So basically you'd have one for the drivers seat, one for the passenger seat, and you could toggle between the two.


----------



## ajsmcs (Jan 26, 2015)

Patrick Bateman said:


> No, I don't think so.
> 
> I didn't really get into DSP until about a year ago, but now that I am, *I'm a believer.*
> 
> ...


I had thought of another method for doing that.

Basically, create 4 separate EQ/TA profiles. One for Driver, one for Passenger, one for Both, and one for All Seats.

Have the Mini always connected/synced to a micro-PC with its own onboard flash memory. The micro PC would have a remote controller with 4 buttons. 
Pressing one of the buttons would initiate a macro that loads the corresponding save file to the MiniDSP. 

The neat part is that it would not require any modification to the MiniDSP itself. And if you did it right, you could make it control several different MiniDSPs at once. You wouldn't need to limit it to those 4 presets either. You could make Driver Stereo, Driver Surround, Driver Ambio, etc. You could also integrate it with the MiniDC isolator and power it through the USB cable.

Unfortunately, that sort of thing is well outside my skill set. I'm an ME, not a computer engineer, and I have enough projects on my plate at the moment (finish my 3D printer, restore my sailboat, build the briefcase boombox I've been collecting parts for for the last 2 months, blah blah blah...) to spend the time it would take to learn everything.

So I emailed MiniDSP to see if that would be a thing they would do. I'm sure I'm far from the only one that would pay for such a thing. 

Turns out that 1) no it isn't because 2) their 2-in/8-out not-so-MiniDSP actually _has_ that functionality built-in (despite the fact that they really don't advertise it) and they recommend just buying that if you want an external controller. :mean:

Not to derail your thread or anything.


----------



## Orion525iT (Mar 6, 2011)

ajsmcs said:


> Turns out that 1) no it isn't because 2) their 2-in/8-out not-so-MiniDSP actually _has_ that functionality built-in (despite the fact that they really don't advertise it) and they recommend just buying that if you want an external controller. :mean:
> 
> Not to derail your thread or anything.


I was just going to mention the 2x8 has 4 presets, which I plan to use for that reason and to make experimenting easier. Of course that means a car pc or tablet on hand. 

Honestly thought the other 2x4 had the same ability.


----------



## ajsmcs (Jan 26, 2015)

The 2x8 controller is kinda whacky, too. You'd think they'd give it a nicely-finished aluminum case, but its just a bare board with LEDs. VOL-FP | MiniDSP

If memory serves me right, I think the 2x8 also only gets 5 - rather than 6 - PEQs per channel. And the case costs (a lot) extra. They don't even show pictures of what it looks like. You'd think for a unit that seems tailor-made for car-usage (it has a DC-isolator built in...), it would just come with the darn case.


----------



## ajsmcs (Jan 26, 2015)

Orion525iT said:


> I was just going to mention the 2x8 has 4 presets, which I plan to use for that reason and to make experimenting easier. Of course that means a car pc or tablet on hand.
> 
> Honestly thought the other 2x4 had the same ability.


It really should. Even if it ups the price by like $20, I'd still pay it.

I'd really like them to make a version of the Unbalanced 2x4 with 2V preouts in the same case they use for the Balanced 2x4, too, but that's another story...


----------



## Patrick Bateman (Sep 11, 2006)

Here's a funny one:

*For the life of me, I cannot figure out how to take a stereo signal and turn it into two signals. One signal in mono, one in stereo.*

This seems like such a trivial thing to do; I can imagine I'm the first person in the world that wanted to run stereo for his front stage, and run mono for something else.

*But I can't figure out how to do it.*

At first I thought you could just split the cable, but then realized that would turn everything into mono.

Then I thought I might be able to find a mixer that would give me one stereo input and multiple stereo outputs. And then I could turn one of the *stereo* outputs into mono.

But, nope, all of the small mixers have multiple INPUTS but one output. So that's the opposite of what I need.

I looked on the miniDSP site, and they have a plugin that does stereo output and mono output. Which looks close to what I need. But it's not clear if the mono output is full range, and it appears that it nukes one of the four output channels.


Basically, I wish there was a "toggle" that would simply give me a mono output on one of the channels. Maybe the 2.1 plugin does that; I should probably spend ten bucks to find out.


----------



## Orion525iT (Mar 6, 2011)

ajsmcs said:


> If memory serves me right, I think the 2x8 also only gets 5 - rather than 6 - PEQs per channel. You'd think for a unit that seems tailor-made for car-usage (it has a DC-isolator built in...)


As far as the case, I kinda disagree as these are considered diy solution, and they may have figured that people would want to mount the board in esoteric ways.

The 2x8 has "only" 5 PEQ per channel, *but* it has eight channels, not four (so a total of 40 PEQ vs 24 PEQ). I don't know about the 2x4 but you also have 5 PEQ per input (2x5 = 10) on the 2x8 that act globally. And it is quite powerful in what you can do with different shelving filters and Q. 

Patrick, the 2x8 allows you to lock 2 channels together effectively making a mono signal. Any adjustment in TA or EQ applies to both channels. There is even an option for sub EQ, which disables one PEQ and adds biquad for LT. So you get 4 PEQ plus the biquad. You can use a spreadsheet, input parameters, and it will spit out digital coefficients to copy into the advanced biquad for the targeted LT response.


----------



## ajsmcs (Jan 26, 2015)

Yeah, 2x4 has 6 global PEQs per input for a total of 36.

You can do the LT biquad programming on the standard 2x4 as well. Any of the PEQ can be switched over to "Advanced Biquad Programming" mode. When you import EQ data from Room EQ Wizard, basically all it does is switch all of the PEQs to Biquad mode and copy over the text file data. *Click here for the link!*

I didn't realize the 2x8 let you lock channels together. That's really neat. So you could effectively do a 2-way front stage + subwoofer + rear mono surround sound from a single board. Add 2 extra volume pots to the remote interface for Rear and Subwoofer volume, and I would totally buy one.


----------



## Woosey (Feb 2, 2011)

Patrick Bateman said:


> Our left speaker is delayed 1ms. That's because it's .35 meters closer than our right. (Again, the right speaker is "zero".)* Sound travels 2.94 meters in one second.* So .35 of a meter gives us 0.9996 ms. (.35 of a meter * 2.94 meters in one sec)
> 
> We do the exact same math with the headrest speakers:
> The headrest speakers are 0.2 meter away. Our right speaker is 1.35m away. So we have to delay the headrest speakers so that they're in sync with the right speaker:
> ...


??



PS. isn't this theory only applicable in/with binaural recordings?


----------



## ajsmcs (Jan 26, 2015)

Binaural recordings would maximize the effect of "being in the room" with the musicians, but that doesn't mean that normal stereo wouldn't also benefit greatly from the setup.

All you're doing is eliminating speaker crosstalk to mimic the effect of wearing headphones, without actually needing to wear headphones.


----------



## Woosey (Feb 2, 2011)

ajsmcs said:


> Binaural recordings would maximize the effect of "being in the room" with the musicians, but that doesn't mean that normal stereo wouldn't also benefit greatly from the setup.
> 
> All you're doing is eliminating speaker crosstalk to mimic the effect of wearing headphones, without actually needing to wear headphones.


hmmm... I have my doubts on that statement...


If you're one a live venue, ( or where ever ) you listen to the world around you with both ears, making it possible to cue/point where your listening to/at

In my understanding binaural is practically "only" used with headphones, with the information for this localization mixed in the other side to give this depth/staging you don't have due to the listening via separated/isolated drivers


----------



## Patrick Bateman (Sep 11, 2006)

Woosey said:


> ??
> 
> 
> 
> PS. isn't this theory only applicable in/with binaural recordings?


It's plain ol crosstalk cancellation

The only difference is that the cancellation signal is radiated at the listener, not the source

Ever wear a pair of noise cancelling headphones? And the headphones filter out the room? This is similar, but it's reinforcing the stereo signal

If someone patents this, send me a check plz


----------



## ajsmcs (Jan 26, 2015)

Woosey said:


> hmmm... I have my doubts on that statement...
> 
> 
> If you're one a live venue, ( or where ever ) you listen to the world around you with both ears, making it possible to cue/point where your listening to/at
> ...


Right....but what is there to doubt?

With this ambiophonic setup, you're using a second speaker at (for example) your* left* ear playing what it would otherwise hear from the *right* speaker, but *out of phase.* So what you've done is cancelled out the *right* speaker sound wave, but *only* at the* left* ear. (And vice versa for the right)

So what you're left with is the* left* ear *only* hearing the* left* speakers, and the *right* ear *only* hearing the *right* speakers.

In other words, *you are using an array of carefully tuned and positioned loudspeakers to mimic the isolating effect of headphones.
*
So if your music was recorded with a dummy head (aka binaural) and you are using this ambiophonic setup, your brain will receive the same types of spatial cues that it would with headphones.

Same with stereo. It would be just like listening with headphones.

If you have an ideal, properly treated listening room with proper speaker setup, it might not make as big of a difference.

But in a car- where your listening environment can at _best_ be described as "tolerably mediocre," and reflections abound, it would make a much bigger difference.


----------



## Woosey (Feb 2, 2011)

Patrick Bateman said:


> It's plain ol crosstalk cancellation
> 
> The only difference is that the cancellation signal is radiated at the listener, not the source
> 
> ...


I know, but isn't the human hearing designed to work with both ears to localize sound sources? 

No noise cancelling headphones, but I don't need them 

Cancelling all reflections would seem more logical, the human hearing afaik needs to hear a source with both ears ( within a frequency band ) just like watching with both eyes ( close one eye and depth is a pita to recognize. 

Sorry that I'm sounding skeptical, it just makes no sense to me.. I still do appreciate what you do for the community


----------



## Patrick Bateman (Sep 11, 2006)

Skeptical is good!

In theory, it shouldn't matter if you do the crosstalk cancellation "in the mix", at the speakers, or at your ears. 

In practice, I found that this project had a habit of making everything sounds "spacious." It's a neat effect, but it sounded a bit too much like headphones out-of-phase. 

I never tried doing the reverse, which would be to augment the stereo signal, instead of cancel it out. 

I would think that either solution would be viable; you're basically exaggerating the stereo cues. But doing the reverse of crosstalk might cut down the tendency to sound too spacious. (Since signals out of phase always sound spacious.)

As for the binaural stuff, it doesn't matter here, the wavelengths are too long. 2khz is 17cm; that's way bigger than your ears. In fact, that's why phase is so important below 1khz, we detect location via phase because the wavelengths are long. 

One other complication could be that the "cancellation" speakers are to the left and the right. That might exaggerate soundstage width because it maximizes the time delay between our ears. 

IE, when you have speakers in a triangle, the maximum width is the width of the triangle, because we detect location based on the time difference between our ears. (Phase.)

But putting that second set of speakers to the left and to the right increases the width further, because the delay between your two ears is maximized. 

And of course, the entire illusion depends on getting all speakers in-sync via DSP. Basically we want all sound to arrive simultaneously.


----------



## fcarpio (Apr 29, 2008)

Subbed.


----------



## Patrick Bateman (Sep 11, 2006)

I noticed that Siegfried Linkwitz published an article that's very similar to the setup that I stumbled upon a few years ago.

The results that I achieved with this setup were quite extraordinary; even our thirteen year old daughter noticed the difference immediately. So if you have some time to kill and a miniDSP, it's quite an experiment.

On the downside, I did find the results grew fatiguing. But I have the attention span of a gnat, so there's that too.

Here's Linkwitz' article : WATSON-Stereo_Expansion_Loudspeakers


----------

