Acknowledgements
Tunetorch didn't come out of nowhere. Every feature you use rests on the work of people you'll probably never meet: a track plays because someone started writing a program more than twenty years ago that can read almost any audio format. An album has the right cover because volunteers all over the world entered it into an open database. A CD gets ripped accurately to the last bit because someone worked out how to get a CD drive to stop making read errors.
Most of these projects are free software. Anyone may use them, read them, improve them and pass them on, and many of them carry not just Tunetorch but a good part of the internet. They are often maintained in people's spare time, rarely paid for and hardly ever noticed as long as they work. The comic “Dependency” by xkcd puts it pretty much exactly.
This page is our thank-you to them. Every name links to the project's own site. If you're visiting one for the first time, it's worth a look.
This page is a thank-you, not a licence overview. Each project has its own licence, which you'll find on its site.
The data behind your music
These projects aren't programs, they're knowledge: gathered by people, open to everyone. Most of the entries come from volunteers.
| Project | What it does for you |
|---|---|
| MusicBrainz | The open music database. Recognises artists and albums, knows band members and releases, and works out which CD is in the drive when you rip. |
| Cover Art Archive | A joint project of MetaBrainz and the Internet Archive. Supplies album covers when ripping CDs and in the image search. |
| Wikidata | Connects an artist to their image and their Wikipedia article. |
| Wikimedia Commons | Free photos for your artists' profile pages. |
| Wikipedia | The biography on an artist's profile page. |
| AccurateRip | Compares your ripped CD with the rips of many other people and confirms that every bit is right. |
Listening
| Project | What it does for you |
|---|---|
| FFmpeg | Reads almost any audio format, converts your music into smaller files for on the go and measures loudness for normalisation. Without FFmpeg there would be no Tunetorch. |
| AndroidX Media3 | The player in the Android app: in the background, on the lock screen, in Android Auto and offline. |
| cd-paranoia | Reads your CDs sector by sector and corrects read errors along the way. It carries on the cdparanoia of Xiph.Org. |
| libdiscid and python-discid | Calculate your CD's ID, which MusicBrainz uses to find it. |
| eject | Ejects the CD when ripping is done. Small, but you'd miss it straight away. Part of util-linux. |
The server
| Project | What it does for you |
|---|---|
| Python | The language the server is written in. |
| Flask | Answers every request your browser or the app sends to the server. Together with its extensions Flask-JWT-Extended for signing in, Flask-CORS and Flask-Compress for smaller responses. |
| Gunicorn | The web server Flask runs on inside the container. |
| SQLite | Stores your library, playlists and statistics in a single file. SQLite is in the public domain, so it belongs to everyone. |
| Redis | Keeps intermediate results in memory so your library loads quickly, and remembers failed sign-in attempts. |
| Requests and urllib3 | Talk to MusicBrainz, Wikipedia and the other data sources above. |
| Pillow | Scales down and converts covers and artist images. |
| cryptography | Signs Pro licences on this website and checks the signature on your server. |
| passlib | Makes sure passwords are only ever stored as a secure hash. |
| supervisor, tini and gosu | Start and watch over the services in the container and run them with the right permissions. |
| supercronic | Runs the nightly maintenance tasks. |
| tz database | The time zone database, so your statistics count at the right time of day. A handful of people have maintained it for decades, and almost every computer in the world relies on it. |
The interface
| Project | What it does for you |
|---|---|
| React | Builds the interface of the web player and of this website. |
| TanStack Virtual | Keeps lists with tens of thousands of tracks smooth. |
| Chart.js | Draws the charts in your statistics. |
| Lucide | Almost every icon you see in Tunetorch. |
| React Image Crop | Cropping covers and images. |
| Vite PWA | Makes the web player installable like an app. |
| Plus Jakarta Sans | The typeface of the interface, designed by Tokotype. |
| Fontsource | Packages the fonts so they come from your own server rather than someone else's. |
The Android app
| Project | What it does for you |
|---|---|
| AndroidX | The foundation of the app, from what's on screen to the back button. |
| Material Components | Buttons, dialogs and controls in Android's own style. |
| OkHttp | Fetches the music from your server. |
The player itself is Media3, see Listening above.
This website
| Project | What it does for you |
|---|---|
| React Router | Takes you from page to page. |
| react-markdown and remark-gfm | Turn the documentation texts into what you're reading right now, tables included. |
| Tiptap | The editor the news posts are written in, together with tiptap-markdown. |
| Jinja | Puts together the emails you get from us. |
| bcrypt | Protects the passwords of the accounts on this website. |
| Outfit | The typeface of the headings. |
What Tunetorch is built with
You never see these tools, because their work is done before Tunetorch reaches you. Without them it could neither be written nor tested.
- TypeScript, Vite, Sass, Babel with the React Compiler and Node.js build the interfaces.
- ESLint with typescript-eslint and Ruff find mistakes before anyone else does.
- Vitest, Testing Library, jsdom, pytest, fakeredis and JUnit check that everything does what it should.
- uv manages the Python packages, Gradle builds the Android app.
- curl fetches tools from the internet during the build, as it does in countless other projects.
- Git keeps every change.
The foundation
| Project | What it does for you |
|---|---|
| Linux | The operating system beneath the container, beneath Android and beneath almost every server on the internet. |
| Debian | The base of the Tunetorch image. A volunteer project, for more than thirty years. |
| Docker | Packages Tunetorch so it runs on your server with a single command. |
And everyone else
The list above names what Tunetorch uses directly. Each of these projects in turn builds on others, and those on still more. Together there are hundreds, most of them with only a few people behind them. They all have the same thanks.
If you like Tunetorch, you like a piece of their work too.