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.