Login
1 branch 0 tags
Ben (Desktop/Arch) .onigiri -> Onigiri 38f4776 1 month ago 74 Commits
moon / README.md

Moon / Onirigiri

ESP32 based hardware digital audio player with a focus on Podcasts/Audiobooks over Music. Can also be compiled with SDL2 for testing purposes.

Bugs

  • Figure out why PSRAM doesn't work
  • Figure out why SNH48 four seasons opus doesn't play on ESP32

ToDo

  • Show small startup/boot animation (placeholder for now, something like Onigiri centered)
  • Volume controls
  • Proper seeking
  • Better queue screen, right now it doesn't look/feel great
  • Switch to dual rotary encoders for input
  • Auto updater, check on startup for something like firmware.bin and if found update firmware, maybe have a special format with a header with a checksum/signing key, especially the checksum is important to safeguard against bricking the device
  • Check SD Card on startup and show a modal for formatting it if invalid
  • WiFi!!!
  • Podcast client
  • Audiobookshelf API client for pulling books/podcasts
  • Auto updates over WiFi, should check Codeberg releases (GH should only be a mirror, main should be codeberg)
  • Migrate to codeberg from rubhub and add GH mirror
  • Support cover.jpg, would be nice to show this in the playback screen if available, probably mainly for audiobooks, should also have each podcast episode pretend to be a standalone audiobook, that way resume automatically works and if we have an episode image we just put a cover.jpg file next to the episode.mp3 or however the audio file is called.
  • Build public Audiobookshelf instance with all Librivox content
  • Check out libro.fm and make sure that we support their audiobooks
  • I18n using GNU gettext, focus on English/German in the beginning
  • Download a complete Unicode font to the SD Card, then use it as a BinFont with a glyph cache in LVGL, allowing us to render all of unicode while keeping the firmware lean (we could then also remove the builtin incomplete CJK font, just focus on European languages with the builtin on and maybe even pull the complete CJK font during device initialization)
  • Add CI Pipeline that builds the firmware image in a format supported by the autoupdated
  • Improve the flake.nix to allow building the firmware image that way
  • Make directory browser use a virtual list to allow arbitrarily large directories, check out: https://docs.lvgl.io/master/examples.html#infinite-scrolling
  • Check out exFAT, maybe just default to that to simplify things
  • Check out Power Management, we seem to run at a fixed 160MHz right now, would be nicer if we could do something like: no/mp3 playback = 80MHz, m4a playback = 160MHz, opus playback = 240MHz