Homebrew NXMilk a trivial audio player for switch

  • Thread starter Thread starter proconsule54
  • Start date Start date
  • Views Views 12,300
  • Replies Replies 70
  • Likes Likes 25

proconsule54

Well-Known Member
Member
Joined
Nov 5, 2019
Messages
957
Reaction score
2,005
Trophies
2
Age
45
XP
4,090
Country
Italy
nxmilk_banner.jpg


NXMilk is a trivial audio player for Nintendo Switch.

It uses FFMpeg for audio decoding and projectM for the vis. The GUI is made with ImGui.

This project started as a test class for new audio player for NXMP

NXMilk is coded by @proconsule54


Project repo: https://github.com/proconsule/NXMilk
Download: https://github.com/proconsule/NXMilk/releases

screenshot1.jpg

Features​

  • MP3 support (with ID3 tag support)
  • OGG support (with metadata support if present)
  • FLAC support (with metadata support if present)
  • Vis using projectM library
  • Support Japanese,Chinese,Korean Cyrilic fonts
  • Can read from SD card and from USB storage

Button Mapping​

  • ZL/ZR Prev/Next Preset
  • L/R Seek -/+ 5 seconds
  • B Stop
  • Y Disable projectM Vis
  • Limited Touch Support

USB​

Press Y to toogle between SD Card and USB

Installation​

  • Copy NXMilk.nro in a subfolder eg. /switch/NXMilk/
  • (OPTIONAL) Copy milk files in /switch/NXMilk/presets/milk/
  • (OPTIONAL) Copy texture files in /switch/NXMilk/presets/Textures/
Edit Config file NXMilk.ini

INI:
[AudioPlayer]
startpath = /switch/NXMilk
milkpresetspath = /switch/NXMilk/presets/milk/
milktexturespath = /switch/NXMilk/presets/Textures/
interfacehidesec = 10
usebuiltinpreset = true


NXMilk has some builtin presets. Can be disabled setting to false the usebuiltinpreset option

Presets​

Libraries used in this project​

Thanks to​

 
Last edited by proconsule54,
Any major bug? Suggestions?
Just to know where to focus the attention
Speaking for myself, the pinnacle of MP3 player design and functionality was and still is the classic Winamp. I don't know if something like this could work on a widescreen display. But maybe it could be an inspiration for functionality.
 
  • Like
Reactions: proconsule54
I also loved winamp, yes i will took it as ref.

Playing formats will be easy if supported by ffmpeg, no work. If i have to use other libs will require some work(not too much) good suggestion!

Also i am working on playing cd-disc…. Via an usb dvd player i found at home. Need work but can be cool!
 
Yes, i want some simple scope, spectrum. I will work on it also. Thanks for the suggestion.

Is stable? Any major bug? Since i done it from scratch i hope is stable enough
 
  • Love
Reactions: mathew77
Dev update:
Working on exotic file support, and the first one will be all the trackers files.
Back in 80/90 was very popular file format in the amiga world.
Now NXMilk play nearly all if them (i have to do deep tests)

Also the ability of playing games audio file is planned, probably i will start hystorically, from c64 to current systems….
Enjoy!
Post automatically merged:

Release

https://github.com/proconsule/NXMilk/releases

# NXMilk Changelog

## [0.0.3]

### Added

