4 ms·
“Canceling out” requires knowing the exact phase of the sound hitting your ear, so that you can cancel it by playing a sound 180 degrees out of phase. First pr
by dandelany 4y ago
“Canceling out” requires knowing the exact phase of the sound hitting your ear, so that you can cancel it by playing a sound 180 degrees out of phase.
First problem: Your system needs to be perfectly synced up in time with the known sound being played. Human hearing goes to ~20KHz, so you need to be synced up with an error of <0.1 ms per second, probably much less. That’s gonna be tough.
Next problem: as you move around the room, your distance to the speaker changes, and you go out of phase. So you need positional data for your ears with sub-centimeter accuracy.
Can we get rid of the first two problems by using a microphone to detect the signal and auto-correct its phase as you move? Maybe but then you need an incredible algorithm to be able to pick out the correct part of the signal from all the background noise and echoes, plus it has to run in real-time at high sample rates. Very very difficult.
Then even if you solve these issues, you also have to cancel the echoes of the song bouncing off the walls etc. If you’re trying to take advantage of the fact that it’s a “known song” you then need an extremely good model of the room you’re in to predict how the sound will bounce.
In short, I suspect it’s “theoretically possible” but completely infeasible.
- foreigner 4y agoFor a known piece of music some if these problems go away, don't they? Regarding sync response time I don't think that's so much of an issue because after you recognize the song you know what the future waveform will look like in advance.
- dandelany 4y agoYou know roughly what the future looks like, but it only takes a tiny (sub-millisecond) amount of error (due to user movement, clock drift, wireless lag etc etc) to throw the phasing off and ruin the effect. So you still need some combination of precise modeling/listener positional data and/or a sophisticated algorithm that uses an input signal to detect and correct the error and keep you “out of phase”