返回资讯中心
外部精选
软件工程
#开发者实时流

Show HN: HW Synth with No Money

This is a project I have been working on for a while.

Hacker News 最新ThJ2026/10/22 · 23 天前5 分钟阅读

以下正文同步自 Hacker News 最新,版权归原站所有,已转换为易读排版。

An ESP32-C3 reads MIDI, allocates voices and maps every knob to engine parameters. It writes those parameters over SPI to a Tang Nano 20K, where a single time-multiplexed datapath computes all 256 partials once per sample. Every musical decision is made in firmware; the FPGA only computes samples.

MIDI DIN 5-pin, opto

31250 bd

ESP32-C3 · CONTROL

MIDI parser · event bus voice allocator, 32 voices CC → parameter mapping patches: TOML on 4 MB flash bank / program change USB serial console 1 kHz tick · at most 1 ms latency

SPI 40 MHz parameter pages

TANG NANO 20K · SOUND

GW2AR-18C FPGA, 73.728 MHz 256-partial pipeline, 26 stages CSP: control program, 48 kHz passes 2 × SVF per partial, 12 / 24 dB log stereo attenuation · mix sat24 limiter · output LPF 768 clocks per sample

S/PDIF48 kHz optical I2S96 kHz DAC

Control plane in blue, audio in amber. The parameter image is double-buffered and swapped at sample boundaries, so a knob turn never lands mid-sample.

DMEM · 1024 WORDS · Q8.10 effective = base + dmem[pointer], saturating · pitch · duty · cutoff · 1/Q · gain L · gain R

OSCsaw pulse tri sineUQ0.24 phase SVF 1TPT / ZDFLP · BP · HP SVF 2cascade → 24 dBQ8.28 states L / R GAINattenuationset in dB MIX26-bit accsat24 limiter

× 256 partials per sample · parameters arrive from the control processor through data memory

256 partials per sample through a 26-stage pipeline.

Full-range modulationThe mod envelope can move cutoff by ±16 octaves and the cutoff control by ±8, so any destination can be driven end to end.

A small pipelined processor on the FPGA runs the envelopes, LFOs and modulation routings as one straight-line program, about 1,470 cycles per pass at 48 kHz, and writes the results into the partials' parameter memory.

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →