A Flutter application for local playback of lossless audio formats.
mmine is a mobile music player designed for playback of lossless audio files stored locally on the device. The application provides library management, playlist organization, and standard playback controls.
- FLAC (Free Lossless Audio Codec) -
.flac - WAV (Waveform Audio File Format) -
.wav - ALAC (Apple Lossless Audio Codec) -
.m4a
- Local directory scanning
- Metadata extraction from embedded tags
- Organization by artist, album, and genre
- Search and filtering capabilities
- Standard playback operations (play, pause, stop, seek)
- Queue management
- Repeat modes (off, all, single)
- Shuffle mode
- Volume and speed adjustment
- Gapless playback
- Background audio playback
- System media controls integration
- Create and manage playlists
- Add and remove tracks
- Reorder playlist items
- Persistent storage
The application implements Clean Architecture with separation across three layers:
- Presentation Layer: User interface and state management using BLoC pattern
- Domain Layer: Business logic, use cases, and repository interfaces
- Data Layer: Repository implementations, data sources, and external integrations
Clone the repository:
git clone https://github.com/mathtechstudio/mmine.git
cd mmineInstall dependencies:
flutter pub getGenerate required code files:
dart run build_runner build --delete-conflicting-outputsRun the application:
flutter run- Launch the application
- Grant storage permissions when prompted
- Select directories containing audio files
- Wait for library scanning to complete
- Navigate to the library view
- Browse by songs, artists, or albums
- Select a track to begin playback
- Use playback controls for queue management
- Navigate to the playlists view
- Create a new playlist
- Add tracks from the library
- Reorder or remove tracks as needed
Contributions are welcome. Please ensure that:
- Code follows the project's architecture patterns
- All changes are properly tested
- Static analysis passes without errors
- Pull requests include clear descriptions of changes
This project is licensed under the Apache License 2.0. See the LICENSE file for details.
Status: Under active development. Features and APIs are subject to change.