MajesticTab is a guitar tab viewer designed for practice, learning, and focused reading on desktop, mobile, and tablet screens. It lets you open Guitar Pro files directly, load tab PDFs, or view text tabs in clean page or continuous scroll modes with minimal distractions.
- Web version supports Chrome, Edge, Firefox, or Safari
- Native versions include Windows, macOS, Linux, Android, or iOS
Clone the repo and start a local static server:
git clone https://github.com/cgarst/MajesticTab.git
cd MajesticTab
python3 -m http.server 8000Then open:
http://localhost:8000/for the landing pagehttp://localhost:8000/app/for the app
- Open the app in your browser.
- Load a local Guitar Pro or PDF tab, or pick a file from Google Drive.
- Choose your preferred reading mode:
- Page mode for traditional page-by-page reading
- Continuous mode for vertical scrolling
- Navigate with mouse, touch, keyboard, or a page-turner pedal.
- For Guitar Pro files, use the SoundFont player or YouTube audio panel to play along while you read.
- Adjust theme, sheet size, and playback controls in the settings menu for your preferred practice workflow.
- For PDF tabs, enable the condensed/optimized view and export a cleaned PDF when needed.
MajesticTab works best with multi-track, tab-only PDFs exported from Guitar Pro. This is the format the optimizer is designed to process most effectively.
To create a good source PDF in Guitar Pro:
- Open the tab in Guitar Pro.
- Switch to multitrack view.
- Enable tablature and disable standard notation for the relevant tracks.
- Hide non-guitar tracks if needed.
- Export the score as a PDF.
The app then removes empty staves, cleans margins, and re-renders the tab into a more readable layout.
app/main.js— main UI and navigation flowapp/gpProcessor/— Guitar Pro parsing and renderingapp/pdfProcessor/— PDF parsing, cleanup, and optimization logicapp/exportPdf.js— PDF export flowtools/— screenshot generation and helper tooling
The app is browser-based and loads external libraries from a CDN, so there is no app build step required for normal use.
The Tauri v2 build configuration and launcher live under build/. Install Node.js, Rust, and the platform prerequisites listed in the Tauri guide, then run one target from the repository root:
node build/build-tauri.mjs macos
node build/build-tauri.mjs windows
node build/build-tauri.mjs linux
node build/build-tauri.mjs android
node build/build-tauri.mjs iosDesktop builds disable the JavaScript inspector and webview devtools by default for performance and security. Pass --debug-tools (or --debug) to a macOS, Windows, or Linux build command, or use ./build/build-macos.sh --debug, to enable devtools in both the main window and embedded child webviews (e.g. the native tab downloader browser):
node build/build-tauri.mjs macos --debug-tools
# or for macOS build & auto-install:
./build/build-macos.sh --debugFor live local development with devtools enabled, run:
cd build/tauri
npm run tauri:dev -- --features debug-toolsThis compiles the Rust backend with the debug-tools feature (tauri/devtools), permitting web inspector inspection and devtools console logging.
Build macOS and Windows installers on their respective operating systems. The Linux target builds a Flatpak and requires flatpak and flatpak-builder. Android requires Android Studio's SDK Platform, Platform-Tools, Command-line Tools, NDK (Side by side), JDK 17-26 (JDK 17 recommended), and ANDROID_HOME, NDK_HOME, and JAVA_HOME configured per the Tauri guide. The build script checks the selected JDK before running Gradle. Android produces a debug APK for testing; release distribution needs signing. All generated bundles and Cargo output go under the git-ignored dist/ directory. Desktop builds are unsigned unless signing credentials are configured.
To enable Google Drive in a Tauri build, set the GOOGLE_CLIENT_SECRET environment variable (e.g., in a git-ignored .env file in the project root, via export GOOGLE_CLIENT_SECRET="your-client-secret") before building, or configure it as a GitHub Actions secret. The build process automatically embeds the secret into the generated frontend bundle. Note that the secret is embedded in the packaged client app and can be extracted from it; do not treat it as confidential.
MajesticTab can be sideloaded onto iPhone and iPad without a paid Apple Developer account using SideStore, AltStore, LiveContainer, or TrollStore.
Add the community source directly to SideStore, AltStore, or LiveContainer using this URL:
https://raw.githubusercontent.com/cgarst/MajesticTab/main/source.json
- One-Click Add (SideStore): Add to SideStore
- One-Click Add (AltStore): Add to AltStore
To build the iOS IPA locally from macOS:
rustup target add aarch64-apple-ios
node build/build-tauri.mjs iosThe output will be saved to dist/MajesticTab-ios.ipa.
Contributions are welcome.
- Fork the repo
- Create a feature branch (
git checkout -b feature/awesome-feature) - Commit your changes (
git commit -m 'Add awesome feature') - Push the branch (
git push origin feature/awesome-feature) - Open a pull request
Please include screenshots or a description of the UI change when relevant.
This project is licensed under the MIT License. See LICENSE for details.
- AlphaTab for Guitar Pro rendering and playback support
- PDF.js for PDF rendering
- Bootstrap for UI components
- jsPDF for export functionality
To regenerate them:
pip install playwright && playwright install chromium
python3 tools/generate_screenshots.py
python3 tools/generate_screenshots.py --only gp_scroll theme_palettesShot names include gp_scroll, gp_page, pdf_page, pdf_condensed, menu, theme_palettes, and gp_themed.