The gap
The editor can already Add Keys and Add Drums from a Guitar Pro file (as new arrangements), and it can create a whole new song from a GP file. But there is no way to bring a GP guitar or bass track into the song you're already editing — neither as a new arrangement nor to replace an existing one.
The core conversion (convert_file in the feedback repo's lib/gp2rs) already produces guitar/bass arrangements. This is purely the "into an existing session" wiring plus a modal.
Chosen design
- Add + Replace. One modal: pick a GP guitar/bass track, then choose a destination — "Add as a new arrangement" or "Replace ▸ <existing arrangement>".
- Keep the song's timing. Align imported notes to the session's existing audio by passing the current
_effectiveAudioOffset() as the convert audio_offset. Do not touch the song-level beats / sections / audio, and do not re-sync from the GP. (Finer alignment is still the existing offset tool, which shifts all arrangements.)
Shape
- Backend: new
POST /api/plugins/editor/import-guitar-track, mirroring import-keys but without the piano forcing (single guitar/bass track; rejects piano/drums/percussion/vocal; validates a finite audio_offset). Refactor the nested _arr_to_data helper to module scope so keys + guitar import share it.
- Frontend: a "+ Guitar/Bass" toolbar button + modal (track picker filtered to guitar/bass, destination Add/Replace). Add → append the arrangement; Replace → a
ReplaceArrangementChartCmd that swaps the chart (notes/chords/templates/tuning) while keeping the target's name, tones, and the song-level timeline, in one undo step.
- Bass naming: a bass arrangement's name must match
/bass/i so it renders on E/A/D/G (4 lanes) rather than as a 6-string guitar.
Definition of done
From an open session: import a GP, pick a guitar or bass track, and either add it as a new arrangement or replace an existing one — notes land aligned to the current audio, bass renders on E/A/D/G (not shifted), the replace is one undo step, and the song's beats/sections/audio are untouched.
The gap
The editor can already Add Keys and Add Drums from a Guitar Pro file (as new arrangements), and it can create a whole new song from a GP file. But there is no way to bring a GP guitar or bass track into the song you're already editing — neither as a new arrangement nor to replace an existing one.
The core conversion (
convert_filein thefeedbackrepo'slib/gp2rs) already produces guitar/bass arrangements. This is purely the "into an existing session" wiring plus a modal.Chosen design
_effectiveAudioOffset()as the convertaudio_offset. Do not touch the song-level beats / sections / audio, and do not re-sync from the GP. (Finer alignment is still the existing offset tool, which shifts all arrangements.)Shape
POST /api/plugins/editor/import-guitar-track, mirroringimport-keysbut without the piano forcing (single guitar/bass track; rejects piano/drums/percussion/vocal; validates a finiteaudio_offset). Refactor the nested_arr_to_datahelper to module scope so keys + guitar import share it.ReplaceArrangementChartCmdthat swaps the chart (notes/chords/templates/tuning) while keeping the target's name, tones, and the song-level timeline, in one undo step./bass/iso it renders on E/A/D/G (4 lanes) rather than as a 6-string guitar.Definition of done
From an open session: import a GP, pick a guitar or bass track, and either add it as a new arrangement or replace an existing one — notes land aligned to the current audio, bass renders on E/A/D/G (not shifted), the replace is one undo step, and the song's beats/sections/audio are untouched.