Homebrew NXMilk a trivial audio player for switch

proconsule54

Well-Known Member
OP
Member
Joined
Nov 5, 2019
Messages
755
Trophies
1
Age
43
XP
2,701
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,

TheRocK

Well-Known Member
Member
Joined
Apr 16, 2003
Messages
374
Trophies
2
Website
Visit site
XP
820
Country
Gambia, The
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

proconsule54

Well-Known Member
OP
Member
Joined
Nov 5, 2019
Messages
755
Trophies
1
Age
43
XP
2,701
Country
Italy
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!
 

proconsule54

Well-Known Member
OP
Member
Joined
Nov 5, 2019
Messages
755
Trophies
1
Age
43
XP
2,701
Country
Italy
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

proconsule54

Well-Known Member
OP
Member
Joined
Nov 5, 2019
Messages
755
Trophies
1
Age
43
XP
2,701
Country
Italy
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,

proconsule54

Well-Known Member
OP
Member
Joined
Nov 5, 2019
Messages
755
Trophies
1
Age
43
XP
2,701
Country
Italy
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!
 

mathew77

Lovin' life.
Member
Joined
Jan 19, 2019
Messages
1,189
Trophies
0
Age
47
XP
3,684
Country
Kazakhstan
  • Like
Reactions: proconsule54

proconsule54

Well-Known Member
OP
Member
Joined
Nov 5, 2019
Messages
755
Trophies
1
Age
43
XP
2,701
Country
Italy
@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,

proconsule54

Well-Known Member
OP
Member
Joined
Nov 5, 2019
Messages
755
Trophies
1
Age
43
XP
2,701
Country
Italy
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,

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    K3Nv2 @ K3Nv2: So salty