Skip to content

LoggingNewMemory/Inaho

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

177 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GH Banner

Inaho Music Player

Inaho is a beautiful, lightweight, and feature-rich local music player for Android, built entirely with modern Android development tools — Kotlin and Jetpack Compose. Designed with a focus on fluid animations, deep audio customization, and a sleek user experience.

No accounts. No streaming. No cloud. Just your music, on your device.

Screenshots

✨ Features

🎨 Beautiful & Fluid UI

  • Jetpack Compose driven — a fully modern UI with seamless animated screen transitions and reactive state
  • AMOLED Black theme — a true-black option to save battery on OLED/AMOLED displays
  • Animated mini-player — persistent bar at the bottom of your library with a live progress strip and animated play/pause icon
  • Dynamic album art — extracted, downsampled, and aggressively cached (LRU + disk) for stutter-free scrolling
  • AMV Mode — Allow users to play .mp4 (Like song covers, etc)

🎧 Advanced Audio & Playback

  • Yamada EQ — a custom audio engine with 7 built-in presets: Off, Smart, Rock, Jazz, Classic, Pop, Bass
    • Smart preset uses DynamicsProcessing (API 28+) for dynamic gain riding — boosting signal on beat drops and lifts, with automatic LoudnessEnhancer fallback on older devices
    • All presets backed by Android's native Equalizer; EQ choice persists across sessions
  • Playback speed control — 0.5× to 2.0× in six steps, pitch-stable
  • Pitch control — Idk why I even add this, this is done because someone request it
  • Sleep timer — auto-pause after 5, 10, 15, 20, 30, or 60 minutes
  • Background & lock screen playback — full MediaSessionCompat integration for rich media notifications and hardware controls

📁 Library Management

  • Smart sorting — by title (A–Z / Z–A), artist, recently added, or duration
  • Folder filtering — optionally restrict your library to the /Music folder, keeping out voice notes and app audio
  • Favorites — heart any track to build a dedicated favorites list, persisted locally
  • Queue view — "Up Next" panel that auto-scrolls to the current song and lets you jump to any track
  • Custom Playlist — Go make your own playlist!
  • Clear Cover Cache — Clear it sometimes, it won't hurt

🛠 Tech Stack

Layer Technology
Language Kotlin
UI Jetpack Compose, Material Design 3
Concurrency Kotlin Coroutines, StateFlow
Playback MediaPlayer, MediaSessionCompat, MediaStore API
Audio FX Equalizer, DynamicsProcessing, LoudnessEnhancer
Pagination AndroidX Paging 3
Image MediaMetadataRetriever + custom LRU + disk cache

📋 Permissions

Permission Reason
READ_MEDIA_AUDIO (API 33+) Read local audio files
READ_EXTERNAL_STORAGE (below API 33) Legacy equivalent
FOREGROUND_SERVICE Background playback
POST_NOTIFICATIONS (API 33+) Playback notification

📱 Requirements

  • Android 8.0+ (API 26) — minimum
  • Android 9.0+ (API 28) — required for Smart EQ's DynamicsProcessing; older devices fall back gracefully

📖 The Story Behind "Inaho"

"Makasih buat covernya, aku suka."

This app was originally built and named in honor of Ochinai Inaho, a Japanese VTuber whose vocal cover inspired its creation. It started as a tribute — something made with the quiet hope of being noticed (But at the end not noticed) — and evolved into a passion project and a gift to anyone who loves their local music library.


👨‍💻 Developer

Developed by Kanagawa Yamada


📄 License

This project is source-available. If you fork or copy it, please keep the credit comment in MainActivity.kt intact. That's all I ask.


Untuk Inaho — semoga karirmu terus bersinar.

About

A Music Player that inspired with Ochinai Inaho

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages