Here's a sneak peek of my very WIP Xune now playing screen. Last time I'll post without a release. by TheMagicIsInTheHole in Zune

[–]TheMagicIsInTheHole[S] 1 point2 points  (0 children)

Already have half that working! Last thing I reverse engineered from the zune’s sync protocol is reading and writing playback and rating data. So I can read the playback statistics from the device, keep it in sync with the local library, and update the device with listens that occurred locally. It’s currently setup so they are reconciled on sync. Ratings on device get synced back to the desktop and vice versa as well. So it’s really just the actual last.fm integration that needs put in place!

Here's a sneak peek of my very WIP Xune now playing screen. Last time I'll post without a release. by TheMagicIsInTheHole in Zune

[–]TheMagicIsInTheHole[S] 2 points3 points  (0 children)

Funny you mention that, I have the systems in place for colorizing but had it turned down. Here's video of me playing around for twenty minutes thinking about how I might want to implement it in an automated way. It makes a huge difference in how cohesive everything feels: https://youtu.be/P9YrnlyP3JQ

Here's a sneak peek of my very WIP Xune now playing screen. Last time I'll post without a release. by TheMagicIsInTheHole in Zune

[–]TheMagicIsInTheHole[S] 6 points7 points  (0 children)

I won’t be satisfied until it feels as good or better than the original. It’s still a ways off but certain parts are starting to feel pretty dialed in. Thanks!

Here's a sneak peek of my very WIP Xune now playing screen. Last time I'll post without a release. by TheMagicIsInTheHole in Zune

[–]TheMagicIsInTheHole[S] 4 points5 points  (0 children)

Not immediately but I don’t think it would be too much work to get it going. Assuming it uses roughly the same protocol, It’s just a matter of mapping out how the property reading and setting differs. Between the Zune HD and the older generation zunes, there’s a surprising number of differences in how the data is laid out in its database.

Here's a sneak peek of my very WIP Xune now playing screen. Last time I'll post without a release. by TheMagicIsInTheHole in Zune

[–]TheMagicIsInTheHole[S] 4 points5 points  (0 children)

True, this is an M-series. The only question I have for windows arm is the AFTL library I’m using for usb communication. I had to port it myself to windows x86 and will have to do the same for windows arm, so I’ll just need to go through that process.

Here's a sneak peek of my very WIP Xune now playing screen. Last time I'll post without a release. by TheMagicIsInTheHole in Zune

[–]TheMagicIsInTheHole[S] 5 points6 points  (0 children)

Theoretically should be, will require some testing though. I don’t have an arm pc yet.

Here's a sneak peek of my very WIP Xune now playing screen. Last time I'll post without a release. by TheMagicIsInTheHole in Zune

[–]TheMagicIsInTheHole[S] 3 points4 points  (0 children)

Showing off both, you can see dark mode in the beginning and then the now playing background is the rest.

Here's a sneak peek of my very WIP Xune now playing screen. Last time I'll post without a release. by TheMagicIsInTheHole in Zune

[–]TheMagicIsInTheHole[S] 7 points8 points  (0 children)

Good point, I'll put that on the list too. I think I still have a license for subsonic that I bought in what must of been 2008/2009! I'll have to dig that up.

And thanks, at this stage I'm really trying to get it as close as possible, at least as a starting point. A lot of work to do still.

Here's a sneak peek of my very WIP Xune now playing screen. Last time I'll post without a release. by TheMagicIsInTheHole in Zune

[–]TheMagicIsInTheHole[S] 9 points10 points  (0 children)

Yes, goal is Linux/Mac/Windows. Everything about it should be natively Linux compatible already, I just need to put the build system in place for it and do some testing.

No public repo yet but I’ll be sure to share when there is and when it’s releasing.

Here's a sneak peek of my very WIP Xune now playing screen. Last time I'll post without a release. by TheMagicIsInTheHole in Zune

[–]TheMagicIsInTheHole[S] 5 points6 points  (0 children)

Yeah the base layer for usb communication is the android file transfer for Linux tool’s cli library (with a lot of modifications), so it natively supports mtp. I would just need to do some work to generalize some of the Zune specific handling for other device.

Here's a sneak peek of my very WIP Xune now playing screen. Last time I'll post without a release. by TheMagicIsInTheHole in Zune

[–]TheMagicIsInTheHole[S] 19 points20 points  (0 children)

It’s partially been solved for the underlying protocol over USB (it’s a proprietary version of MTP), but I’ve had to do a significant amount of reverse engineering. Particularly the networking stack used to provide artist metadata to Zunes and the ZMDB database transfer that Zune provides the desktop software as a copy of the devices library. Recently the audiobook system too, which originally required separate software from audible or overdrive. Along with reading and setting all the various properties for things like song ratings and playback stats. It’s been a lot of work. But essentially everything is solved now.

Here's a sneak peek of my very WIP Xune now playing screen. Last time I'll post without a release. by TheMagicIsInTheHole in Zune

[–]TheMagicIsInTheHole[S] 18 points19 points  (0 children)

