cancel
Showing results for 
Search instead for 
Did you mean: 

STM32WBAG-DK1 PBP source multichannel creation for Auracast

Sandeep_k
Associate II

Hi,

I am try to STM32WBAG-DK1 PBP source example and try to create multi-channel and stream the data through it. Like in each channel, each language. I got stuck where to modify the code.

Could anyone please support the issue.

 

Thank you

1 ACCEPTED SOLUTION

Accepted Solutions
TPITEL
ST Employee

Hi,

First of all, as of today, the libraries used in this project are limiting the number of BIS to 2, meaning you'll only be able to support 2 different languages at the same time. We plan on supporting more BIS in future updates.

To broadcast 2 different languages starting from the current PBP Source application:

  • Set the BROADCAST_SOURCE_NUM_BIS to 2, BROADCAST_SOURCE_CHANNEL_ALLOC_1 to FRONT_LEFT and BROADCAST_SOURCE_CHANNEL_ALLOC_2 to FRONT_RIGHT. This will permit to broadcast left and right channels on 2 different BIS
  • Edit the PBPAPP_SetupBASE so that instead of having 1 subgroup with 2 BIS, you have 2 subgroups with 1 BIS per subgroup. This will permit to annonce to remote Broadcast Sinks that the 2 BIS contain 2 different content. You'll find more info about BASE structure on our wiki page.
  • Send audio through 3.5mm jack input with your first language on the left channel and the second language on the right channel
  • On the PBP Sink side, when calling PBP_PBK_StartBIGSync, only synchronize to one of the 2 BIS by setting the NumBIS to 1 and setting the right BIS in the bis_index.

If you can wait until then, we plan on releasing a stm32-hotspot github project containing a PBP Source app with 2 languages, along with an app able to synchronize to it and switch languages. It should be available in a few weeks.

Best Regards,

Tom.

View solution in original post

12 REPLIES 12
TPITEL
ST Employee

Hi,

First of all, as of today, the libraries used in this project are limiting the number of BIS to 2, meaning you'll only be able to support 2 different languages at the same time. We plan on supporting more BIS in future updates.

To broadcast 2 different languages starting from the current PBP Source application:

  • Set the BROADCAST_SOURCE_NUM_BIS to 2, BROADCAST_SOURCE_CHANNEL_ALLOC_1 to FRONT_LEFT and BROADCAST_SOURCE_CHANNEL_ALLOC_2 to FRONT_RIGHT. This will permit to broadcast left and right channels on 2 different BIS
  • Edit the PBPAPP_SetupBASE so that instead of having 1 subgroup with 2 BIS, you have 2 subgroups with 1 BIS per subgroup. This will permit to annonce to remote Broadcast Sinks that the 2 BIS contain 2 different content. You'll find more info about BASE structure on our wiki page.
  • Send audio through 3.5mm jack input with your first language on the left channel and the second language on the right channel
  • On the PBP Sink side, when calling PBP_PBK_StartBIGSync, only synchronize to one of the 2 BIS by setting the NumBIS to 1 and setting the right BIS in the bis_index.

If you can wait until then, we plan on releasing a stm32-hotspot github project containing a PBP Source app with 2 languages, along with an app able to synchronize to it and switch languages. It should be available in a few weeks.

Best Regards,

Tom.

Sandeep_k
Associate II

How to assign and display the name of the subgroup or channels

 

Hi,

In the BASE structure, there are 2 types of information that can be assigned:

  • Codec Configuration: located on the BIS level or on the subgroup level if common to all BISes, they contain audio stream parameter like the sampling frequency or the audio channel allocation. You need to use LTV structure (like describe here) to assign these parameters.
  • Metadata: located on the subgroup level, it can contain any number of metadata to inform remote Broadcast Sink about the content of the broadcast. For example you can specify the languages of the audio stream or the audio context (music, conversational, ...). You also need to use LTV structures, supported metadata types are listed in the Bluetooth Assigned Numbers document)

You can refer to the Basic Audio Profile Specification if you need details about the BASE structure and BLE audio broadcasts.

Best regards,

Tom.

Sandeep_k
Associate II

After advertising the channels, right now I sending the data or audio through jack. If I want utilize mass storage by using usb, how to send the particular song to specific channel.

 

TPITEL
ST Employee

First of all, STM32WBA55 does not support USB, you would need to use a STM32WBA65. Then you would need to implement a USB host Mass Storage Class USB app using USBX along with the PBP application. Ideally, your files would be pre-encoded on your USB storage so that you can feed your audio data directly to audio stack.

You can take a look at our USBX Auracast github project to see an example of USB+BLE Audio app. It uses USB Audio Class to stream audio from a PC or a smartphone to the STM32WBA65.

Sandeep_k
Associate II

Is there any other options to utilize mass storage option and stream the audio for separate channels or any other alternative to send/stream the audio for multiple channels other than audio jack-input or microphone in  STM32WBA55G-DK1 for auracast application.

 

Thank you

TPITEL
ST Employee

No unfortunately on STM32WBA55G you won't be able to use USB to stream audio. You would need to use another chip.

Regards,

Tom.

Sandeep_k
Associate II

Is it possible to transmit audio signal from mobile via tdm through audio jack, and stream it by mutiplexing and demultiplexing technique instead of i2s or pcm. If yes, what are the changes to be made in pbp source firmware.

And once the sai buffer is created, how can we identify the address of the sai or lc3 codec, from where the audio data is being stored/streamed.

TMANE.1
ST Employee

Hello, 

 

The audio jack is for analog signal, connected to an ADC with a limited sampling frequency (STM32WBA55G-DK1), so it is not possible to use it for TDM.  I you need a digital audio interface, you could adapt the project for a Nucleo board instead. 

 

Then the interface buffer between LC3 codec and SAI (DMA) is called aSrcBuff or aSnkBuff depending on the project. 

 

BR,