Phase 7: Add MIDI clips, instrument and piano roll

This commit is contained in:
Johannes Findeisen 2026-10-27 00:53:41 +01:00
commit cacc086805
38 changed files with 1373 additions and 74 deletions

View file

@ -24,10 +24,11 @@ This repository is a starter scaffold, not a production DAW. It currently provid
- versioned project save/load and a timeline for tracks and clips;
- sample-counted transport, selection, move/trim, timeline zoom and scrolling;
- WAV import/graph playback, bounded recording and missing-asset relinking;
- MIDI clips, a sine instrument, JACK MIDI input and a basic piano roll;
- architecture, format, GUI, roadmap, and decision documents.
The JACK backend has passed software-loopback testing; physical-device playback
and capture are unverified. MIDI and plugin hosting are not implemented yet.
and capture are unverified. MIDI recording and plugin hosting are not implemented.
## Build
@ -56,11 +57,14 @@ Run the GUI:
The GUI opens JACK and offers Play/Stop/Reconnect, backend status and view
switching. The initial empty graph is silent. Modular Graph supports adding,
moving and deleting oscillator/audio/gain/meter/output nodes and connecting ports.
moving and deleting oscillator/audio/instrument/gain/meter/output nodes and connecting ports.
Import WAV (Ctrl+I) creates playable clips; Add region creates silent placeholders.
Record captures JACK input to a chosen WAV; Stop finalizes and adds the take.
Save the project after recording. External asset paths must remain available;
select a missing clip and use File/Relink selected audio to repair it.
Add MIDI clip on an existing track, then open Piano roll (Ctrl+4) to draw notes.
Connect a MIDI source to the JACK `midi_in` port for live playing; Panic/F9
silences held notes. See [MIDI workflow and limits](docs/MIDI.md).
See [audio workflow and limits](docs/AUDIO_FILES.md). The mixer remains a placeholder.
Use Add track/Add region, drag regions or their edges, and Zoom +/-; scrollbars pan.
Ctrl+N/O/S creates, opens or saves a project; Save As chooses another path.
@ -73,7 +77,8 @@ active graph intact; queued changes are labeled until the engine adopts them.
See [GUI documentation](docs/GUI.md).
With JACK development files and an existing JACK-compatible server, run the
isolated software-loopback test with `make test-jack` and the record/reopen/play
acceptance test with `make test-jack-audio`. It connects only test
acceptance test with `make test-jack-audio` and MIDI acceptance with
`make test-jack-midi`. It connects only test
clients. See [engine documentation](docs/AUDIO_ENGINE.md) for configuration,
routing, ownership and recovery.