Two instruments on one 2304-node finite-difference membrane, for the
apf.audio Tiliqua. Not affiliated with, or endorsed by,
apf.audio.
Silver is a struck drum head: the mesh runs at 48 kHz and two pickups 45°
apart are the stereo output. Gold updates the same mesh at 750 Hz and reads
a circular path through it as a wavetable — Verplank/Mathews/Shaw scanned
synthesis. Both draw the membrane live on the screen, with no framebuffer and
no CPU.
Previously released as LACUNA and ORBITA. Same instruments, renamed to join the
rest of the range: five for silver, six for gold.
Which file
| 1280×720p60 | 720×720p60r2 | |
|---|---|---|
| Silver | silver-48x48-1280x720p60.tar.gz |
silver-48x48-720x720p60r2.tar.gz |
| Gold | gold-48x48-1280x720p60.tar.gz |
gold-48x48-720x720p60r2.tar.gz |
Take 1280×720p60 for a capture card or a monitor. Take 720×720p60r2
only for the round Waveshare panel — a cheap HDMI dongle will not lock to
720×720, because it is not a standard timing. The 720×720 builds announce
themselves as Silver7 and Gold7, so you can tell them apart in the bootloader.
pdm flash archive silver-48x48-1280x720p60.tar.gz --slot 3
Any free slot; pdm flash status shows what is there already.
Jacks
| Silver | Gold | |
|---|---|---|
| in0 | strike | drive / drone |
| in1 | tension, 1 V/oct, 27.5–440 Hz | pitch, 1 V/oct, 27.5–7040 Hz |
| in2 | strike position, hub to rim | scan radius |
| in3 | geometry — the hole, at audio rate | damping — how long the shape lasts |
| out0 / out1 | mesh L / R | scan L / R |
Gold's in3 is mapped for a unipolar 0–5 V slider: nothing patched rings for
ever, about 4.4 V is a thud, 0.68 V a step.
Source
gateware/src/top/ — mesh/
is the shared membrane, silver/
and gold/
are the two instruments.
Building these yourself
Use gateware/scripts/build_bitstreams_fork.sh, which pins the size and the seeds.
The placer seed is not optional. These designs sit close enough to the ECP5's
routing limit that identical RTL places very differently run to run. Gold at
1280×720 is the worst of it: one seed in eight closes. The binding constraint
is dvi_clk at 74.25 MHz, and the same source lands anywhere from 72.25 to
76.38 MHz across builds. The 720×720 modeline asks only 39.07 MHz of that clock,
which is why it closes on almost anything.
Re-check the seeds after any change, not just a change of size — the bitstream
name is rendered into the video path, so even renaming the design invalidates them.