- Add support for Tracker files (.mod,.okt,.xm,.s3m) via libopenmpt (https://lib.openmpt.org/libopenmpt/)

Enjoy!
 
Last edited by proconsule54,
Dev Update:
Got a working libgme so
Code:
AY        ZX Spectrum/Amstrad CPC
GBS       Nintendo Game Boy
GYM       Sega Genesis/Mega Drive
HES       NEC TurboGrafx-16/PC Engine
KSS       MSX Home Computer/other Z80 systems (doesn't support FM sound)
NSF/NSFE  Nintendo NES/Famicom (with VRC 6, Namco 106, and FME-7 sound)
SAP       Atari systems using POKEY sound chip
SPC       Super Nintendo/Super Famicom
VGM/VGZ   Sega Master System/Mark III, Sega Genesis/Mega Drive,BBC Micro

This sound formats are supported, but i think is useless without the ability to open the rom, so since all this systems are well documented is not that hard to open roms and parse all the sounds file in it!

Hope this can will be useful.
Enjoy!
 
  • Like
Reactions: proconsule54
@proconsule54
My one of the greatest wishes about Switch's audioplayers is supporting the native *.UMX, or native *.IT (Impulse Tracker) for listening Deux Ex 1 OST. :)

Preview:

Some info: https://www.snakebytestudios.com/projects/media/deus-ex-soundtrack/
http://www.mirsoft.info/gmb/music_info.php?id_ele=MzM4

ImpulseTracker wiki: https://en.wikipedia.org/wiki/Impulse_Tracker
OpenMPT can play them: https://openmpt.org/

IT files are supported in the next version of NXMilk

For umx i have to get some info
Post automatically merged:

Code:
,amf,ams,dbm,digi,dmf,dsm,far,gdm,imf,it,j2b,m15,mdl,med,mmcmp,mms,mo3,mod,mptm,mt2,mtm,nst,okt,plm,ppm,psm,pt36,ptm,s3m,sfx,sfx2,stk,stm,ult,umx,wow,xm,xpk
This are the format supported by libmodplug

Umx is supported also so yes
Post automatically merged:

So far i ported 3 libs (with minimal effort) libopenmpt libgme and libmodplug

They are supported by ffmpeg so very easy to integrate
Tracker files are supported by both libopenmpt and libmodplug, i let ffmpeg to decide the best
Post automatically merged:

I think this will be the audioplayer with the wider audio support for switch
 
Last edited by proconsule54,
Any other exotic audio file to support?
Post automatically merged:

Current file support list (i have tested neearly all of them...)

Supported Files
-----
- MP3 support (with ID3 tag support)
- OGG support (with metadata support if present)
- FLAC support (with metadata support if present)

Supported Files using libopenmpt (https://lib.openmpt.org/libopenmpt/)
----
- Composer 667 (.667)
- Composer 669 / UNIS 669 (.669)
- ASYLUM Music Format / Advanced Music Format (.amf / .dmf)
- Extreme’s Tracker / Velvet Studio (.ams)
- Composer 670 / CDFM (.c67)
- Digi Booster Pro (.dbm)
- Digi Booster (.digi)
- X-Tracker (.dmf)
- DSIK (.dsm)
- Dynamic Studio (.dsm)
- Digital Symphony (.dsym)
- Digital Tracker / Digital Home Studio (.dtm)
- Farandole Composer (.far)
- Davey W. Taylor’s FM Tracker (.fmt)
- General Digital Music (.gdm)
- Graoumf Tracker 1 (.gtk / .gt2)
- Ice Tracker / SoundTracker 2.6 (.ice / .st26)
- Imago Orpheus (.imf)
- Impulse Tracker Project (.itp) – legacy OpenMPT format with instruments stored in external files rather than directly in the module
- Jazz Jackrabbit 2 Music (.j2b)
- SoundTracker and compatible (.m15 / .stk)
- DigiTrakker (.mdl)
- OctaMED (.med)
- MO3 (.mo3)
- MadTracker 2 (.mt2)
- MultiTracker (.mtm)
- Psycho Pinball / Micro Machines 2 music format (.mus)
- Oktalyzer (.okt)
- OggMod-compressed XM files (.oxm)
- Epic Megagames MASI (.psm)
- Disorder Tracker 2 (.plm)
- ProTracker 3.6 IFF (.pt36)
- PolyTracker (.ptm)
- SoundFX / MultiMedia Sound (.sfx / .sfx2 / .mms)
- Scream Tracker 2 (.stm)
- Scream Tracker Music Interface Kit (.stx)
- Soundtracker Pro II (.stp)
- Symphonie / Symphonie Pro (.symmod)
- UltraTracker (.ult)
- Unreal Music (.umx) only from Unreal (Tournament 1), Deus Ex and Jazz Jackrabbit 3D
- Mod's Grave (.wow)
- Astroidea XMF (.xmf)

Supported Files using libgme (https://github.com/mcfiredrill/libgme)
-----
- AY ZX Spectrum/Amstrad CPC
- GBS Nintendo Game Boy
- GYM Sega Genesis/Mega Drive
- HES NEC TurboGrafx-16/PC Engine
- KSS MSX Home Computer/other Z80 systems (doesn't support FM sound)
- NSF/NSFE Nintendo NES/Famicom (with VRC 6, Namco 106, and FME-7 sound)
- SAP Atari systems using POKEY sound chip
- SPC Super Nintendo/Super Famicom
- VGM/VGZ Sega Master System/Mark III, Sega Genesis/Mega Drive,BBC Micro

Supported Files using libmodplug (https://github.com/Konstanty/libmodplug)
-----
- Nearly all the formats supported by libopenmpt
- MIDI files (for better result you must use GUS patch file https://www.chocolate-doom.org/wiki/index.php/GUS)
 
Last edited by proconsule54,
I was curious what you're doing with this player. Could you incorporate other midi formats based on video game console chipsets? psf (playstation) miniusf (nintendo 64) I understand that these are more than just encoders, they are a partial emulation of the SPU or sound chip of the console.

Wiki: SSF (Sega Saturn Sound Format), DSF (Dreamcast Sound Format), USF (Nintendo Ultra 64 Sound Format), QSF (Capcom Q-Sound Format), GSF (Game Boy Advance Sound Format), and 2SF (Nintendo DS Sound Format)

Bundle codec: Chipamp

I don't think this can be turned into some sort of DAW, but VST instrument support would be interesting and absurdly entertaining.
 
  • Like
Reactions: proconsule54

Site & Scene News

Popular threads in this forum