ColinDuquesnoy / MellowPlayer

Moved to gitlab
https://gitlab.com/ColinDuquesnoy/MellowPlayer
GNU General Public License v2.0
233 stars 26 forks source link

Ideas for MellowPlayer 4 #142

Open ColinDuquesnoy opened 6 years ago

ColinDuquesnoy commented 6 years ago

Last week I've decided to stop maintaining some of my older projects in order to focus exclusively on MellowPlayer.

I have a series of ideas to improve MellowPlayer and make it more powerful. These ideas are new to me and have not been thought through to the end yet and I am not sure everything is doable. It will take some time before they become a reality and will require a major redesign of the internals of the project.

Feel free to comment here if you have some feedback or some other ideas.

Player and plugins improvements

I want to add more possibilities to player plugins in order to bring the following features:

  1. search (and play) songs across services
  2. build cross-service playlists
  3. full control of the player (seeking, rating,...)
  4. rely on the operating system's multimedia codecs to play songs

Native player plugins

A native player plugin is a player interface written in QML that use the operating system's audio libraries (via QtMultimedia framework) to play audio.

There could be a native player that play and let you manage your local music collection.

And there could be native dedicated players that use the REST API or native SDK of a web streaming service to retrieve and play songs and allow user to interact with the service (search, add to collection, manage playlists, discover new songs, smart radios,...).

This category of player would bring all the above mentioned features (1, 2, 3 and 4).

Hybrid players plugins

For service where the API does not allow to download and play songs ourself, we could have hybrid players: that is a player interface written mostly in QML/C++ except for the player widget that still be a web view based control.

This category of player would still have issues with proprietary codecs but would bring features 1, 2 and 3.

Web Players plugins

Same plugin API as the one we currently have in MellowPlayer 3. Used for all services that I cannot port to native/hybrid players or that I cannot maintain myself.

This category of player won't bring any new feature, they continue to exist so that we can support old plugins and offer the web interface to user that prefer it that way.

Unified player

Maybe we would need a unified player that relies on the native and hybrid players to offer a seamless interface to manage and play songs across services, e.g. to build cross platform playlists or search songs across services.

I am not sure if this is the right idea but if we keep the current UI and the idea of dedicated player interface per service then this is the only solution that I can imagine.

Companion apps

I'd like to add some companion apps to e.g. provide remote control of a MellowPlayer instance in your local network. There could be a desktop and some mobile applications (iOS and Android).

lkstz commented 6 years ago

Great ideas! In addition to cross-service playlists, I'd love to see a cross-service queue feature.

ZeroDot1 commented 6 years ago

Is it possible to use the quic protocol in MellowPlayer? chrome://flags/#enable-QUIC https://www.keycdn.com/blog/quic/ https://en.wikipedia.org/wiki/QUIC https://github.com/google/proto-quic

ColinDuquesnoy commented 6 years ago

@kolletzki Great idea!

@ZeroDot1 I think that QUIC support is a feature that should be added to QtWebEngine, not MellowPlayer (well MellowPlayer would need a setting to enable QUIC support but it must first come to QtWebEngine). I'd suggest you open a feature request on the webengine issue tracker.

ColinDuquesnoy commented 6 years ago

@ZeroDot1 With the native approach we would probably be able to control sound output and enable mono output as requested in #131.

ZeroDot1 commented 6 years ago

That sounds very good:)

ghost commented 6 years ago

Hello respactable developer of wonderfull MellowPlayer!

Please make a mini player! There is need a button to switch player to mini mode/ simular like this 2017-11-13

Please make it!

ColinDuquesnoy commented 6 years ago

Please make a mini player! There is need a button to switch player to mini mode/ simular like this

Why not. How do you see it working? Should it be a separate app that control the real mellowplayer application or just the real application that turn itself into a small mini player. What are your use cases?

ghost commented 6 years ago

Hello Colin! About mini player. It have to be on your opinion Colin. Better way it is make a button that launch mini player. It is your software make it like you want)

ColinDuquesnoy commented 6 years ago

It is your software make it like you want)

Yes but it is always nice to know how users use the software :wink:

ghost commented 6 years ago

Do you know Google Play Desktop Music Player? This app have button, that hide player and open mini-player. In mini player also have button that turn mini to normal mode.

