jcm93 / jmc

jmc - a new macOS media organizer
Other
493 stars 21 forks source link

WIP release? #48

Open gridsystem opened 2 years ago

gridsystem commented 2 years ago

Any chance you could build a version of the app that includes some of the features added since 2017?

I really like the look of this app, I'd like to what you're up to :)

jcm93 commented 2 years ago

I'd like to; it's in quite an unstable state at the moment, however. I've added some integration with Apple Music and probably some other things I've forgotten.

I should be able to devote some time to this during the month of July. A stable-ish build is a priority so hopefully you'll see it sooner rather than later.

jcm93 commented 1 year ago

Just figured I'd post an update here. Had a bit of time to do some work the past couple weeks. Mostly been working on the artist view which is getting there. Last thing for the next build is just to iron out the Apple Music integration which I'm working on now.

Apple Music is a bit awkward, since MusicKit has no direct support for macOS, though the Apple Music API does. So the app is currently embedding an invisible web view that plays tracks with MusicKit JS, while using the normal macOS API to do user catalog lookups. I don't like bundling a web view with the program, but I want to be able to play Apple Music tracks and currently that's the only way. The goal is for this whole thing to be invisible and for the app to play Apple Music tracks just like normal tracks so we'll see how close I can get to that.

gridsystem commented 1 year ago

Sounds cool! I don't know if it's any use to you but the only non-Apple device I've used with an Apple Music client is the PS5. I mention it in case you might be able to find out how their implementation works.

jcm93 commented 1 year ago

Still working on stuff. The performance of the embedded web view with MusicKit JS turns out to be too poor for me to want to use it. It was delivering tracks at subpar bitrates and not responding to higher bitrate settings, and integration between JavaScript and Swift was really annoying when trying to ensure sync between the UI and the web player state.

I'm now instead going to try to embed a Mac Catalyst app that plays tracks with MusicKit through the iOS Swift API, and connecting to the main app with either AppleScript or NSXPCConnection. That should solve both issues, but it's sort of uncharted territory so it might take some time to implement.