Skip to content

Basic Piano Roll #2

Description

@britle20

Feature Spec

Related feature document: docs/features/05-basic-piano-roll.md

Goal

Build a basic 1-bar piano roll for editing note events in a hybrid clip.

Context

Hybrid clips should contain both drum events and pitched note events using tick-based timing.

Scope

Included:

  • 1-bar piano roll grid
  • Note add and delete
  • Note move and resize if practical for the first version
  • MIDI note numbers
  • Note start and duration stored in ticks
  • Basic oscillator or synth playback, or integration with the existing audio engine
  • CSS Modules styling

Excluded:

  • Advanced editing tools
  • Automation
  • Arrangement view
  • Full sampler instrument
  • Quantize or swing unless already supported

Constraints

Store all note timing in ticks. Keep note geometry derived from model data. Keep project state serializable.

Done when

Users can create and delete note events and the model stores midiNote, startTick, durationTicks, and velocity.

Verification

Run npm run typecheck, npm run lint, npm run test, and npm run build. Manually add/delete notes and verify playback if available.

Notes

Use inline styles only for computed note geometry when useful.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions