Skip to content

00 — Project Overview

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.

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.

  1. 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
  2. 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
  3. 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.
  4. 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
  5. Document the unknowns. The S90’s internal wiring is not publicly documented; anything that must be measured on real hardware is tagged [verify].
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.

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.

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.

Auvra is the product and platform name, used consistently for the repository, folders, and code namespace.

  1. 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 ↩

  2. ArchWiki, “Silent boot.” https://wiki.archlinux.org/title/Silent_boot ↩

  3. MIDI Association, “Jitter and latency.” https://midi.org/community/midi-connections/jitter-and-latency-usb-firewire-thunderbolt ↩

  4. Syntaur, “Check the contact strips.” https://blog.syntaur.com/?p=38 ↩

  5. Phoronix, “Real-Time PREEMPT_RT Support Merged For Linux 6.12.” https://www.phoronix.com/news/Linux-6.12-Does-Real-Time ↩

  6. CLAP — CLever Audio Plug-in API. https://cleveraudio.org/ ↩