Adam Grudziński

Other projects ·

A tablet songbook I rewrote several times

It started with a single HTML file before Zaduszki Literackie and ended up as an app with auto-scroll at the song's tempo, transposition, setlists and offline use. Along the way I made several tablet songbooks, each for a slightly different kind of playing.

Jump to the article

Anyone who plays gigs with lyrics and chords in front of them knows the problem. The binder of printouts grows with every new song, you have to turn pages while playing, and if the singer asks for a different key, you rewrite the chords by hand, ideally the day before the concert. A tablet on the music stand solves most of these troubles, provided it runs something that understands what playing on stage is like.

There are plenty of ready-made songbook apps, but I preferred one where I could arrange everything my own way, so I made my own. And then another one, and a few more, because every kind of playing had slightly different needs.

The first version, for Zaduszki

The first songbook was made at the end of October 2025, before Zaduszki Literackie, a series of literary and music evenings held around All Souls' Day. It was a single HTML file that held everything: lyrics, chords, appearance and logic. From the start it was also a PWA, a web page you install on a tablet like an ordinary app and which works without internet, because it keeps everything it needs on the device.

Within a week that single file had grown too big to comfortably fix anything in it, so I split it into separate files for styles, logic and data. Throughout November dozens more fixes followed. Every song got a saved tempo and auto-scroll, which moves the text along to the rhythm of the song, plus one-button transposition and its own font size. Tabs arrived too, which can be played back as sound, and even import of Guitar Pro files and ordinary tabs written as plain text.

More songbooks

In December the same code became a songbook of Christmas songs. In March I made something completely different: a setlist navigator for the iPad, for playing from the original sheets instead of retyped lyrics with chords. It shows PDF files and photos in concert order, scrolls with a gesture, keeps backing tracks at hand and has a full-screen mode in which nothing distracts from the notation.

Scena, the version that stayed

From April to June I worked on a version I simply called “scena” (stage). It is a songbook for the whole repertoire, today with 95 songs, built so that you never have to search for anything while playing. Auto-scroll has several tempo settings, from very slow to very fast, and stops at a tap on the screen. The screen does not go dark halfway through a song, and in the evening you can switch to a dark theme that does not glare at you from the music stand.

Songs are arranged into playlists and setlists, viewed as a list or in columns. On a keyboard the arrow keys switch songs and the space bar starts auto-scroll. In June chord transposition arrived here too. I add new songs in an admin panel that publishes the whole database as a single file, and the app on the tablet notices by itself that there is a new version and offers to download it. For copying lyrics from screenshots there is text recognition that runs on the device itself, without sending anything to the internet.

The scena songbook on a tablet: song list on the left, chords above the lyrics, a bar with tempo and transposition
Scena on a tablet: the song list on the left, and above the lyrics a bar with font size, transposition, tempo and auto-scroll. I blurred the song lyrics on purpose.

What broke

The biggest problem turned out to be what was supposed to be the biggest advantage: working without internet. A PWA keeps its files in the tablet's storage and loads them from there on the next launch, so after I uploaded a fix, the tablet could keep showing the old version for a long time. I ended up adding a button in the admin panel that forces a download of fresh files.

Other problems were less spectacular. The column layout of the lyrics fell apart in one browser, and while tidying up the repertoire I found that I had more than fifty songs twice. So that I would not have to check everything by hand on the tablet, I wrote a test in Playwright, a tool that drives a browser without a human. The test opens the songbook at iPad screen size, in portrait and landscape, and takes screenshots of every view to look through in one go.

What it taught me

Each of these songbooks started from a specific kind of playing: Zaduszki, Christmas or a concert from the original sheets. Only when several such versions stood side by side could I see what they had in common and what had been needed only once, and scena grew out of that. The lesson is that you do not have to build an app for every occasion right away. It is better to make something small for one gig, play a concert with it, and only then know what is really missing.