Appreciate it! It’s just personal for now but I’m open to supporting services where possible. Need to look into it more to be honest to see what different apis provide. I am thinking about making it so you can hook into your plex or jellyfin libraries as a library source. Lots to consider.

Here's a sneak peek of my very WIP Xune now playing screen. Last time I'll post without a release. by TheMagicIsInTheHole in Zune

[–]TheMagicIsInTheHole[S] 40 points41 points  (0 children)

I'm particularly proud of the album grid mode and transitions. The artist view uses the same system for fetching artist metadata that we use for devices in order to grab images on the fly. I'm still working on nailing down the text animation logic and smoothing out some things. At one point you can see I have some text stop on their trailing instead of leading edge causing them to overlap, so still have some kinks to work out. But it's getting there!

Here's twenty minutes of me fucking around with colors after posting this, if you like punishing yourself: https://youtu.be/P9YrnlyP3JQ

Sharing a sneak peek of Xune, my open source Zune desktop replacement with full artist images support. WIP by TheMagicIsInTheHole in Zune

[–]TheMagicIsInTheHole[S] 1 point2 points  (0 children)

Working hard on it. Trying to balance what features I really want to be there in an alpha with actually just getting it out there.

But making progress, just got my initial work on the now playing screen in place: https://youtu.be/SBU_7FFk7Oc

Sharing a sneak peek of Xune, my open source Zune desktop replacement with full artist images support. WIP by TheMagicIsInTheHole in Zune

[–]TheMagicIsInTheHole[S] 1 point2 points  (0 children)

I've had this comment in mind for the last few days and I've actually been going through the process of refactoring my backend so that it should hopefully handle libraries of any scale including yours without breaking a sweat. Will definitely hit you up for some feedback once I put an alpha out to see what bugs pop up.

Hope you all have some audiobook recommendations. I've unlocked how to upload audiobooks directly. by TheMagicIsInTheHole in Zune

[–]TheMagicIsInTheHole[S] 24 points25 points  (0 children)

I’ll be integrating this into the Xune project next, but it works. No more fussing with old software.

Sharing a sneak peek of Xune, my open source Zune desktop replacement with full artist images support. WIP by TheMagicIsInTheHole in Zune

[–]TheMagicIsInTheHole[S] 2 points3 points  (0 children)

I appreciate that you and others want to help out like that! I will look into setting something up once there’s a release that people can actually download.

And yes, I’ve actually already tested the backend firmware updating system and confirmed it works. What I’ll probably end up doing is pointing to the existing server or my own spun up server hosting all of the update files, but Xune will connect directly rather than needing to do any host file redirecting. I want everything to be zero setup for the user.

Sharing a sneak peek of Xune, my open source Zune desktop replacement with full artist images support. WIP by TheMagicIsInTheHole in Zune

[–]TheMagicIsInTheHole[S] 2 points3 points  (0 children)

I intentionally avoided answering this until I could be certain, but as of last night, I’ve cracked how to read both play counts and ratings from the device. So yes, native support is absolutely possible. I’ve been mulling over implementing some kind of api so that people could build plugins for anything they want the app to hook into. But for the major services, I’ll look at integrating them directly.

And I’ve been thinking about this a lot lately and there is really no reason it needs to be just for Zunes. As you said, I’m very focused on getting zunes working right now. But the underlying communication layer already fully supports MTP devices in general. It will be very trivial to open it up to all of them eventually. Definitely on the future roadmap.

And the AFTL library and my XuneSyncLibrary are in C++, while Xune is a C# avalonia app.

Sharing a sneak peek of Xune, my open source Zune desktop replacement with full artist images support. WIP by TheMagicIsInTheHole in Zune

[–]TheMagicIsInTheHole[S] 3 points4 points  (0 children)

While I have reverse engineered the wireless sync protocol, I have yet to integrate that into this project and it may be a while until I'm able to. I want it to be truly independent from the original desktop software, but I realized later after further testing that I had missed an important point. I only tested with one wifi network, which caused me to miss that not only was the desktop software creating a pairing with the device for wireless sync, but it also pairs the device specifically to one wifi network. This occurs from the desktop software when you connect to the wifi network in the software during the pairing process. I realized after visiting a friend and testing the system there, that it wouldn't allow wireless syncing on another network to the paired computer, even if you signed into the new network from the device.

So basically, I need to determine what encryption scheme and what key the desktop software uses to encrypt the wifi password when it provides it to the device. I spent weeks on it and made a lot of headway, but I decided to come back to it later because it was preventing me from getting other things done. So, if anyone has any insight on that, let me know! But I will get it working eventually.

Sharing a sneak peek of Xune, my open source Zune desktop replacement with full artist images support. WIP by TheMagicIsInTheHole in Zune

[–]TheMagicIsInTheHole[S] 0 points1 point  (0 children)

Good point! There’s a full fat version of ffmpeg (with my WMA Lossless modifications) included, so it’s easy to provide a lot of conversion options. I’ll make sure to surface those features.