how extract a single mic signal from c_4x_pdm_mic_0 channel returned by mic_array_pdm_rx()

Voice related projects and technical discussions
Post Reply
Fabrizio
Member
Posts: 15
Joined: Fri Mar 02, 2018 6:05 pm

how extract a single mic signal from c_4x_pdm_mic_0 channel returned by mic_array_pdm_rx()

Post by Fabrizio »

Hi all,
I would like to extract a mic signal from the 4-mic streaming channel "c_4x_pdm_mic_0" outputted by mic_array_pdm_rx().

From pdm_mic.xc :

mic_array_pdm_rx(p_pdm_mics, c_4x_pdm_mic_0, c_4x_pdm_mic_1);
mic_array_decimate_to_pcm_4ch(c_4x_pdm_mic_0, c_ds_output[0], MIC_ARRAY_NO_INTERNAL_CHANS);

I added a task that take c_4x_pdm_mic_0 as an input channel.
I saw that mic_array_pdm_rx returns more or less 1536000 integers per second.
Taking into account that the flow is at 384kHz, this means 384k integers/sec for each mic.

Does anyone know how the 4 mics data are chained in to this streaming channel?
How many bits is the length of each mic sample?
Do you have any example code showing how extract such mics?

Many thanks
Fabrizio


User avatar
infiniteimprobability
XCore Legend
Posts: 1126
Joined: Thu May 27, 2010 10:08 am
Contact:

Post by infiniteimprobability »

Just to be clear - you want intercept the 384kHz audio post first stage?

There will be a lot of modulation noise up to the 0.1 * 3.072MHz stopband so you will definitely need subsequent stages of filtering.

The data format is just signed (32b) ints..
Fabrizio
Member
Posts: 15
Joined: Fri Mar 02, 2018 6:05 pm

Post by Fabrizio »

Hi,
I should extract one mic signal sampled at 48 kHz (96 kHz also could be fine).
What do you suggest me to do?

I thought about 2 alternatives:

1) extract the 96 kHz signal after the first stage inside mic_array_decimate_to_pcm_4ch() and decimate it.
This requires to change the assembler code and for now I am not able to do it.

2) use the output channel from mic_array_pdm_rx() and decimate it to 48 kHz.

About the data format ... signed 32b for each mic ... therefore each frame is 4 interleaved samples? (mic0, mic1, mic2, mic3 and so on)

Thanks for your help
Fabrizio
Post Reply