Pulse Loop is an open-source Flutter app for creating precise loop points in audio. Connect to Spotify for library playback, or use Offline Mode to upload your own audio files — all with the same millisecond-precision loop and skip controls. Built for musicians, learners, and anyone who wants repeatable control over song sections on Web and Android.
- Spotify account connection and full playback control
- Browse top tracks and recently played
- Search songs, artists, and albums
- Millisecond-level loop start/end points
- Multi-device sync via Spotify Connect
- Upload local audio files — MP3, WAV, M4A, OGG, FLAC, AAC — no Spotify account needed
- Persistent storage: files are saved to app cache (Android) or IndexedDB (Web) and survive restarts
- Automatic metadata extraction from filenames (
Artist - Titleformat detection) - Graceful fallback UI when metadata is unavailable
- Full playback controls: play/pause, seek, progress bar
| Mode | Behaviour |
|---|---|
| Normal | Loops the entire track forever |
| Loop | Repeats a selected start–end segment in a continuous loop |
| Skip | Skips a selected segment and keeps looping the rest of the track |
- Responsive UI for phone, tablet, and desktop
- Material 3 Expressive styling with dynamic theming
- Web + Android support from one codebase
- Flutter
- Riverpod + code generation
spotify_sdkflutter_web_auth_2just_audio— local file playback for offline modefile_picker— cross-platform audio file selectionpath_provider— app cache directory on mobilehttp,shared_preferences,flutter_secure_storage- Web IndexedDB (
dart:js_interop+package:web) — persistent offline file storage on web
lib/
├── core/ # Theme, router, responsive layout, config
├── models/ # SpotifyTrack, OfflineTrack, AuthState, PlayerState
├── providers/ # Auth, player, search, user, offline player providers
├── screens/ # LoginScreen, HomeScreen, OfflineHomeScreen, CallbackScreen
├── services/ # Spotify auth/API/player, offline storage (native + web), offline player
└── widgets/ # PlayerControls, ModeSelector, TrackCard, TrackGridCard
- Flutter SDK — project uses Dart
^3.10.8 - A Spotify Developer app (Client ID + Client Secret) — only needed for Online mode
- Chrome (for web) or an Android device/emulator
git clone https://github.com/Mic-360/spotify_looper.git
cd spotify_looperCreate assets/.env.json in the project:
{
"SPOTIFY_CLIENT_ID": "YOUR_CLIENT_ID",
"SPOTIFY_CLIENT_SECRET": "YOUR_CLIENT_SECRET"
}Offline Mode only? You can skip this step. The app will still launch and the "Continue Offline" button on the login screen does not require any Spotify credentials.
flutter pub get# Web
flutter run -d chrome
# Android
flutter run -d <device_id>dart run build_runner build --delete-conflicting-outputsdart run icons_launcher:createThe project includes automated release workflows through GitHub Actions:
- Update the version in
pubspec.yaml - Commit the changes
- Create and push a git tag:
git tag v1.0.2
git push origin v1.0.2This automatically triggers the release workflow which will:
- Build the Android APK
- Build and deploy the web app to Firebase Hosting
- Create a GitHub Release with the APK attached
You can also trigger the release workflow manually from the GitHub Actions tab.
Contributions are welcome!
- Fork the repo
- Create a feature branch
- Make your changes with clear commits
- Open a Pull Request
Please keep changes focused and well-described.
This project is licensed under the MIT License. See LICENSE for details.
Built with ❤️ by bhaumic.

.jpeg)
.jpeg)
.jpeg)
.jpeg)
.jpeg)
.jpeg)
.jpeg)
.jpeg)
.jpeg)