Skip to content

proconsule/NXMilk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NXMilk

Banner

NXMilk is a trivial audio player for Nintendo Switch.

It uses FFMpeg (with the help of some libs) 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 proconsule

Features

  • Wide audio file format support (See below)
  • Vis using projectM library
  • Support Japanese,Chinese,Korean Cyrilic fonts
  • Can read from SD , USB storage , Newtwork source, Image Files
  • USB-DVD USB-BD Drive support using https://github.com/proconsule/libusbdvd , can read CD DVD BD

Supported Files (using ffmpeg)

  • MP3 support (with ID3 tag support)
  • OGG support (with metadata support if present)
  • FLAC support (with metadata support if present)
  • WAV support
  • AC3 support
  • AAC support
  • Many others (ffmpeg is great!) you can unfilter file extensions with config file ini

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)

Supported Disck Images

  • CD-Audio (CUE/BIN)
  • ISO9660

Supported Files usign libarchive (https://github.com/libarchive/libarchive)

  • RAR
  • ZIP
  • TAR.GZ
  • LHA

Button Mapping

  • ZL/ZR Prev/Next Preset
  • L/R Seek -/+ 5 seconds
  • B Stop
  • Y Disable projectM Vis
  • Limited Touch Support
  • Plus Button Disable Backlight (for saving battery power)

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/
  • (OPTIONAL for better MIDI playback ) Copy timidity.conf and GUS patch files in /switch/NXMilk/timidity/

Edit Config file NXMilk.ini

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

Since file extensions for audio file can be very "exotic" starting from version 0.1.0 enabled extension can be added also on config file

[AudioPlayer]
startpath = /switch/NXMilk
milkpresetspath = /switch/NXMilk/presets/milk/
milktexturespath = /switch/NXMilk/presets/Textures/
interfacehidesec = 10
usebuiltinpreset = true
enabled_extensions = .aac,.ac3,.wav

Network

from version 0.2.0 NXMilk support network connections

For SMB

[Samba Test]
server = 192.168.1.1
type = smb
username = USERNAME
password = PASSWORD
path = SHAREPATH

For ssh/sftp

[SSH Test]
server = 192.168.1.1
type = sftp
username = USERNAME
password = PASSWORD
path = REMOTEPATH
port = 22

sftp can also use pub/priv key for auth

[SSH Test]
server = 192.168.1.1
type = sftp
username = USERNAME
path = REMOTEPATH
pubkeypath = /switch/nxmp/sshkey/id_rsa.pub
privkeypath = /switch/nxmp/sshkey/id_rsa
port = 22

NXMilk uses ffmpeg along with many other libraries so the supported files list is HUGE

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

Presets

Libraries used in this project

Thanks to

  • spkatsi @GBATemp forum for icons,banner, testing and suggestions
  • Djakku @GBATemp for testing and suggestions

Screenshots

Screen1

About

Switch Audio Player using ProjectM for vis

Resources

Stars

Watchers

Forks

Packages

No packages published