You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: PLANS.md
+20-22Lines changed: 20 additions & 22 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,34 +4,24 @@
4
4
5
5
Create a browser-first, clip-oriented mini DAW that is useful for making electronic music. The app should favor correct timing, serializable project data, and focused workflows over broad full-DAW scope.
6
6
7
-
## Current Milestone: M1 Hybrid Clip Editor
7
+
## Current Milestone: Develop to Main Stabilization
8
8
9
-
M1 is a 1-bar hybrid clip editor. A hybrid clip may contain drum step sequencer events and piano roll note events in the same clip.
9
+
The current branch is being prepared for a `develop` to `main` PR. The goal is to make the repository easy to understand, verify, and review at its current prototype stage.
10
10
11
-
M1 should include:
11
+
Focus:
12
12
13
-
- A Vite + React + TypeScript scaffold using CSS Modules.
14
-
- A documented tick-based project model with PPQ 480.
15
-
- Web Audio sample playback and sequenced lookahead scheduling.
16
-
- A 16-step drum sequencer.
17
-
- A basic piano roll.
18
-
- Loop playback for the selected 1-bar clip.
19
-
20
-
## Active Preparation Tasks
21
-
22
-
- Establish repository instructions for coding agents.
23
-
- Add product, architecture, data model, audio engine, UI, and testing documentation.
24
-
- Add feature specs for the first five implementation tasks.
25
-
- Add GitHub issue and PR templates.
26
-
- Add a CI workflow that tolerates the repository before the scaffold exists.
13
+
- Keep README, plans, and feature docs aligned with the implemented state.
14
+
- Keep the GitHub Issue queue and `Active Issue Order` clean.
15
+
- Verify the standard checks pass before opening release-prep PRs.
16
+
- Avoid adding new product scope during stabilization unless the user explicitly asks for it.
27
17
28
18
## Active Issue Order
29
19
30
-
Use this section as the current execution order for agent work. Feature document numbering describes the planned product sequence, but actual issue order may change as dependencies, review feedback, or implementation risks become clearer.
20
+
No active implementation issues are queued right now.
When new work is needed, create or update a feature spec under `docs/features/`, create a linked GitHub Issue, and add that issue here in priority order.
33
23
34
-
## Planned Milestones
24
+
## Completed Milestones
35
25
36
26
1. Project scaffold.
37
27
2. AudioContext and sample playback.
@@ -55,8 +45,14 @@ Use this section as the current execution order for agent work. Feature document
55
45
20. Adjustable arrangement length.
56
46
21. Arrangement WAV export.
57
47
22. Multi-project management.
58
-
23. Project JSON export/import.
59
-
24. Basic effects.
48
+
49
+
## Planned Milestones
50
+
51
+
1. Project JSON export/import.
52
+
2. Basic effects.
53
+
3. Custom project-management dialogs to replace browser prompt/confirm flows.
54
+
4. Browser-driven smoke tests with Playwright or an equivalent e2e tool.
55
+
5. Broader manual/audio QA pass before treating the prototype as a stable release.
60
56
61
57
## Backlog
62
58
@@ -69,6 +65,8 @@ Use this section as the current execution order for agent work. Feature document
69
65
- Quantize utilities.
70
66
- Swing or groove timing after strict timing is reliable.
71
67
- MIDI file import or export.
68
+
- Improved sampler sustain authoring and tuning UI.
69
+
- More complete effect slots and effect parameter persistence.
A Web Audio API-based mini DAW for sequencing synthesized and sampled instruments in the browser.
4
-
5
-
## Description
6
-
7
-
This project is an early browser-first mini DAW for creating electronic music with short clips. The planned first experience is a 1-bar hybrid clip editor that combines drum step sequencing, basic piano roll editing, and loop playback.
3
+
A browser-first mini DAW prototype for creating electronic music with clips, step sequencing, piano-roll notes, arrangement playback, and local project persistence.
8
4
9
5
## Product Goal
10
6
11
7
Build a practical clip-based music creation tool that can grow beyond a demo while staying focused, serializable, and timing-conscious. React renders the interface, but exact audio scheduling belongs to the Web Audio engine.
12
8
13
-
## Planned Stack
9
+
## Stack
14
10
15
11
- Vite
16
12
- React
17
13
- TypeScript
18
14
- CSS Modules
19
15
- Web Audio API
20
-
- npm scripts for development, checks, tests, and production builds
16
+
- IndexedDB for browser-local project and imported sample persistence
17
+
- ESLint, Vitest, and Vite build checks
21
18
22
19
## Current Status
23
20
24
-
The project has an initial Vite + React + TypeScript scaffold and early DAW UI/audio features under active development. Arrangement placement, arrangement playback, persistence, and broader song-building workflows are still planned work.
21
+
The app is an early browser-based DAW prototype, not a full DAW replacement. Current develop-branch functionality includes:
25
22
26
-
## Getting Started
23
+
- Main DAW shell with transport, sidebar, clip editor, and arrangement mode.
24
+
- Drum step sequencer with lane sample selection, lane ordering, and step subdivisions.
25
+
- Piano roll note editing with Default Synth and Iowa Piano playback paths.
26
+
- Pattern and song transport playback with pause/resume, playhead, BPM control, and loop ranges.
27
+
- Clip sidebar workflows for creating, renaming, deleting, importing WAV files, and adding/removing instruments.
28
+
- Arrangement view for placing clips, moving/deleting clip instances, looped arrangement playback, adjustable arrangement length, mixer controls, and WAV export.
29
+
- Browser-local IndexedDB persistence, imported audio blob persistence, and multiple local projects.
30
+
31
+
Known limits:
27
32
28
-
These are the intended commands after the scaffold is added:
33
+
- Project storage is local to the current browser profile.
34
+
- There is no cloud sync, account system, realtime recording, plugin support, or advanced mastering workflow.
35
+
- Some UI flows still use simple browser dialogs while the core behavior is being stabilized.
36
+
37
+
## Getting Started
29
38
30
39
```bash
31
40
npm install
32
41
npm run dev
42
+
```
43
+
44
+
Useful checks:
45
+
46
+
```bash
33
47
npm run typecheck
34
48
npm run lint
35
49
npm run test
36
50
npm run build
37
51
```
38
52
39
-
The scaffold provides these scripts. Feature-specific behavior will be added in later milestones.
40
-
41
-
## Documentation Map
53
+
## Documentation
42
54
43
55
-[Product definition](docs/product.md)
44
56
-[Architecture](docs/architecture.md)
@@ -49,48 +61,10 @@ The scaffold provides these scripts. Feature-specific behavior will be added in
49
61
-[Code conventions](docs/code-conventions.md)
50
62
-[Project plans](PLANS.md)
51
63
-[Agent instructions](AGENTS.md)
64
+
-[Feature specs](docs/features/)
65
+
66
+
Course-facing planning and workflow notes are maintained in the [GitHub Wiki](https://github.com/boostcampwm-snu-2026-1/mini-web-daw-Jaewan-Park/wiki).
2. Add Web Audio `AudioContext` setup and one-shot sample playback.
82
-
3. Add a lookahead scheduler for tick-based loop playback.
83
-
4. Build a 16-step drum sequencer.
84
-
5. Build a basic 1-bar piano roll.
85
-
6. Combine drum and note events into hybrid clip loop playback.
86
-
7. Import local WAV files as audio clips.
87
-
8. Place clips on the arrangement timeline and play the arranged song.
88
-
9. Connect mixer faders, mute, solo, and meters to real audio routing.
89
-
10. Add browser-local project persistence with IndexedDB.
90
-
11. Support longer hybrid clips and adjustable arrangement length.
91
-
12. Render the arrangement to a downloadable WAV file.
92
-
13. Manage multiple browser-local projects.
93
-
94
-
## Notes
95
-
96
-
The project should not overclaim working functionality while it is in planning and scaffolding. Future changes should keep project data serializable, store musical time in ticks, and keep React UI separate from exact audio timing.
70
+
Feature work is planned through GitHub Issues and feature specs under `docs/features/`. Implementation PRs target `develop` by default. Changes should stay small, keep project data serializable, store musical time in ticks, and keep React UI separate from exact audio scheduling.
0 commit comments