Skip to content

Mic-360/spotify_looper

Repository files navigation

🎵 Pulse Loop

Pulse Loop Logo

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.

✨ Features

🌐 Online Mode (Spotify)

  • 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

📴 Offline Mode

  • 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 - Title format detection)
  • Graceful fallback UI when metadata is unavailable
  • Full playback controls: play/pause, seek, progress bar

🔁 Playback Modes (both Online & Offline)

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

🖼️ Showcase Gallery

Pulse Loop screenshot 1 Pulse Loop screenshot 2 Pulse Loop screenshot 3

Pulse Loop screenshot 10 Pulse Loop screenshot 5 Pulse Loop screenshot 6

Pulse Loop screenshot 7 Pulse Loop screenshot 8 Pulse Loop screenshot 9

🧰 Tech Stack

📁 Project Structure

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

🚀 Getting Started

Prerequisites

  • 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

1) Clone

git clone https://github.com/Mic-360/spotify_looper.git
cd spotify_looper

2) Configure Spotify credentials

Create 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.

3) Install dependencies

flutter pub get

4) Run

# Web
flutter run -d chrome

# Android
flutter run -d <device_id>

🛠 Development

Generate code

dart run build_runner build --delete-conflicting-outputs

Regenerate app/web icons

dart run icons_launcher:create

🚢 Releases

The project includes automated release workflows through GitHub Actions:

Creating a Release

  1. Update the version in pubspec.yaml
  2. Commit the changes
  3. Create and push a git tag:
git tag v1.0.2
git push origin v1.0.2

This 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

Manual Builds

You can also trigger the release workflow manually from the GitHub Actions tab.

🤝 Contributing

Contributions are welcome!

  1. Fork the repo
  2. Create a feature branch
  3. Make your changes with clear commits
  4. Open a Pull Request

Please keep changes focused and well-described.

📄 License

This project is licensed under the MIT License. See LICENSE for details.


Built with ❤️ by bhaumic.

About

Spotify Looper is an open-source Flutter app for creating precise loop points in Spotify tracks. It is built for musicians, learners, and anyone who wants repeatable control over song sections on Web and Android.

Resources

License

Stars

Watchers

Forks

Contributors