Building a SITL/HITL Simulator for Daisy Seed - Looking for Feedback

Hi everyone,

I’m developing a SITL (Software In The Loop) / HITL (Hardware In The Loop) simulator for Daisy Seed development. I’d love to get the community’s feedback on my approach.

Why I Started This Project

When developing Daisy effects, I kept facing these issues:

  • Flashing firmware just to test small parameter tweaks

  • Difficulty debugging DSP code without hardware

  • No way to test OLED menus and knob interactions on PC

Solution: A PC-based simulator with two modes:

  • SITL: Complete software emulation (no hardware needed)

  • HITL: Daisy Seed connected via USB, PC provides virtual peripherals

Current Architecture

┌─────────────────────────────────────────────────────┐
│  Daisy SITL Simulator                               │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐ │
│  │ Dear ImGui  │  │  PortAudio  │  │  DaisySP    │ │
│  │ (GUI)       │  │  (Audio)    │  │  (Effects)  │ │
│  └─────────────┘  └─────────────┘  └─────────────┘ │
│         │                │                │        │
│         └────────────────┼────────────────┘        │
│                          ▼                         │
│                 ┌─────────────┐                    │
│                 │  SITL HAL   │                    │
│                 └─────────────┘                    │
│                          │ (future: libserialport) │
│                          ▼                         │
│                 ┌─────────────┐                    │
│                 │ Daisy Seed  │  ← HITL Mode       │
│                 └─────────────┘                    │
└─────────────────────────────────────────────────────┘

Tech Stack:

  • GUI: Dear ImGui + SDL2 + OpenGL

  • Audio: PortAudio (48kHz, 256 samples)

  • DSP: DaisySP wrapper

  • License: MIT (planned)

Why Dear ImGui Instead of JUCE

I evaluated JUCE but decided against it for HITL development:

Issue Impact
No native serial communication Need external libs anyway
Audio thread blocks serial I/O Complex async architecture required
GPL/Commercial license Restrictive for free dev tools
Plugin-focused architecture Overkill for firmware dev tools

Dear ImGui provides direct C++ integration, simple threading model, and MIT license freedom.

Current Features

  • OLED emulation (128x64, pixel-accurate)

  • Interactive knobs (drag/wheel support)

  • Switches with LED indicators

  • Rotary encoder

  • DaisySP effects (Overdrive, Reverb, Chorus, Delay)

  • Waveform visualization

  • Console logging

Questions for the Community

  1. HITL USB Communication: I’m considering libserialport for USB/serial communication with Daisy Seed. Any recommendations or alternatives? Has anyone implemented similar hardware communication?

  2. GUI Framework Choice: For building a simulator/development tool like this, what GUI language/framework would you recommend? I chose Dear ImGui for its simplicity and performance, but I’m curious about other approaches the community has used.

  3. Architecture Feedback: Any opinions on the current configuration? Suggestions for improvement? Things I might be missing?

Thanks for reading - looking forward to your thoughts!