File size: 3,972 Bytes
2224fa6 b2e4883 44948ab b2e4883 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | ---
title: Jam Buddy
emoji: πΈ
colorFrom: red
colorTo: purple
sdk: docker
app_port: 7860
pinned: false
short_description: You start playing, it joins in β an AI music companion.
---
# Jam Buddy
> An AI music companion that listens to what you play and joins in β at your
> tempo, in the instrument you pick. Built for the Stability AI Challenge at
> Music Hackspace Montreal (August 22β23, 2026).
TRY IT NOW AT [Our HuggingFace Space](https://huggingface.co/spaces/salgadev/jam-buddy)
## What this is
**Jam Buddy** is a call-and-response music practice partner. You start playing,
it joins in.
- Load a **MIDI take** (from a controller) β the buddy detects your tempo and
matches its length, then responds with a complementary part in your chosen
instrument at the same tempo.
- Load an **audio take** (mic/interface) β the buddy uses Stable Audio 3's
audio-to-audio path to actually *hear your groove* and respond to it
rhythmically.
- Pick an **instrument** (bass / lead / rhythm / synth / drums), a **genre**,
and a **mood** β the buddy generates the response with SA3.
- **PLAY BOTH** plays your take and the buddy's response together, in tempo.
- Every response is saved to `generations/` so you can keep and inspect what it
produced.
The whole thing is **screenreader-compatible by design**: every knob is a
labelled `<input type=range>`, buttons have accessible names, and the status is
announced via `aria-live`. Voice-first *is* accessibility.
The SA3 generation runs **locally on the open Stable Audio 3 weights** β
`small-music` for melodic instruments, `small-sfx` for clean isolated drum hits.
Built for the **Stability AI Challenge** at Music Hackspace Montreal
(August 22β23, 2026, in partnership with MUTEK).
## Quick start (web app)
```bash
cd apps/web
pnpm install
pnpm dev
# β http://localhost:3000
```
The web app shells out to `tools/jam_buddy.py` (the SA3 pipeline). That needs
the `stable-audio-3` venv + a one-time model download. See
[`docs/06-stable-audio-integration.md`](docs/06-stable-audio-integration.md).
### CLI (the pipeline directly)
```bash
# MIDI take β tempo + length matched, then respond with bass
python3 tools/jam_buddy.py --midi take.mid --instrument bass --out out.wav
# Audio take β audio-to-audio, responds to the groove
python3 tools/jam_buddy.py --wav take.wav --genre metal --instrument lead --out out.wav
# Manual knob only
python3 tools/jam_buddy.py --bpm 120 --instrument drums --out out.wav
```
## Documentation
| Doc | Purpose |
|---|---|
| [`docs/01-vision.md`](docs/01-vision.md) | What we're building and why |
| [`docs/02-architecture.md`](docs/02-architecture.md) | System architecture, services, data flow |
| [`docs/03-data-model.md`](docs/03-data-model.md) | Prompt builder, knobs, generation metadata |
| [`docs/05-accessibility.md`](docs/05-accessibility.md) | Screenreader/keyboard accessibility strategy |
| [`docs/06-stable-audio-integration.md`](docs/06-stable-audio-integration.md) | SA3 setup, audio-to-audio, Vega notes, LoRA |
| [`docs/07-reaper-integration.md`](docs/07-reaper-integration.md) | DAW integration via Reaper |
| [`docs/08-build-plan.md`](docs/08-build-plan.md) | Hackathon build plan |
| [`docs/09-risks.md`](docs/09-risks.md) | Ranked risks + mitigations |
| [`docs/10-team-pitch.md`](docs/10-team-pitch.md) | Team pitch + skills |
## Conventions
- **Language**: TypeScript (frontend), Python 3.10+ (audio pipeline)
- **Linting**: ESLint + Prettier (TS), ruff + black (Python)
- **Accessibility**: axe-core in CI, NVDA + VoiceOver tested before each demo
- **Commits**: Conventional Commits (`feat:`, `fix:`, `docs:`, etc.)
- **Branches**: `feat/*`, `fix/*`, `docs/*`, `chore/*`
For the agent harness β commands, test contract, and what's deliberately not in
git β see [`docs/HARNESS.md`](docs/HARNESS.md).
## License
MIT (code). Generated audio stays local / your own material; no third-party
samples ship in this repo.
|