Your FLAC albums, kept like records.
A crate of sleeves and a turntable to play them on, for Android.
Download Sonic 1.4.2 · What it does · Build it · Changelog
Music is one search away now. Type a name and the song plays, then the next one, then the next. It’s effortless, which is exactly why it never feels like a collection. When everything is instant, you lose the weight of an album: the effort it took to track it down, the choice to commit to the highest audio quality, and the feeling of actually owning the music.
It used to take intention. Records piled up next to the turntable, and you flipped through them until one fit the evening. You slid the disc out of its sleeve, set the needle down, and got up to turn it over when Side A ended. You knew your records because you had handled every single one.
Sonic brings that ritual back to your phone. If you want any song in two seconds, a streaming app will serve you better. Sonic is built for downloading, keeping, and truly listening to FLAC albums only.
Each album in Sonic lives as a record in your crate, with its sides and resolution printed right on the sleeve. Pull it out, drop it on the platter, play Side A, and flip it for Side B. Under the hood, it delivers the exact pipeline an audiophile actually needs with nothing bloated on top: lossless decoding, hi-res playback at native sample rates, a Pure Mode that leaves samples untouched, and a transparent signal path that exposes when your OS resamples or Bluetooth (LDAC/AAC) compresses versus wired USB-C DAC playback.
To grow your crate, Sonic searches Soulseek for full releases, delivers ten curated Creative Commons albums from the Internet Archive every Friday, and lets friends hand you a record as an interactive card in chat.
The home screen is a listening room. The crate sits under the deck, and the deck is the player.
- Pull and drop. Tap a sleeve and its record slides out. Drag it onto the platter; it lands with a thud you can feel.
- Play. START/STOP lowers and lifts the needle. Skip within a side, drag the tonearm to drop the needle anywhere, hold the platter to wind it down.
- Swap. Hold a new record over the one that's playing. The deck shakes, the old record lifts off, the new one lands and the music carries on.
- Eject flies the record back into its own sleeve.
- Look closer. Two fingers down lay the deck flat, two fingers up stand it back. Long-press a sleeve for its details: sides, running times, the whole record's length, and a picture you can share.
Turn the phone sideways and the room fills the screen. Sideways is just for listening; the other pages wait until you turn it back.
- Dig searches Soulseek for whole album folders, FLAC only, and ranks them by how well they match. It hears everyone who answers, and when Soulseek quietly blocks a name it searches around the block. Open a folder to see its track list before you take anything. If you already own part of an album, Dig fetches only what's missing.
- Friday Drops brings ten Creative Commons albums from the Internet Archive every week, the same ten for everyone. Listen to thirty seconds of any track and claim three a week.
- Friends is chat with other Soulseek listeners. Browse a friend's shelf, every FLAC folder they share, and take what you like. Send a record as a card; a tap on it opens the sender's folder in Dig.
- Downloads mend themselves where they can. A song that failed is asked for again, or fetched from someone else who has the identical file. A record missing a track wears a red tab until it's whole.
- Light or dark. Dark is true black, kind to an OLED screen. The launcher icon follows: a cream sleeve in light, a black one in dark.
- Four decks. The RG-1 turntable comes in white and teal, mono white, dark, and neon: OLED black drawn by glowing white edges, in an unlit room. By default it matches the theme: white and teal in light, neon in dark.
- Vinyl only. Sideways, everything but the deck goes black; a tap brings the room back.
- Flags for the small habits: turn the record over by itself, start playing as soon as it lands, a sleep timer that fades the music and lifts the needle, and the intro every time the app opens.
A collection takes space, so Sonic tells you how much. On Settings, swipe up with two fingers. Storage shows the phone, your music folder and your download folder, split into hi-res FLAC, CD-quality FLAC, pictures and unfinished downloads, with your records listed largest first.
You can delete a record you no longer want, folder and files. The warning flips to the other theme's colours so it can't be missed.
- Pure turns off everything that changes the sound (EQ, ReplayGain, limiter, crackle), so the decoded samples pass through untouched. Bit-perfect to a USB DAC on phones that allow it.
- Hi-res output plays each file at its own sample rate in 32-bit float instead of cutting it to 16-bit. The two work together.
- The signal path: long-press the deck's LED to see the whole chain, track to Sonic to output, with the bit depth and rate at each step, and an honest word when Android resamples. Allow it, and it names your headphones' Bluetooth codec too (LDAC, aptX, AAC…).
- A 10-band EQ with presets, AutoEq headphone profiles, ReplayGain, a limiter and, if you want it, a little vinyl crackle.
FLAC is the rule everywhere: scanning, downloads, sharing and playback. An MP3 renamed to .flac
doesn't get in. Your music folder is only read, never changed, and downloads land in a folder you
choose, where they stay if you uninstall Sonic.
Download Sonic-1.4.2.apk from the latest release
and check it against its checksum:
sha256sum -c Sonic-1.4.2.apk.sha256 # Linux
shasum -a 256 -c Sonic-1.4.2.apk.sha256 # macOS- Android 9 or newer, on ARM64, ARMv7, x86-64 or x86.
- Sonic installs as its own app (
app.sonic). If you used Runout, it stays where it is; Sonic doesn't replace it or read its data. - No account needed to listen. Skip sign-in and Sonic plays the folder you give it.
Both of these install the same APK as the release above, so you can switch between them without reinstalling.
-
Obtainium. Tap its badge at the top, or add
https://github.com/Abhiroop1122/Sonicin Obtainium. It installs each new release from here. -
F-Droid, Droid-ify or Neo Store. Tap the F-Droid badge at the top (or open https://somchandra17.github.io/sonic-fdroid) on your phone, then Add to F-Droid, or add the repository by hand:
https://somchandra17.github.io/sonic-fdroid/repo Fingerprint: C482BF3B0848C66DD63E0194711A3DC800487D908D6008A66A124B7E16A91E6BSonic isn't in F-Droid's own catalogue: F-Droid builds apps from public source, and the font Sonic is set in may be shipped inside the app but not published.
Soulseek has no sign-up page: the first time you sign in with a new name, that name becomes your account, typos included. It has no password reset. Signing in elsewhere with the same name signs you out here. Its protocol doesn't encrypt passwords or private messages.
Sonic has no server of its own. Your Soulseek password is encrypted with an Android Keystore key and kept out of backups. Cover lookups are off until you turn them on. Only the one folder you choose is shared, only its FLAC files, and by default only on Wi-Fi. Chats stay on your phone.
Kotlin, Jetpack Compose and Media3 for the app; Filament for the 3D deck; a pinned Rust library for Soulseek behind a small JNI bridge, built for four ABIs with 16 KiB page alignment.
You need JDK 21, Android SDK 36, Rust 1.91.0 and Android NDK r27d or newer. The build guide has the details.
git clone https://github.com/Abhiroop1122/Sonic.git
cd Sonic
./gradlew testDebugUnitTest assembleDebug
cargo +1.91.0 test --manifest-path native/Cargo.toml --workspace --lib --lockedA debug build installs as Sonic. Dev (app.sonic.dev) next to the release. Tests run on
local fixtures and test servers; the integration test talks to two local Soulseek peers and never
creates a public account. The screenshots above come from an emulator with a made-up library.
app/src/main/java/app/runout/ the app (the package keeps its old name)
library/ scanning, the shelf, covers, storage
playback/ the deck and the playback service
soulseek/ the bridge, downloads, sign-in
sound/ DSP, output, the signal path
ui/ the room, the crate, the deck, every page
native/ the Rust JNI bridge and the vendored soulseek-rs library
docs/ one file per subject, plus design notes
release/ release notes, checksums, verification reports
| To learn about | Read |
|---|---|
| Using the app | Handbook |
| Building and testing | Building · Developer notes |
| How the code fits together | Architecture |
| Soulseek, storage and privacy | Soulseek |
| Audio | Sound |
| The turntable | Turntable |
| Records and Friday Drops | Pressing and Drops · Record format |
| Releasing | Release process · Changelog |
| Everything | Documentation index |
| Version | ||
|---|---|---|
| 1.4.2 | Current | A redline pass: one 4 dp rhythm, 11 sp text, calmer headings. |
| 1.4.1 | Release | Settings › Connection: whether others can reach you, in its own row. |
| 1.4.0 | Release | Sonic opens a port on your router, uploads through the relay, shelves that say why, Drops new every week. |
| 1.3.0 | Release | Dig hears the whole network, friends' shelves, sharing that works, what's new. |
| 1.2.0 | Release | The neon deck, vinyl only, the Bluetooth codec, covers that stay. |
| 1.1.0 | Release | The track wheel picker, update checks with stable and development builds, a clearer signal chain. |
| 1.0.0 | Release | Sonic. Themes, three decks, Storage, swaps by hand. |
| 0.6.0 | Development | The RG-1 3D turntable, rendered with Filament. |
| 0.5.1 | Release | Soulseek and FLAC, the redesigned room. |
| 0.4.0 – 0.5.0 | Development | Each step kept as a pre-release. |
| 0.3.0 | Release | The Glass Turntable, as Runout. |
Issues and pull requests are welcome. Start with the contributor guide and the architecture map. Everyone taking part follows the Code of Conduct. Security problems go through the security policy, not public issues.
Sonic's look borrows from two companies we admire: the bare, playful hardware of Teenage Engineering (hard keys, engraved labels, one loud orange) and the dot-matrix type and black-and-white calm of Nothing. Sonic isn't affiliated with or endorsed by either. The RG-1 decks were modelled in Blender for Sonic, and the sleeve and onboarding art was made for it too.
Sonic is MIT licensed. What it bundles, and under which licences, is listed in THIRD_PARTY_NOTICES.md; Settings › about names them too, and their full texts ship inside the APK.
- Soulseek: soulseek-rs-lib v19.1.0 (MIT), vendored with documented changes in native/. Seeker, Soulseek.NET and the Nicotine+ protocol notes helped us understand the protocol; none of their GPL code is in Sonic.
- Libraries: Filament (Apache 2.0), AndroidX, Jetpack Compose, Media3 and Room (Apache 2.0), OkHttp (Apache 2.0), Kyant Backdrop (Apache 2.0).
- Type and icons: Inter and Silkscreen (SIL Open Font License), Array by Indian Type Foundry (ITF Free Font License; in release builds only, not in this repository, so a source build falls back to Silkscreen), and icons drawn after Lucide (ISC).
- Music data: MusicBrainz, the Cover Art Archive and the Internet Archive, only when you turn cover lookup on or open Friday Drops. Drops keep their Creative Commons licences and credits. Music you download from Soulseek isn't marked as openly licensed.
Sonic was called Runout until 1.0.0.














