Skip to content

Repository files navigation

tabrender

A self-hosted Songsterr alternative: drop Guitar Pro files into a folder and share them with your band as a synced tab player with realistic audio. It's MyTabs is the player; the renderer here turns every tab into an MP3 with sampled guitars, neural amp captures and a real drum kit (see render/README.md), and the player picks that MP3 up as the default audio track, cursor in sync. Tabs arrive from a Dropbox folder; each band gets its own read-only instance.

The renderer is the interesting part: alphaTab exports the score to MIDI plus per-note articulations (palm mute, dead notes, bends); a small numpy SFZ sampler plays DI guitar samples with those articulations, double-tracked; Neural Amp Modeler captures give the amp tone; drums go through the same sampler with a GM-to-kit map; bass gets a split-band drive. No DAW, no plugins, everything open source and headless. The player is patched so the cursor follows the MP3 exactly even across tempo changes.

  • compose.yaml — player + renderer; compose.server.example.yaml is the server overlay (reverse-proxy network, read-only per-band instances): copy it to compose.server.yaml (gitignored) and fill in your domain, band names and Dropbox folder.
  • deploy/tabs.example.conf — nginx vhost for the jonasal/nginx-certbot container; the real deploy/tabs.conf is gitignored.
  • soundfont/ — GM soundfont for the in-browser MIDI preview; sf2mono.py patches stereo samples to mono because alphaTab's synth drops them (presets go silent).
  • sf-compare/ — local A/B page for soundfonts (diagnostic).

What is not in git and where it comes from

Path What Source
data/ It's MyTabs runtime: config.db (account), tabs/<id>/ (tab file, config.json, render.mp3, .render.json), dropbox-mirror/ created by the app, the renderer and the Dropbox import; back it up, never regenerate
soundfont/*.sf2 GM soundfonts for the MIDI preview sonivox.sf2 ships inside the louislam/its-mytabs image (/app/dist/soundfont/); FluidR3_GM.sf2 from https://ftp.osuosl.org/pub/musescore/soundfont/fluid-soundfont.tar.gz, then python3 soundfont/sf2mono.py FluidR3_GM.sf2 FluidR3_GM_mono.sf2; GeneralUser_GS.sf2 from https://github.com/mrbumpy409/GeneralUser-GS
render/assets/ DI guitar libraries, drum kit, IRs, Proteus captures render/download-assets.sh (~3 GB, Google Drive + GitHub + archive.org)
render/assets/amps/nam/, render/assets/ir/t3k/ NAM captures and IRs from tone3000 render/download-tone3000.sh, needs render/.tone3000-key
render/.tone3000-key tone3000 account Secret Key tone3000.com → Settings → API Keys
rclone/rclone.conf Dropbox token for the import rclone authorize "dropbox" on a machine with a browser, paste the token as [dropbox] type = dropbox token = {...}
render/out/ local render experiments scratch
sf-compare/alphatab/, sf-compare/sf, sf-compare/tabs/ vendored alphaTab build, soundfont symlink and tab copies for the A/B page npm pack @coderline/alphatab@1.8.0dist/; symlink sf -> ../soundfont; copy tabs from data/
node_modules/ linters, formatter, prek npm install

Development

npm install brings oxlint, oxfmt, markdownlint-cli2 and prek; ruff comes from brew install ruff or pip install ruff. npx prek install enables the pre-commit hooks; npm run lint runs everything, npm run format fixes what can be fixed. GitLab CI runs the same checks in the lint stage.

License

MIT for the code in this repository. The sample libraries, amp captures and soundfonts it downloads have their own licenses (see the download scripts).

About

Self-hosted Songsterr alternative: Guitar Pro tabs as a synced player with realistic audio (DI samples, neural amp captures, sampled drums)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages