I am pretty new to DSP. I need a computer to transmit data to a receiver through audio signals in a loud outdoor environment. (I am writing the software for both sender and receiver so I can design the signal however I want.) I am using cheap speakers and microphones operating at 44.1Khz.
I would like for the sender to emit a signal that can be recognized by the receiver with extremely high accuracy on the time domain. This signal does not need to contain any information, the receiver just needs to be able to figure out exactly when the signal started, ideally down to the exact sample.
My first idea was for the sender to emit a 2kHz wave for 250ms. The receiver would continuously perform FFT to identify that wave, and when present, it would look at the FFT history to figure out the sample at which the wave had started. However this approach feels clunky because of the number of samples needed to satisfy the FFT. I could never achieve 1-sample accuracy without doing an FFT for each sample, and I don't think it would even give me good results.
I have been learning about PSK for unrelated reasons, and I am getting the impression that there are lots of ways to detect properties of waves – without the FFT. So my question is – what methods could I use to identify an instantaneous change in my input signal, in an extremely noisy environment?