
Panel daisy
ohmtech-rdi/eurorack-blocks
Software to Hardware Prototyping for Eurorack using C++, Max/Gen~ or Faust

5D chaos monitor: XIAO RP2350 + ADS1262 streaming Chua attractor data at 12kHz/ch over USB CDC to Linux
Chua x7r is an open-source printed circuit board by heurstc, from the heurstc/Chua-memcapacitor repository on GitHub. It is a 4-layer board of 50 × 50 mm with 17 parts on 12 nets, routed with 53 tracks and 17 vias.
It is built around the TL072 and MMBF4118. Its parts include 10 resistors, 4 capacitors, 1 IC, 1 transistor and 1 inductor. It belongs with the computers and single-board computers boards of this library.
Real-time acquisition and visualisation of a 5-dimensional chaotic attractor using a Seeed Studio XIAO RP2350 and two ADS1262 32-bit ADCs, streaming to Linux at 12 kHz per channel over USB CDC.
Chua Circuit (±8 V)
│
▼
Signal Conditioning Board (×5 channels)
│ R_IN 1kΩ → ±9V clamp → TL072-A input buffer
│ → ÷4 attenuator (30k/10k) → TL072-B divider buffer
│ → Sallen-Key 2nd-order Butterworth LPF @ 4.95 kHz
│ → ±2.5V clamp → ADS_CHn
▼
XIAO RP2350
│ Core 1: tight-poll SPI sampling (ADS1262 × 2)
│ Core 0: USB CDC packetiser (14-byte frames, XOR checksum)
▼
Linux Host /dev/ttyACM0
│ capture.py — packet parser, drop/error stats
│ buffer.py — lock-free circular numpy buffers
│ plotter.py — real-time 3D attractor + 2D projections
▼
matplotlib FuncAnimation @ 30 Hz| Part | Role |
|---|---|
| Seeed XIAO RP2350 | Dual-core Cortex-M33 MCU, USB FS CDC |
| ADS1262 × 2 | 32-bit delta-sigma ADC, 38,400 SPS max |
| TL072 × 8 | Signal conditioning op-amps (SOIC-8) |
| BAT54 Schottky × 20 | Input (±9V) and output (±2.5V) clamps |
| R 0402, C 0402 C0G | Divider and Sallen-Key filter passives |
Channel mapping:
| Channel | Chua variable | ADC |
|---|---|---|
| CH0 | x | ADS1262-0 AIN0 |
| CH1 | y | ADS1262-0 AIN1 |
| CH2 | z | ADS1262-0 AIN2 |
| CH3 | w | ADS1262-1 AIN0 |
| CH4 | v | ADS1262-1 AIN1 |
SPI0 pin assignments (RP2350):
| Signal | GPIO |
|---|---|
| SCK | GP6 |
| MOSI | GP7 |
| MISO | GP4 |
| ADC0 CS / DRDY / RST | GP5 / GP0 / GP1 |
| ADC1 CS / DRDY / RST | GP3 / GP2 / GP28 |
Each of the 5 channels uses a 3-op-amp topology:
Chua ──[R_IN 1kΩ]──[±9V clamp]──[TL072-A]──[÷4]──[TL072-B]──[SK LPF]──[TL072-C]──[±2.5V clamp]──► ADS1262IC count: 15 TL072 units → 8 SOIC-8 packages (U1–U8, U8B spare).
Built with the Pico SDK and TinyUSB.
firmware/
├── CMakeLists.txt
└── src/
├── ads1262.h / .c ADS1262 SPI driver
├── ring_buffer.h Lock-free SPSC ring buffer (4096 samples, ARM DMB)
├── sampler.h / .c Core 1 entry — tight-poll sampling loop
├── main.c Core 0 — USB CDC packetiser
├── tusb_config.h TinyUSB configuration
└── usb_descriptors.c CDC descriptorADS1262 configuration:
USB packet format (14 bytes):
[0xAD][0xC0][ch][seq_lo][seq_hi][ts0][ts1][ts2][ts3][val0][val1][val2][val3][XOR]
sync chan seq (LE16) timestamp µs (LE32) value (LE32) checksumBuild:
mkdir firmware/build && cd firmware/build
cmake .. -DPICO_BOARD=seeed_xiao_rp2350
make -j$(nproc)
# flash: hold BOOT, connect USB, copy .uf2 to RPI-RP2 drivehost/
├── capture.py PacketParser — serial reader thread, sync/checksum/drop detection
├── buffer.py ChannelBuffer — circular numpy arrays; SampleStore for 5 channels
├── plotter.py FuncAnimation plots: 3D attractor, xy/xz projections, time series
└── main.py Entry point — fanout thread, optional CSV loggingInstall dependencies:
pip install -r host/requirements.txtRun:
python3 host/main.py /dev/ttyACM0
# options:
# --fps 30 animation frame rate
# --trail 10000 number of points in attractor trail
# --save FILE log raw samples to CSVThe plotter opens a live window showing:
spice/
├── signal_cond.spice ngspice netlist (BAT54 + TL072 behavioral models)
├── plot_response.py scipy Bode / step / pole-zero plots
└── run_ngspice.sh run simulation + plot (falls back to scipy-only if no ngspice)cd spice
./run_ngspice.shProduces ac_bode.dat, tran_1k.dat, tran_8k.dat, tran_step.dat and a Bode plot PNG.
kicad/
├── gen_schematic.py Python generator — run to rebuild .kicad_sch
├── signal_conditioning.kicad_sch KiCad 7 schematic (A2, 5 channels)
├── signal_conditioning.kicad_pro KiCad project file
└── bom.csv Bill of materialsTo regenerate the schematic after editing the generator:
python3 kicad/gen_schematic.pyOpen signal_conditioning.kicad_sch directly in KiCad 7.
| Parameter | Value |
|---|---|
| Channels | 5 |
| Effective SPS per channel | ~12,800 (CH0–2) / ~19,200 (CH3–4) |
| Packet size | 14 bytes |
| Raw USB data rate | ~840 kB/s |
| USB FS CDC practical limit | ~1 MB/s |
MIT
| Qty | Value | Footprint | References |
|---|---|---|---|
| 2 | 18k | Resistor_SMD:R_0402_1005Metric | R3, R6 |
| 2 | 22k | Resistor_SMD:R_0402_1005Metric | R2, R5 |
| 2 | 3.3k | Resistor_SMD:R_0402_1005Metric | R1, R4 |
| 1 | 1.8k | Resistor_SMD:R_0402_1005Metric | R7 |
| 1 | 100nF | Capacitor_SMD:C_0402_1005Metric | C3 |
| 1 | 100nF X7R | Capacitor_SMD:C_0402_1005Metric | C2 |
| 1 | 10nF X7R | Capacitor_SMD:C_0402_1005Metric | C1 |
| 1 | 12R | Resistor_SMD:R_0402_1005Metric | R8 |
| 1 | 18mH | Inductor_SMD:L_Bourns_SRR1260 | L1 |
| 1 | 1M | Resistor_SMD:R_0402_1005Metric | R9 |
| 1 | 47k | Resistor_SMD:R_0402_1005Metric | R10 |
| 1 | 47pF C0G | Capacitor_SMD:C_0402_1005Metric | C4 |
| 1 | MMBF4118 | Package_TO_SOT_SMD:SOT-23 | Q1 |
| 1 | TL072 | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U1 |

ohmtech-rdi/eurorack-blocks
Software to Hardware Prototyping for Eurorack using C++, Max/Gen~ or Faust

ctag-fh-kiel/ctag-tbd
CTAG TBD >>to be determined<< an extendible open source Eurorack sound module

plinkysynth/plinky_public
a public release of the plinky sw and hw



matthewcieplak/super-sixteen
Code and schematics for the Super Sixteen Eurorack sequencer

mzuelch/CATs-Eurosynth
Analog Synth Eurorack Modules

StoneRose35/cortexguitarfx
guitar effects processor implemented on various arm cortex platforms
It measures 50 × 50 mm and has 4 copper layers, 1.6 mm thick.
17 parts, built around the TL072 and MMBF4118. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the heurstc/Chua-memcapacitor repository on GitHub, at the commit this page was made from: the board is kicad/chua_x7r.kicad_pcb and its schematic kicad/chua_x7r.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask heurstc before reusing the design.