🎸 Guitar Pro Import (GP1–GP8)

MidiEditor AI can natively open all Guitar Pro formats — from the original 1990s DOS-era GP1 files all the way to the latest Guitar Pro 8. Files are converted to MIDI on-the-fly with tempo, time signature, key signature, tuning, and instrument mapping preserved. No external converter or Guitar Pro installation needed.

📂 Open via: File → Open (Ctrl+O) — the file dialog accepts .gp, .gp3, .gp4, .gp5, .gpx, and .gtp files. Format detection is header-based, so even misnamed extensions work correctly.


Supported Formats

Every Guitar Pro version released between 1993 and 2024 is supported:

Format Extensions Version Range Parser Encoding
GP1 .gtp v1.0 – v1.04 Gp12Parser Binary (DOS, French header “GUITARE”)
GP2 .gtp v2.20 – v2.21 Gp12Parser Binary (DOS, adds triplet feel, repeats, capo)
GP3 .gp3 v3.00 Gp345Parser Binary
GP4 .gp4 v4.00 – v4.06 Gp345Parser Binary (adds lyrics, RSE, key signatures)
GP5 .gp5 v5.00 – v5.10 Gp345Parser Binary (adds RSE2, extended note effects)
GP6 / GPX .gpx v6.x Gp678Parser BCFZ-compressed GPIF XML
GP7 / GP8 .gp v7.x – v8.x Gp678Parser ZIP-packaged GPIF XML

A Brief History of Guitar Pro

1993GP1 released as a DOS application in France. Binary format with a French header (“FICHIER GUITARE”). Basic tablature storage for guitar tracks.
1997GP2 adds triplet feel, repeat markers, and capo support. Still a DOS binary format.
1999GP3 moves to Windows. New binary format (.gp3) with multi-track support, tempo changes, and text annotations.
2001GP4 adds lyrics, Realistic Sound Engine (RSE), and key signatures. Format mostly backward-compatible with GP3.
2005GP5 introduces RSE2 with real instrument samples, tablature for bass/banjo/drums, and extended note effects (slides, hammer-on, tremolo bar).
2010GP6 completely new format: GPIF XML compressed with the proprietary BCFZ algorithm (custom bit-level LZ77, not zlib). Extension changes to .gpx.
2017GP7 switches from BCFZ to standard ZIP packaging around the same GPIF XML. Extension becomes .gp.
2024GP8 continues the ZIP+XML format with minor schema additions. Same .gp extension.

Header-Based Format Detection

MidiEditor AI does not rely on the file extension to determine the format. Instead, it reads the magic bytes at the start of each file. This means:

Family Detection Method
GP1 / GP2 Header string: FICHIER GUITAR PRO v1 or v2 (French)
GP3 / GP4 / GP5 Header string: FICHIER GUITAR PRO v3, v4, or v5
GP6 (BCFZ) Magic bytes: BCFZ at offset 0
GP7 / GP8 (ZIP) ZIP header PK\x03\x04 containing Content/score.gpif

What Gets Converted

When you open a Guitar Pro file, the following data is extracted and converted to MIDI:

🎵 Notes & Tabs

String/fret tablature is converted to MIDI note numbers using the track’s tuning. Note velocity, duration, and timing are preserved.

⏱️ Tempo

Tempo changes (BPM markers) are inserted as MIDI tempo meta events at the correct tick positions.

🎼 Time Signature

Time signature changes (e.g., 4/4 → 6/8) are extracted per measure and inserted as MIDI time signature meta events.

♭ Key Signature

Key signature markers (GP4+) are converted to MIDI key signature meta events with correct sharps/flats and major/minor mode.

🎸 Instruments

Guitar Pro instrument assignments are mapped to General MIDI program numbers. Track names are preserved. Each track gets its own MIDI channel.

🎤 Effects

Bends, slides, hammer-on/pull-off, vibrato, and harmonics are converted to MIDI pitch bend and controller events where possible.


Parser Architecture

The import system uses three parser families, all sharing a common entry point (GpImporter):

Parser Formats Approach
Gp12Parser GP1, GP2 Sequential binary reading of DOS-era format. Ported from TuxGuitar’s Java reference implementation (GP1InputStream, GP2InputStream).
Gp345Parser GP3, GP4, GP5 Inheritance chain: Gp3ParserGp4ParserGp5Parser. Each subclass adds version-specific fields. Binary format with typed fields (strings, ints, bytes).
Gp678Parser GP6, GP7, GP8 First decompresses the container (BCFZ or ZIP), then parses the GPIF XML document. DOM-based XML traversal extracts scores, tracks, bars, voices, beats, and notes.

Bugs Fixed from Upstream

The Meowchestra/MidiEditor upstream contained a non-functional Guitar Pro parser skeleton. MidiEditor AI fixed and completed it:

Issue Problem Fix
GP5 note effects Missing readNoteEffects() override — GP5 effect flags were read as GP3 format, corrupting subsequent data Added Gp5Parser::readNoteEffects() with correct GP5 flag layout
Field ordering readNote() read accentuatedNote and ghostNote flags in wrong order Swapped to match the actual binary layout
EOF crashes No boundary checking — truncated files caused segfaults Added EOF checks throughout binary readers
BCFZ decompression Used zlib inflate() — completely wrong algorithm for BCFZ Rewrote with correct bit-level LZ77 algorithm (ported from BardMusicPlayer C# source)
ZIP extraction Parsed local file headers which have unreliable sizes with data descriptors Rewrote to parse the central directory from the end of the file
XML lookup getSubnodeByName() found nested elements before top-level collections (e.g., <Bars> inside <MasterBar>) All lookups now use directOnly=true for first-child-only matching
GP1/GP2 missing No support at all for the original DOS formats New Gp12Parser ported from TuxGuitar reference

Tested Files

The parser has been validated against real-world files spanning all supported formats:

File Format Tracks Measures
You’ve Got Something There.gtp GP1 8 12
U2 – Lemon.gp3 GP3 9 199
Sakuran – Sakuran.gp4 GP4 5 137
Flogging Molly – Float.gp5 GP5 5 74
Guns N’ Roses – Sweet Child O’ Mine.gpx GP6 6 180
The Mirror.gp GP7 6 147

Workflow: Guitar Pro to FFXIV

A common use case is converting Guitar Pro tabs into FFXIV Bard Performance files. Here’s the recommended workflow:

1️⃣ Open GP File

File → Open and select your .gp, .gp5, .gpx, or other Guitar Pro file. Tracks, notes, and tempo are imported automatically.

2️⃣ Review Tracks

Check the imported tracks in the Track Editor. Rename, delete, or rearrange tracks as needed. Guitar Pro track names are preserved.

3️⃣ Fix Channels

Click Fix X|V Channels Fix X|V to set up the FFXIV channel mapping, program changes, and guitar variant switching automatically.

4️⃣ Save as MIDI

Save with File → Save As (.mid). The file is now ready for MidiBard2 or other FFXIV performance tools.

💡 Tip: You can also ask MidiPilot to help: “Convert this Guitar Pro import for FFXIV 8-player ensemble, constrain range to C3–C6, make all tracks monophonic”


Tips