MAMA is a physical USB audio mixer (Arduino master/slave) plus a single Go app that handles runtime mixing, setup UI, and live reconfiguration.
- Single app binary:
mama(mama.exeon Windows) - Live serial-driven knob control (
E<id>:+/-n,B<id>:1) - Target types:
master_out,mic_in,line_in,app,group - Smart groups and custom templates in the UI
- Immediate apply while editing mappings
Recommended release assets:
- Windows 64-bit:
MAMA-Setup-Windows.exe - Windows 32-bit:
MAMA-Setup-Windows-32bit.exe - macOS universal2 installer:
MAMA-macOS.pkg - Linux amd64 installer:
MAMA-Linux.deb
Advanced/power-user assets:
- Windows portable zip bundles (
amd64,386) - macOS portable (
amd64,arm64) - Linux arm64 portable
- Recommended portable bundles are also published:
MAMA-macOS.tar.gz,MAMA-Linux.tar.gz
- Install with
MAMA-Setup-Windows.exe(orMAMA-Setup-Windows-32bit.exeon 32-bit systems). - Launch MAMA Setup UI from Start Menu.
- In Settings, auto-detect/test the serial port.
- Map knobs and click Save Config.
- Keep MAMA running (close hides to tray, tray menu provides Show/Quit).
- Preferred: install with
MAMA-macOS.pkg(macOS) orMAMA-Linux.deb(Linux). - Alternative: extract
MAMA-macOS.tar.gzorMAMA-Linux.tar.gzto a writable folder. - Start setup UI launcher:
- macOS:
MAMA.app(double-click, no terminal) - Linux:
open-setup-ui.sh
- macOS:
- Configure serial + mappings, then save.
- Optional runtime launcher:
- macOS:
Start Mixer.command - Linux:
start-mixer.sh
- macOS:
- Stop background runtime when needed:
- macOS:
Stop Mixer.command - Linux:
stop-mixer.sh
- macOS:
Notes:
- Windows/macOS use embedded desktop-shell UI windows.
- Linux uses desktop-shell runtime mode with a local browser UI (
http://127.0.0.1:18765). Start Mixer/start-mixer.shlaunches MAMA in background and stores PID in.mama.pid.Stop Mixer/stop-mixer.shuses.mama.pidto stop background runtime.- Windows uses embedded desktop UI + tray by default.
- Linux uses native tray controls in desktop mode.
- On macOS,
mic_in/line_incontrol the default system input level. - On macOS,
app/groupsession targets depend on an available per-app audio backend and may be unavailable. - On macOS, programmatic master-volume updates do not trigger the keyboard volume HUD overlay.
- Startup-at-login can be enabled from Settings on Windows, macOS, and Linux.
- Master board:
firmware/master/master.ino - Slave board:
firmware/slave/slave.ino - Protocol hello:
MAMA:HELLO:1 - Legacy hello accepted by host:
V:1 - Default baud:
115200
Default config discovery order:
./config.yamlmama/internal/config/default.yaml
Most important mapping fields:
knobtargetstep(0..1, where0.02means 2% per detent)selector(app) /selectors(group)fallback_target+fallback_name(optional app/group fallback)
Full schema and examples: docs/CONFIG_REFERENCE.md
From mama/:
go run ./cmd/mama --helpKey flags:
-configpath to YAML config-listenHTTP bind (default127.0.0.1:18765)-openauto-open browser UI-desktopdesktop shell mode (embedded shell on Windows/macOS, browser shell on Linux)-start-hiddenstart hidden shell (Windows: tray hidden; Linux: runtime starts without opening browser; macOS embedded mode starts minimized)
cd mama
go test ./...
go run ./cmd/mamaOr via make wrappers:
make test
make verify
make release-readiness- docs/README.md
- docs/INSTALLATION.md
- docs/CONFIG_REFERENCE.md
- docs/ARCHITECTURE.md
- docs/TROUBLESHOOTING.md
- docs/PRODUCTION_READINESS.md
- docs/RELEASE_REPRODUCIBLE_BUILDS.md
- docs/SIGNING_AND_NOTARIZATION.md
- docs/SUPPORT_POLICY.md
- docs/SOAK_TEST_PLAN.md
- SECURITY.md
- CONTRIBUTING.md
MIT. See LICENSE.