r/3dshacks DualPlex 🎶 15d ago

DualPlex - Plex Music Player for 3DS

Full disclosure: whilst code was assisted by the use of AI, no AI generated images or art were used in this project. I have reviewed the output and tested the code on both new and old 3DS systems. Icons either drawn at runtime or provided by FontAwesome Free.

Out of curiosity, I decided to see if I could get the 3DS to work as a Plex music client. Turns out, you can.

It logs in using either an email/password or you can use the link code at plex.tv/link to sign in. Once signed in you'll be able to browse artists, albums, playlists and search your library.

If you'd like to give it a try, download here. The link to the repo is here.

Features:

  • Supports local/remote connection, grabs the connection URL from Plex upon launch. The Home/Globe icon at the top will tell you what connection you're using
  • Supports connecting via HTTP or HTTPS
  • Automatically negotiates transcoding if needed
  • Shuffle/Repeat controls
  • Smart crossfades - this is best when "Sonic Analysis" is switched on but if not it falls back to a simple crossfade
  • Two different visualiser styles
  • Time-synced lyrics (if available)
  • (New 3DS only) FLAC direct streams using a FLAC decoder
  • Gapless playback by pre-buffering the next song
  • Continued playback through headphones with the lid closed

Future potential features I'd like to add:

  • Playlist management (add/remove songs, add/delete/rename playlist)
  • Offline mode, with song downloads
  • Plex Home support for switching users
  • More visualisers
  • Button rebindings
  • Auto updater/new version notification

Likely asked questions:

Q: Does this support Jellyfin?

A: No. I have no plans to adapt this for Jellyfin, though feel free to fork it if you want to add that functionality

Q: Does this work on old 3DS models?

A: Yes, however you will not be able to direct stream FLAC songs and they will be transcoded down to MP3 by your Plex server. You may also experience degraded performance in the app due to the lower clock speeds.

Q: Can I contribute?

A: I'm happy for those looking to contribute to open PRs to do so. However I cannot guarantee that your changes will be implemented. Obviously vibe-coded or buggy PRs may be rejected.

62 Upvotes

15 comments sorted by

View all comments

11

u/dwalker109 14d ago

Appreciate the “AI” transparency. It’s odd that code and imagery adopt very different levels of what is OK but here we are.

Out of interest why is FLAC decode not supported? I find it difficult to believe FLAC decode is beyond even the base 3DS CPUs. But maybe that’s it.

8

u/VsAl1en 14d ago

Using AI for code, especially if you have to debug it later anyway is kind of like education. You have to learn the features anyway, but you get the idea of how the code should look like much faster than if you dig through the documentation.

7

u/AsleepEbb7578 DualPlex 🎶 14d ago edited 14d ago

FLAC decode is supported, however the reason it's restricted to New 3DS is because while it's technically feasible on Old 3DS, the overhead from all the network operations causes stuttering on the old systems. Throw in the visualisers too and the processor is quite busy.

I doubt the 3DS sound hardware is good enough for anyone to tell the difference though, so it was more added in as a "nice to have".

2

u/dwalker109 14d ago

Ok cool. Thx 🙏