Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
99 commits
Select commit Hold shift + click to select a range
890c5c5
GPIF reader — Phase 1: skeleton + song metadata
kaizenman Apr 18, 2026
967caba
GPIF reader — Phase 2: tracks, tuning, MIDI channels
kaizenman Apr 18, 2026
10cc8f5
GPIF reader — Phase 3: measures, voices, beats, notes
kaizenman Apr 18, 2026
09d97a2
GPIF reader — Phase 4: note effects + beat effects
kaizenman Apr 18, 2026
a1cc622
GPIF reader — Phase 5: full parity with GP3/4/5
kaizenman Apr 18, 2026
5c06e7f
GPIF reader — Phase 5 audit: close every parity gap we can
kaizenman Apr 18, 2026
7d668d6
GPIF reader — fingering, legato, anacrusis, track automations
kaizenman Apr 18, 2026
21a7ea7
gpif: extract pick-slide flags (0x40 PickSlideDown, 0x80 PickSlideUp)
kaizenman Apr 21, 2026
6393895
Merge pull request #7 from kaizenman/fix/gp7-pick-slides
kaizenman Apr 21, 2026
2fc6335
gpif: extract LeftHandTapped note property
kaizenman Apr 21, 2026
af42259
Merge pull request #8 from kaizenman/fix/gp7-left-hand-tapped
kaizenman Apr 21, 2026
39de5f1
gpif: extract note accidental mode (ConcertPitch / TransposedPitch)
kaizenman Apr 21, 2026
b1e04bc
Merge pull request #10 from kaizenman/fix/gp7-note-accidental-mode
kaizenman Apr 21, 2026
bd72e9b
gpif: extract <InstrumentArticulation> sibling element
kaizenman Apr 21, 2026
6fe66a3
Merge pull request #11 from kaizenman/fix/gp7-note-instrument-articul…
kaizenman Apr 21, 2026
f92cb42
gpif: propagate note-level <Tapped> property to beat slapEffect
kaizenman Apr 21, 2026
6bc8664
Merge pull request #12 from kaizenman/fix/gp7-note-tapped
kaizenman Apr 21, 2026
d94bf30
gpif: map <Fadding> to full FadeType enum (FadeIn/FadeOut/VolumeSwell)
kaizenman Apr 21, 2026
0090192
Merge pull request #13 from kaizenman/fix/gp7-beat-fadding
kaizenman Apr 21, 2026
5300fe2
gpif: extract <Fermatas> / <Fermata> master-bar elements
kaizenman Apr 21, 2026
b16a5f0
Merge pull request #14 from kaizenman/fix/gp7-masterbar-fermata
kaizenman Apr 21, 2026
78592bc
gpif: extract <Ornament> sibling element on notes
kaizenman Apr 21, 2026
8631984
Merge pull request #15 from kaizenman/fix/gp7-note-ornament
kaizenman Apr 21, 2026
17342e9
gpif: distinguish Slight vs Wide <Vibrato> on notes
kaizenman Apr 21, 2026
df2bda3
Merge pull request #16 from kaizenman/fix/gp7-note-vibrato-type
kaizenman Apr 21, 2026
fe03846
gpif: extract Accent bit 0x10 (Tenuto) as a dedicated flag
kaizenman Apr 21, 2026
3309bd4
Merge pull request #17 from kaizenman/fix/gp7-note-tenuto
kaizenman Apr 21, 2026
64501c0
gpif: extract <TransposedPitchStemOrientation> beat siblings
kaizenman Apr 21, 2026
d3f491b
Merge pull request #18 from kaizenman/fix/gp7-beat-stem-orientation
kaizenman Apr 21, 2026
71cc979
gpif: extract <SimileMark> bar element
kaizenman Apr 21, 2026
2de19ea
Merge pull request #19 from kaizenman/fix/gp7-bar-simile-mark
kaizenman Apr 21, 2026
cc8fb00
gpif: extract <Property name="ShowStringNumber"> note property
kaizenman Apr 21, 2026
91de24c
Merge pull request #20 from kaizenman/fix/gp7-note-show-string-number
kaizenman Apr 21, 2026
01c6006
gpif: extract beat-level Hairpin / Slashed / DeadSlapped / Golpe / Wa…
kaizenman Apr 21, 2026
24a33fe
Merge pull request #21 from kaizenman/fix/gp7-beat-batch-effects
kaizenman Apr 21, 2026
e742742
gpif: apply <WordsAndMusic> fallback when Words/Music are empty
kaizenman Apr 21, 2026
c3e9087
Merge pull request #22 from kaizenman/fix/gp7-score-words-and-music
kaizenman Apr 21, 2026
c23b81c
gpif: map <Property Element>+<Variation> via the GP6 percussion table
kaizenman Apr 21, 2026
2146c9b
Merge pull request #23 from kaizenman/fix/gp7-note-element-variation-…
kaizenman Apr 21, 2026
8564739
gpif: expose full <Sounds> collection via Track.sounds (GpifSound)
kaizenman Apr 21, 2026
0b739f1
Merge pull request #24 from kaizenman/fix/gp7-track-sounds-collection
kaizenman Apr 21, 2026
81a9afb
gpif: extract Track layout batch (SystemsLayout / NotationPatch / Ins…
kaizenman Apr 21, 2026
4eacc89
Merge pull request #25 from kaizenman/fix/gp7-track-layout-batch
kaizenman Apr 21, 2026
dc2457b
gpif: extract tuning <Label> and <PartSounding> (transposition hints)
kaizenman Apr 21, 2026
8b125e2
Merge pull request #26 from kaizenman/fix/gp7-track-tuning-sounding
kaizenman Apr 21, 2026
ee8e19e
gpif tests: unskip Directions / Drums (pre-existing silent skips)
kaizenman Apr 21, 2026
eb51370
Merge pull request #27 from kaizenman/fix/gp7-unskip-directions-and-d…
kaizenman Apr 21, 2026
279c044
gpif: rewrite stale docstring + relabel GP7+ → GPIF
kaizenman Apr 21, 2026
1b7e386
Merge pull request #28 from kaizenman/fix/gp7-labels-docstring-cleanup
kaizenman Apr 21, 2026
3c44da9
gpif: extract Note <Octave>/<Tone> (GP6 pitch) + Feedback harmonic
kaizenman Apr 21, 2026
dc85e87
Merge pull request #29 from kaizenman/fix/gp7-note-octave-tone-feedback
kaizenman Apr 21, 2026
46ee0f9
gpif: map full <Rasgueado> enum (18 fingering patterns)
kaizenman Apr 21, 2026
aae5e31
Merge pull request #30 from kaizenman/fix/gp7-beat-rasgueado-enum
kaizenman Apr 21, 2026
dda3999
gpif: extract <FreeTime/> onto MeasureHeader.isFreeTime
kaizenman Apr 21, 2026
f7c6444
Merge pull request #31 from kaizenman/fix/gp7-masterbar-free-time
kaizenman Apr 21, 2026
f83ff28
gpif: extract beat-level <BarreFret> + <BarreString> (BarreShape enum)
kaizenman Apr 21, 2026
3436a89
Merge pull request #32 from kaizenman/fix/gp7-beat-barre
kaizenman Apr 21, 2026
237afc0
gpif: extract per-beat <Lyrics><Line> into Beat.lyrics
kaizenman Apr 21, 2026
4537ff6
Merge pull request #33 from kaizenman/fix/gp7-beat-lyrics
kaizenman Apr 21, 2026
f8e521d
gpif: extract <XProperties> on Beat / Bar / MasterBar
kaizenman Apr 21, 2026
223a8ba
Merge pull request #34 from kaizenman/fix/gp7-xproperties
kaizenman Apr 21, 2026
64f62bf
gpif: extract <Automation type="SustainPedal"> markers
kaizenman Apr 21, 2026
199debb
Merge pull request #35 from kaizenman/fix/gp7-sustain-pedal
kaizenman Apr 21, 2026
54bef4b
gpif: extract <BackingTrack> + master-track <SyncPoint> automations
kaizenman Apr 21, 2026
c26bdd8
Merge pull request #36 from kaizenman/fix/gp7-backing-track-sync-points
kaizenman Apr 21, 2026
b55575e
gpif: TripletFeel full 7-variant enum + DoubleWhole duration
kaizenman Apr 21, 2026
58af0bf
Merge pull request #37 from kaizenman/fix/gp7-triplet-feel-full-enum
kaizenman Apr 21, 2026
f30d261
gpif: score-layout batch — ScoreSystemsLayout + Chord show flags + Vi…
kaizenman Apr 22, 2026
0e6f015
Merge pull request #38 from kaizenman/fix/gp7-score-layout-chord-flag…
kaizenman Apr 22, 2026
944f73a
tests: add AT parity gate — freeze GpifParser case snapshot
kaizenman Apr 22, 2026
5275a19
Merge pull request #39 from kaizenman/fix/gp7-coverage-gate-test
kaizenman Apr 22, 2026
73cf11d
gpif: extract full <NotationPatch>/<InstrumentSet> articulation table
kaizenman Apr 22, 2026
515c0d4
Merge pull request #40 from kaizenman/fix/gp7-notation-patch-articula…
kaizenman Apr 22, 2026
549ec11
gpif: load <Assets><Asset> raw audio bytes into BackingTrack.rawAudio…
kaizenman Apr 22, 2026
2c1e6ab
Merge pull request #41 from kaizenman/fix/gp7-backing-track-raw-audio
kaizenman Apr 22, 2026
357d1ed
gpif: fix three audit-surfaced semantic divergences vs alphaTab
kaizenman Apr 22, 2026
4b97a7f
Merge pull request #42 from kaizenman/fix/gp7-audit-semantic-divergences
kaizenman Apr 22, 2026
54626a5
gpif: tighten parity gate — full 365-label snapshot + noteheadSlashed…
kaizenman Apr 22, 2026
5b7ed91
Merge pull request #43 from kaizenman/fix/gp7-parity-gate-full-snapshot
kaizenman Apr 22, 2026
eeec30f
gpif: two more audit findings — Whammy offsets + Arpeggio fallback
kaizenman Apr 22, 2026
6e038a8
Merge pull request #44 from kaizenman/fix/gp7-whammy-curve-arpeggio-f…
kaizenman Apr 22, 2026
c7e0ceb
gpif: three block-by-block audit findings (chord frets + clef ottava)
kaizenman Apr 22, 2026
771faac
Merge pull request #45 from kaizenman/fix/gp7-chord-absolute-frets-cl…
kaizenman Apr 22, 2026
650c959
gpif: BeatEffect.vibratoType for Slight/Wide enum parity
kaizenman Apr 22, 2026
0163fae
Merge pull request #46 from kaizenman/fix/gp7-beat-vibrato-type
kaizenman Apr 22, 2026
26cec1f
gpif: block-by-block audit round 2 — five more divergences fixed
kaizenman Apr 22, 2026
207d1fe
Merge pull request #47 from kaizenman/fix/gp7-block-audit-round2
kaizenman Apr 22, 2026
db048e0
gpif: read <Program> from GeneralMidi/MidiConnection (AT fallback path)
kaizenman Apr 22, 2026
526b540
Merge pull request #48 from kaizenman/fix/gp7-generalmidi-program-fal…
kaizenman Apr 22, 2026
5f05ba3
gpif: clear hasDoubleBar on last master bar (alphaTab _buildModel fix)
kaizenman Apr 22, 2026
8c355d1
Merge pull request #49 from kaizenman/fix/gp7-last-bar-doublebar-cleanup
kaizenman Apr 22, 2026
f363db4
gpif: docstring cleanup — stale "Deliberately skipped" list
kaizenman Apr 22, 2026
c3593ed
Merge pull request #50 from kaizenman/fix/gp7-final-audit-cleanup
kaizenman Apr 22, 2026
6db9156
gpx: add BCFZ/BCFS container support — enables GP6 reads
kaizenman Apr 22, 2026
b4b68c2
gpif: clear percussionArticulations on non-percussion tracks
kaizenman Apr 25, 2026
12daaf4
gpif: align defaultSystemsLayout default with alphaTab (3, not 4)
kaizenman Apr 25, 2026
07e1528
gpif: rename gp7.py → gpif.py + GP7File → GpifFile
kaizenman Apr 25, 2026
6f09811
ci: exclude binary GP files from end-of-file-fixer + trim gpif.py tra…
kaizenman Apr 25, 2026
202bd49
ci: fix flake8 and pyupgrade lint findings in gpif.py + gpx.py
kaizenman Apr 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,6 @@ repos:
rev: v6.0.0
hooks:
- id: trailing-whitespace
exclude: '\.(gp|gp3|gp4|gp5|gp7|gp8|gpx|tmp)$'
- id: end-of-file-fixer
exclude: '\.(gp|gp3|gp4|gp5|gp7|gp8|gpx|tmp)$'
13 changes: 13 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,19 @@
Changelog
=========

Unreleased
----------

**Changes:**

- Added Guitar Pro 6 (``.gpx`` / BCFZ + BCFS) read support via a port of
AlphaTab's ``GpxFileSystem`` + ``BitReader``. Containers are unpacked
and the embedded ``score.gpif`` is parsed via the existing GP7/GP8
GPIF code path — no duplicate parser. The port is byte-for-byte
verified against AlphaTab on 3,768 real-world GP6 files (entry
``fileName`` + ``fileSize`` + SHA-256 match on every entry).


Version 0.10.2
-------------

Expand Down
Loading