A music player that looks like nothing else. Free and open source for Android, Mac, Windows and Linux: your files, Navidrome, YouTube Music and independent radio, the album art the only color. No ads, no accounts, no paywall, ever.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Tap the format over any cover and ink music shows the sound's whole way to your ears: where it came from, the file, which decoder, even volume and the equalizer (turn them off right there and watch it change), what Android does to it, and where it plays. Casting to a receiver, it asks the receiver itself: a Denon in Direct says so, and the page says exact: yes. Covers move where a record has a moving one, a song's Spotify Canvas plays behind, and each takes its own effect in settings, the look. Your computer does all of it too: the whole path as mpv plays it (Core Audio, WASAPI, PipeWire, and whether it has the output alone), moving covers, the effects, and the Canvas, signed in on your phone.
Every version's changes are in the releases. Want something? Ask for it: what goes in says who asked. Or come say hi at r/inkmusic: what you're playing, questions, ideas.
The same ink music, made for a big screen and a keyboard:
| The phone's files | Everything in its music folder, filed by record and artist, with the covers your files carry. |
| Your own server | Navidrome or any Subsonic server: your whole library streamed from home, or kept on the phone to play with no signal. Loves are the server's stars and playlists are its playlists, so every app you use agrees. |
| YouTube Music | Search and play without an account, through NewPipe Extractor. Signed in: your playlists, likes, mixes and artists, saved and followed both ways, your uploads, and Premium's 256 kbps if you have it. full build only. |
| Spotify playlists | Brought in from a file (Exportify or Spotify's own data download), each song found in your music or on YouTube Music, then kept as a playlist. |
| ink radio | Independent, listener-powered stations chosen by hand, each saying what it's playing (below). |
Sixty-two independent, listener-powered and community stations, chosen by hand: KEXP in Seattle, NTS in London, dublab in Los Angeles, WFMU in Jersey City, Radio alHara in Bethlehem, and on round the world.
Each says what it's playing, from its stream or its own playlist, on the player, the lock screen, the widget and the car, its name sending out rings in 1-bit dither all the while.
Thousands more by genre from radio-browser.info.
Pick a few artists you love and the listen page fills with their mixes and records, the songs indie radio played most this week (KEXP, KCRW and WXPN, counted), ink radio, and what you played lately. Even with nothing on the phone. And every Friday night, ink weekly: what we're listening to at ink, picked by real people.
The player
Listening
Everywhere else
Yours
No ads, no accounts, no analytics, no tracking. Nothing of yours leaves your phone or computer except to your own server, to your other devices on your own wifi, and to the services that answer what you ask for:
| Service | What it receives | Why |
|---|---|---|
| Your Navidrome / Subsonic server | Sign-in (a salted token, never the password), plays, stars | Your library |
| lrclib.net | A song's artist and title | Lyrics |
YouTube Music (full build) | Your searches, the artists you pick; signed in, your sign-in and the songs you play (your history there, off in settings) | Search, mixes, radio, your library |
| ListenBrainz / Last.fm, if you connect them | What you play | Scrobbling |
| AutoEq on GitHub | Nothing personal, when you look up your headphones | Their tuning |
| radio-browser.info | Nothing personal | The station list |
| The stations' own playlists | Nothing personal | The indie chart, what's on air |
| Your paired phone or computer, on your wifi | What you've heard, loves, sign-ins (Spotify's an hour's pass), what's playing, sealed with a key only the two of them have | Keeping them in step |
| Apple Music's catalog | A record's artist and title | Moving covers |
Spotify, if you sign in (full build) | Your sign-in, a song's artist and title; your playlists when you import one | The Canvas behind a song, importing playlists |
| Publications' and stations' own feeds (Pitchfork, Bandcamp Daily, NPR and others) | Nothing personal | INK's picks |
| iTunes, Deezer and YouTube Music | A record's artist and title | Covers where your files have none |
| Last.fm's tags | Nothing personal | INK's moods |
| GitHub | Nothing personal, every six hours ( build and computers) |
What you've played is kept on your own devices only.
Everything is on the GitHub releases, signed, with SHA-256 sums.
Android 12 or later. Obtainium keeps it up to date, and the
full build updates itself. F-Droid is next. The full apks from releases have Last.fm; a build from
source needs its own key.
| Build | Sources | Where |
|---|---|---|
ink-music-<version>.apk (full) | Files, your server, YouTube Music, radio | GitHub releases, Obtainium |
ink-music-<version>-play.apk (play) | Files, your server, radio. No NewPipe code at all | The only build that may go to Google Play |
The release certificate's SHA-256:
92eb2c4ea8d70b897db7cf000356f72cc2f3e698c39bb31f4b62ba717747e663
(check with apksigner verify --print-certs).
Mac (Apple silicon): the .dmg. It isn't signed by Apple yet, so the first time, macOS stops it:
System Settings, Privacy & Security, Open Anyway.
Windows: the .msi, installed just for you, no administrator needed. Windows SmartScreen
doesn't know it yet: More info, then Run anyway. To pair your phone, Windows' firewall has to let
it in: ink music asks, in settings under your phone.
Linux: the .deb (Debian, Ubuntu) or .rpm (Fedora). It plays through your system's libmpv
(libmpv2 on Debian and Ubuntu, mpv-libs on Fedora).
ink music is the music player from ink, a typographic home screen for Android phones and TVs, in the same look. Your apps as big words, the song playing along the bottom from any player, and your time back from the feed:
No accounts, no ads, no analytics. ink is in a free test on Google Play now, everything open: join the test · inkhome.app
JDK 21. The phone also needs the Android SDK (API 37); the computer's app needs a libmpv to play.
./gradlew :app:assembleFullDebug # the phone: a debug build
./gradlew :app:assembleFullRelease # the phone: a release build (R8)
tools/release.sh # both phone builds, signed, with SHA256SUMS, in build/release/
./gradlew :desktop:run -PdesktopOnly # the computer's app, without the Android SDK
The computer's installers are each made on their own system (.github/workflows/): the Mac's .dmg
on macOS, the .msi on Windows (:desktop:packageInkMsi, ink's own installer pages), the .deb and
.rpm on Linux.
Release builds are signed with the key named in keystore.properties beside settings.gradle.kts
(storeFile, storePassword, keyAlias, keyPassword; never committed). Without it they're
signed with the debug key. Each release raises versionCode and versionName in
app/build.gradle.kts and adds fastlane/metadata/android/en-US/changelogs/<versionCode>.txt.
The icon and store graphics are drawn from the bundled fonts: python3 tools/make-icon.py
(fontTools, Pillow).
Built with Kotlin and Jetpack Compose, Media3 (ExoPlayer and a
MediaLibrarySession in its own process) and Haze on the phone;
Compose Multiplatform and mpv on
the computer, with what the two share in core/.
Built by Bronson with Claude (Anthropic's AI) as a coding partner: the design, the decisions and the testing are mine. Every feature is tried on a real phone and computer before it ships, testers' notes come back as fixes within days, and ink weekly is picked by hand. It's all here to read, under the GPL, and every piece of someone else's work it stands on is named below, with its license.
Issues and pull requests are welcome. ink music has a strong look (black, two typefaces, no icons where a word works, no rounded corners), so for anything visible, open an issue first and we'll talk it through.
ink music is not affiliated with, funded, authorized or endorsed by YouTube, Google LLC, Spotify, Apple, Microsoft, Navidrome, any publication or any radio station. Trademarks belong to their owners.
GPL-3.0. Free, always: no paywall, ever.
full| Whether there's a new version |