digimezzo / dopamine-windows

Audio player which tries to make organizing and listening to music as simple and pretty as possible.
https://digimezzo.github.io/site/
GNU General Public License v3.0
1.88k stars 266 forks source link

Rainmeter Support #252

Open Riajyuu opened 7 years ago

Riajyuu commented 7 years ago

Could you add info/control APIs that are needed for Rainmeter skins?

marcopixel commented 7 years ago

1+

It doesnt even has to be direct Rainmeter support, but an basic api for fetching song info (including title, artist, album, cover, progress, position) and some sort of interface where you can send stuff (like position, volume, forward, backward, play/pause, stop and shuffle/repeat) would help other people (like streamers who might show their song to their streamers) too.

If you don't know what Rainmeter is, its pretty much a system monitoring software for your desktop. But it doesn't stop only at monitoring, you can also control media players, write notes etc...

tjhrulz commented 7 years ago

Also you could just implement the CD Art Display standard and then it would work out of the box with Rainmeter and many other programs without the need for any developers to directly make plugins to interface with your API.

Magentaize commented 7 years ago

I have added a experimental feature to control Dopamine in #482 .

tjhrulz commented 7 years ago

I'll look at it tonight, is there any sort of documentation yet or will I have to figure out it from the commits?

Riajyuu commented 7 years ago

@tjhrulz rainmeter has official developer docs: https://docs.rainmeter.net/developers/

tjhrulz commented 7 years ago

@EMLVIRUS I am a rainmeter plugin developer, I wanted to know about the status of documentation for this new control API for dopamine.

Riajyuu commented 7 years ago

@tjhrulz If you are to create plugins, just check out info from official docs. It should be mostly same. If to create skins, check out here https://docs.rainmeter.net/manual/

tjhrulz commented 7 years ago

@EMLVIRUS Again I am a developer for rainmeter, I know how to make a plugin, I need from @Magentaize if there is documentation on how to use this API so I can bake it into rainmeter.

Magentaize commented 7 years ago

@tjhrulz Please wait for me to make this api stable first, due to the fact that I use MemoryMap to implement IPC, I must find out a way to keep connection.

tjhrulz commented 7 years ago

Alright, ping me when it has stabilized

Magentaize commented 7 years ago

@tjhrulz Now you can access this API and I have create a sample here https://github.com/Magentaize/Dopamine-ExternalControl-Support

tjhrulz commented 7 years ago

Did you only make this for C#? Codebase for NowPlaying is C++ so if we were going to integrate with Rainmeter we would have to go standalone or port this to C++ as I know Brian will not allow C# code to go into that plugin.

Magentaize commented 7 years ago

Are you using C++/CLI?

tjhrulz commented 7 years ago

Essentially. NowPlaying builds out to a .dll file that rainmeter then uses as a measure. I know we could run this code as is in Rainmeter but I know that Brian will not allow C# code within the native NowPlaying plugin and thus I would likely have to build a standalone plugin. That was why I had recommended just adding CD Art Display support as then Rainmeter and other programs would support it without extra work.

Magentaize commented 7 years ago

I mean, if you're using C++/CLI, you can use managed C++ library not contains any C# code to build a WCF connection with Dopamine.

On Wed, Aug 23, 2017, 11:43 AM Trevor Hamilton notifications@github.com wrote:

Essentially. NowPlaying builds out to a .dll file that rainmeter then uses as a measure. I know we could run this code as is in Rainmeter but I know that Brian will not allow C# code with the native NowPlaying plugin and thus I would likely have to build a standalone plugin. That was why I had recommended just adding CD Art Display support as then Rainmeter and other programs would support it without extra work. I'll talk though to Brian about it.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/digimezzo/Dopamine/issues/252#issuecomment-324212722, or mute the thread https://github.com/notifications/unsubscribe-auth/ALPzmCGkBXWwvV6cBfBhmQg2T6aEQEy2ks5sa5_XgaJpZM4LSxVM .

tjhrulz commented 7 years ago

And I am not sure that they would be okay with integrating that into the native NowPlaying plugin and that is why I said port it to C++ earlier.

tjhrulz commented 7 years ago

Talked to Morley. Firm no. I could make a standalone plugin but I have other projects I am working on at the moment so it will be a while. I still think you implementing CD Art Display would be a better choice as I said before.

Magentaize commented 7 years ago

You can use it with C++ not only C#. And what is CD Art Display?

On Wed, Aug 23, 2017, 12:34 PM Trevor Hamilton notifications@github.com wrote:

Talked to Morley. Firm no. I could make a standalone plugin but I have other projects I am working on at the moment so it will be a while. I still think you implementing CD Art Display would be a better choice as I said before.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/digimezzo/Dopamine/issues/252#issuecomment-324218474, or mute the thread https://github.com/notifications/unsubscribe-auth/ALPzmHlmkjkA_fGEZ1odmIBVgKzjoUg3ks5sa6vrgaJpZM4LSxVM .

Riajyuu commented 7 years ago

@Magentaize maybe he means to fetch album cover from player.(player should fetch it from metadata)

tjhrulz commented 7 years ago

http://www.cdartdisplay.byethost8.com/?i=1 CD Art display is the standard used by many players and that the CD Art Display devs and Rainmeter devs have worked on getting into as many players as possible.

tjhrulz commented 7 years ago

It is old and its only use anymore really is Rainmeter but it works.

Magentaize commented 7 years ago

I still do not understand. First, CD Art display is an application not a interface so I cannot implement an application. Second, I have read the source code of NowPlaying and I think it can be down that using C++ to communicate with Dopamine.

tjhrulz commented 7 years ago

It working with now playing is not an issue the issue is getting it approved which as I already said won't happen. That means I make a plugin which will be a bit before I get around to it or you implement the CD Art Display standard which you would see it is a standard if you look around the NowPlaying code or Google for some of our ports for other players you can see how it works.

Documentation died for it a while back so you will have to learn through other ports likely but it's pretty simple.

Magentaize commented 7 years ago

Ok, I still think they are adapters which can cast any player's interface to rainmeter's interface. But Dopamine provides a more graceful interface which can let you do not need to use complex things like GetWindowText(), SendMessage() and COM.

tjhrulz commented 7 years ago

Yeah and it looks great so you can either wait for me to make an external plugin for rainmeter or implement CD Art Display if you want official support.

Magentaize commented 7 years ago

Thanks, I'll wait :P

tjhrulz commented 7 years ago

K. Once I finish I'll ping you.

10Dev commented 7 years ago

If somebody is rejecting C# because they don't want (at an API level) to pull in the .NET runtime, then they will also object to the .NET runtime version of C++

thatrobotdev commented 5 years ago

Hey, how's it coming along? :D

bockyx commented 5 years ago

F

Beshington commented 5 years ago

@tjhrulz @Magentaize Progress?

Magentaize commented 5 years ago

@Beshington I don't know the progress of Rainmeter, sorry.