00 — Project Overview
Purpose
Section titled “Purpose”Auvra is an instrument-shaped plugin host designed as a dedicated hardware synthesizer. Sound comes from synth plugins (CLAP-native, open-source and commercial) combined into patches — layers/splits feeding an integrated mixer with effect-plugin support — on an N100-class real-time Linux host. The selected hardware integration target is a Tang Mega 138K Pro FPGA card for PCIe/ALSA audio, I²S converters, host-rendered GUI scanout/touch, and physical-control I/O; AES67 remains a later network-audio stage (17). The current prototype uses the keybed and chassis of a Yamaha S90 as a development base, not as the product definition. Board capability is documented, but the combined drivers, pinout, timing, latency and product rights are not yet validated. The host/patch/mixer concept is defined in 12-plugin-host-and-patches.md.
Scope of this blueprint
Section titled “Scope of this blueprint”In scope: the system architecture and the subsystem-level design — compute platform, operating system, FPGA PCIe audio/display/control integration, keybed interfacing, analog I/O, power, and the engine architecture (plugin host, patch model, mixer — 12). The USB-audio/HDMI/USB-MIDI/MCP2221A path remains the software MVP and bench fallback; the FPGA card is the selected integrated-hardware target, subject to the gates in 17. Each subsystem document states the chosen approach, alternatives, and open questions.
Out of scope here: DSP internals of third-party plugins, the store service, and
detailed schematics/PCB layout. UI behavior and implementation are defined in
13–16.
Design principles
Section titled “Design principles”- Latency is the headline metric. Every architectural choice is judged first by its effect on key-to-sound latency and jitter. Target: round-trip audio < 6 ms, realistically ≈ 2.7 ms.1
- It is an appliance. No desktop, no login, no boot text on the panel. The OS image is immutable; user data lives on a separate writable partition. Power-loss must never corrupt the system.2
- Separate bench and product paths. Standard USB audio and HDMI/USB touch keep software testable; the integrated instrument targets FPGA PCIe audio, framebuffer scanout, and physical I/O.
- Separate the time-critical from the rest. The bench keybed scanner uses USB-MIDI; the integrated scanner sends timestamped note events through the FPGA/PCIe event path. I²C is for actual I²C peripherals and noncritical control, never the raw S90 key matrix or an unbounded note-polling path.3
- Document the unknowns. The S90’s internal wiring is not publicly documented; anything that must be measured on real hardware is tagged [verify].
Platform roadmap
Section titled “Platform roadmap”| Phase | Compute | Notes |
|---|---|---|
| Prototype | Intel N100 (ASRock N100DC-ITX) | x86, fanless, cheap, abundant Linux support. |
| Later | ARM ITX/SBC | Once the synth engine and OS image are portable. Candidates evaluated in 02-compute-platform.md. |
Reading order
Section titled “Reading order”Start with 01-system-architecture.md for the whole picture and the latency budget, then read the subsystem docs in any order. The 10-roadmap-and-risks.md register lists what is still unproven.
Glossary
Section titled “Glossary”| Term | Meaning |
|---|---|
| BH keybed | Yamaha “Balanced Hammer” weighted 88-key action used in the S90. |
| Matrix scan | Reading a grid of key contacts by driving columns and sensing rows in sequence. |
| Velocity (make/break) | Key strike speed, derived from the time between a key’s two contacts closing.4 |
| PREEMPT_RT | The Linux real-time preemption feature, mainline since kernel 6.12.5 |
| JACK / ALSA / PipeWire | Linux audio stacks; see 03-realtime-os.md. |
| Class-compliant | A USB device usable without a vendor driver (USB Audio/MIDI/HID class). |
| RP2350 | Raspberry Pi’s dual-core MCU (Pico 2); bench scanner/control node or optional integrated I/O helper. |
| Tang Mega 138K Pro | Selected FPGA development card for integrated PCIe audio, display scanout, and physical I/O; hardware implementation is gated. |
| Kiosk | A single full-screen app that owns the display with no surrounding desktop. |
| RTL | Round-trip latency: input → processing → output, measured in ms. |
| CLAP | CLever Audio Plug-in — the MIT-licensed plugin API Auvra hosts natively.6 |
| Patch / Slot | A saved playable setup / one of its synth-plugin positions (see 12). |
| AES67 | Interoperable professional audio over RTP/IP with PTP-based clock synchronisation; see 17. |
Naming
Section titled “Naming”Auvra is the product and platform name, used consistently for the repository, folders, and code namespace.
Footnotes
Section titled “Footnotes”-
Achievable RTL on N100-class hardware with a tuned RT kernel; see
03-realtime-os.md. LinuxCNC forum, “Intel N100” latency thread. https://forum.linuxcnc.org/18-computer/50817-intel-n100 ↩ -
ArchWiki, “Silent boot.” https://wiki.archlinux.org/title/Silent_boot ↩
-
MIDI Association, “Jitter and latency.” https://midi.org/community/midi-connections/jitter-and-latency-usb-firewire-thunderbolt ↩
-
Syntaur, “Check the contact strips.” https://blog.syntaur.com/?p=38 ↩
-
Phoronix, “Real-Time PREEMPT_RT Support Merged For Linux 6.12.” https://www.phoronix.com/news/Linux-6.12-Does-Real-Time ↩
-
CLAP — CLever Audio Plug-in API. https://cleveraudio.org/ ↩