A WPF desktop soundboard for Windows, inspired by Soundboard/Voicemod. Clamor plays audio clips on demand and routes them to a virtual audio cable (VB-Audio CABLE) so other apps — Discord, Zoom, games — hear them as if coming from a microphone, optionally mixed with your real mic.
See soundboard-architecture.md (if present in this checkout) for the full design doc this
implementation follows.
Clamor.slnx
├── src/
│ ├── Clamor.Core/ Models + services (profiles, settings, clip library) — no NAudio/WPF
│ ├── Clamor.Audio/ NAudio engine: dual-mixer AudioEngine, ClipPlayer, DeviceManager, MicPassthrough
│ ├── Clamor.Hotkeys/ Global hotkeys via Win32 RegisterHotKey, no UI framework dependency
│ └── Clamor.App/ WPF UI (MVVM), dark theme, tray icon, first-run VB-Cable detection
├── tests/
│ └── Clamor.Tests/ xUnit tests for Core and Audio's pure logic
└── installer/ Inno Setup script
Requires the .NET 10 SDK (or Visual Studio 17.10+) and Windows — WPF only runs on Windows, and
Clamor.Audio/Clamor.Hotkeys use Win32 APIs that are no-ops or unavailable elsewhere.
Clamor.Core and Clamor.Tests will build cross-platform, but the app itself needs Windows to
run. The solution file is the newer XML-based .slnx format, which needs a dotnet CLI/Visual
Studio recent enough to understand it (SDK 9.0.200+; the CI workflows pin 10.0.x).
dotnet restore Clamor.slnx
dotnet build Clamor.slnx --configuration Release
dotnet test Clamor.slnx --configuration Release
Run the app from Visual Studio (set Clamor.App as the startup project) or:
dotnet run --project src/Clamor.App
On first launch, Clamor checks for VB-Audio Virtual Cable and offers to open the download page if it isn't installed — it's a signed driver Clamor doesn't bundle, so you install it separately (and reboot once, per VB-Audio's own requirement).
Settings and profiles are stored as JSON under %AppData%\Clamor\:
settings.json— selected devices, mic passthrough default, minimize-to-tray behaviorprofiles\*.json— one file per profile: clip paths, hotkeys, per-clip volume
.github/workflows/build-test.yml— restores, builds, and runs tests on every PR and push tomain..github/workflows/release.yml— on av*.*.*tag push, re-runs the same build+test gate, publishes a self-containedwin-x64build, packages it with Inno Setup (installer/Clamor.iss), and attaches the installer to a GitHub Release.
- Drag-to-reorder the sound grid — the data model (
SoundClip.SortOrder,ClipLibraryService.MoveClip) already supports it, but there's no drag gesture wired up inSoundGridViewyet. - Waveform preview/trim, fades, push-to-talk hotkeys — listed as nice-to-have (v1.1+) in the design doc, not implemented.
