I'm developing a means of bringing several sensor signals, modulated t开发者_如何学JAVAogether into one signal, into the iPhone through the audio input. I need to do several things:
- Demodulate these signals from the input signal through a trivial filter chain, and then output each down its own signal path for further processing--must be realtime.
- Playback a sonified version of each signal--preferably realtime.
- Stream each signal out over a network connection--preferably realtime.
- Store each signal in a PCM file--need not be realtime.
I need help conceptualising the signal chain in this process. I've begun to sketch the design using Audio Units. First of all, have I gone too low-level by choosing Audio Units? Would this be implementable with Audio Queue Services? Nevertheless, I've got to the point where I've the modulated signal coming in (have not demodulated it yet), am sonifying it in real time, and am passing the sonified signal back out the output. Now, in order to split this signal into two separate sections of the signal chain, I would imagine doing something like routing the output of my Remote I/O unit into two separate input buses on a Multichannel Mixer Unit, and sonifying/writing-to-disk/writing-to-network in the Multichannel Mixer Unit's callbacks.
However, is this too much processing for a realtime thread? Am I really going to be able to accomplish this, or will I need to pull some of the functionality offline? Second, is it possible to route the I/O Unit's input element's output to separate input elements of a Multichannel Mixer Unit? If not, would I be able to specify a multichannel stream description, and split the origin
Multi-channel audio demodulation is certainly possible on an iOS device. It's been done using DSP IIR filter banks, FFT filtering, and etc. The ARM NEON vector unit has more DSP crunching power than many specialized DSP chips of just a few years back.
I suggest using the Audio Unit or Audio Queue services just for data acquisition. Then just queue up the PCM samples and feed them to your DSP processing blocks.
Whether you can stream the data over a network depends on the number of channels, data rate per channel, data compression ratios, variance in network bandwidth, and etc.
精彩评论