ZeroDot1 commented 6 years ago

Compatibility with ARM to use the MellowPlayer on a Raspi.

ColinDuquesnoy commented 6 years ago

Compatibility with ARM to use the MellowPlayer on a Raspi.

It doesn't have to wait for MellowPlayer 4. AFAIK MellowPlayer should build and run fine on ARM as long as the correct Qt version (>= 5.9) is available. I don't have a Raspi so I cannot test it. If you have one, I'd suggest to try it and report any issue you encountered.

ZeroDot1 commented 6 years ago

I also don't have a Raspi to test it at the moment, if I bought one I will test it.

ColinDuquesnoy commented 6 years ago

@ZeroDot1 That would be nice of you but do not feel obligated...

ZeroDot1 commented 6 years ago

@ColinDuquesnoy Is it possible to build a version for Android? I think it would be a good idea to put Mellowplayer on the Android platform, because most people use mobile devices with Android.

ColinDuquesnoy commented 6 years ago

Is it possible to build a version for Android? I think it would be a good idea to put Mellowplayer on the Android platform, because most people use mobile devices with Android.

Hmm it would maybe make sense to have a mobile app for native streaming services (especially those that support downloading songs for offline use). Otherwise it is not that useful IMHO. Web based streaming services would probably not work as they will likely redirect to a page that tell the user to download the native app...

ZeroDot1 commented 6 years ago

redirect to a page that tell the user to download the native app

You can prevent redirecting by setting a desktop user agent.

ColinDuquesnoy commented 6 years ago

@ZeroDot1 Yes but I wonder how well those website will be responsive... Anyway it might be worth trying.

rustamzh commented 6 years ago

It would be nice to allow plugin developers add custom button to further enhance integration of service and player. E.g. Yandex Music has dislike button. I bet other services have buttons like shuffle, repeat. Or it would be nice to attach links to these custom button, e.g. to the favorite playlist. I view this feature as following. it would be possible to add array of buttons to the return of update() . Each will consist of the following keys: type (simple, toggle), icon, trigger (function name).

ColinDuquesnoy commented 6 years ago

@rustamzh That sounds good and it doesn't have to wait for MellowPlayer 4 (see #224)

NicolasGuilloux commented 6 years ago

I wish to have these functionnalies:

I thing these features can really AWESOME !!! :')

flops commented 6 years ago

I know it's low priority feature, but it would be great to redefine\reload tray icon image.

ColinDuquesnoy commented 6 years ago

@flops This feature was in MellowPlayer 2 but has never been ported to MellowPlayer3. Please open an issue if you want this feature back (no need to wait for MellowPlayer 4).

ColinDuquesnoy commented 6 years ago

@rustamzh

A search field integrated in the top bar

Yes that's planned for MellowPlayer 4, you'll be able to search through all the service that are integrated via a native or hybrid plugin (but not the web plugins).

A CSS stylesheet for the webpages loaded after all stylesheets to tweak the UI

This feature could be done in MellowPlayer 3. Please open an issue if you want it.

A possibility to have a mini player (which can be done with CSS actually !)

That feature could also be done in MellowPlayer 3. I wouldn't do it with HTML/CSS but with QML. Please open an issue if you want it.

1 or 2 buttons designed for specific actions based on the plugin

That is planned in #224

An option menu for a plugin (for instance, on the Kodi plugin, I have to set a refresh rate and I wish the user can choose it easily).

That feature can also be done in MellowPlayer 3. Please open an issue if you want it.

doh38 commented 5 years ago

Add minimized/systemized start command/option for Linux user :) I have currently to add it at startup and close the window. a Mellowplayer --minimized option would be awesome in order to start the stream from remote controller (Kde-connect) :)

ColinDuquesnoy commented 5 years ago

@Dodjob This issue is for discussing about breaking changes that require a brand new design (mainly the unified player that can play songs from local and online collections). Such features are just ideas and it might take time before I start working on MellowPlaye 4...

The feature you suggest could be integrated in the next minor version (3.5), I created issue #283 to track your suggestion.

ColinDuquesnoy commented 5 years ago

This issue has been moved to our new gitlab issue tracker.

The github repository will be archived soon and this issue will become read-only. We suggest you continue the discussion and follow the progress on this issue at gitlab.