The mobile Piano Roll becomes a unified, keyboard-primary instrument surface (wireframe Plate 04/08): a playable keyboard as the base, revealing a Synthesia-style falling-notes roll above it when the pane is tall enough. - Shared keyboard geometry (panes/keyboard_layout.rs): width-driven, pan-aware pitch->x, so the roll's note columns stay aligned with the Virtual Piano keys. Shared keyboard_octave + keyboard_pan_x in SharedPaneState. - Piano Roll vertical mode (is_mobile): notes as columns falling toward an amber now-line by the keys, tempo-map converted (beats->seconds) so onsets cross the line exactly when they sound. Vertical drag scrubs the timeline; horizontal drag smoothly scrolls the keys (snaps to nearest key on release). Long-press creates a note (drag to size) or resizes an existing one; pan suppresses it. The keyboard is embedded (reuses Virtual Piano render + MIDI); the standalone VirtualPiano stack slot is removed. show_roll is driven by the snapped pane size-class so the keyboard<->roll reveal lands on a stack snap point. - Virtual Piano: renders via the shared layout on mobile, colors playback_notes like pressed keys, gates note-on/glissando to presses that start on the keys (never gating release), and hides QWERTY hints on mobile. - Transport formats by document.timeline_mode (Measures->bar.beat.tick, Frames->MM:SS:FF, Seconds->MM:SS.mmm) — per project type, like desktop. - In-pane instrument header (name + Presets + REC). Recording is driven from the app each frame (not the Timeline pane's render) so REC works regardless of visible panes, and stopping playback stops recording. - Compose/Record intent opens Timeline + instrument pane; mobile central panel is full-bleed (no inner margin) so panes sit flush. - phone-ui-sketches.html: inst-bar moved to the top of the music surface. |
||
|---|---|---|
| .. | ||
| assets | ||
| examples | ||
| src | ||
| Cargo.toml | ||
| PLAN.md | ||
| TOOL_IMPLEMENTATION_PLAN.md | ||
| build.rs | ||