Creating multiple BIGs with one gateway (nRF5340 Audio DK)

My project goal is to broadcast four different languages simultaneously using Auracast. Each language will be transmitted on its own BIG so that Auracast-compatible devices, such as Galaxy Buds, can select and listen to the desired language.

As a first step, I am currently trying to receive two language streams and create two BIGs.

Before starting this work, I successfully built and ran the broadcast_source sample from the nrf_audio application in nRF Connect SDK.

I have two questions:

  1. I would like to receive audio for multiple languages over a single USB connection by using multiple USB audio channels (or another recommended USB audio architecture). Is this the recommended approach? If so, are there any examples or documentation that I should refer to?
  2. Before creating multiple BIGs, my understanding is that each audio stream needs to be encoded separately in encoder_thread() before being sent to the corresponding BIG. Is my understanding correct? If so, could you point me to the relevant source files, documentation, or examples that explain how this part of the audio pipeline is implemented?

I have tried to find documentation and examples related to these two topics, but I have not been able to find any useful references.

I would greatly appreciate it if you could provide some guidance on where I should start looking or which parts of the source code and documentation I should study.

Thank you very much.

Parents
  • Hello,

    Thanks for registering your question with us. Please note that Nordic Semiconductor is currently in a summer break period and many of our resources are out of office. We will provide an answer back in a timely manner, and update you as soon as possible. In advance, thank you for you patience.


    I've forwarded your question internally and hope to have an answer within 3 business days.

    Kind regards,
    Øyvind

  • I have a few additional questions regarding a mono audio broadcasting configuration.

    Assuming that I use mono audio, I would like to create 4 BIGs, where each BIG contains a single BIS (for a total of 4 BIGs and 4 BIS streams).

    My questions are:

    1. Is it sufficient to run four LC3 encoders (one encoder per BIS) in this configuration?
    2. Is it possible to implement this on a single nRF5340 Audio DK?

    In addition, I would like to ask about the following:

    1. How can I configure the nRF5340 Audio DK to broadcast mono audio using 4 BIGs, with each BIG containing a single BIS (4 BIGs / 4 BIS in total)?
    2. If I receive a single USB Audio stream from a host (e.g., Jetson), what is the recommended way to separate it into four channels (KOR, ENG, JAP, CHA) and feed them to four LC3 encoders? Is this architecture supported or recommended? (As I understand it, the audio_system.c receives audio as two channels (L/ R stereo))

    Thank you for your help.

  • I understand that the broadcast_source sample is structured as follows:

    Audio (L/R) → LC3 Encoder → BIG (L BIS / R BIS).

    KOR (L/R) -> LC3 Enc - BiG( L BIS / R BIS )

    ENG(L/R) -> LC3 Enc - BiG( L BIS / R BIS )

    JAP (L/R) -> LC3 Enc - BiG( L BIS / R BIS )

    CHA(L/R) -> LC3 Enc - BiG( L BIS / R BIS )

    I will implement it using the example as much as possible.

    I want to make at least two language BIGs with one gateway(nrf5340 audio dk)

  • Hello, thanks for providing this information.  We don't support more than two channels over USB at the moment, and yes, they all need to be encoded. Here is further answers from our audio team:

    1. Yes, they would need one encoder per language
    2. Maybe... It depends on their sampling rate and bitrate. As you can see from my reply in the other Firesquad ticket regarding 4 streams it could potentially be done with 16kHz sampling rate. They would need to modify the USB settings as well, as that is 48kHz by default.

    Additional answers:

    1. Look at the Auraconfig sample, specifically use case 3
    2. They could try to interleave the data somehow on the PC side, and then deinterleave it in the nRF5340, but the driver is not made for this, so the timing could potentially be a bit tricky. If they set the USB to 32kHz sampling rate, interleave the four languages, sampled at 16kHz, they could potentially squeeze everything in. But it's very vulnerable to lost frames etc, potentially as they could get out of sync and suddenly get parts of one language bleeding into one of the other streams etc.

    Let me know how this works for you.

    Kind regards,
    Øyvind

  • Thank you for your reply.

    Before implementing the full system, I would like to first make it work with 2 language streams, and then extend it to 4 languages.

    The system I am planning to implement is as follows:

    Jetson Orin Nano (generates and plays multiple language audio streams, then interleaves them into a single USB audio stream) → USB A-to-CnRF5340 Audio DKAny Auracast-compatible receiver (Galaxy Buds series, Sony headphones, etc.)

    I have the following question:

    1. My goal is for users to be able to select a specific language broadcast on any Auracast-compatible device. As I understand it, BIS streams cannot be selected individually by the receiver. When I ran the broadcast_source sample application, I could only see and select the BIG, but I could not select the individual Left BIS or Right BIS streams. Therefore, I believe I need to create multiple BIGs, with each language assigned to its own BIG.

      Is my understanding correct?

      If so, how many BIGs can be created simultaneously on a single nRF5340 Audio DK?

      In the current implementation, each BIG contains stereo audio (2 BIS), but if necessary, I am willing to change the configuration to mono (1 BIS per BIG) to support more language broadcasts. Could you please let me know what the practical or supported limit is?

  • Hello,

    Øyvind said:
    Look at the Auraconfig sample, specifically use case 3

    Did you test this sample on your end first? It is not the different BIS' that should be switching; rather, the behavior is related to the different subgroups.

    Could you please set up and run the nRF AuraConfig sample? The documentation is available here

    Once the sample is running, please execute usecase 3 and check how the broadcasters are presented on the phone.

    We expect that some newer phone models may display three separate broadcasters. Although these appear as different broadcasters in the user interface, they are actually part of the same BIG (Broadcast Isochronous Group) and represent three different subgroups.

    Please let us know what you observe on your device.

    Kind regards,
    Øyvind

Reply
  • Hello,

    Øyvind said:
    Look at the Auraconfig sample, specifically use case 3

    Did you test this sample on your end first? It is not the different BIS' that should be switching; rather, the behavior is related to the different subgroups.

    Could you please set up and run the nRF AuraConfig sample? The documentation is available here

    Once the sample is running, please execute usecase 3 and check how the broadcasters are presented on the phone.

    We expect that some newer phone models may display three separate broadcasters. Although these appear as different broadcasters in the user interface, they are actually part of the same BIG (Broadcast Isochronous Group) and represent three different subgroups.

    Please let us know what you observe on your device.

    Kind regards,
    Øyvind

Children
No Data
Related