Skip to content

[WIP] feat: MIDI file import — drag .mid files onto timeline to create piano roll tracks#247

Closed
Copilot wants to merge 1 commit intomainfrom
copilot/fix-209436471-1157698754-40c528a1-789b-4e7b-a06d-120a546362dc
Closed

[WIP] feat: MIDI file import — drag .mid files onto timeline to create piano roll tracks#247
Copilot wants to merge 1 commit intomainfrom
copilot/fix-209436471-1157698754-40c528a1-789b-4e7b-a06d-120a546362dc

Conversation

Copy link
Copy Markdown

Copilot AI commented Mar 19, 2026

Thanks for assigning this issue to me. I'm starting to work on it and will keep this PR's description up to date as I form a plan and make progress.

Original prompt

This section details on the original issue you should resolve

<issue_title>feat: MIDI file import — drag .mid files onto timeline to create piano roll tracks</issue_title>
<issue_description>## Problem

MIDI file import is a standard DAW feature that every competitor supports. Users need to import .mid files from other DAWs, online MIDI libraries, and external tools. Currently ACE-Step only has MIDI export planned (#215) but no import capability.

Competitive Reference

All competitors (BandLab, Amped Studio, Audiotool, Ableton, Logic, FL Studio) support MIDI file import.

Proposed Solution

User Flow

  1. Drag & drop: Drag .mid file onto timeline → parse → create piano roll tracks
  2. File picker: Import button / menu → select .mid file → same result
  3. Multi-track MIDI: Each MIDI track/channel creates a separate piano roll track
  4. Metadata: Import tempo, time signature, track names from MIDI file

Technical Details

  • Use midi-parser-js or @tonejs/midi (MIT) for parsing Standard MIDI Files
  • Map MIDI channels to piano roll tracks
  • Convert MIDI ticks to beat positions using tempo map
  • Handle both Type 0 (single track) and Type 1 (multi-track) MIDI files
  • Respect note-on velocity mapping to our 0-1 velocity range

Store Integration

  • New action: importMidiFile(file: File) → parses and creates tracks + clips
  • Reuse existing addTrack('pianoroll') and addMidiNote() actions

Acceptance Criteria

  • Drag .mid file onto timeline creates piano roll track(s)
  • File picker import works
  • Multi-track MIDI creates multiple tracks
  • Note pitch, velocity, duration correctly mapped
  • Tempo and time signature from MIDI file applied (with user confirmation)
  • Track names from MIDI file used
  • Unit tests for MIDI parsing
  • E2E test for import flow

Related

Comments on the Issue (you are @copilot in this section)


📍 Connect Copilot coding agent with Jira, Azure Boards or Linear to delegate work to Copilot in one click without leaving your project management tool.

@ChuxiJ
Copy link
Copy Markdown

ChuxiJ commented Mar 19, 2026

Closing Copilot WIP — Claude Code/Codex taking over.

@ChuxiJ ChuxiJ closed this Mar 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: MIDI file import — drag .mid files onto timeline to create piano roll tracks

2 participants