Stanford Wave Field Synthesis System

The Polyphonic Frugal Wave Field Synthesis (WFS) system is an FPGA-driven spatial audio platform designed to make real-time WFS accessible and reproducible. The system installed at CCRMA serves as an interface connected to the existing speaker array.

This page provides a complete walkthrough of the system architecture, hardware, software, and usage instructions.

User Guide

The system is composed of two boards. The smaller board, which contains the FPGA, will be referred to as the FPGA board. The larger board, which contains the amplifiers, will be referred to as the amp board. Connect the two boards as the picture below.

FPGA and amplifier boards overview

1. Connecting the Board to the WFS System

For simplicity, the amp board uses Sub-D25 connectors. Using the provided custom cables, connect the DB25 ports to the speaker array. The DB25 connectors are numbered 1 to 4. On the speaker array side, connect each cable to the correspondingly numbered port. Be careful, these connectors are fragile!

DB25 connection to the speaker array Close-up of DB25 connectors

2. Powering the System

Connect the power supply to the FPGA board. Use a 5 V power supply (center-positive) capable of delivering at least 4 A for a single 32-channel unit. Then connect an Ethernet cable to the FPGA board.

Power and Ethernet connections on the FPGA board

3. Powering the Amplifier

The FPGA board outputs two identical power cables at the top. Connect one of them to the amplifier input power connector located on the right side of the amp board.

Power cable from FPGA board to amp board

4. Waiting for Boot

The FPGA boots automatically when powered on. Boot is complete when the Polyphonic logo turns green. You can then begin communicating with the system via Ethernet.

Polyphonic logo indicating FPGA boot status

5. Creating the Host Computer Ethernet Server

To create the server, clone our Git repository:
https://github.com/inria-emeraude/syfala

Navigate to the server directory:
cd syfala/source/linux/syfala-server

Then run the server using Rust (install Rust if needed):
pw-jack cargo run --release

If the server is running correctly, you should see a message similar to:
INFO server/src/main.rs:114: Starting UDP

6. Redirect Your Sound Source to the FPGA

You should now see the system in your preferred JACK routing tool. For example, you can use qpwgraph.

7. Routing From Your DAW

You can now connect your audio sources from your DAW to the system (see the Ardour example in the image below).

Qpwjack with ardour

8. Control with OSC

You can either use the interface written in Processing (install Processing if needed). Open the following file with the Processing GUI and run it:
syfala/examples/cpp/wfs/interface/hls_wfs/hls_wfs.pde

You can also send OSC commands directly, controlling the x and y position of each source with the following convention:

"/wfs/source<i>/y/<yPos>"
"/wfs/source<i>/x/<xPos>"

Replace <i> with the source number. yPos is typically in the range -4 (source far away) to 4 (source near), and xPos is typically in the range -2.5 (left) to 2.5 (right).

Processing GUI

Troubleshooting

“That doesn't work!”

Great… let's start by checking the LEDs on the side of the board.

Power and Ethernet connections on the FPGA board

LED Indicators

Use the following checks to diagnose common issues:

Host Computer

On the host machine, verify the following:

Still Nothing?

If the problem persists, please contact:
maxime.popoff@inria.fr