Skip to content

Latest commit

 

History

History
115 lines (88 loc) · 5.89 KB

File metadata and controls

115 lines (88 loc) · 5.89 KB

band-play logo

Band Play

Band Play is a Google Chrome extension that enhances the music experience on Bandcamp by providing advanced playback controls, tempo adjustment, pitch preservation, keyboard shortcuts, autoplay functionality, batch downloads, and other automation features for seamless music control.

Check the Chrome Web Store page for more details.


✨ Features

🎵 Playback Control

  • Advanced Speed Control: Adjust playback speed with 3.03% increments
  • Pitch Preservation: Maintain audio pitch when changing speed
  • Customizable Seek Step: Configurable forward/backward seeking (1-120 seconds)
  • Progress Jumping: Quick navigation to any point in track

🔄 Automation

  • Autoplay: Automatic progression through playlists and collections
  • Autoscroll: Auto-scroll to currently playing track
  • Keep Awake: Prevent system sleep during playback
  • Smart Detection: Automatic page type recognition

🎛️ Advanced Features

  • Feed Player: Custom player interface for Bandcamp feed pages
  • Batch Download: Quickly select multiple purchases to download in bulk

🎹 Keyboard Shortcuts

Feature Description Key
Play/Pause Quick control to play or pause current track
Next Track Play the next track in playlist 🇳
Previous Track Play the previous track in playlist 🇧
Track by Index Play specific track by number (0-9) ⇧ + 🔢
Loop Track Toggle looping of current track ⇧ + 🇻
Seek Forward Move playback forward by step seconds ** ➡️
Seek Backward Move playback backward by step seconds ** ⬅️
Speed Increase Increase playback speed by 3.03% *** ⬆️
Speed Decrease Decrease playback speed by 3.03% *** ⬇️
Reset Speed Reset playback speed to normal ⇧ + ⬇️
Auto Pitch Toggle Enable/disable pitch preservation 🇵
Reset Auto Pitch Reset auto pitch settings ⇧ + 🇵
Progress Control Jump to specific percentage (0-90%) * 🔢
Open in New Tab Open current track in new browser tab 🇴
Open with Focus Open track in new tab and focus on it ⇧ + 🇴
Wishlist Toggle Add/remove track from wishlist 🇱
  1. * For example, pressing key 3 will set the track playback to 30% of all duration.
  2. ** You can change a step value in the menu.
  3. *** The same as one rotation of a vinyl per minute.

📄 Supported Pages

Page Type Features Description
Feed All features + Feed Player Custom player interface with full controls
Discover All features Browse and play new music
Collection/Wishlist All features + Batch Download Manage your music library
Album/Track All features Individual album and track pages

👩‍💻 Development

🛠️ Installation

  1. Open the Google Chrome browser.
  2. Navigate to chrome://extensions/ and enable Developer Mode by toggling the switch in the top right corner.
  3. Run npm install in the root of repository.
  4. Run npm run build in the root of repository.
  5. Click on Load unpacked and select the dist directory created after previous step.
  6. The extension should now appear in your list of installed extensions and is ready to use.

📁 File Structure

  • public/: Contains manifest.json, images and icons used by the extension.
  • src/:
    • background/background.ts: Contains the TypeScript files for background script (single instance for Chrome).
    • content/:
      • page-services/: Contains services for handling different pages of site.
      • services/: Contains core services.
      • shortcut/: Contains keyboard shortcut handling.
      • content.ts: The TypeScript file for content script (running on each site page).
    • downloads/: Contains the batch download manager page.
    • options/: Contains extension pop-up React component.
    • shared/: Contains shared models, enums, interfaces, services and utils.
  • webpack/: Configuration of webpack for different type of builds.
  • zip.sh: A script for creating a .zip file with build for publishing.

🤝 Contributing

We welcome contributions! If you would like to contribute to this project, please:

  1. Fork the repository.
  2. Create a new branch for your feature or fix.
  3. Commit your changes.
  4. Push the branch to your fork.
  5. Submit a pull request to the original repository.

For any issues or queries during installation or usage, refer to our Issues Section.

Your contributions and feedback are greatly appreciated!