Skip to content

Im-Beast/music-player

Repository files navigation

Music player (name is wip)

Unified cross-platform music player.

Demo showcase

iOsMusicPlayerDemo2-H264.mp4

Roadmap

Development is currently prioritized for iOS and macOS, however first stable release should also work on Android, Linux and Windows.

Feature Estimated timeline
MusicKit Support Apple Music via MusicKit to allow legal streaming of music on every platform. 14th January 2025
Deezer Alike MusicKit indeterminate*
Local media Playing local audio tracks 31st January 2025
Local device discovery with syncing media between devices May 2025
YouTube Playing YouTube media 14th February 2025
Unified search and playlists Storing songs from multiple platforms in singular playlists February-March 2025
Search for a song/album across platforms
Metadata tagging Simple hosting service storing
  • Lyrics
  • Cover albums
  • Albums
  • Track details (Artist, Year, etc.)
Such hosting will cache the metadata obtained either from MusicKit or Last.fm and forward it to the user
April 2025
Playlist synchronization Simple service to which user can log in that stores all the playlist data and syncs them between devices indeterminate*
Decentralized media Seeding, leeching and streaming torrents indeterminate*

Dates attributed to each features are a subject to change as they are a very rough estimates at a very early point in development. Debugging, life-related things, app design and such might affect them. I will try to update the roadmap as the development progresses.

* – Features considered "optional", unclear whether they will materialize

Development

Shared

These steps are needed for every platform to work properly

  1. Make sure you have all dependencies required to build the app:
    • Package manager: pnpm.
    • Make sure you have downloaded all prerequisites for:
  2. Place your MusicKit Developer Token in corresponding files:
    • /.example.env ⇢ /.env
  3. Setup ionic and install dependencies
pnpm install -g @ionic/cli          # Install ionic cli globally
ionic config set -g npmClient pnpm  # Make ionic use pnpm
pnpm install                        # Install all project dependencies

Web

ionic serve             # Run the development server
ionic serve --external  # add --external if you want to host it to other devices on your network
ionic build             # Build the web app into dist/web

Electron

  1. If you intend to use DRM content via MusicKit in Electron you need to sign the electron application with VMP certificate, read more:
pnpm electron-dev     # Run the app with development server
pnpm electron-build   # Build the electron app into dist/electron
pnpm electron-preview # Preview how the app will look like in production mode

Mobile

Note

MusicKit authorization on mobile requires you to already have Apple Music app installed.

iOS

Important

To run iOS app you will have to use physical device, as MusicKit is not supported in Simulator.

  1. Build and open in Xcode
ionic capacitor build ios
  1. Run on physical device

Android

Note

Unlike iOS you can use Android Virtual Devices (AVD) found in Android Studio or any other Emulator for that matter.

  1. Place your MusicKit Developer Token in:
    • /android/app/src/main/res/values/tokens.example.xml ⇢ /android/app/src/main/res/values/tokens.xml
  2. Build or open the app
ionic capacitor open android # Build android and open Android Studio
ionic capacitor run android  # Or run android app directly in emulator

Recommended IDE Setup

VS Code + Vue + Ionic.