Catalog PyPI
Back to packageRELEASE DETAILS

0.1.1

PyPI

abcforge

CLI pipeline: Guitar Pro / MusicXML → ABC → interleaved ABC

Published10 Jun 2026
Direct dependencies6
Transitive dependenciesNot calculated

README

Version 0.1.1 documentation

abcforge

CLI for converting music notation from Guitar Pro, MusicXML into .abc (supports interleaving).

Why? Existing tools like abctoolkit have subtle bugs (patched here) for abc interleaving. The abc2xml script by W.G. Vree has been made importable and easily usable in batch mode. Finally we add a wrapper around MuseScore that batches conversions.

We hope this is useful for reproducability in MIR research for pipelines such as CLAMP3.

Install

pip install abcforge
# or run without installing:
uvx abcforge --help

Commands

abcforge gp2xml   <input_dir> <output_dir>   # .gp/.gpx/.gp5 → .musicxml  (requires MuseScore)
abcforge xml2abc  <input_dir> <output_dir>   # .musicxml → .abc
abcforge abc2abci <input_dir> <output_dir>   # .abc → interleaved .abc
abcforge view     <file>                     # open .abc or .musicxml in browser

All batch commands accept --workers N (default: cpu count), --resume (skip already-converted files), and --log <path> (errors to file instead of stderr).

Viewer

abcforge view opens files at abcviewer.sven.zone. Supports both ABC notation and MusicXML — the viewer auto-detects the format and renders MusicXML via OpenSheetMusicDisplay.

abcforge view song.abc
abcforge view song.musicxml
abcforge view song.abc --url     # print URL only, don't open browser

Notes

  • MusicXML → ABC conversion uses xml2abc by W.G. Vree (LGPL).
  • The vendored abctoolkit is a patched fork of abctoolkit 0.0.6 with fixes for voice attribute parsing and bar splitting. Do not replace it with the PyPI version.
  • MuseScore must be installed for gp2xml.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 6

Native requirements
6 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
click
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
click>=8.0runtime
jellyfish
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
jellyfish>=1.0runtime
lxml
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
lxml>=4.0runtime
rapidfuzz
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
rapidfuzz>=3.0runtime
tqdm
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
tqdm>=4.0runtime
unidecode
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
unidecode>=1.0runtime

Distribution files

2 collected
abcforge-0.1.1-py3-none-any.whl

bdist_wheel · 68.33 KB · Python py3

Source file
abcforge-0.1.1.tar.gz

sdist · 54.88 KB · Python source

Source file

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 17:14 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:87af7a8b8ea219124bf9be041dbf419f265dfdd73760e57ee8b62a47dfdcab60

Other collected versions

View all collected versions →