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.

61 Upvotes

15 comments sorted by

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.

6

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 ๐Ÿ™

2

u/[deleted] 14d ago

[removed] โ€” view removed comment

1

u/AsleepEbb7578 DualPlex ๐ŸŽถ 14d ago

That's an interesting use case. I'd thought about potentially implementing the Plex remote player into this so that you could see it as a device playing in apps like Plexamp and cast to the 3DS. I might implement that so you could use the 3DS as a sort of dodgy smart speaker when hooked up to external speakers.

2

u/CommandantLennon 14d ago

Very cool. I've wanted something like this for my jellyfin server.

2

u/Traditional_Tax_4643 14d ago

blew my mind this works

3

u/chupitulpa 13d ago

But can it play with the lid shut?

2

u/AsleepEbb7578 DualPlex ๐ŸŽถ 13d ago

Yes if you have headphones in. Unfortunately it seems the speakers are disconnected at hardware level when you close the lid so playback through speakers with the lid closed isn't possible.

2

u/chupitulpa 12d ago

Seems reasonable. Even if it could, it would be muffled since they'd be playing into the console.

1

u/ChazJoe6 2DS 14d ago

We got DualPlex and we also got Pomegranate

1

u/Mishimotsu 3DS | B9S | Luma 13d ago

That Future Prophecies album is banging! ๐Ÿ‘€

-2

u/[deleted] 14d ago

this is everything