Modifying FFVA for Real-time Audio Loopback

Technical questions regarding the XTC tools and programming with XMOS.
bennychainik
Junior Member
Posts: 4
Joined: Wed Jul 09, 2025 6:48 am

Modifying FFVA for Real-time Audio Loopback

Post by bennychainik »

I want to use the ffva example from the sdk on the xkvoice l71 development kit to create a low-latency audio loopback. My goal is to route the audio from the both the mics on the kit directly back to the DAC and j3 speaker port to monitor the input in real-time.Can you provide guidance on changes needed in the code, particularly concerning the data flow and buffer management? Are there any specific configurations or settings I should be aware of to ensure a true real-time, low-latency loopback?the FFVA example is for low-latency audio capture and playback, which is crucial for a real-time loopback so I want to change it for my need

In the future, I plan to integrate a custom Dynamic Range Compression (DRC) algorithm into this pipeline. I'm looking for advice on where to place this algorithm within the existing FFVA architecture.
Any advice on both the loopback setup and the future DSP integration would be greatly appreciated. Thanks!
User avatar
andrewxcav
Verified
Experienced Member
Posts: 83
Joined: Wed Feb 17, 2016 5:10 pm

Post by andrewxcav »

Will the monitor be headphones or a speaker? If it is a speaker you may need to incur a latency for AEC/anti howl processing.

Either way, I think you would want to start with an empty pipeline and add your DSP from there:

https://github.com/xmos/sln_voice/tree/ ... ence/empty

Another route would be to follow this app note:

https://www.xmos.com/file/an02031-live- ... d-example/

and fork: https://github.com/xmos/lib_board_support/tree/develop to add support for the L71 kit.

Cheers,
-Andrew
bennychainik
Junior Member
Posts: 4
Joined: Wed Jul 09, 2025 6:48 am

Post by bennychainik »

I will be using headphones mostly
bennychainik
Junior Member
Posts: 4
Joined: Wed Jul 09, 2025 6:48 am

Post by bennychainik »

Could you please tell me the steps I need to follow
User avatar
andrewxcav
Verified
Experienced Member
Posts: 83
Joined: Wed Feb 17, 2016 5:10 pm

Post by andrewxcav »

Good news, it looks like there is a pending pull request for the L71 support:

https://github.com/xmos/lib_board_support/pull/31

The sound card example is here:

https://github.com/xmos/lib_board_support/pull/31

You will have to modify the application's CMakeLists.txt to point at the fork (until the PR is approved):

https://www.xmos.com/download/xcommon-c ... _3_0).pdf/ (section 7.4 gives the format, you will just modify the one line in the CMakeLists.txt in the application folder)

The only other wrinkle is getting the microphones to be the input, rather than I2S (since the multi channel board has I2S ADCs and the L71 board does not), this should just be a #define in your xua_conf.h, but you will want to make sure you know which tile the mics are on, where the mclk is coming from, etc.
https://www.xmos.com/download/xcommon-c ... _3_0).pdf/

Cheers,
-Andrew