Skip to content

ErrLogic/nada

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nada — Switch Local Music Player

Music player homebrew untuk Nintendo Switch (Atmosphere CFW) yang memutar file FLAC/MP3 dari SD card di background sambil bermain game.

Arsitektur: sysmodule background (sys-nada) + overlay libultrahand (ovl-nada.ovl), mengikuti pola sys-tune/streamfin-switch.

Fitur

  • Playback FLAC & MP3 dari /music/<album>/ di SD card
  • Cover art: JPEG (baseline & progresif ≤1150px) dan PNG (≤740px), embedded di metadata atau file cover.jpg/cover.png di folder album
  • Metadata: title, artist, album dari Vorbis comment (FLAC) dan ID3v2 (MP3)
  • Queue otomatis per folder, sort alfabetis, shuffle & repeat (off/one/all)
  • Seek, progress bar, volume control (multiplier PCM di sysmodule)
  • File browser hierarkis: Albums → Tracks → Now Playing
  • Marquee scroll untuk judul panjang
  • Blacklist per-game: /config/sys-nada/blacklist.ini (satu title ID hex per baris); musik auto-pause saat game di-blacklist, resume saat keluar
  • AudioRenderer session limit handling: state Disabled + pesan di overlay

Persyaratan

  • Nintendo Switch dengan Atmosphere CFW
  • Firmware 22.1.0 / Atmosphere 1.11.1 (target; versi lain belum teruji)
  • nx-ovlloader (ppkantorski fork) + Ultrahand Overlay
  • devkitPro (devkitA64, libnx, switch-tools) untuk build

Build

source toolchain.env      # pastikan DEVKITPRO dan DEVKITA64 ter-set
make                      # build sysmodule/sys-nada.nsp + overlay/ovl-nada.ovl
make dist                 # susun layout SD card di ./out/
make dist DEBUG_LOG=1     # build dengan debug logging (tulis /config/sys-nada/log.txt)

Dependency portlibs (via dkp-pacman):

  • switch-libjpeg-turbo — decode cover JPEG (sysmodule)
  • switch-curl, switch-zlib, switch-mbedtls, dll — overlay Ultrahand

Vendored di third_party/:

  • dr_flac.h, dr_mp3.h — decode audio (public domain / MIT)
  • stb_image.h — decode cover PNG (public domain)

Deploy

Copy isi out/ ke root SD card:

SD:/
  atmosphere/contents/4200000000000ADA/
    exefs.nsp
    toolbox.json
    flags/boot2.flag
  switch/.overlays/
    ovl-nada.ovl

Sysmodule auto-launch saat boot via boot2.flag. Struktur musik:

/music/
  Nama Album/
    01 - Judul Lagu.flac
    02 - Judul Lagu.mp3
    cover.jpg         (opsional, fallback)

Kontrol

Tombol Fungsi
D-pad kiri/kanan Geser fokus antar kontrol (repeat/prev/play/next/shuffle)
A Aktifkan kontrol yang difokus
D-pad atas Fokus ke seek bar (kiri/kanan = seek ±5s)
X/Y Repeat / Shuffle (saat kontrol difokus)
X/Y (seek bar difokus) Volume up / down ±5%
Touch seek bar Lompat posisi
Touch ikon transport Play/Pause/Repeat/Shuffle langsung

Struktur Proyek

sysmodule/     — sysmodule background (.nsp), playback engine + decoder + IPC server
overlay/       — overlay libultrahand (.ovl), UI + IPC client
common/        — header-only: IPC protocol, type definitions
third_party/   — vendor: dr_flac, dr_mp3, stb_image
tools/         — fix_covers.py: deteksi & resize cover FLAC 4:4:4 >800px

Konfigurasi

  • /config/sys-nada/blacklist.ini — title ID game yang di-blacklist (satu per baris, hex)
  • /config/sys-nada/log.txt — debug log (hanya build DEBUG_LOG=1)

Keterbatasan

  • Heap sysmodule 5 MB (batas system pool FW 22.1.0). Cover JPEG progresif

    1150px atau 4:4:4 >800px tidak bisa di-decode — ganti dengan cover.jpg yang di-resize. Gunakan tools/fix_covers.py untuk otomatisasi.

  • AudioRenderer session limit (2 sesi). Game yang menggunakan kedua sesi akan membuat sys-nada masuk state Disabled.
  • Beberapa game tidak kompatibel — gunakan blacklist untuk mencegah konflik.
  • PNG cover ≤740px (budget heap stb_image).

Lisensi

MIT. Library pihak ketiga mengikuti lisensi masing-masing (lihat third_party/).

About

Background music player for Nintendo Switch — play FLAC/MP3 from SD card while gaming

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors