Skip to content

Cherryblue/Noiser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📣Noiser

Current state : Not production ready. Started this Fall 2024.

🎧 A dead-simple music-player

Noiser is a web-based music player client. It uses (only) Gonic (for now) as a music-server, following the subsonic-api.
What you can basically expect right now from this software :

  • Browse your music collection (folder-navigation + statistical folders)
  • Queue your music to listen to it
  • Manage and listen to your favourite playlists

Yet / Why another one ?

'Reasons :)

  • Not satisfied with the existing ones
  • I love crafting things
  • Wanting to bring something different and sharing it with the community

Intrinsically, Noiser comes as a personal replacement of Jamstash, which I first forked and massively modified to suit my needs. Yet my fork was nowhere near perfect, and I grew tired of modifying something based on a framework that I feel is now too old and inefficient. Then you wonder : "Wouldn't it have been easier to start from scratch ..?" Thus came Noiser.

Fun fact : Noiser is named after my first real personal code-project during my initial formation, which was a very basic c-coded windows music player.

What's different ?

  • State of the art development framework : Noiser is Svelte-Kit based
  • Storage is key : everything you do is recorded in your personal browser. Browser closed by mistake or bugged ? Your music-queue and progress are saved.
  • Built in css grids for maximum adaptability/responsivity
  • Less is more : minimal number of dependencies, selfmade icon font...

Compare to the others..

I don't deny inspiration from Jamstash, which I used for a long time.

Compared to + -
Jamstash See specific features below n°1,2,3. Also, more modern technologies No podcast. For now.
Navidrome Folder navigation, which is a must for me Dunno much about Navidrome
Airsonic Advanced Comparison TBD Comparison TBD
...

🎶 Existing features and others to come

This is (up-to-now) a personal project ; update frequency will be hectic, hazardous and........ hunpredictable.
Feature PR and ideas are always welcome. Simply do not expect rapid improvement or fixes, as this is me on my free time, sometimes.
If it suits your needs or if you like it, don't hesitate to share your impressions one way or another :). Knowing it helps someone else is highly motivating (at least to me).

Existing specific features

Feature Description Explanation or Example
1 Gapless playback no "empty" time between songs Song B begins exactly when song A stops. This allows for a perfect transition, useful to songs made for it
2 Path reconstruction Player automatically finds a specific folder complete path if known one is partial In a classic subsonic player, when you click on an album from a "special folder" (ex: Most Played, Recently added...), you don't get all the parent-folders. Noiser automatically queries the backend (here gonic) to retrieve the complete path, allowing you to actually "browse" from any point, even from an album you stumbled upon. Works for songs/albums in playlists too
3 Browser Storage Most of the data is saved for next launch Queue, current song progress and other things are saved between reboot
4 Search categories When searching, you choose if you search for a song, an album, or anything This allows for more specific search

Other features

Feature Description Explanation or Example
101 Config file At startup Noiser fetches a json file with a few parameters. This allows for easy customization of the app when setting it up, without re-building it
102 Keyboard media control Play/pause & Volume can be triggered from keyboard This allows for quick access to essential media functions. Some others are still missing though
103 Selection Mechanism Songs are selectable, be it from Queue, from Playlist, or from Folders/albums This allows to choose selectively what you wish to do. Also move songs in playlist or queue.
104 Settings Configure your personal way of things directly from the app Only one setting available for now. Ideas are mentioned in orange

Current Roadmap

There are features I judge essential to do next. No priority order in these for now.

Feature Motivation & Context
HTML Notifications Jamstash was able to send notification popup to the system through the browser. This is great and has to be done here too.
Dark theme and automatic adaptation Will come once UI is stable
Better Caching System Replacing the current "chain" of folders by a Set/Map, with a timestamp to decide when to refresh it. Should be way more efficient
Tests Well... at some point.... yeah... :D
Upgrading to Svelte 5 New major version came up in october 2024, with the rune-thingy
Mobile design & PWA Usable web-interface on mobile and tablets. I don't plan on building another app. I want this app to be adaptive/responsive enough.
Sharing features Being able to share a few musics or even playlists with people not familiar with the app. This is server dependant, so it will only be implemented an able-to backend is available.
Demonstration server For easily showing things around here

Eventual / Possible features

These are features I'm aware of but not sure to implement at this time.

Feature Motivation & Context
Podcasting this is possible in subsonic api, this was available in jamstash, but I simply don't use it everyday at this stage
Opening to other protocols Often, web-music clients only do one protocol (here subsonic). But I see no reason to restrict the client to only one. For example, I could imagine adding webdav next. Or Jellyfin api
Drag'n'drop While awesome, it is a pain to code. I don't feel like this is mandatory if the UI/UX allows you to do the same in simpler ways. This will come after the other features, it it comes.
Better Auth System (SSO ?) Well this feels like a WIP on subsonic protocols and backends. But I'm all for making it work, once one standard has been designed for the subsonic protocol.

🙏 Special thanks

  • To the users, if any
  • To the Svelte (Kit) Team
  • To HowlerJs Author, library here used for sound playback
  • To CryptoJS for its easy to use lib. Shall be replaced with native browser crypto since it's discontinued.
  • To the NucleoApp Team allowing me to easily create my own icon font (while not using their icons here, only my own creations)
  • To all other authors that shared their hard work to the community 🫡, and from which I directly or indirectly borrowed help by importing their libraries. (See package.json, or the dependency tree)
  • To my girlfriend, for patiently not throwing me out by the window 🤦‍♀️🙇‍♂️🪟

📖 License

AGPLv3

About

A dead-simple (subsonic compatible) music-player

Resources

License

Stars

Watchers

Forks

Packages

No packages published