This repository provides a simple-to-use automated script to configure the Raspberry Pi to use xCORE VocalFusion for audio.
This setup will perform the following operations:
For XVF3510-INT devices these actions will be done as well:
For XVF361x-INT devices these actions will be done as well:
For XVF3800(DEFAULT) devices these actions will be done as well:
For XVF3800-extmclk devices these actions will be done as well:
For XVF3510-UA and XVF361x-UA devices these actions will be done as well:
First, obtain the required version of the Raspberry Pi operating system, which is available here
Then, install the Raspberry Pi Imager on a host computer. Raspberry Pi Imager is available here
Run the Raspberry Pi Imager, and select the 'CHOOSE OS' button. Scroll to the bottom of the displayed list, and select "Use custom". Then select the file downloaded above (2023-02-21-raspios-bullseye-armhf.img.xz) and select "Open". The archive file does not have to be unzipped, the imager software will do that.
Select the CHOOSE SD CARD button to which to download the image, and then select the "WRITE" button.
When prompted, remove the written SD card and insert it into the Raspberry Pi.
Connect up the keyboard, mouse, speakers and display to the Raspberry Pi and power up the system. Refer to the Getting Started Guide for you platform.
Set up the locale, username, password, network connection and update the software on the Raspberry Pi.
NOTE: Host applications and scripts used by the XMOS products support only 32-bit Raspbian systems.
Force the Raspberry Pi to use 32-bit kernels, by typing:
sudo sh -c "echo 'arm_64bit=0' >> /boot/config.txt"
sudo reboot
and wait for the Raspberry Pi to reboot.
Update the Raspberry Pi package list and upgrade the packages to the latest version:
sudo apt-get update
sudo apt-get upgrade
sudo reboot
On the Raspberry Pi, clone the Github repository below:
git clone https://github.com/xmos/vocalfusion-rpi-setup
For VocalFusion devices, run the installation script as follows:
./setup.sh xvf3100
For VocalFusion Stereo devices, run the installation script as follows:
./setup.sh xvf3500
For XVF3510 devices, run the installation script as follows:
./setup.sh xvf3510
For XVF3600 I2S master devices, run the installation script as follows:
./setup.sh xvf3600-master
For XVF3600 I2S slave devices, run the installation script as follows:
./setup.sh xvf3600-slave
For XVF3610-UA devices, run the installation script as follows:
./setup.sh xvf3610-ua
For XVF3610-INT devices, run the installation script as follows:
./setup.sh xvf3610-int
For XVF3615-UA devices, run the installation script as follows:
./setup.sh xvf3615-ua
For XVF3615-INT devices, run the installation script as follows:
./setup.sh xvf3615-int
For XVF3800-INTDEV devices, run the installation script as follows:
./setup.sh xvf3800-intdev
For XVF3800-INTHOST devices, run the installation script as follows:
./setup.sh xvf3800-inthost
For XVF3800-INTDEV-EXTMCLK devices, run the installation script as follows:
./setup.sh xvf3800-intdev-extmclk
Wait for the script to complete the installation. This can take several minutes.
Reboot the Raspberry Pi.
The I2S/PCM driver that is provided with raspbian does not support an MCLK output. However the driver does have full ability to set the BCLK and LRCLK correctly for a given sample rate. As the driver does not know about the MCLK it is likely to choose dividers for the clocks generators which are not phase locked to the MCLK. The script in this repo gets around this problem by configuring the i2s driver to a certain frequency and then overriding the clock registers to force a phase locked frequency.
This will work until a different sample rate is chosen by an application, then the I2S driver will write it's own value to the clocks and the MCLK will no longer be phase locked. To solve this problem the following steps must be taken before connecting an XVF device with a different sample rate:
arecord -c2 -fS32_LE -r{sample_rate} -s1 -Dhw:sndrpisimplecar
./resources/clk_dac_setup/setup_blk
, for 16kHz ./resources/clk_dac_setup/setup_blk 16000