Skip to content

Editor: import a GP guitar/bass track into an existing session (add or replace) #36

Description

@byrongamatos

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

  1. Add + Replace. One modal: pick a GP guitar/bass track, then choose a destination — "Add as a new arrangement" or "Replace ▸ <existing arrangement>".
  2. 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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions