Home
Modules / Silver/Gold

Silver/Gold

TiliquaFPGAPhysical modellingScanned synthesis

Two bitstream instruments for the apf.audio Tiliqua — a stereo struck drum head and stereo scanned wavetable which share a 2D mesh base.

Video coming soon
Download Silver bitstream, 1280×720Download Gold bitstream, 1280×720Download Silver bitstream, 720×720 round panelDownload Gold bitstream, 720×720 round panelSource on GitHub

Sequence it with Strudel.

Overview

Silver and Gold are two bitstreams for the apf.audio Tiliqua, an open-hardware FPGA module for Eurorack. They are based on the same 48×48 finite-difference membrane — the same shared source code file of under four hundred lines of gateware. They sound nothing alike. One is a drum head you hit. The other reads circles through the mesh as wavetables. Not affiliated with, or endorsed by, apf.audio.

The bitstreams share a family of 2D mesh designs based on a drum head but with holes or slits. These modifications add to the range and complexity of the vibration modes established when the membrane is excited.

Silver — a struck membrane

The mesh runs at 48 kHz and you listen to the sound at two nodes, the way contact pickups sit on a drum head. The tension of the mesh sets the pitch which tracks 1 V/oct.

jack
in 0 strike — rising edge above ~1 V
in 1 tension — 1 V/oct, 27.5–440 Hz
in 2 position — strike position, hub to rim
in 3 geometry — modulation of the hole radius
out 0 / out 1 mesh L and R

Strike position is the timbre control and where you hit a drum decides which modes get energy. Hit a node sitting on a mode’s antinode and that mode rings; hit its nodal line and it stays silent. Silver is stereo, with the pickups positioned to ensure that the angular modes differ between the channels while the radially symmetric ones stay common.

Gold — the same mesh, as a wavetable

Update the membrane once every 64 samples — 750 Hz, against Silver’s 48 kHz — and its own fundamental drops to about 1 Hz, far below hearing. It stops being a sound and becomes a surface. Read a circular path around it at audio rate and the scan is an oscillation. In this case pitch is the scan rate, not the tension.

jack
in 0 drive — a gate edge plucks, a held level drones
in 1 pitch — 1 V/oct, 0 V is 27.5 Hz, eight octaves to 7040 Hz
in 2 radius — the left scan circle, inner edge to outer edge, 256 steps
in 3 damping — how long the surface holds its shape; a 0–5 V slider takes it from ringing for ever to a thud
out 0 / out 1 scan L, and scan R a quarter of the annulus further out

The scan path is a circle or, depending on radius, a broken circle. Asymmetric geometries like the slit provide one notch per revolution and a full harmonic series. Alternatively, a square hole gives four notches and a fourth-harmonic emphasis. The symmetry order of the hole picks the harmonics.

Visualisation

Node status is piped directly to the video socket so you can watch a 2D map showing current node status and the strike, scan position and/or geometry adjusted through CV controls. Blue and red are the two signs of positive and negative displacement. The mesh’s most characteristic behaviour is mode beating between near-degenerate pairs, and it appears as pattern precessing.

The module itself

Tiliqua is 6HP, built around a Lattice ECP5 with 25K LUTs and 28 18×18 multipliers, 32 MB of PSRAM and a GPDI video socket. All four inputs and four outputs are channels on one four-channel audio codec, so CV arrives at the audio rate, sample by sample, and there is no difference between a CV and a signal — patch an oscillator into a CV input and it is just audio. The onboard bootloader holds eight bitstreams at once, chosen from the front panel, and apf.audio ships eleven of their own.

Provenance

Both bitstreams were built in about five days, in heavy collaboration with an AI assistant. The design decisions, the musical judgements and the testing on hardware are mine; much of the gateware, the tests and the documentation were written with assistance.

Everything, upstream’s and mine, is CERN-OHL-S-2.0 — the strongly reciprocal open hardware licence, which applies to bitstreams as much as to boards.

Flash it — no compiler needed

Tiliqua ships with its bootloader already loaded, so there is no additional install. A bitstream archive is uploaded into one of eight slots and then chosen from the front panel — no compiler needed if you take a release archive.

Read this first — Two video modes are built. Take `720x720p60r2` for a round Waveshare or Tiliqua screen and `1280x720p60` for a capture card or monitor that favours this screen resolution.

All four flash exactly the same way — the steps below apply to every one of them. The only difference is which archive you pick: the instrument you want, and the screen you have.

  1. Take the archive for the instrument you want and the screen you have.
  2. Connect the module to your computer with the debug USB-C port.
  3. Run `pdm flash archive <archive>.tar.gz --slot [YOUR CHOICE HERE]`, picking any free slot. `pdm flash status` shows what is in the slots already.
  4. Power-cycle, then turn the encoder to the slot and push to boot it.
If you build rather than download, pin the placer seed. These designs sit close enough to the ECP5's routing limit that identical source places very differently run to run.

Updated September 2026