Skip to content
A work-in-progress music player for the Nintendo 3DS and Nintendo Switch
C C++ Makefile
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.flask
3ds
meta
switch
.gitmodules
LICENSE.md
Makefile
readme.md

readme.md

tangerine logo

tangerine

A work-in-progress music player for the Nintendo 3DS and Nintendo Switch

Overview:

  • The 3DS build is currently in heavy development as the shift is made from pp2d to citro2d. Please use the previous build instead of building yourself.
  • Put all music in "/music" folder on your SD card as traditional file browsing is not currently supported yet
  • Support for multiple formats (wav, flac, and mp3 currently)
  • Skip forward and back a song using the L and R buttons
  • Use the progress bar on the touch screen to scrub through the audio (SLOW)
  • Pause/Play with A, and return to file selection with B
  • Touchscreen controls (yay?)

Planned Features:

  • Update internal documentation
  • Move to citro2d
  • Switch version
  • Actual file browsing
  • Support for more formats
  • Ability to create playlists
  • Ability to play playlists
  • Record and save bits of audio using the microphone like the built in app
  • UI overhaul (currently it's not super terrible, but it's definitely not where I want it to be)
  • Themes maybe?
  • anything else the 3DS's sound application does

Building

You can just run make or make all to get both 3ds and switch builds, but for just one of them follow this:

3DS

Make sure you have the latest releases of ctrulib, citro3d, citro2d, and 3ds-mpg123 installed via the devkitPro pacman. Then type

make 3ds

to get a .3dsx, .smdh, and .cia

Switch

Make sure you have the latest releases of libnx and switch-mpg123 installed via the devkitPro pacman. Then type

make switch

to get an .nro

Known Issues:

  • Some flac files have issues with playback speed on hardware but work fine in Citra
  • Scrubbing within flac/mp3 files may take several seconds on Old 3DS depending on the size of the file

WARNING: This was my first time ever writing C. There are going to be bugs and 90% percent of this is probably terrible code, so don't hesitate to report anything because I probably wouldn't have found it otherwise.

Credits:

Thanks to

  • @smealum for ctrulib
  • @fincs for citro3d
  • @Steveice10 for buildtools
  • @BernardoGiordano for pp2d and help with Makefile/rsf files
  • VLC for android for the rough UI design concept
  • @Sergey#5402 for help testing
  • @Fenrir#3268, @ahoischen#9453, and @TurtleP#2954 (and anyone else!) in #dev in the Nintendo Homebrew discord for help with my beginner C mistakes
  • mackron for their doctor libs (dr_flac and dr_wav specifically)
  • devkitPro for the example Makefiles, portlibs, and citro2d
  • switchbrew/3dsbrew for documentation and examples
  • The big N for the Nintendo 3DS Sound application
  • Erokia for "Heartbleed Synth"
  • and @deltabeard for their orginal libmpg123 portlib fork and ctrmus (big inspiration, helped me to understand the DSP a lot better)

Licensing Information:

See LICENSE.md

You can’t perform that action at this time.